diff --git a/generate/generate.py b/generate/generate.py index ad89df2165790c622ac46d8a25a2b912ff35fa23..3c795baceaf701dcfd0dda1414128003a383ae8b 100644 --- a/generate/generate.py +++ b/generate/generate.py @@ -96,7 +96,8 @@ def main() -> None: with Pool(args.processes) as pool: for form_str, operators in toml_dict.items(): for spec in operators: - pool.apply_async(generate_operator, (args, form_str, spec)) + ret = pool.apply_async(generate_operator, (args, form_str, spec)) + ret.get() pool.close() pool.join() diff --git a/generate/requirements.txt b/generate/requirements.txt index f5b53c73e9108a0484c7f135d595cc35391e8c09..8fd2c50c4e9bd7778789867dd9c048e8ba187507 100644 --- a/generate/requirements.txt +++ b/generate/requirements.txt @@ -1,5 +1,5 @@ --extra-index-url https://test.pypi.org/simple/ -hfg @ git+ssh://git@i10git.cs.fau.de/terraneo/hyteg-form-generator.git@d240fe6b8633d6ab4cf6fa741f3e7dedc74687f6 +hfg @ git+ssh://git@i10git.cs.fau.de/terraneo/hyteg-form-generator.git@5df6dbee6f366632bc5c20d91597172a653a37b3 tomli >= 1.1.0 ; python_version < "3.11" clang-format diff --git a/operators.toml b/operators.toml index 22bec4eccfea05414801fa92b09a5c39ff2664bb..5ca3fce1312d4ac7372a5254ce59b003d58179d1 100644 --- a/operators.toml +++ b/operators.toml @@ -57,6 +57,25 @@ quadrature = 2 loop-strategy = "sawtooth" optimizations = ["moveconstants", "vectorize", "quadloops", "tabulate"] +[[k_mass]] +trial-space = "P1" +test-space = "P1" +form-space-args.coefficient_function_space = "P1" +dimensions = [2, 3] +quadrature = 3 +loop-strategy = "sawtooth" +optimizations = ["moveconstants", "vectorize", "quadloops", "tabulate"] + +[[k_mass]] +trial-space = "P1" +test-space = "P1" +form-space-args.coefficient_function_space = "P1" +dimensions = [3] +quadrature = 4 +loop-strategy = "sawtooth" +optimizations = ["moveconstants", "vectorize", "quadloops", "tabulate"] +blending = "IcosahedralShellMap" + [[divergence]] trial-space = "P2" test-space = "P1" diff --git a/operators/CMakeLists.txt b/operators/CMakeLists.txt index d7b7d0ad813fac7625d5cf4f519ee018dd1a1dc5..8a80d3ca1bfb4552292aafb6cf99d3858be3ad13 100644 --- a/operators/CMakeLists.txt +++ b/operators/CMakeLists.txt @@ -12,4 +12,5 @@ add_subdirectory(divergence) add_subdirectory(epsilon) add_subdirectory(full_stokes) add_subdirectory(gradient) +add_subdirectory(k_mass) add_subdirectory(mass) diff --git a/operators/k_mass/CMakeLists.txt b/operators/k_mass/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..35ffc3e029637fd7f8741b44702723588ac45d6c --- /dev/null +++ b/operators/k_mass/CMakeLists.txt @@ -0,0 +1,60 @@ +add_library( opgen-k_mass + + P1ElementwiseKMass.cpp + P1ElementwiseKMass.hpp + P1ElementwiseKMassIcosahedralShellMap.cpp + P1ElementwiseKMassIcosahedralShellMap.hpp +) + +if(HYTEG_BUILD_WITH_AVX AND WALBERLA_DOUBLE_ACCURACY) + target_sources(opgen-k_mass PRIVATE + + avx/P1ElementwiseKMassIcosahedralShellMap_apply_macro_3D.cpp + avx/P1ElementwiseKMassIcosahedralShellMap_computeInverseDiagonalOperatorValues_macro_3D.cpp + avx/P1ElementwiseKMass_apply_macro_2D.cpp + avx/P1ElementwiseKMass_apply_macro_3D.cpp + avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_2D.cpp + avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_3D.cpp + noarch/P1ElementwiseKMassIcosahedralShellMap_toMatrix_macro_3D.cpp + noarch/P1ElementwiseKMass_toMatrix_macro_2D.cpp + noarch/P1ElementwiseKMass_toMatrix_macro_3D.cpp + ) + + set_source_files_properties( + + avx/P1ElementwiseKMassIcosahedralShellMap_apply_macro_3D.cpp + avx/P1ElementwiseKMassIcosahedralShellMap_computeInverseDiagonalOperatorValues_macro_3D.cpp + avx/P1ElementwiseKMass_apply_macro_2D.cpp + avx/P1ElementwiseKMass_apply_macro_3D.cpp + avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_2D.cpp + avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_3D.cpp + + PROPERTIES COMPILE_OPTIONS ${HYTEG_COMPILER_NATIVE_FLAGS} + ) +else() + if(HYTEG_BUILD_WITH_AVX AND NOT WALBERLA_DOUBLE_ACCURACY) + message(WARNING "AVX vectorization only available in double precision. Using scalar kernels.") + endif() + + target_sources(opgen-k_mass PRIVATE + + noarch/P1ElementwiseKMassIcosahedralShellMap_apply_macro_3D.cpp + noarch/P1ElementwiseKMassIcosahedralShellMap_computeInverseDiagonalOperatorValues_macro_3D.cpp + noarch/P1ElementwiseKMassIcosahedralShellMap_toMatrix_macro_3D.cpp + noarch/P1ElementwiseKMass_apply_macro_2D.cpp + noarch/P1ElementwiseKMass_apply_macro_3D.cpp + noarch/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_2D.cpp + noarch/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_3D.cpp + noarch/P1ElementwiseKMass_toMatrix_macro_2D.cpp + noarch/P1ElementwiseKMass_toMatrix_macro_3D.cpp + ) +endif() + +if (HYTEG_BUILD_WITH_PETSC) + target_link_libraries(opgen-k_mass PUBLIC PETSc::PETSc) +endif () +if (WALBERLA_BUILD_WITH_HALF_PRECISION_SUPPORT) + target_compile_features(opgen-k_mass PUBLIC cxx_std_23) +else () + target_compile_features(opgen-k_mass PUBLIC cxx_std_17) +endif () diff --git a/operators/k_mass/P1ElementwiseKMass.cpp b/operators/k_mass/P1ElementwiseKMass.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f127bb22a05864c0869810dc8acb97b69a209549 --- /dev/null +++ b/operators/k_mass/P1ElementwiseKMass.cpp @@ -0,0 +1,486 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + +// Unfortunately, the inverse diagonal kernel wrapper triggers a GCC bug (maybe +// (related to) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107087) causing a +// warning in an internal standard library header (bits/stl_algobase.h). As a +// workaround, we disable the warning and include this header indirectly through +// a public header. +#include <waLBerlaDefinitions.h> +#ifdef WALBERLA_CXX_COMPILER_IS_GNU +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnonnull" +#endif +#include <cmath> +#ifdef WALBERLA_CXX_COMPILER_IS_GNU +#pragma GCC diagnostic pop +#endif + +#include "P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +P1ElementwiseKMass::P1ElementwiseKMass( const std::shared_ptr< PrimitiveStorage >& storage, + size_t minLevel, + size_t maxLevel, + const P1Function< real_t >& _k ) +: Operator( storage, minLevel, maxLevel ) +, k( _k ) +{} + +void P1ElementwiseKMass::apply( const P1Function< real_t >& src, + const P1Function< real_t >& dst, + uint_t level, + DoFType flag, + UpdateType updateType ) const +{ + this->startTiming( "apply" ); + + // Make sure that halos are up-to-date + this->timingTree_->start( "pre-communication" ); + if ( this->storage_->hasGlobalCells() ) + { + // Note that the order of communication is important, since the face -> cell communication may overwrite + // parts of the halos that carry the macro-vertex and macro-edge unknowns. + src.communicate< Face, Cell >( level ); + src.communicate< Edge, Cell >( level ); + src.communicate< Vertex, Cell >( level ); + k.communicate< Face, Cell >( level ); + k.communicate< Edge, Cell >( level ); + k.communicate< Vertex, Cell >( level ); + } + else + { + communication::syncFunctionBetweenPrimitives( src, level, communication::syncDirection_t::LOW2HIGH ); + communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH ); + } + this->timingTree_->stop( "pre-communication" ); + + if ( updateType == Replace ) + { + // We need to zero the destination array (including halos). + // However, we must not zero out anything that is not flagged with the specified BCs. + // Therefore, we first zero out everything that flagged, and then, later, + // the halos of the highest dim primitives. + dst.interpolate( walberla::numeric_cast< real_t >( 0 ), level, flag ); + } + + if ( storage_->hasGlobalCells() ) + { + for ( auto& it : storage_->getCells() ) + { + Cell& cell = *it.second; + + // get hold of the actual numerical data in the functions + real_t* _data_src = cell.getData( src.getCellDataID() )->getPointer( level ); + real_t* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level ); + real_t* _data_k = cell.getData( k.getCellDataID() )->getPointer( level ); + + // Zero out dst halos only + // + // This is also necessary when using update type == Add. + // During additive comm we then skip zeroing the data on the lower-dim primitives. + for ( const auto& idx : vertexdof::macrocell::Iterator( level ) ) + { + if ( !vertexdof::macrocell::isOnCellFace( idx, level ).empty() ) + { + auto arrayIdx = vertexdof::macrocell::index( level, idx.x(), idx.y(), idx.z() ); + _data_dst[arrayIdx] = real_t( 0 ); + } + } + + const auto micro_edges_per_macro_edge = (int64_t) levelinfo::num_microedges_per_edge( level ); + const auto micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level ); + const real_t macro_vertex_coord_id_0comp0 = (real_t) cell.getCoordinates()[0][0]; + const real_t macro_vertex_coord_id_0comp1 = (real_t) cell.getCoordinates()[0][1]; + const real_t macro_vertex_coord_id_0comp2 = (real_t) cell.getCoordinates()[0][2]; + const real_t macro_vertex_coord_id_1comp0 = (real_t) cell.getCoordinates()[1][0]; + const real_t macro_vertex_coord_id_1comp1 = (real_t) cell.getCoordinates()[1][1]; + const real_t macro_vertex_coord_id_1comp2 = (real_t) cell.getCoordinates()[1][2]; + const real_t macro_vertex_coord_id_2comp0 = (real_t) cell.getCoordinates()[2][0]; + const real_t macro_vertex_coord_id_2comp1 = (real_t) cell.getCoordinates()[2][1]; + const real_t macro_vertex_coord_id_2comp2 = (real_t) cell.getCoordinates()[2][2]; + const real_t macro_vertex_coord_id_3comp0 = (real_t) cell.getCoordinates()[3][0]; + const real_t macro_vertex_coord_id_3comp1 = (real_t) cell.getCoordinates()[3][1]; + const real_t macro_vertex_coord_id_3comp2 = (real_t) cell.getCoordinates()[3][2]; + + this->timingTree_->start( "kernel" ); + + apply_macro_3D( + + _data_dst, + _data_k, + _data_src, + macro_vertex_coord_id_0comp0, + macro_vertex_coord_id_0comp1, + macro_vertex_coord_id_0comp2, + macro_vertex_coord_id_1comp0, + macro_vertex_coord_id_1comp1, + macro_vertex_coord_id_1comp2, + macro_vertex_coord_id_2comp0, + macro_vertex_coord_id_2comp1, + macro_vertex_coord_id_2comp2, + macro_vertex_coord_id_3comp0, + macro_vertex_coord_id_3comp1, + macro_vertex_coord_id_3comp2, + micro_edges_per_macro_edge, + micro_edges_per_macro_edge_float ); + this->timingTree_->stop( "kernel" ); + } + + // Push result to lower-dimensional primitives + // + this->timingTree_->start( "post-communication" ); + // Note: We could avoid communication here by implementing the apply() also for the respective + // lower dimensional primitives! + dst.communicateAdditively< Cell, Face >( level, DoFType::All ^ flag, *storage_, updateType == Replace ); + dst.communicateAdditively< Cell, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace ); + dst.communicateAdditively< Cell, Vertex >( level, DoFType::All ^ flag, *storage_, updateType == Replace ); + this->timingTree_->stop( "post-communication" ); + } + else + { + for ( auto& it : storage_->getFaces() ) + { + Face& face = *it.second; + + // get hold of the actual numerical data in the functions + real_t* _data_src = face.getData( src.getFaceDataID() )->getPointer( level ); + real_t* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level ); + real_t* _data_k = face.getData( k.getFaceDataID() )->getPointer( level ); + + // Zero out dst halos only + // + // This is also necessary when using update type == Add. + // During additive comm we then skip zeroing the data on the lower-dim primitives. + for ( const auto& idx : vertexdof::macroface::Iterator( level ) ) + { + if ( vertexdof::macroface::isVertexOnBoundary( level, idx ) ) + { + auto arrayIdx = vertexdof::macroface::index( level, idx.x(), idx.y() ); + _data_dst[arrayIdx] = real_t( 0 ); + } + } + + const auto micro_edges_per_macro_edge = (int64_t) levelinfo::num_microedges_per_edge( level ); + const auto micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level ); + const real_t macro_vertex_coord_id_0comp0 = (real_t) face.getCoordinates()[0][0]; + const real_t macro_vertex_coord_id_0comp1 = (real_t) face.getCoordinates()[0][1]; + const real_t macro_vertex_coord_id_1comp0 = (real_t) face.getCoordinates()[1][0]; + const real_t macro_vertex_coord_id_1comp1 = (real_t) face.getCoordinates()[1][1]; + const real_t macro_vertex_coord_id_2comp0 = (real_t) face.getCoordinates()[2][0]; + const real_t macro_vertex_coord_id_2comp1 = (real_t) face.getCoordinates()[2][1]; + + this->timingTree_->start( "kernel" ); + + apply_macro_2D( + + _data_dst, + _data_k, + _data_src, + macro_vertex_coord_id_0comp0, + macro_vertex_coord_id_0comp1, + macro_vertex_coord_id_1comp0, + macro_vertex_coord_id_1comp1, + macro_vertex_coord_id_2comp0, + macro_vertex_coord_id_2comp1, + micro_edges_per_macro_edge, + micro_edges_per_macro_edge_float ); + this->timingTree_->stop( "kernel" ); + } + + // Push result to lower-dimensional primitives + // + this->timingTree_->start( "post-communication" ); + // Note: We could avoid communication here by implementing the apply() also for the respective + // lower dimensional primitives! + dst.communicateAdditively< Face, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace ); + dst.communicateAdditively< Face, Vertex >( level, DoFType::All ^ flag, *storage_, updateType == Replace ); + this->timingTree_->stop( "post-communication" ); + } + + this->stopTiming( "apply" ); +} +void P1ElementwiseKMass::toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat, + const P1Function< idx_t >& src, + const P1Function< idx_t >& dst, + uint_t level, + DoFType flag ) const +{ + this->startTiming( "toMatrix" ); + + // We currently ignore the flag provided! + if ( flag != All ) + { + WALBERLA_LOG_WARNING_ON_ROOT( "Input flag ignored in toMatrix; using flag = All" ); + } + + if ( storage_->hasGlobalCells() ) + { + this->timingTree_->start( "pre-communication" ); + k.communicate< Face, Cell >( level ); + k.communicate< Edge, Cell >( level ); + k.communicate< Vertex, Cell >( level ); + this->timingTree_->stop( "pre-communication" ); + + for ( auto& it : storage_->getCells() ) + { + Cell& cell = *it.second; + + // get hold of the actual numerical data + idx_t* _data_src = cell.getData( src.getCellDataID() )->getPointer( level ); + idx_t* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level ); + real_t* _data_k = cell.getData( k.getCellDataID() )->getPointer( level ); + + const auto micro_edges_per_macro_edge = (int64_t) levelinfo::num_microedges_per_edge( level ); + const auto micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level ); + const real_t macro_vertex_coord_id_0comp0 = (real_t) cell.getCoordinates()[0][0]; + const real_t macro_vertex_coord_id_0comp1 = (real_t) cell.getCoordinates()[0][1]; + const real_t macro_vertex_coord_id_0comp2 = (real_t) cell.getCoordinates()[0][2]; + const real_t macro_vertex_coord_id_1comp0 = (real_t) cell.getCoordinates()[1][0]; + const real_t macro_vertex_coord_id_1comp1 = (real_t) cell.getCoordinates()[1][1]; + const real_t macro_vertex_coord_id_1comp2 = (real_t) cell.getCoordinates()[1][2]; + const real_t macro_vertex_coord_id_2comp0 = (real_t) cell.getCoordinates()[2][0]; + const real_t macro_vertex_coord_id_2comp1 = (real_t) cell.getCoordinates()[2][1]; + const real_t macro_vertex_coord_id_2comp2 = (real_t) cell.getCoordinates()[2][2]; + const real_t macro_vertex_coord_id_3comp0 = (real_t) cell.getCoordinates()[3][0]; + const real_t macro_vertex_coord_id_3comp1 = (real_t) cell.getCoordinates()[3][1]; + const real_t macro_vertex_coord_id_3comp2 = (real_t) cell.getCoordinates()[3][2]; + + this->timingTree_->start( "kernel" ); + + toMatrix_macro_3D( + + _data_dst, + _data_k, + _data_src, + macro_vertex_coord_id_0comp0, + macro_vertex_coord_id_0comp1, + macro_vertex_coord_id_0comp2, + macro_vertex_coord_id_1comp0, + macro_vertex_coord_id_1comp1, + macro_vertex_coord_id_1comp2, + macro_vertex_coord_id_2comp0, + macro_vertex_coord_id_2comp1, + macro_vertex_coord_id_2comp2, + macro_vertex_coord_id_3comp0, + macro_vertex_coord_id_3comp1, + macro_vertex_coord_id_3comp2, + mat, + micro_edges_per_macro_edge, + micro_edges_per_macro_edge_float ); + this->timingTree_->stop( "kernel" ); + } + } + else + { + this->timingTree_->start( "pre-communication" ); + communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH ); + this->timingTree_->stop( "pre-communication" ); + + for ( auto& it : storage_->getFaces() ) + { + Face& face = *it.second; + + // get hold of the actual numerical data + idx_t* _data_src = face.getData( src.getFaceDataID() )->getPointer( level ); + idx_t* _data_dst = face.getData( dst.getFaceDataID() )->getPointer( level ); + real_t* _data_k = face.getData( k.getFaceDataID() )->getPointer( level ); + + const auto micro_edges_per_macro_edge = (int64_t) levelinfo::num_microedges_per_edge( level ); + const auto micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level ); + const real_t macro_vertex_coord_id_0comp0 = (real_t) face.getCoordinates()[0][0]; + const real_t macro_vertex_coord_id_0comp1 = (real_t) face.getCoordinates()[0][1]; + const real_t macro_vertex_coord_id_1comp0 = (real_t) face.getCoordinates()[1][0]; + const real_t macro_vertex_coord_id_1comp1 = (real_t) face.getCoordinates()[1][1]; + const real_t macro_vertex_coord_id_2comp0 = (real_t) face.getCoordinates()[2][0]; + const real_t macro_vertex_coord_id_2comp1 = (real_t) face.getCoordinates()[2][1]; + + this->timingTree_->start( "kernel" ); + + toMatrix_macro_2D( + + _data_dst, + _data_k, + _data_src, + macro_vertex_coord_id_0comp0, + macro_vertex_coord_id_0comp1, + macro_vertex_coord_id_1comp0, + macro_vertex_coord_id_1comp1, + macro_vertex_coord_id_2comp0, + macro_vertex_coord_id_2comp1, + mat, + micro_edges_per_macro_edge, + micro_edges_per_macro_edge_float ); + this->timingTree_->stop( "kernel" ); + } + } + this->stopTiming( "toMatrix" ); +} +void P1ElementwiseKMass::computeInverseDiagonalOperatorValues() +{ + this->startTiming( "computeInverseDiagonalOperatorValues" ); + + if ( invDiag_ == nullptr ) + { + invDiag_ = std::make_shared< P1Function< real_t > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ ); + } + + for ( uint_t level = minLevel_; level <= maxLevel_; level++ ) + { + invDiag_->setToZero( level ); + + if ( storage_->hasGlobalCells() ) + { + this->timingTree_->start( "pre-communication" ); + k.communicate< Face, Cell >( level ); + k.communicate< Edge, Cell >( level ); + k.communicate< Vertex, Cell >( level ); + this->timingTree_->stop( "pre-communication" ); + + for ( auto& it : storage_->getCells() ) + { + Cell& cell = *it.second; + + // get hold of the actual numerical data + real_t* _data_invDiag_ = cell.getData( ( *invDiag_ ).getCellDataID() )->getPointer( level ); + real_t* _data_k = cell.getData( k.getCellDataID() )->getPointer( level ); + + const auto micro_edges_per_macro_edge = (int64_t) levelinfo::num_microedges_per_edge( level ); + const auto micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level ); + const real_t macro_vertex_coord_id_0comp0 = (real_t) cell.getCoordinates()[0][0]; + const real_t macro_vertex_coord_id_0comp1 = (real_t) cell.getCoordinates()[0][1]; + const real_t macro_vertex_coord_id_0comp2 = (real_t) cell.getCoordinates()[0][2]; + const real_t macro_vertex_coord_id_1comp0 = (real_t) cell.getCoordinates()[1][0]; + const real_t macro_vertex_coord_id_1comp1 = (real_t) cell.getCoordinates()[1][1]; + const real_t macro_vertex_coord_id_1comp2 = (real_t) cell.getCoordinates()[1][2]; + const real_t macro_vertex_coord_id_2comp0 = (real_t) cell.getCoordinates()[2][0]; + const real_t macro_vertex_coord_id_2comp1 = (real_t) cell.getCoordinates()[2][1]; + const real_t macro_vertex_coord_id_2comp2 = (real_t) cell.getCoordinates()[2][2]; + const real_t macro_vertex_coord_id_3comp0 = (real_t) cell.getCoordinates()[3][0]; + const real_t macro_vertex_coord_id_3comp1 = (real_t) cell.getCoordinates()[3][1]; + const real_t macro_vertex_coord_id_3comp2 = (real_t) cell.getCoordinates()[3][2]; + + this->timingTree_->start( "kernel" ); + + computeInverseDiagonalOperatorValues_macro_3D( + + _data_invDiag_, + _data_k, + macro_vertex_coord_id_0comp0, + macro_vertex_coord_id_0comp1, + macro_vertex_coord_id_0comp2, + macro_vertex_coord_id_1comp0, + macro_vertex_coord_id_1comp1, + macro_vertex_coord_id_1comp2, + macro_vertex_coord_id_2comp0, + macro_vertex_coord_id_2comp1, + macro_vertex_coord_id_2comp2, + macro_vertex_coord_id_3comp0, + macro_vertex_coord_id_3comp1, + macro_vertex_coord_id_3comp2, + micro_edges_per_macro_edge, + micro_edges_per_macro_edge_float ); + this->timingTree_->stop( "kernel" ); + } + + // Push result to lower-dimensional primitives + // + this->timingTree_->start( "post-communication" ); + // Note: We could avoid communication here by implementing the apply() also for the respective + // lower dimensional primitives! + ( *invDiag_ ).communicateAdditively< Cell, Face >( level ); + ( *invDiag_ ).communicateAdditively< Cell, Edge >( level ); + ( *invDiag_ ).communicateAdditively< Cell, Vertex >( level ); + this->timingTree_->stop( "post-communication" ); + } + else + { + this->timingTree_->start( "pre-communication" ); + communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH ); + this->timingTree_->stop( "pre-communication" ); + + for ( auto& it : storage_->getFaces() ) + { + Face& face = *it.second; + + // get hold of the actual numerical data + real_t* _data_invDiag_ = face.getData( ( *invDiag_ ).getFaceDataID() )->getPointer( level ); + real_t* _data_k = face.getData( k.getFaceDataID() )->getPointer( level ); + + const auto micro_edges_per_macro_edge = (int64_t) levelinfo::num_microedges_per_edge( level ); + const auto micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level ); + const real_t macro_vertex_coord_id_0comp0 = (real_t) face.getCoordinates()[0][0]; + const real_t macro_vertex_coord_id_0comp1 = (real_t) face.getCoordinates()[0][1]; + const real_t macro_vertex_coord_id_1comp0 = (real_t) face.getCoordinates()[1][0]; + const real_t macro_vertex_coord_id_1comp1 = (real_t) face.getCoordinates()[1][1]; + const real_t macro_vertex_coord_id_2comp0 = (real_t) face.getCoordinates()[2][0]; + const real_t macro_vertex_coord_id_2comp1 = (real_t) face.getCoordinates()[2][1]; + + this->timingTree_->start( "kernel" ); + + computeInverseDiagonalOperatorValues_macro_2D( + + _data_invDiag_, + _data_k, + macro_vertex_coord_id_0comp0, + macro_vertex_coord_id_0comp1, + macro_vertex_coord_id_1comp0, + macro_vertex_coord_id_1comp1, + macro_vertex_coord_id_2comp0, + macro_vertex_coord_id_2comp1, + micro_edges_per_macro_edge, + micro_edges_per_macro_edge_float ); + this->timingTree_->stop( "kernel" ); + } + + // Push result to lower-dimensional primitives + // + this->timingTree_->start( "post-communication" ); + // Note: We could avoid communication here by implementing the apply() also for the respective + // lower dimensional primitives! + ( *invDiag_ ).communicateAdditively< Face, Edge >( level ); + ( *invDiag_ ).communicateAdditively< Face, Vertex >( level ); + this->timingTree_->stop( "post-communication" ); + } + + ( *invDiag_ ).invertElementwise( level ); + } + + this->stopTiming( "computeInverseDiagonalOperatorValues" ); +} +std::shared_ptr< P1Function< real_t > > P1ElementwiseKMass::getInverseDiagonalValues() const +{ + return invDiag_; +} + +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/P1ElementwiseKMass.hpp b/operators/k_mass/P1ElementwiseKMass.hpp new file mode 100644 index 0000000000000000000000000000000000000000..c585370f2c80e127958902375615732bdc768eef --- /dev/null +++ b/operators/k_mass/P1ElementwiseKMass.hpp @@ -0,0 +1,212 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + +#pragma once + +#include "core/DataTypes.h" + +#include "hyteg/LikwidWrapper.hpp" +#include "hyteg/communication/Syncing.hpp" +#include "hyteg/edgedofspace/EdgeDoFMacroCell.hpp" +#include "hyteg/operators/Operator.hpp" +#include "hyteg/p1functionspace/P1Function.hpp" +#include "hyteg/primitivestorage/PrimitiveStorage.hpp" +#include "hyteg/solvers/Smoothables.hpp" +#include "hyteg/sparseassembly/SparseMatrixProxy.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +/// Diffusion operator with a scalar coefficient. +/// +/// Geometry map: IdentityMap +/// +/// Weak formulation +/// +/// u: trial function (space: Lagrange, degree: 1) +/// v: test function (space: Lagrange, degree: 1) +/// k: coefficient (space: Lagrange, degree: 1) +/// +/// ∫ k uv + +class P1ElementwiseKMass : public Operator< P1Function< real_t >, P1Function< real_t > >, + public OperatorWithInverseDiagonal< P1Function< real_t > > +{ + public: + P1ElementwiseKMass( const std::shared_ptr< PrimitiveStorage >& storage, + size_t minLevel, + size_t maxLevel, + const P1Function< real_t >& _k ); + + void apply( const P1Function< real_t >& src, + const P1Function< real_t >& dst, + uint_t level, + DoFType flag, + UpdateType updateType = Replace ) const; + + void toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat, + const P1Function< idx_t >& src, + const P1Function< idx_t >& dst, + uint_t level, + DoFType flag ) const; + + void computeInverseDiagonalOperatorValues(); + + std::shared_ptr< P1Function< real_t > > getInverseDiagonalValues() const; + + protected: + private: + /// Kernel type: apply + /// - quadrature rule: Dunavant 3 | points: 4, degree: 3 + /// - operations per element: + /// adds muls divs pows abs assignments function_calls unknown_ops + /// ------ ------ ------ ------ ----- ------------- ---------------- ------------- + /// 49 49 0 0 0 0 0 0 + void apply_macro_2D( real_t* RESTRICT _data_dst, + real_t* RESTRICT _data_k, + real_t* RESTRICT _data_src, + real_t macro_vertex_coord_id_0comp0, + real_t macro_vertex_coord_id_0comp1, + real_t macro_vertex_coord_id_1comp0, + real_t macro_vertex_coord_id_1comp1, + real_t macro_vertex_coord_id_2comp0, + real_t macro_vertex_coord_id_2comp1, + int64_t micro_edges_per_macro_edge, + real_t micro_edges_per_macro_edge_float ) const; + /// Kernel type: apply + /// - quadrature rule: Hammer-Marlowe-Stroud 3 | points: 5, degree: 3 + /// - operations per element: + /// adds muls divs pows abs assignments function_calls unknown_ops + /// ------ ------ ------ ------ ----- ------------- ---------------- ------------- + /// 96 91 0 0 0 0 0 0 + void apply_macro_3D( real_t* RESTRICT _data_dst, + real_t* RESTRICT _data_k, + real_t* RESTRICT _data_src, + real_t macro_vertex_coord_id_0comp0, + real_t macro_vertex_coord_id_0comp1, + real_t macro_vertex_coord_id_0comp2, + real_t macro_vertex_coord_id_1comp0, + real_t macro_vertex_coord_id_1comp1, + real_t macro_vertex_coord_id_1comp2, + real_t macro_vertex_coord_id_2comp0, + real_t macro_vertex_coord_id_2comp1, + real_t macro_vertex_coord_id_2comp2, + real_t macro_vertex_coord_id_3comp0, + real_t macro_vertex_coord_id_3comp1, + real_t macro_vertex_coord_id_3comp2, + int64_t micro_edges_per_macro_edge, + real_t micro_edges_per_macro_edge_float ) const; + /// Kernel type: toMatrix + /// - quadrature rule: Dunavant 3 | points: 4, degree: 3 + /// - operations per element: + /// adds muls divs pows abs assignments function_calls unknown_ops + /// ------ ------ ------ ------ ----- ------------- ---------------- ------------- + /// 40 40 0 0 0 0 0 3 + void toMatrix_macro_2D( idx_t* RESTRICT _data_dst, + real_t* RESTRICT _data_k, + idx_t* RESTRICT _data_src, + real_t macro_vertex_coord_id_0comp0, + real_t macro_vertex_coord_id_0comp1, + real_t macro_vertex_coord_id_1comp0, + real_t macro_vertex_coord_id_1comp1, + real_t macro_vertex_coord_id_2comp0, + real_t macro_vertex_coord_id_2comp1, + std::shared_ptr< SparseMatrixProxy > mat, + int64_t micro_edges_per_macro_edge, + real_t micro_edges_per_macro_edge_float ) const; + /// Kernel type: toMatrix + /// - quadrature rule: Hammer-Marlowe-Stroud 3 | points: 5, degree: 3 + /// - operations per element: + /// adds muls divs pows abs assignments function_calls unknown_ops + /// ------ ------ ------ ------ ----- ------------- ---------------- ------------- + /// 80 75 0 0 0 0 0 3 + void toMatrix_macro_3D( idx_t* RESTRICT _data_dst, + real_t* RESTRICT _data_k, + idx_t* RESTRICT _data_src, + real_t macro_vertex_coord_id_0comp0, + real_t macro_vertex_coord_id_0comp1, + real_t macro_vertex_coord_id_0comp2, + real_t macro_vertex_coord_id_1comp0, + real_t macro_vertex_coord_id_1comp1, + real_t macro_vertex_coord_id_1comp2, + real_t macro_vertex_coord_id_2comp0, + real_t macro_vertex_coord_id_2comp1, + real_t macro_vertex_coord_id_2comp2, + real_t macro_vertex_coord_id_3comp0, + real_t macro_vertex_coord_id_3comp1, + real_t macro_vertex_coord_id_3comp2, + std::shared_ptr< SparseMatrixProxy > mat, + int64_t micro_edges_per_macro_edge, + real_t micro_edges_per_macro_edge_float ) const; + /// Kernel type: computeInverseDiagonalOperatorValues + /// - quadrature rule: Dunavant 3 | points: 4, degree: 3 + /// - operations per element: + /// adds muls divs pows abs assignments function_calls unknown_ops + /// ------ ------ ------ ------ ----- ------------- ---------------- ------------- + /// 31 28 0 0 0 0 0 0 + void computeInverseDiagonalOperatorValues_macro_2D( real_t* RESTRICT _data_invDiag_, + real_t* RESTRICT _data_k, + real_t macro_vertex_coord_id_0comp0, + real_t macro_vertex_coord_id_0comp1, + real_t macro_vertex_coord_id_1comp0, + real_t macro_vertex_coord_id_1comp1, + real_t macro_vertex_coord_id_2comp0, + real_t macro_vertex_coord_id_2comp1, + int64_t micro_edges_per_macro_edge, + real_t micro_edges_per_macro_edge_float ) const; + /// Kernel type: computeInverseDiagonalOperatorValues + /// - quadrature rule: Hammer-Marlowe-Stroud 3 | points: 5, degree: 3 + /// - operations per element: + /// adds muls divs pows abs assignments function_calls unknown_ops + /// ------ ------ ------ ------ ----- ------------- ---------------- ------------- + /// 54 45 0 0 0 0 0 0 + void computeInverseDiagonalOperatorValues_macro_3D( real_t* RESTRICT _data_invDiag_, + real_t* RESTRICT _data_k, + real_t macro_vertex_coord_id_0comp0, + real_t macro_vertex_coord_id_0comp1, + real_t macro_vertex_coord_id_0comp2, + real_t macro_vertex_coord_id_1comp0, + real_t macro_vertex_coord_id_1comp1, + real_t macro_vertex_coord_id_1comp2, + real_t macro_vertex_coord_id_2comp0, + real_t macro_vertex_coord_id_2comp1, + real_t macro_vertex_coord_id_2comp2, + real_t macro_vertex_coord_id_3comp0, + real_t macro_vertex_coord_id_3comp1, + real_t macro_vertex_coord_id_3comp2, + int64_t micro_edges_per_macro_edge, + real_t micro_edges_per_macro_edge_float ) const; + + std::shared_ptr< P1Function< real_t > > invDiag_; + P1Function< real_t > k; +}; + +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/P1ElementwiseKMassIcosahedralShellMap.cpp b/operators/k_mass/P1ElementwiseKMassIcosahedralShellMap.cpp new file mode 100644 index 0000000000000000000000000000000000000000..17d6c31237728d83819442269628bc60cb2b278d --- /dev/null +++ b/operators/k_mass/P1ElementwiseKMassIcosahedralShellMap.cpp @@ -0,0 +1,446 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + +// Unfortunately, the inverse diagonal kernel wrapper triggers a GCC bug (maybe +// (related to) https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107087) causing a +// warning in an internal standard library header (bits/stl_algobase.h). As a +// workaround, we disable the warning and include this header indirectly through +// a public header. +#include <waLBerlaDefinitions.h> +#ifdef WALBERLA_CXX_COMPILER_IS_GNU +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wnonnull" +#endif +#include <cmath> +#ifdef WALBERLA_CXX_COMPILER_IS_GNU +#pragma GCC diagnostic pop +#endif + +#include "P1ElementwiseKMassIcosahedralShellMap.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +P1ElementwiseKMassIcosahedralShellMap::P1ElementwiseKMassIcosahedralShellMap( const std::shared_ptr< PrimitiveStorage >& storage, + size_t minLevel, + size_t maxLevel, + const P1Function< real_t >& _k ) +: Operator( storage, minLevel, maxLevel ) +, k( _k ) +{} + +void P1ElementwiseKMassIcosahedralShellMap::apply( const P1Function< real_t >& src, + const P1Function< real_t >& dst, + uint_t level, + DoFType flag, + UpdateType updateType ) const +{ + this->startTiming( "apply" ); + + // Make sure that halos are up-to-date + this->timingTree_->start( "pre-communication" ); + if ( this->storage_->hasGlobalCells() ) + { + // Note that the order of communication is important, since the face -> cell communication may overwrite + // parts of the halos that carry the macro-vertex and macro-edge unknowns. + src.communicate< Face, Cell >( level ); + src.communicate< Edge, Cell >( level ); + src.communicate< Vertex, Cell >( level ); + k.communicate< Face, Cell >( level ); + k.communicate< Edge, Cell >( level ); + k.communicate< Vertex, Cell >( level ); + } + else + { + WALBERLA_ABORT( "Not implemented." ); + } + this->timingTree_->stop( "pre-communication" ); + + if ( updateType == Replace ) + { + // We need to zero the destination array (including halos). + // However, we must not zero out anything that is not flagged with the specified BCs. + // Therefore, we first zero out everything that flagged, and then, later, + // the halos of the highest dim primitives. + dst.interpolate( walberla::numeric_cast< real_t >( 0 ), level, flag ); + } + + if ( storage_->hasGlobalCells() ) + { + for ( auto& it : storage_->getCells() ) + { + Cell& cell = *it.second; + + // get hold of the actual numerical data in the functions + real_t* _data_src = cell.getData( src.getCellDataID() )->getPointer( level ); + real_t* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level ); + real_t* _data_k = cell.getData( k.getCellDataID() )->getPointer( level ); + + // Zero out dst halos only + // + // This is also necessary when using update type == Add. + // During additive comm we then skip zeroing the data on the lower-dim primitives. + for ( const auto& idx : vertexdof::macrocell::Iterator( level ) ) + { + if ( !vertexdof::macrocell::isOnCellFace( idx, level ).empty() ) + { + auto arrayIdx = vertexdof::macrocell::index( level, idx.x(), idx.y(), idx.z() ); + _data_dst[arrayIdx] = real_t( 0 ); + } + } + + const auto micro_edges_per_macro_edge = (int64_t) levelinfo::num_microedges_per_edge( level ); + const auto micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level ); + const real_t macro_vertex_coord_id_0comp0 = (real_t) cell.getCoordinates()[0][0]; + const real_t macro_vertex_coord_id_0comp1 = (real_t) cell.getCoordinates()[0][1]; + const real_t macro_vertex_coord_id_0comp2 = (real_t) cell.getCoordinates()[0][2]; + const real_t macro_vertex_coord_id_1comp0 = (real_t) cell.getCoordinates()[1][0]; + const real_t macro_vertex_coord_id_1comp1 = (real_t) cell.getCoordinates()[1][1]; + const real_t macro_vertex_coord_id_1comp2 = (real_t) cell.getCoordinates()[1][2]; + const real_t macro_vertex_coord_id_2comp0 = (real_t) cell.getCoordinates()[2][0]; + const real_t macro_vertex_coord_id_2comp1 = (real_t) cell.getCoordinates()[2][1]; + const real_t macro_vertex_coord_id_2comp2 = (real_t) cell.getCoordinates()[2][2]; + const real_t macro_vertex_coord_id_3comp0 = (real_t) cell.getCoordinates()[3][0]; + const real_t macro_vertex_coord_id_3comp1 = (real_t) cell.getCoordinates()[3][1]; + const real_t macro_vertex_coord_id_3comp2 = (real_t) cell.getCoordinates()[3][2]; + WALBERLA_CHECK_NOT_NULLPTR( + std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() ), + "This operator requires the IcosahedralShellMap to be registered as GeometryMap on every macro-cell." ) + real_t radRefVertex = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->radRefVertex(); + real_t radRayVertex = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->radRayVertex(); + real_t refVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->refVertex()[0]; + real_t rayVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->rayVertex()[0]; + real_t thrVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->thrVertex()[0]; + real_t forVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->forVertex()[0]; + real_t refVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->refVertex()[1]; + real_t rayVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->rayVertex()[1]; + real_t thrVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->thrVertex()[1]; + real_t forVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->forVertex()[1]; + real_t refVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->refVertex()[2]; + real_t rayVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->rayVertex()[2]; + real_t thrVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->thrVertex()[2]; + real_t forVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->forVertex()[2]; + + this->timingTree_->start( "kernel" ); + + apply_macro_3D( + + _data_dst, + _data_k, + _data_src, + forVertex_0, + forVertex_1, + forVertex_2, + macro_vertex_coord_id_0comp0, + macro_vertex_coord_id_0comp1, + macro_vertex_coord_id_0comp2, + macro_vertex_coord_id_1comp0, + macro_vertex_coord_id_1comp1, + macro_vertex_coord_id_1comp2, + macro_vertex_coord_id_2comp0, + macro_vertex_coord_id_2comp1, + macro_vertex_coord_id_2comp2, + macro_vertex_coord_id_3comp0, + macro_vertex_coord_id_3comp1, + macro_vertex_coord_id_3comp2, + micro_edges_per_macro_edge, + micro_edges_per_macro_edge_float, + radRayVertex, + radRefVertex, + rayVertex_0, + rayVertex_1, + rayVertex_2, + refVertex_0, + refVertex_1, + refVertex_2, + thrVertex_0, + thrVertex_1, + thrVertex_2 ); + this->timingTree_->stop( "kernel" ); + } + + // Push result to lower-dimensional primitives + // + this->timingTree_->start( "post-communication" ); + // Note: We could avoid communication here by implementing the apply() also for the respective + // lower dimensional primitives! + dst.communicateAdditively< Cell, Face >( level, DoFType::All ^ flag, *storage_, updateType == Replace ); + dst.communicateAdditively< Cell, Edge >( level, DoFType::All ^ flag, *storage_, updateType == Replace ); + dst.communicateAdditively< Cell, Vertex >( level, DoFType::All ^ flag, *storage_, updateType == Replace ); + this->timingTree_->stop( "post-communication" ); + } + else + { + WALBERLA_ABORT( "Not implemented." ); + } + + this->stopTiming( "apply" ); +} +void P1ElementwiseKMassIcosahedralShellMap::toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat, + const P1Function< idx_t >& src, + const P1Function< idx_t >& dst, + uint_t level, + DoFType flag ) const +{ + this->startTiming( "toMatrix" ); + + // We currently ignore the flag provided! + if ( flag != All ) + { + WALBERLA_LOG_WARNING_ON_ROOT( "Input flag ignored in toMatrix; using flag = All" ); + } + + if ( storage_->hasGlobalCells() ) + { + this->timingTree_->start( "pre-communication" ); + k.communicate< Face, Cell >( level ); + k.communicate< Edge, Cell >( level ); + k.communicate< Vertex, Cell >( level ); + this->timingTree_->stop( "pre-communication" ); + + for ( auto& it : storage_->getCells() ) + { + Cell& cell = *it.second; + + // get hold of the actual numerical data + idx_t* _data_src = cell.getData( src.getCellDataID() )->getPointer( level ); + idx_t* _data_dst = cell.getData( dst.getCellDataID() )->getPointer( level ); + real_t* _data_k = cell.getData( k.getCellDataID() )->getPointer( level ); + + const auto micro_edges_per_macro_edge = (int64_t) levelinfo::num_microedges_per_edge( level ); + const auto micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level ); + const real_t macro_vertex_coord_id_0comp0 = (real_t) cell.getCoordinates()[0][0]; + const real_t macro_vertex_coord_id_0comp1 = (real_t) cell.getCoordinates()[0][1]; + const real_t macro_vertex_coord_id_0comp2 = (real_t) cell.getCoordinates()[0][2]; + const real_t macro_vertex_coord_id_1comp0 = (real_t) cell.getCoordinates()[1][0]; + const real_t macro_vertex_coord_id_1comp1 = (real_t) cell.getCoordinates()[1][1]; + const real_t macro_vertex_coord_id_1comp2 = (real_t) cell.getCoordinates()[1][2]; + const real_t macro_vertex_coord_id_2comp0 = (real_t) cell.getCoordinates()[2][0]; + const real_t macro_vertex_coord_id_2comp1 = (real_t) cell.getCoordinates()[2][1]; + const real_t macro_vertex_coord_id_2comp2 = (real_t) cell.getCoordinates()[2][2]; + const real_t macro_vertex_coord_id_3comp0 = (real_t) cell.getCoordinates()[3][0]; + const real_t macro_vertex_coord_id_3comp1 = (real_t) cell.getCoordinates()[3][1]; + const real_t macro_vertex_coord_id_3comp2 = (real_t) cell.getCoordinates()[3][2]; + WALBERLA_CHECK_NOT_NULLPTR( + std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() ), + "This operator requires the IcosahedralShellMap to be registered as GeometryMap on every macro-cell." ) + real_t radRefVertex = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->radRefVertex(); + real_t radRayVertex = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->radRayVertex(); + real_t refVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->refVertex()[0]; + real_t rayVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->rayVertex()[0]; + real_t thrVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->thrVertex()[0]; + real_t forVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->forVertex()[0]; + real_t refVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->refVertex()[1]; + real_t rayVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->rayVertex()[1]; + real_t thrVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->thrVertex()[1]; + real_t forVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->forVertex()[1]; + real_t refVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->refVertex()[2]; + real_t rayVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->rayVertex()[2]; + real_t thrVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->thrVertex()[2]; + real_t forVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->forVertex()[2]; + + this->timingTree_->start( "kernel" ); + + toMatrix_macro_3D( + + _data_dst, + _data_k, + _data_src, + forVertex_0, + forVertex_1, + forVertex_2, + macro_vertex_coord_id_0comp0, + macro_vertex_coord_id_0comp1, + macro_vertex_coord_id_0comp2, + macro_vertex_coord_id_1comp0, + macro_vertex_coord_id_1comp1, + macro_vertex_coord_id_1comp2, + macro_vertex_coord_id_2comp0, + macro_vertex_coord_id_2comp1, + macro_vertex_coord_id_2comp2, + macro_vertex_coord_id_3comp0, + macro_vertex_coord_id_3comp1, + macro_vertex_coord_id_3comp2, + mat, + micro_edges_per_macro_edge, + micro_edges_per_macro_edge_float, + radRayVertex, + radRefVertex, + rayVertex_0, + rayVertex_1, + rayVertex_2, + refVertex_0, + refVertex_1, + refVertex_2, + thrVertex_0, + thrVertex_1, + thrVertex_2 ); + this->timingTree_->stop( "kernel" ); + } + } + else + { + this->timingTree_->start( "pre-communication" ); + communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH ); + this->timingTree_->stop( "pre-communication" ); + + WALBERLA_ABORT( "Not implemented." ); + } + this->stopTiming( "toMatrix" ); +} +void P1ElementwiseKMassIcosahedralShellMap::computeInverseDiagonalOperatorValues() +{ + this->startTiming( "computeInverseDiagonalOperatorValues" ); + + if ( invDiag_ == nullptr ) + { + invDiag_ = std::make_shared< P1Function< real_t > >( "inverse diagonal entries", storage_, minLevel_, maxLevel_ ); + } + + for ( uint_t level = minLevel_; level <= maxLevel_; level++ ) + { + invDiag_->setToZero( level ); + + if ( storage_->hasGlobalCells() ) + { + this->timingTree_->start( "pre-communication" ); + k.communicate< Face, Cell >( level ); + k.communicate< Edge, Cell >( level ); + k.communicate< Vertex, Cell >( level ); + this->timingTree_->stop( "pre-communication" ); + + for ( auto& it : storage_->getCells() ) + { + Cell& cell = *it.second; + + // get hold of the actual numerical data + real_t* _data_invDiag_ = cell.getData( ( *invDiag_ ).getCellDataID() )->getPointer( level ); + real_t* _data_k = cell.getData( k.getCellDataID() )->getPointer( level ); + + const auto micro_edges_per_macro_edge = (int64_t) levelinfo::num_microedges_per_edge( level ); + const auto micro_edges_per_macro_edge_float = (real_t) levelinfo::num_microedges_per_edge( level ); + const real_t macro_vertex_coord_id_0comp0 = (real_t) cell.getCoordinates()[0][0]; + const real_t macro_vertex_coord_id_0comp1 = (real_t) cell.getCoordinates()[0][1]; + const real_t macro_vertex_coord_id_0comp2 = (real_t) cell.getCoordinates()[0][2]; + const real_t macro_vertex_coord_id_1comp0 = (real_t) cell.getCoordinates()[1][0]; + const real_t macro_vertex_coord_id_1comp1 = (real_t) cell.getCoordinates()[1][1]; + const real_t macro_vertex_coord_id_1comp2 = (real_t) cell.getCoordinates()[1][2]; + const real_t macro_vertex_coord_id_2comp0 = (real_t) cell.getCoordinates()[2][0]; + const real_t macro_vertex_coord_id_2comp1 = (real_t) cell.getCoordinates()[2][1]; + const real_t macro_vertex_coord_id_2comp2 = (real_t) cell.getCoordinates()[2][2]; + const real_t macro_vertex_coord_id_3comp0 = (real_t) cell.getCoordinates()[3][0]; + const real_t macro_vertex_coord_id_3comp1 = (real_t) cell.getCoordinates()[3][1]; + const real_t macro_vertex_coord_id_3comp2 = (real_t) cell.getCoordinates()[3][2]; + WALBERLA_CHECK_NOT_NULLPTR( + std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() ), + "This operator requires the IcosahedralShellMap to be registered as GeometryMap on every macro-cell." ) + real_t radRefVertex = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->radRefVertex(); + real_t radRayVertex = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->radRayVertex(); + real_t refVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->refVertex()[0]; + real_t rayVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->rayVertex()[0]; + real_t thrVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->thrVertex()[0]; + real_t forVertex_0 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->forVertex()[0]; + real_t refVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->refVertex()[1]; + real_t rayVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->rayVertex()[1]; + real_t thrVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->thrVertex()[1]; + real_t forVertex_1 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->forVertex()[1]; + real_t refVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->refVertex()[2]; + real_t rayVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->rayVertex()[2]; + real_t thrVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->thrVertex()[2]; + real_t forVertex_2 = std::dynamic_pointer_cast< IcosahedralShellMap >( cell.getGeometryMap() )->forVertex()[2]; + + this->timingTree_->start( "kernel" ); + + computeInverseDiagonalOperatorValues_macro_3D( + + _data_invDiag_, + _data_k, + forVertex_0, + forVertex_1, + forVertex_2, + macro_vertex_coord_id_0comp0, + macro_vertex_coord_id_0comp1, + macro_vertex_coord_id_0comp2, + macro_vertex_coord_id_1comp0, + macro_vertex_coord_id_1comp1, + macro_vertex_coord_id_1comp2, + macro_vertex_coord_id_2comp0, + macro_vertex_coord_id_2comp1, + macro_vertex_coord_id_2comp2, + macro_vertex_coord_id_3comp0, + macro_vertex_coord_id_3comp1, + macro_vertex_coord_id_3comp2, + micro_edges_per_macro_edge, + micro_edges_per_macro_edge_float, + radRayVertex, + radRefVertex, + rayVertex_0, + rayVertex_1, + rayVertex_2, + refVertex_0, + refVertex_1, + refVertex_2, + thrVertex_0, + thrVertex_1, + thrVertex_2 ); + this->timingTree_->stop( "kernel" ); + } + + // Push result to lower-dimensional primitives + // + this->timingTree_->start( "post-communication" ); + // Note: We could avoid communication here by implementing the apply() also for the respective + // lower dimensional primitives! + ( *invDiag_ ).communicateAdditively< Cell, Face >( level ); + ( *invDiag_ ).communicateAdditively< Cell, Edge >( level ); + ( *invDiag_ ).communicateAdditively< Cell, Vertex >( level ); + this->timingTree_->stop( "post-communication" ); + } + else + { + this->timingTree_->start( "pre-communication" ); + communication::syncFunctionBetweenPrimitives( k, level, communication::syncDirection_t::LOW2HIGH ); + this->timingTree_->stop( "pre-communication" ); + + WALBERLA_ABORT( "Not implemented." ); + } + + ( *invDiag_ ).invertElementwise( level ); + } + + this->stopTiming( "computeInverseDiagonalOperatorValues" ); +} +std::shared_ptr< P1Function< real_t > > P1ElementwiseKMassIcosahedralShellMap::getInverseDiagonalValues() const +{ + return invDiag_; +} + +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/P1ElementwiseKMassIcosahedralShellMap.hpp b/operators/k_mass/P1ElementwiseKMassIcosahedralShellMap.hpp new file mode 100644 index 0000000000000000000000000000000000000000..564e94f90955f18a46c56f1f21b6aea58d49259e --- /dev/null +++ b/operators/k_mass/P1ElementwiseKMassIcosahedralShellMap.hpp @@ -0,0 +1,204 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + +#pragma once + +#include "core/DataTypes.h" + +#include "hyteg/LikwidWrapper.hpp" +#include "hyteg/communication/Syncing.hpp" +#include "hyteg/edgedofspace/EdgeDoFMacroCell.hpp" +#include "hyteg/geometry/IcosahedralShellMap.hpp" +#include "hyteg/operators/Operator.hpp" +#include "hyteg/p1functionspace/P1Function.hpp" +#include "hyteg/primitivestorage/PrimitiveStorage.hpp" +#include "hyteg/solvers/Smoothables.hpp" +#include "hyteg/sparseassembly/SparseMatrixProxy.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +/// Diffusion operator with a scalar coefficient. +/// +/// Geometry map: IcosahedralShellMap +/// +/// Weak formulation +/// +/// u: trial function (space: Lagrange, degree: 1) +/// v: test function (space: Lagrange, degree: 1) +/// k: coefficient (space: Lagrange, degree: 1) +/// +/// ∫ k uv + +class P1ElementwiseKMassIcosahedralShellMap : public Operator< P1Function< real_t >, P1Function< real_t > >, + public OperatorWithInverseDiagonal< P1Function< real_t > > +{ + public: + P1ElementwiseKMassIcosahedralShellMap( const std::shared_ptr< PrimitiveStorage >& storage, + size_t minLevel, + size_t maxLevel, + const P1Function< real_t >& _k ); + + void apply( const P1Function< real_t >& src, + const P1Function< real_t >& dst, + uint_t level, + DoFType flag, + UpdateType updateType = Replace ) const; + + void toMatrix( const std::shared_ptr< SparseMatrixProxy >& mat, + const P1Function< idx_t >& src, + const P1Function< idx_t >& dst, + uint_t level, + DoFType flag ) const; + + void computeInverseDiagonalOperatorValues(); + + std::shared_ptr< P1Function< real_t > > getInverseDiagonalValues() const; + + protected: + private: + /// Kernel type: apply + /// - quadrature rule: Jaśkowiec-Sukumar 04 | points: 11, degree: 4 + /// - operations per element: + /// adds muls divs pows abs assignments function_calls unknown_ops + /// ------ ------ ------ ------ ----- ------------- ---------------- ------------- + /// 945 1177 47 11 11 0 0 1 + void apply_macro_3D( real_t* RESTRICT _data_dst, + real_t* RESTRICT _data_k, + real_t* RESTRICT _data_src, + real_t forVertex_0, + real_t forVertex_1, + real_t forVertex_2, + real_t macro_vertex_coord_id_0comp0, + real_t macro_vertex_coord_id_0comp1, + real_t macro_vertex_coord_id_0comp2, + real_t macro_vertex_coord_id_1comp0, + real_t macro_vertex_coord_id_1comp1, + real_t macro_vertex_coord_id_1comp2, + real_t macro_vertex_coord_id_2comp0, + real_t macro_vertex_coord_id_2comp1, + real_t macro_vertex_coord_id_2comp2, + real_t macro_vertex_coord_id_3comp0, + real_t macro_vertex_coord_id_3comp1, + real_t macro_vertex_coord_id_3comp2, + int64_t micro_edges_per_macro_edge, + real_t micro_edges_per_macro_edge_float, + real_t radRayVertex, + real_t radRefVertex, + real_t rayVertex_0, + real_t rayVertex_1, + real_t rayVertex_2, + real_t refVertex_0, + real_t refVertex_1, + real_t refVertex_2, + real_t thrVertex_0, + real_t thrVertex_1, + real_t thrVertex_2 ) const; + /// Kernel type: toMatrix + /// - quadrature rule: Jaśkowiec-Sukumar 04 | points: 11, degree: 4 + /// - operations per element: + /// adds muls divs pows abs assignments function_calls unknown_ops + /// ------ ------ ------ ------ ----- ------------- ---------------- ------------- + /// 929 1161 47 11 11 0 0 4 + void toMatrix_macro_3D( idx_t* RESTRICT _data_dst, + real_t* RESTRICT _data_k, + idx_t* RESTRICT _data_src, + real_t forVertex_0, + real_t forVertex_1, + real_t forVertex_2, + real_t macro_vertex_coord_id_0comp0, + real_t macro_vertex_coord_id_0comp1, + real_t macro_vertex_coord_id_0comp2, + real_t macro_vertex_coord_id_1comp0, + real_t macro_vertex_coord_id_1comp1, + real_t macro_vertex_coord_id_1comp2, + real_t macro_vertex_coord_id_2comp0, + real_t macro_vertex_coord_id_2comp1, + real_t macro_vertex_coord_id_2comp2, + real_t macro_vertex_coord_id_3comp0, + real_t macro_vertex_coord_id_3comp1, + real_t macro_vertex_coord_id_3comp2, + std::shared_ptr< SparseMatrixProxy > mat, + int64_t micro_edges_per_macro_edge, + real_t micro_edges_per_macro_edge_float, + real_t radRayVertex, + real_t radRefVertex, + real_t rayVertex_0, + real_t rayVertex_1, + real_t rayVertex_2, + real_t refVertex_0, + real_t refVertex_1, + real_t refVertex_2, + real_t thrVertex_0, + real_t thrVertex_1, + real_t thrVertex_2 ) const; + /// Kernel type: computeInverseDiagonalOperatorValues + /// - quadrature rule: Jaśkowiec-Sukumar 04 | points: 11, degree: 4 + /// - operations per element: + /// adds muls divs pows abs assignments function_calls unknown_ops + /// ------ ------ ------ ------ ----- ------------- ---------------- ------------- + /// 867 1095 47 11 11 0 0 1 + void computeInverseDiagonalOperatorValues_macro_3D( real_t* RESTRICT _data_invDiag_, + real_t* RESTRICT _data_k, + real_t forVertex_0, + real_t forVertex_1, + real_t forVertex_2, + real_t macro_vertex_coord_id_0comp0, + real_t macro_vertex_coord_id_0comp1, + real_t macro_vertex_coord_id_0comp2, + real_t macro_vertex_coord_id_1comp0, + real_t macro_vertex_coord_id_1comp1, + real_t macro_vertex_coord_id_1comp2, + real_t macro_vertex_coord_id_2comp0, + real_t macro_vertex_coord_id_2comp1, + real_t macro_vertex_coord_id_2comp2, + real_t macro_vertex_coord_id_3comp0, + real_t macro_vertex_coord_id_3comp1, + real_t macro_vertex_coord_id_3comp2, + int64_t micro_edges_per_macro_edge, + real_t micro_edges_per_macro_edge_float, + real_t radRayVertex, + real_t radRefVertex, + real_t rayVertex_0, + real_t rayVertex_1, + real_t rayVertex_2, + real_t refVertex_0, + real_t refVertex_1, + real_t refVertex_2, + real_t thrVertex_0, + real_t thrVertex_1, + real_t thrVertex_2 ) const; + + std::shared_ptr< P1Function< real_t > > invDiag_; + P1Function< real_t > k; +}; + +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/avx/P1ElementwiseKMassIcosahedralShellMap_apply_macro_3D.cpp b/operators/k_mass/avx/P1ElementwiseKMassIcosahedralShellMap_apply_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..2c03aa457a6f1dcaf45388813a64100f1d4941c7 --- /dev/null +++ b/operators/k_mass/avx/P1ElementwiseKMassIcosahedralShellMap_apply_macro_3D.cpp @@ -0,0 +1,1604 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMassIcosahedralShellMap.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMassIcosahedralShellMap::apply_macro_3D( real_t * RESTRICT _data_dst, real_t * RESTRICT _data_k, real_t * RESTRICT _data_src, real_t forVertex_0, real_t forVertex_1, real_t forVertex_2, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float, real_t radRayVertex, real_t radRefVertex, real_t rayVertex_0, real_t rayVertex_1, real_t rayVertex_2, real_t refVertex_0, real_t refVertex_1, real_t refVertex_2, real_t thrVertex_0, real_t thrVertex_1, real_t thrVertex_2 ) const +{ + { + const real_t _data_q_w [] = {0.02364442875776411, 0.0041220137385117907, 0.025486503738822306, 0.0091363578885896128, 0.0052827872295400091, 0.02526054964096567, 0.01949470769240411, 0.0094909452962763929, 0.019522077110586403, 0.018549261128954084, 0.0066770344442521412}; + + const real_t _data_q_p_0 [] = {0.4881393122183349, 0.028620108024415062, 0.12011493111997025, 0.19015055018870972, 0.81934505243836264, 0.33721826230431567, 0.086557484679865959, 0.079692524193577793, 0.061206893331017434, 0.43957887847117094, 0.085226802665704912}; + + const real_t _data_q_p_1 [] = {0.31081202744417918, 0.1144811451032984, 0.33248812467264544, 0.58529107547132619, 0.026719351714152292, 0.11264913310739497, 0.079391877387070833, 0.063296594113889035, 0.44299746808745322, 0.057741550565775693, 0.77428400209089154}; + + const real_t _data_q_p_2 [] = {0.082320586256909412, 0.85148303380032098, 0.10040383353811888, 0.21187112908079075, 0.11113976289693195, 0.45821473775386756, 0.49383422023194623, 0.10603293862052354, 0.35074787972985066, 0.10858823393329198, 0.0088057690417862045}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + const real_t tmp_qloop_8 = rayVertex_1 - refVertex_1; + const real_t tmp_qloop_9 = -rayVertex_0; + const real_t tmp_qloop_10 = -forVertex_0 - tmp_qloop_9; + const real_t tmp_qloop_11 = rayVertex_2 - thrVertex_2; + const real_t tmp_qloop_12 = tmp_qloop_10*tmp_qloop_11; + const real_t tmp_qloop_13 = rayVertex_2 - refVertex_2; + const real_t tmp_qloop_14 = rayVertex_1 - thrVertex_1; + const real_t tmp_qloop_15 = tmp_qloop_10*tmp_qloop_14; + const real_t tmp_qloop_16 = -rayVertex_1; + const real_t tmp_qloop_17 = -forVertex_1 - tmp_qloop_16; + const real_t tmp_qloop_18 = rayVertex_0 - thrVertex_0; + const real_t tmp_qloop_19 = rayVertex_0 - refVertex_0; + const real_t tmp_qloop_20 = -rayVertex_2; + const real_t tmp_qloop_21 = -forVertex_2 - tmp_qloop_20; + const real_t tmp_qloop_22 = tmp_qloop_11*tmp_qloop_17; + const real_t tmp_qloop_23 = tmp_qloop_18*tmp_qloop_21; + const real_t tmp_qloop_24 = tmp_qloop_12*tmp_qloop_8 - tmp_qloop_13*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_17*tmp_qloop_18 + tmp_qloop_14*tmp_qloop_19*tmp_qloop_21 - tmp_qloop_19*tmp_qloop_22 - tmp_qloop_23*tmp_qloop_8; + const real_t tmp_qloop_25 = 1.0 / (tmp_qloop_24*tmp_qloop_24*tmp_qloop_24); + const real_t tmp_qloop_26 = radRayVertex - radRefVertex; + const real_t tmp_qloop_27 = tmp_qloop_26*(-tmp_qloop_15 + tmp_qloop_17*tmp_qloop_18); + const real_t tmp_qloop_34 = tmp_qloop_26*(tmp_qloop_14*tmp_qloop_21 - tmp_qloop_22); + const real_t tmp_qloop_36 = -tmp_qloop_12 + tmp_qloop_18*tmp_qloop_21; + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/avx/P1ElementwiseKMassIcosahedralShellMap_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/k_mass/avx/P1ElementwiseKMassIcosahedralShellMap_computeInverseDiagonalOperatorValues_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7f536f638f7b4e76204064e00f03d3bfe7ea2faa --- /dev/null +++ b/operators/k_mass/avx/P1ElementwiseKMassIcosahedralShellMap_computeInverseDiagonalOperatorValues_macro_3D.cpp @@ -0,0 +1,1340 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMassIcosahedralShellMap.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMassIcosahedralShellMap::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT _data_invDiag_, real_t * RESTRICT _data_k, real_t forVertex_0, real_t forVertex_1, real_t forVertex_2, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float, real_t radRayVertex, real_t radRefVertex, real_t rayVertex_0, real_t rayVertex_1, real_t rayVertex_2, real_t refVertex_0, real_t refVertex_1, real_t refVertex_2, real_t thrVertex_0, real_t thrVertex_1, real_t thrVertex_2 ) const +{ + { + const real_t _data_q_w [] = {0.02364442875776411, 0.0041220137385117907, 0.025486503738822306, 0.0091363578885896128, 0.0052827872295400091, 0.02526054964096567, 0.01949470769240411, 0.0094909452962763929, 0.019522077110586403, 0.018549261128954084, 0.0066770344442521412}; + + const real_t _data_q_p_0 [] = {0.4881393122183349, 0.028620108024415062, 0.12011493111997025, 0.19015055018870972, 0.81934505243836264, 0.33721826230431567, 0.086557484679865959, 0.079692524193577793, 0.061206893331017434, 0.43957887847117094, 0.085226802665704912}; + + const real_t _data_q_p_1 [] = {0.31081202744417918, 0.1144811451032984, 0.33248812467264544, 0.58529107547132619, 0.026719351714152292, 0.11264913310739497, 0.079391877387070833, 0.063296594113889035, 0.44299746808745322, 0.057741550565775693, 0.77428400209089154}; + + const real_t _data_q_p_2 [] = {0.082320586256909412, 0.85148303380032098, 0.10040383353811888, 0.21187112908079075, 0.11113976289693195, 0.45821473775386756, 0.49383422023194623, 0.10603293862052354, 0.35074787972985066, 0.10858823393329198, 0.0088057690417862045}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + const real_t tmp_qloop_8 = rayVertex_1 - refVertex_1; + const real_t tmp_qloop_9 = -rayVertex_0; + const real_t tmp_qloop_10 = -forVertex_0 - tmp_qloop_9; + const real_t tmp_qloop_11 = rayVertex_2 - thrVertex_2; + const real_t tmp_qloop_12 = tmp_qloop_10*tmp_qloop_11; + const real_t tmp_qloop_13 = rayVertex_2 - refVertex_2; + const real_t tmp_qloop_14 = rayVertex_1 - thrVertex_1; + const real_t tmp_qloop_15 = tmp_qloop_10*tmp_qloop_14; + const real_t tmp_qloop_16 = -rayVertex_1; + const real_t tmp_qloop_17 = -forVertex_1 - tmp_qloop_16; + const real_t tmp_qloop_18 = rayVertex_0 - thrVertex_0; + const real_t tmp_qloop_19 = rayVertex_0 - refVertex_0; + const real_t tmp_qloop_20 = -rayVertex_2; + const real_t tmp_qloop_21 = -forVertex_2 - tmp_qloop_20; + const real_t tmp_qloop_22 = tmp_qloop_11*tmp_qloop_17; + const real_t tmp_qloop_23 = tmp_qloop_18*tmp_qloop_21; + const real_t tmp_qloop_24 = tmp_qloop_12*tmp_qloop_8 - tmp_qloop_13*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_17*tmp_qloop_18 + tmp_qloop_14*tmp_qloop_19*tmp_qloop_21 - tmp_qloop_19*tmp_qloop_22 - tmp_qloop_23*tmp_qloop_8; + const real_t tmp_qloop_25 = 1.0 / (tmp_qloop_24*tmp_qloop_24*tmp_qloop_24); + const real_t tmp_qloop_26 = radRayVertex - radRefVertex; + const real_t tmp_qloop_27 = tmp_qloop_26*(-tmp_qloop_15 + tmp_qloop_17*tmp_qloop_18); + const real_t tmp_qloop_34 = tmp_qloop_26*(tmp_qloop_14*tmp_qloop_21 - tmp_qloop_22); + const real_t tmp_qloop_36 = -tmp_qloop_12 + tmp_qloop_18*tmp_qloop_21; + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const __m256d p_affine_0_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_0_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_0_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_1_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_1_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_1_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_2_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_2_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_2_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d p_affine_3_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0,macro_vertex_coord_id_1comp0)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0,macro_vertex_coord_id_2comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)),_mm256_set_pd(macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0,macro_vertex_coord_id_3comp0)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0,macro_vertex_coord_id_0comp0)); + const __m256d p_affine_3_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1,macro_vertex_coord_id_1comp1)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1,macro_vertex_coord_id_2comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)),_mm256_set_pd(macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1,macro_vertex_coord_id_3comp1)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1,macro_vertex_coord_id_0comp1)); + const __m256d p_affine_3_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2,macro_vertex_coord_id_1comp2)),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float))),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2,macro_vertex_coord_id_2comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)),_mm256_set_pd(macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2,macro_vertex_coord_id_3comp2)),_mm256_add_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_loadu_pd(& _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]))),_mm256_set_pd(1.0,1.0,1.0,1.0)),_mm256_div_pd(_mm256_set_pd(1.0,1.0,1.0,1.0),_mm256_set_pd(micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float,micro_edges_per_macro_edge_float)))),_mm256_set_pd(macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2,macro_vertex_coord_id_0comp2)); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 11; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_0); + const __m256d tmp_qloop_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_1),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_1),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_1),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_1); + const __m256d tmp_qloop_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_1_2),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_2_2),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_add_pd(_mm256_mul_pd(p_affine_0_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),p_affine_3_2),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),p_affine_0_2); + const __m256d tmp_qloop_3 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_0); + const __m256d tmp_qloop_4 = _mm256_mul_pd(tmp_qloop_1,tmp_qloop_1); + const __m256d tmp_qloop_5 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_2); + const __m256d tmp_qloop_6 = _mm256_add_pd(_mm256_add_pd(tmp_qloop_3,tmp_qloop_4),tmp_qloop_5); + const __m256d tmp_qloop_7 = _mm256_div_pd(_mm256_sqrt_pd(tmp_qloop_6),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,tmp_qloop_6),tmp_qloop_6),tmp_qloop_6),tmp_qloop_6)); + const __m256d tmp_qloop_28 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_20,tmp_qloop_20,tmp_qloop_20,tmp_qloop_20)),_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_29 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_9,tmp_qloop_9,tmp_qloop_9,tmp_qloop_9)),_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_30 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(tmp_qloop_16,tmp_qloop_16,tmp_qloop_16,tmp_qloop_16)),_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_31 = _mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(radRayVertex,radRayVertex,radRayVertex,radRayVertex),_mm256_set_pd(tmp_qloop_24,tmp_qloop_24,tmp_qloop_24,tmp_qloop_24)),_mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_15,tmp_qloop_15,tmp_qloop_15,tmp_qloop_15)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_22,tmp_qloop_22,tmp_qloop_22,tmp_qloop_22))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_23,tmp_qloop_23,tmp_qloop_23,tmp_qloop_23))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_30,_mm256_set_pd(tmp_qloop_10,tmp_qloop_10,tmp_qloop_10,tmp_qloop_10)),_mm256_set_pd(tmp_qloop_11,tmp_qloop_11,tmp_qloop_11,tmp_qloop_11))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_29,_mm256_set_pd(tmp_qloop_14,tmp_qloop_14,tmp_qloop_14,tmp_qloop_14)),_mm256_set_pd(tmp_qloop_21,tmp_qloop_21,tmp_qloop_21,tmp_qloop_21))),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_28,_mm256_set_pd(tmp_qloop_17,tmp_qloop_17,tmp_qloop_17,tmp_qloop_17)),_mm256_set_pd(tmp_qloop_18,tmp_qloop_18,tmp_qloop_18,tmp_qloop_18))),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26))); + const __m256d tmp_qloop_32 = _mm256_mul_pd(tmp_qloop_31,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)); + const __m256d tmp_qloop_33 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),_mm256_mul_pd(tmp_qloop_2,tmp_qloop_32)); + const __m256d tmp_qloop_35 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),_mm256_mul_pd(tmp_qloop_0,tmp_qloop_32)); + const __m256d tmp_qloop_37 = _mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36))); + const __m256d tmp_qloop_38 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_26,tmp_qloop_26,tmp_qloop_26,tmp_qloop_26)),_mm256_set_pd(tmp_qloop_36,tmp_qloop_36,tmp_qloop_36,tmp_qloop_36)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_4)); + const __m256d tmp_qloop_39 = _mm256_mul_pd(tmp_qloop_7,_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25)); + const __m256d tmp_qloop_40 = _mm256_mul_pd(tmp_qloop_0,tmp_qloop_35); + const __m256d tmp_qloop_41 = _mm256_mul_pd(tmp_qloop_2,tmp_qloop_33); + const __m256d tmp_qloop_42 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_2,_mm256_set_pd(tmp_qloop_27,tmp_qloop_27,tmp_qloop_27,tmp_qloop_27)),tmp_qloop_31)),_mm256_mul_pd(tmp_qloop_32,tmp_qloop_5)); + const __m256d tmp_qloop_43 = _mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_1,tmp_qloop_37),tmp_qloop_39),_mm256_set_pd(1.0,1.0,1.0,1.0)); + const __m256d tmp_qloop_44 = _mm256_add_pd(_mm256_mul_pd(tmp_qloop_6,_mm256_add_pd(_mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(tmp_qloop_34,tmp_qloop_34,tmp_qloop_34,tmp_qloop_34)),tmp_qloop_31)),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_3,tmp_qloop_31),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0))); + const __m256d tmp_qloop_45 = _mm256_mul_pd(_mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])),_mm256_castsi256_pd(_mm256_and_si256(_mm256_set1_epi64x(0x7fffffffffffffff), _mm256_castpd_si256(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_40,tmp_qloop_42),tmp_qloop_43),_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_41,tmp_qloop_43),tmp_qloop_44)),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_39),tmp_qloop_40),tmp_qloop_41),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_38,tmp_qloop_42),tmp_qloop_44),tmp_qloop_7),_mm256_set_pd(-1.0,-1.0,-1.0,-1.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))),_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(_mm256_mul_pd(tmp_qloop_0,tmp_qloop_1),tmp_qloop_2),tmp_qloop_33),tmp_qloop_35),tmp_qloop_37),tmp_qloop_7),_mm256_set_pd(-2.0,-2.0,-2.0,-2.0)),_mm256_set_pd(tmp_qloop_25,tmp_qloop_25,tmp_qloop_25,tmp_qloop_25))))))); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_45,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/avx/P1ElementwiseKMass_apply_macro_2D.cpp b/operators/k_mass/avx/P1ElementwiseKMass_apply_macro_2D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..ffa814e9a0bd39196c1509438fe3c63a085e1d64 --- /dev/null +++ b/operators/k_mass/avx/P1ElementwiseKMass_apply_macro_2D.cpp @@ -0,0 +1,264 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::apply_macro_2D( real_t * RESTRICT _data_dst, real_t * RESTRICT _data_k, real_t * RESTRICT _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.28125, 0.26041666666666669, 0.26041666666666669, 0.26041666666666669}; + + const real_t _data_q_p_0 [] = {0.33333333333333331, 0.20000000000000001, 0.59999999999999998, 0.20000000000000001}; + + const real_t _data_q_p_1 [] = {0.33333333333333331, 0.59999999999999998, 0.20000000000000001, 0.20000000000000001}; + + const real_t tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY; + const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY; + const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY; + const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY; + const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY); + { + /* FaceType.GRAY */ + const real_t _data_phi_psi_jac_affine_det_0_0_GRAY [] = {((real_t)(abs_det_jac_affine_GRAY*0.11111111111111117)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000029)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000015)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000004)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.3600000000000001)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 += 4) + { + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 4; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GRAY[6*q],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 1],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 1],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 1],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 2],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 2],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 2],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 2])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 4],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 4],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 4],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 2]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2; + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + } + } + } + const real_t tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE; + const real_t p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE; + const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE; + const real_t p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE; + const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE; + const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE; + const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE; + const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE; + const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE); + { + /* FaceType.BLUE */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE [] = {((real_t)(abs_det_jac_affine_BLUE*0.11111111111111117)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000029)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000015)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000004)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.3600000000000001)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 4; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE[6*q],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 2])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 2]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2; + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + } + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/avx/P1ElementwiseKMass_apply_macro_3D.cpp b/operators/k_mass/avx/P1ElementwiseKMass_apply_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..9749d7751321b163912bee32550ba1a36b01baa7 --- /dev/null +++ b/operators/k_mass/avx/P1ElementwiseKMass_apply_macro_3D.cpp @@ -0,0 +1,944 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::apply_macro_3D( real_t * RESTRICT _data_dst, real_t * RESTRICT _data_k, real_t * RESTRICT _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.1333333333333333, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983}; + + const real_t _data_q_p_0 [] = {0.25, 0.16666666666666666, 0.16666666666666666, 0.5, 0.16666666666666666}; + + const real_t _data_q_p_1 [] = {0.25, 0.16666666666666666, 0.5, 0.16666666666666666, 0.16666666666666666}; + + const real_t _data_q_p_2 [] = {0.25, 0.5, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 += 4) + { + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 += 4) + { + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d src_dof_0 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d src_dof_1 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_2 = _mm256_loadu_pd(& _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d src_dof_3 = _mm256_loadu_pd(& _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_0_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q])); + const __m256d q_tmp_0_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1])); + const __m256d q_tmp_0_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2])); + const __m256d q_tmp_0_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4])); + const __m256d q_tmp_1_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5])); + const __m256d q_tmp_1_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7])); + const __m256d q_tmp_2_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_0_1 = _mm256_add_pd(q_acc_0_1,q_tmp_0_1); + q_acc_0_2 = _mm256_add_pd(q_acc_0_2,q_tmp_0_2); + q_acc_0_3 = _mm256_add_pd(q_acc_0_3,q_tmp_0_3); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_1_2 = _mm256_add_pd(q_acc_1_2,q_tmp_1_2); + q_acc_1_3 = _mm256_add_pd(q_acc_1_3,q_tmp_1_3); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_2_3 = _mm256_add_pd(q_acc_2_3,q_tmp_2_3); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatVec_0 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_0,src_dof_0),_mm256_mul_pd(q_acc_0_1,src_dof_1)),_mm256_mul_pd(q_acc_0_2,src_dof_2)),_mm256_mul_pd(q_acc_0_3,src_dof_3)); + const __m256d elMatVec_1 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_1,src_dof_0),_mm256_mul_pd(q_acc_1_1,src_dof_1)),_mm256_mul_pd(q_acc_1_2,src_dof_2)),_mm256_mul_pd(q_acc_1_3,src_dof_3)); + const __m256d elMatVec_2 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_2,src_dof_0),_mm256_mul_pd(q_acc_1_2,src_dof_1)),_mm256_mul_pd(q_acc_2_2,src_dof_2)),_mm256_mul_pd(q_acc_2_3,src_dof_3)); + const __m256d elMatVec_3 = _mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(q_acc_0_3,src_dof_0),_mm256_mul_pd(q_acc_1_3,src_dof_1)),_mm256_mul_pd(q_acc_2_3,src_dof_2)),_mm256_mul_pd(q_acc_3_3,src_dof_3)); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_0,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_1,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatVec_2,_mm256_loadu_pd(& _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatVec_3,_mm256_loadu_pd(& _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/k_mass/avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_2D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..6f4565938f35ca684d07a874cb9ca698cb197a2b --- /dev/null +++ b/operators/k_mass/avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_2D.cpp @@ -0,0 +1,216 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT _data_invDiag_, real_t * RESTRICT _data_k, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.28125, 0.26041666666666669, 0.26041666666666669, 0.26041666666666669}; + + const real_t _data_q_p_0 [] = {0.33333333333333331, 0.20000000000000001, 0.59999999999999998, 0.20000000000000001}; + + const real_t _data_q_p_1 [] = {0.33333333333333331, 0.59999999999999998, 0.20000000000000001, 0.20000000000000001}; + + const real_t tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY; + const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY; + const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY; + const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY; + const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY); + { + /* FaceType.GRAY */ + const real_t _data_phi_psi_jac_affine_det_0_0_GRAY [] = {((real_t)(abs_det_jac_affine_GRAY*0.11111111111111117)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000029)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000015)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000004)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.3600000000000001)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 += 4) + { + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 4; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GRAY[6*q],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5],_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + } + } + } + const real_t tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE; + const real_t p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE; + const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE; + const real_t p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE; + const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE; + const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE; + const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE; + const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE; + const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE); + { + /* FaceType.BLUE */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE [] = {((real_t)(abs_det_jac_affine_BLUE*0.11111111111111117)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000029)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000015)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000004)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.3600000000000001)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 4; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE[6*q],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5],_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + } + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/k_mass/avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..e4e5adca1bc28a0574a3dc29defa4b25e47af81b --- /dev/null +++ b/operators/k_mass/avx/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_3D.cpp @@ -0,0 +1,680 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT _data_invDiag_, real_t * RESTRICT _data_k, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.1333333333333333, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983}; + + const real_t _data_q_p_0 [] = {0.25, 0.16666666666666666, 0.16666666666666666, 0.5, 0.16666666666666666}; + + const real_t _data_q_p_1 [] = {0.25, 0.16666666666666666, 0.5, 0.16666666666666666, 0.16666666666666666}; + + const real_t _data_q_p_2 [] = {0.25, 0.5, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 += 4) + { + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 += 4) + { + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + { + for (int64_t ctr_0 = 0; ctr_0 < (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 += 4) + { + const __m256d k_dof_0 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]); + const __m256d k_dof_1 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_2 = _mm256_loadu_pd(& _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]); + const __m256d k_dof_3 = _mm256_loadu_pd(& _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]); + __m256d q_acc_0_0 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_1_1 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_2_2 = _mm256_set_pd(0.0,0.0,0.0,0.0); + __m256d q_acc_3_3 = _mm256_set_pd(0.0,0.0,0.0,0.0); + for (int64_t q = 0; q < 5; q += 1) + { + const __m256d tmp_qloop_0 = _mm256_mul_pd(_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(k_dof_0,_mm256_add_pd(_mm256_add_pd(_mm256_add_pd(_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q])),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(_mm256_set_pd(-1.0,-1.0,-1.0,-1.0),_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(1.0,1.0,1.0,1.0))),_mm256_mul_pd(k_dof_1,_mm256_set_pd(_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q],_data_q_p_0[q]))),_mm256_mul_pd(k_dof_2,_mm256_set_pd(_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q],_data_q_p_1[q]))),_mm256_mul_pd(k_dof_3,_mm256_set_pd(_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q],_data_q_p_2[q]))),_mm256_set_pd(_data_q_w[q],_data_q_w[q],_data_q_w[q],_data_q_w[q])); + const __m256d q_tmp_0_0 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q])); + const __m256d q_tmp_1_1 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4])); + const __m256d q_tmp_2_2 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7])); + const __m256d q_tmp_3_3 = _mm256_mul_pd(tmp_qloop_0,_mm256_set_pd(_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9],_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9])); + q_acc_0_0 = _mm256_add_pd(q_acc_0_0,q_tmp_0_0); + q_acc_1_1 = _mm256_add_pd(q_acc_1_1,q_tmp_1_1); + q_acc_2_2 = _mm256_add_pd(q_acc_2_2,q_tmp_2_2); + q_acc_3_3 = _mm256_add_pd(q_acc_3_3,q_tmp_3_3); + } + const __m256d elMatDiag_0 = q_acc_0_0; + const __m256d elMatDiag_1 = q_acc_1_1; + const __m256d elMatDiag_2 = q_acc_2_2; + const __m256d elMatDiag_3 = q_acc_3_3; + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_0,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_1,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1],_mm256_add_pd(elMatDiag_2,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]))); + _mm256_storeu_pd(&_data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))],_mm256_add_pd(elMatDiag_3,_mm256_loadu_pd(& _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]))); + } + for (int64_t ctr_0 = (int64_t)((-ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1) / (4)) * (4); ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/noarch/P1ElementwiseKMassIcosahedralShellMap_apply_macro_3D.cpp b/operators/k_mass/noarch/P1ElementwiseKMassIcosahedralShellMap_apply_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..d15535fa11d85699790563687d7fd6632ecfd34d --- /dev/null +++ b/operators/k_mass/noarch/P1ElementwiseKMassIcosahedralShellMap_apply_macro_3D.cpp @@ -0,0 +1,956 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMassIcosahedralShellMap.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMassIcosahedralShellMap::apply_macro_3D( real_t * RESTRICT _data_dst, real_t * RESTRICT _data_k, real_t * RESTRICT _data_src, real_t forVertex_0, real_t forVertex_1, real_t forVertex_2, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float, real_t radRayVertex, real_t radRefVertex, real_t rayVertex_0, real_t rayVertex_1, real_t rayVertex_2, real_t refVertex_0, real_t refVertex_1, real_t refVertex_2, real_t thrVertex_0, real_t thrVertex_1, real_t thrVertex_2 ) const +{ + { + const real_t _data_q_w [] = {0.02364442875776411, 0.0041220137385117907, 0.025486503738822306, 0.0091363578885896128, 0.0052827872295400091, 0.02526054964096567, 0.01949470769240411, 0.0094909452962763929, 0.019522077110586403, 0.018549261128954084, 0.0066770344442521412}; + + const real_t _data_q_p_0 [] = {0.4881393122183349, 0.028620108024415062, 0.12011493111997025, 0.19015055018870972, 0.81934505243836264, 0.33721826230431567, 0.086557484679865959, 0.079692524193577793, 0.061206893331017434, 0.43957887847117094, 0.085226802665704912}; + + const real_t _data_q_p_1 [] = {0.31081202744417918, 0.1144811451032984, 0.33248812467264544, 0.58529107547132619, 0.026719351714152292, 0.11264913310739497, 0.079391877387070833, 0.063296594113889035, 0.44299746808745322, 0.057741550565775693, 0.77428400209089154}; + + const real_t _data_q_p_2 [] = {0.082320586256909412, 0.85148303380032098, 0.10040383353811888, 0.21187112908079075, 0.11113976289693195, 0.45821473775386756, 0.49383422023194623, 0.10603293862052354, 0.35074787972985066, 0.10858823393329198, 0.0088057690417862045}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + const real_t tmp_qloop_8 = rayVertex_1 - refVertex_1; + const real_t tmp_qloop_9 = -rayVertex_0; + const real_t tmp_qloop_10 = -forVertex_0 - tmp_qloop_9; + const real_t tmp_qloop_11 = rayVertex_2 - thrVertex_2; + const real_t tmp_qloop_12 = tmp_qloop_10*tmp_qloop_11; + const real_t tmp_qloop_13 = rayVertex_2 - refVertex_2; + const real_t tmp_qloop_14 = rayVertex_1 - thrVertex_1; + const real_t tmp_qloop_15 = tmp_qloop_10*tmp_qloop_14; + const real_t tmp_qloop_16 = -rayVertex_1; + const real_t tmp_qloop_17 = -forVertex_1 - tmp_qloop_16; + const real_t tmp_qloop_18 = rayVertex_0 - thrVertex_0; + const real_t tmp_qloop_19 = rayVertex_0 - refVertex_0; + const real_t tmp_qloop_20 = -rayVertex_2; + const real_t tmp_qloop_21 = -forVertex_2 - tmp_qloop_20; + const real_t tmp_qloop_22 = tmp_qloop_11*tmp_qloop_17; + const real_t tmp_qloop_23 = tmp_qloop_18*tmp_qloop_21; + const real_t tmp_qloop_24 = tmp_qloop_12*tmp_qloop_8 - tmp_qloop_13*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_17*tmp_qloop_18 + tmp_qloop_14*tmp_qloop_19*tmp_qloop_21 - tmp_qloop_19*tmp_qloop_22 - tmp_qloop_23*tmp_qloop_8; + const real_t tmp_qloop_25 = 1.0 / (tmp_qloop_24*tmp_qloop_24*tmp_qloop_24); + const real_t tmp_qloop_26 = radRayVertex - radRefVertex; + const real_t tmp_qloop_27 = tmp_qloop_26*(-tmp_qloop_15 + tmp_qloop_17*tmp_qloop_18); + const real_t tmp_qloop_34 = tmp_qloop_26*(tmp_qloop_14*tmp_qloop_21 - tmp_qloop_22); + const real_t tmp_qloop_36 = -tmp_qloop_12 + tmp_qloop_18*tmp_qloop_21; + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/noarch/P1ElementwiseKMassIcosahedralShellMap_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/k_mass/noarch/P1ElementwiseKMassIcosahedralShellMap_computeInverseDiagonalOperatorValues_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..002834b0cb732aa11afac1f867ccfa5a61252096 --- /dev/null +++ b/operators/k_mass/noarch/P1ElementwiseKMassIcosahedralShellMap_computeInverseDiagonalOperatorValues_macro_3D.cpp @@ -0,0 +1,824 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMassIcosahedralShellMap.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMassIcosahedralShellMap::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT _data_invDiag_, real_t * RESTRICT _data_k, real_t forVertex_0, real_t forVertex_1, real_t forVertex_2, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float, real_t radRayVertex, real_t radRefVertex, real_t rayVertex_0, real_t rayVertex_1, real_t rayVertex_2, real_t refVertex_0, real_t refVertex_1, real_t refVertex_2, real_t thrVertex_0, real_t thrVertex_1, real_t thrVertex_2 ) const +{ + { + const real_t _data_q_w [] = {0.02364442875776411, 0.0041220137385117907, 0.025486503738822306, 0.0091363578885896128, 0.0052827872295400091, 0.02526054964096567, 0.01949470769240411, 0.0094909452962763929, 0.019522077110586403, 0.018549261128954084, 0.0066770344442521412}; + + const real_t _data_q_p_0 [] = {0.4881393122183349, 0.028620108024415062, 0.12011493111997025, 0.19015055018870972, 0.81934505243836264, 0.33721826230431567, 0.086557484679865959, 0.079692524193577793, 0.061206893331017434, 0.43957887847117094, 0.085226802665704912}; + + const real_t _data_q_p_1 [] = {0.31081202744417918, 0.1144811451032984, 0.33248812467264544, 0.58529107547132619, 0.026719351714152292, 0.11264913310739497, 0.079391877387070833, 0.063296594113889035, 0.44299746808745322, 0.057741550565775693, 0.77428400209089154}; + + const real_t _data_q_p_2 [] = {0.082320586256909412, 0.85148303380032098, 0.10040383353811888, 0.21187112908079075, 0.11113976289693195, 0.45821473775386756, 0.49383422023194623, 0.10603293862052354, 0.35074787972985066, 0.10858823393329198, 0.0088057690417862045}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + const real_t tmp_qloop_8 = rayVertex_1 - refVertex_1; + const real_t tmp_qloop_9 = -rayVertex_0; + const real_t tmp_qloop_10 = -forVertex_0 - tmp_qloop_9; + const real_t tmp_qloop_11 = rayVertex_2 - thrVertex_2; + const real_t tmp_qloop_12 = tmp_qloop_10*tmp_qloop_11; + const real_t tmp_qloop_13 = rayVertex_2 - refVertex_2; + const real_t tmp_qloop_14 = rayVertex_1 - thrVertex_1; + const real_t tmp_qloop_15 = tmp_qloop_10*tmp_qloop_14; + const real_t tmp_qloop_16 = -rayVertex_1; + const real_t tmp_qloop_17 = -forVertex_1 - tmp_qloop_16; + const real_t tmp_qloop_18 = rayVertex_0 - thrVertex_0; + const real_t tmp_qloop_19 = rayVertex_0 - refVertex_0; + const real_t tmp_qloop_20 = -rayVertex_2; + const real_t tmp_qloop_21 = -forVertex_2 - tmp_qloop_20; + const real_t tmp_qloop_22 = tmp_qloop_11*tmp_qloop_17; + const real_t tmp_qloop_23 = tmp_qloop_18*tmp_qloop_21; + const real_t tmp_qloop_24 = tmp_qloop_12*tmp_qloop_8 - tmp_qloop_13*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_17*tmp_qloop_18 + tmp_qloop_14*tmp_qloop_19*tmp_qloop_21 - tmp_qloop_19*tmp_qloop_22 - tmp_qloop_23*tmp_qloop_8; + const real_t tmp_qloop_25 = 1.0 / (tmp_qloop_24*tmp_qloop_24*tmp_qloop_24); + const real_t tmp_qloop_26 = radRayVertex - radRefVertex; + const real_t tmp_qloop_27 = tmp_qloop_26*(-tmp_qloop_15 + tmp_qloop_17*tmp_qloop_18); + const real_t tmp_qloop_34 = tmp_qloop_26*(tmp_qloop_14*tmp_qloop_21 - tmp_qloop_22); + const real_t tmp_qloop_36 = -tmp_qloop_12 + tmp_qloop_18*tmp_qloop_21; + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/noarch/P1ElementwiseKMassIcosahedralShellMap_toMatrix_macro_3D.cpp b/operators/k_mass/noarch/P1ElementwiseKMassIcosahedralShellMap_toMatrix_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..127353cce61649cb13236cf17c54c9c10d2c63d9 --- /dev/null +++ b/operators/k_mass/noarch/P1ElementwiseKMassIcosahedralShellMap_toMatrix_macro_3D.cpp @@ -0,0 +1,1202 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMassIcosahedralShellMap.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMassIcosahedralShellMap::toMatrix_macro_3D( idx_t * RESTRICT _data_dst, real_t * RESTRICT _data_k, idx_t * RESTRICT _data_src, real_t forVertex_0, real_t forVertex_1, real_t forVertex_2, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float, real_t radRayVertex, real_t radRefVertex, real_t rayVertex_0, real_t rayVertex_1, real_t rayVertex_2, real_t refVertex_0, real_t refVertex_1, real_t refVertex_2, real_t thrVertex_0, real_t thrVertex_1, real_t thrVertex_2 ) const +{ + { + const real_t _data_q_w [] = {0.02364442875776411, 0.0041220137385117907, 0.025486503738822306, 0.0091363578885896128, 0.0052827872295400091, 0.02526054964096567, 0.01949470769240411, 0.0094909452962763929, 0.019522077110586403, 0.018549261128954084, 0.0066770344442521412}; + + const real_t _data_q_p_0 [] = {0.4881393122183349, 0.028620108024415062, 0.12011493111997025, 0.19015055018870972, 0.81934505243836264, 0.33721826230431567, 0.086557484679865959, 0.079692524193577793, 0.061206893331017434, 0.43957887847117094, 0.085226802665704912}; + + const real_t _data_q_p_1 [] = {0.31081202744417918, 0.1144811451032984, 0.33248812467264544, 0.58529107547132619, 0.026719351714152292, 0.11264913310739497, 0.079391877387070833, 0.063296594113889035, 0.44299746808745322, 0.057741550565775693, 0.77428400209089154}; + + const real_t _data_q_p_2 [] = {0.082320586256909412, 0.85148303380032098, 0.10040383353811888, 0.21187112908079075, 0.11113976289693195, 0.45821473775386756, 0.49383422023194623, 0.10603293862052354, 0.35074787972985066, 0.10858823393329198, 0.0088057690417862045}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + const real_t tmp_qloop_8 = rayVertex_1 - refVertex_1; + const real_t tmp_qloop_9 = -rayVertex_0; + const real_t tmp_qloop_10 = -forVertex_0 - tmp_qloop_9; + const real_t tmp_qloop_11 = rayVertex_2 - thrVertex_2; + const real_t tmp_qloop_12 = tmp_qloop_10*tmp_qloop_11; + const real_t tmp_qloop_13 = rayVertex_2 - refVertex_2; + const real_t tmp_qloop_14 = rayVertex_1 - thrVertex_1; + const real_t tmp_qloop_15 = tmp_qloop_10*tmp_qloop_14; + const real_t tmp_qloop_16 = -rayVertex_1; + const real_t tmp_qloop_17 = -forVertex_1 - tmp_qloop_16; + const real_t tmp_qloop_18 = rayVertex_0 - thrVertex_0; + const real_t tmp_qloop_19 = rayVertex_0 - refVertex_0; + const real_t tmp_qloop_20 = -rayVertex_2; + const real_t tmp_qloop_21 = -forVertex_2 - tmp_qloop_20; + const real_t tmp_qloop_22 = tmp_qloop_11*tmp_qloop_17; + const real_t tmp_qloop_23 = tmp_qloop_18*tmp_qloop_21; + const real_t tmp_qloop_24 = tmp_qloop_12*tmp_qloop_8 - tmp_qloop_13*tmp_qloop_15 + tmp_qloop_13*tmp_qloop_17*tmp_qloop_18 + tmp_qloop_14*tmp_qloop_19*tmp_qloop_21 - tmp_qloop_19*tmp_qloop_22 - tmp_qloop_23*tmp_qloop_8; + const real_t tmp_qloop_25 = 1.0 / (tmp_qloop_24*tmp_qloop_24*tmp_qloop_24); + const real_t tmp_qloop_26 = radRayVertex - radRefVertex; + const real_t tmp_qloop_27 = tmp_qloop_26*(-tmp_qloop_15 + tmp_qloop_17*tmp_qloop_18); + const real_t tmp_qloop_34 = tmp_qloop_26*(tmp_qloop_14*tmp_qloop_21 - tmp_qloop_22); + const real_t tmp_qloop_36 = -tmp_qloop_12 + tmp_qloop_18*tmp_qloop_21; + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_UP*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_UP*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014096355574882875)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.057955840422700154)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036902113419526698)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0097737646634668343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.23827998813298903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15171956930578787)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040183914356857871)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.096604116403961188)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025586228314903446)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.006776678921681263)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*2.9329948077858354e-5)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0001549982931488903)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00061999703402951614)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0046113877967092686)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00081911058332918743)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0032764627396151356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.024369536408321849)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.013105932584162464)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.097478752745491282)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.72502335684979857)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19980284098578613)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05369054669914005)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.14861990110801632)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044879821876322876)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.014427596677955198)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039936788193262886)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012059999549612108)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11054835304833262)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.033383082323033608)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010080929789150286)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00016096619226641556)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0024124866664109036)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074257314225100301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0026880609779859582)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.036157231737069015)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11129342002141429)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.040287411763815499)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.34256564302638165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12400628100102019)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.044889375337969099)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0018314833179316477)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03506455399301435)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011434769125059365)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0047563187271011803)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.67132631495522321)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021892368631351165)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.091061814858773904)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00071392375602457301)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0029695824142706179)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012352046896786251)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084488942433905041)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.030996383328623218)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.010354468015978589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042118121246429517)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11371615643154225)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.03798734491656329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15451837762758694)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.012689827189847588)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.051617492985005502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.20996074589484562)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.11574721087338083)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.029448277363003303)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027010420119195546)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.16801050934553716)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0074921981541052306)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068719612106371807)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042745047952120238)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063030701950436896)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.039206425862194409)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.24387223707209438)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.5639678709806667)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.05984732789710942)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047534346051112265)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.079628398143121434)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0063508984123439817)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0050442653577921753)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0084500325263322223)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0040064588264184121)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0067115238785661882)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011242984072503712)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02103885234789472)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.008877922703937835)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.064255789923053114)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.050875193876792964)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0037462837912345466)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027114498775139551)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.021468188060705502)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19624675673189412)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.1553804226573664)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.12302407513498578)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.15530798192190498)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.17323422794674675)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.022755444864638118)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.042793682296471541)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.19322959039797247)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.025381966038890084)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.047733094087561635)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0033340866617400313)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0062700530005074589)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011791404548751343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.017340524736196797)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.011222957379229155)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.10196037024842883)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0011595738377625402)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0072636078926190057)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.06598974985341266)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.00075048754044408628)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.59951571589388775)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0068181660951622978)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*7.7541568417280335e-5))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + + const int64_t phantom_ctr_0 = ctr_0; + real_t _data_float_loop_ctr_array_dim_0[4]; + _data_float_loop_ctr_array_dim_0[0] = (real_t) ctr_0+ 0; + _data_float_loop_ctr_array_dim_0[1] = (real_t) ctr_0+ 1; + _data_float_loop_ctr_array_dim_0[2] = (real_t) ctr_0+ 2; + _data_float_loop_ctr_array_dim_0[3] = (real_t) ctr_0+ 3; + real_t _data_float_loop_ctr_array_dim_1[4]; + _data_float_loop_ctr_array_dim_1[0] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[1] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[2] = (real_t) ctr_1; + _data_float_loop_ctr_array_dim_1[3] = (real_t) ctr_1; + real_t _data_float_loop_ctr_array_dim_2[4]; + _data_float_loop_ctr_array_dim_2[0] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[1] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[2] = (real_t) ctr_2; + _data_float_loop_ctr_array_dim_2[3] = (real_t) ctr_2; + + const real_t p_affine_0_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_0_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_1_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*1.0*_data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0]; + const real_t p_affine_2_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_2_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*(1.0 + _data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*1.0*_data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_0 = macro_vertex_coord_id_0comp0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_1 = macro_vertex_coord_id_0comp1 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t p_affine_3_2 = macro_vertex_coord_id_0comp2 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2)*1.0*_data_float_loop_ctr_array_dim_0[ctr_0 - phantom_ctr_0] + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2)*(1.0 + _data_float_loop_ctr_array_dim_1[ctr_0 - phantom_ctr_0])*1.0 + 1.0 / (micro_edges_per_macro_edge_float)*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2)*(1.0 + _data_float_loop_ctr_array_dim_2[ctr_0 - phantom_ctr_0])*1.0; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 11; q += 1) + { + const real_t tmp_qloop_0 = p_affine_0_0 + (-p_affine_0_0 + p_affine_1_0)*_data_q_p_0[q] + (-p_affine_0_0 + p_affine_2_0)*_data_q_p_1[q] + (-p_affine_0_0 + p_affine_3_0)*_data_q_p_2[q]; + const real_t tmp_qloop_1 = p_affine_0_1 + (-p_affine_0_1 + p_affine_1_1)*_data_q_p_0[q] + (-p_affine_0_1 + p_affine_2_1)*_data_q_p_1[q] + (-p_affine_0_1 + p_affine_3_1)*_data_q_p_2[q]; + const real_t tmp_qloop_2 = p_affine_0_2 + (-p_affine_0_2 + p_affine_1_2)*_data_q_p_0[q] + (-p_affine_0_2 + p_affine_2_2)*_data_q_p_1[q] + (-p_affine_0_2 + p_affine_3_2)*_data_q_p_2[q]; + const real_t tmp_qloop_3 = (tmp_qloop_0*tmp_qloop_0); + const real_t tmp_qloop_4 = (tmp_qloop_1*tmp_qloop_1); + const real_t tmp_qloop_5 = (tmp_qloop_2*tmp_qloop_2); + const real_t tmp_qloop_6 = tmp_qloop_3 + tmp_qloop_4 + tmp_qloop_5; + const real_t tmp_qloop_7 = pow(tmp_qloop_6, -4.5000000000000000); + const real_t tmp_qloop_28 = -tmp_qloop_2 - tmp_qloop_20; + const real_t tmp_qloop_29 = -tmp_qloop_0 - tmp_qloop_9; + const real_t tmp_qloop_30 = -tmp_qloop_1 - tmp_qloop_16; + const real_t tmp_qloop_31 = radRayVertex*tmp_qloop_24 - tmp_qloop_26*(tmp_qloop_10*tmp_qloop_11*tmp_qloop_30 + tmp_qloop_14*tmp_qloop_21*tmp_qloop_29 - tmp_qloop_15*tmp_qloop_28 + tmp_qloop_17*tmp_qloop_18*tmp_qloop_28 - tmp_qloop_22*tmp_qloop_29 - tmp_qloop_23*tmp_qloop_30); + const real_t tmp_qloop_32 = -tmp_qloop_31; + const real_t tmp_qloop_33 = tmp_qloop_2*tmp_qloop_32 + tmp_qloop_27*tmp_qloop_6; + const real_t tmp_qloop_35 = tmp_qloop_0*tmp_qloop_32 + tmp_qloop_34*tmp_qloop_6; + const real_t tmp_qloop_37 = -tmp_qloop_1*tmp_qloop_31 - tmp_qloop_26*tmp_qloop_36*tmp_qloop_6; + const real_t tmp_qloop_38 = tmp_qloop_32*tmp_qloop_4 + tmp_qloop_6*(-tmp_qloop_1*tmp_qloop_26*tmp_qloop_36 + tmp_qloop_31); + const real_t tmp_qloop_39 = tmp_qloop_25*tmp_qloop_7; + const real_t tmp_qloop_40 = tmp_qloop_0*tmp_qloop_35; + const real_t tmp_qloop_41 = tmp_qloop_2*tmp_qloop_33; + const real_t tmp_qloop_42 = tmp_qloop_32*tmp_qloop_5 + tmp_qloop_6*(tmp_qloop_2*tmp_qloop_27 + tmp_qloop_31); + const real_t tmp_qloop_43 = tmp_qloop_1*tmp_qloop_37*tmp_qloop_39*1.0; + const real_t tmp_qloop_44 = -tmp_qloop_3*tmp_qloop_31 + tmp_qloop_6*(tmp_qloop_0*tmp_qloop_34 + tmp_qloop_31); + const real_t tmp_qloop_45 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*abs(tmp_qloop_0*tmp_qloop_1*tmp_qloop_2*tmp_qloop_25*tmp_qloop_33*tmp_qloop_35*tmp_qloop_37*tmp_qloop_7*-2.0 - tmp_qloop_25*tmp_qloop_38*tmp_qloop_42*tmp_qloop_44*tmp_qloop_7 + tmp_qloop_38*tmp_qloop_39*tmp_qloop_40*tmp_qloop_41*1.0 + tmp_qloop_40*tmp_qloop_42*tmp_qloop_43 + tmp_qloop_41*tmp_qloop_43*tmp_qloop_44)*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_45*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/noarch/P1ElementwiseKMass_apply_macro_2D.cpp b/operators/k_mass/noarch/P1ElementwiseKMass_apply_macro_2D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0285134df7ee49c03eac2b596fa9b3b02e61aa94 --- /dev/null +++ b/operators/k_mass/noarch/P1ElementwiseKMass_apply_macro_2D.cpp @@ -0,0 +1,186 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::apply_macro_2D( real_t * RESTRICT _data_dst, real_t * RESTRICT _data_k, real_t * RESTRICT _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.28125, 0.26041666666666669, 0.26041666666666669, 0.26041666666666669}; + + const real_t _data_q_p_0 [] = {0.33333333333333331, 0.20000000000000001, 0.59999999999999998, 0.20000000000000001}; + + const real_t _data_q_p_1 [] = {0.33333333333333331, 0.59999999999999998, 0.20000000000000001, 0.20000000000000001}; + + const real_t tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY; + const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY; + const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY; + const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY; + const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY); + { + /* FaceType.GRAY */ + const real_t _data_phi_psi_jac_affine_det_0_0_GRAY [] = {((real_t)(abs_det_jac_affine_GRAY*0.11111111111111117)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000029)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000015)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000004)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.3600000000000001)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 2]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2; + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + } + } + const real_t tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE; + const real_t p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE; + const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE; + const real_t p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE; + const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE; + const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE; + const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE; + const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE; + const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE); + { + /* FaceType.BLUE */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE [] = {((real_t)(abs_det_jac_affine_BLUE*0.11111111111111117)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000029)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000015)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000004)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.3600000000000001)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 2]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2; + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/noarch/P1ElementwiseKMass_apply_macro_3D.cpp b/operators/k_mass/noarch/P1ElementwiseKMass_apply_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..c6b578ad116eb8d4fc6f129474ebf6cccb4e2044 --- /dev/null +++ b/operators/k_mass/noarch/P1ElementwiseKMass_apply_macro_3D.cpp @@ -0,0 +1,614 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::apply_macro_3D( real_t * RESTRICT _data_dst, real_t * RESTRICT _data_k, real_t * RESTRICT _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.1333333333333333, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983}; + + const real_t _data_q_p_0 [] = {0.25, 0.16666666666666666, 0.16666666666666666, 0.5, 0.16666666666666666}; + + const real_t _data_q_p_1 [] = {0.25, 0.16666666666666666, 0.5, 0.16666666666666666, 0.16666666666666666}; + + const real_t _data_q_p_2 [] = {0.25, 0.5, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_3 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_0 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_3 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t src_dof_0 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t src_dof_1 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_2 = _data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t src_dof_3 = _data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatVec_0 = q_acc_0_0*src_dof_0 + q_acc_0_1*src_dof_1 + q_acc_0_2*src_dof_2 + q_acc_0_3*src_dof_3; + const real_t elMatVec_1 = q_acc_0_1*src_dof_0 + q_acc_1_1*src_dof_1 + q_acc_1_2*src_dof_2 + q_acc_1_3*src_dof_3; + const real_t elMatVec_2 = q_acc_0_2*src_dof_0 + q_acc_1_2*src_dof_1 + q_acc_2_2*src_dof_2 + q_acc_2_3*src_dof_3; + const real_t elMatVec_3 = q_acc_0_3*src_dof_0 + q_acc_1_3*src_dof_1 + q_acc_2_3*src_dof_2 + q_acc_3_3*src_dof_3; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_0 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_1 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatVec_2 + _data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatVec_3 + _data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/noarch/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_2D.cpp b/operators/k_mass/noarch/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_2D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..3621404e553aafd810d503d803d9f1d48af44f22 --- /dev/null +++ b/operators/k_mass/noarch/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_2D.cpp @@ -0,0 +1,162 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::computeInverseDiagonalOperatorValues_macro_2D( real_t * RESTRICT _data_invDiag_, real_t * RESTRICT _data_k, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.28125, 0.26041666666666669, 0.26041666666666669, 0.26041666666666669}; + + const real_t _data_q_p_0 [] = {0.33333333333333331, 0.20000000000000001, 0.59999999999999998, 0.20000000000000001}; + + const real_t _data_q_p_1 [] = {0.33333333333333331, 0.59999999999999998, 0.20000000000000001, 0.20000000000000001}; + + const real_t tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY; + const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY; + const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY; + const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY; + const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY); + { + /* FaceType.GRAY */ + const real_t _data_phi_psi_jac_affine_det_0_0_GRAY [] = {((real_t)(abs_det_jac_affine_GRAY*0.11111111111111117)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000029)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000015)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000004)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.3600000000000001)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + } + } + const real_t tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE; + const real_t p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE; + const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE; + const real_t p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE; + const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE; + const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE; + const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE; + const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE; + const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE); + { + /* FaceType.BLUE */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE [] = {((real_t)(abs_det_jac_affine_BLUE*0.11111111111111117)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000029)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000015)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000004)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.3600000000000001)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/noarch/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_3D.cpp b/operators/k_mass/noarch/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b509449a46036c6b64e53b2334326c36509983e0 --- /dev/null +++ b/operators/k_mass/noarch/P1ElementwiseKMass_computeInverseDiagonalOperatorValues_macro_3D.cpp @@ -0,0 +1,482 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::computeInverseDiagonalOperatorValues_macro_3D( real_t * RESTRICT _data_invDiag_, real_t * RESTRICT _data_k, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.1333333333333333, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983}; + + const real_t _data_q_p_0 [] = {0.25, 0.16666666666666666, 0.16666666666666666, 0.5, 0.16666666666666666}; + + const real_t _data_q_p_1 [] = {0.25, 0.16666666666666666, 0.5, 0.16666666666666666, 0.16666666666666666}; + + const real_t _data_q_p_2 [] = {0.25, 0.5, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_0 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_3 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMatDiag_0 = q_acc_0_0; + const real_t elMatDiag_1 = q_acc_1_1; + const real_t elMatDiag_2 = q_acc_2_2; + const real_t elMatDiag_3 = q_acc_3_3; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_0 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_1 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1] = elMatDiag_2 + _data_invDiag_[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))] = elMatDiag_3 + _data_invDiag_[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/noarch/P1ElementwiseKMass_toMatrix_macro_2D.cpp b/operators/k_mass/noarch/P1ElementwiseKMass_toMatrix_macro_2D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..181df07172c65f41d0f25e770eefdaa46357bc89 --- /dev/null +++ b/operators/k_mass/noarch/P1ElementwiseKMass_toMatrix_macro_2D.cpp @@ -0,0 +1,242 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::toMatrix_macro_2D( idx_t * RESTRICT _data_dst, real_t * RESTRICT _data_k, idx_t * RESTRICT _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.28125, 0.26041666666666669, 0.26041666666666669, 0.26041666666666669}; + + const real_t _data_q_p_0 [] = {0.33333333333333331, 0.20000000000000001, 0.59999999999999998, 0.20000000000000001}; + + const real_t _data_q_p_1 [] = {0.33333333333333331, 0.59999999999999998, 0.20000000000000001, 0.20000000000000001}; + + const real_t tmp_coords_jac_0_GRAY = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_GRAY = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_GRAY = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_1_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_2_0_GRAY = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_GRAY = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GRAY*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t jac_affine_0_0_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_1_0_GRAY; + const real_t jac_affine_0_1_GRAY = -p_affine_const_0_0_GRAY + p_affine_const_2_0_GRAY; + const real_t jac_affine_1_0_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_1_1_GRAY; + const real_t jac_affine_1_1_GRAY = -p_affine_const_0_1_GRAY + p_affine_const_2_1_GRAY; + const real_t abs_det_jac_affine_GRAY = abs(jac_affine_0_0_GRAY*jac_affine_1_1_GRAY - jac_affine_0_1_GRAY*jac_affine_1_0_GRAY); + { + /* FaceType.GRAY */ + const real_t _data_phi_psi_jac_affine_det_0_0_GRAY [] = {((real_t)(abs_det_jac_affine_GRAY*0.11111111111111117)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.11111111111111113)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.1111111111111111)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000029)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000015)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000004)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.35999999999999999)), ((real_t)(abs_det_jac_affine_GRAY*0.12)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.3600000000000001)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.12000000000000002)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008)), ((real_t)(abs_det_jac_affine_GRAY*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 2]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 3]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GRAY[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + + std::vector< uint_t > _data_rowIdx( 3 ); + std::vector< uint_t > _data_colIdx( 3 ); + std::vector< real_t > _data_mat( 9 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2))])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_1_0)); + _data_mat[4] = ((real_t)(elMat_1_1)); + _data_mat[5] = ((real_t)(elMat_1_2)); + _data_mat[6] = ((real_t)(elMat_2_0)); + _data_mat[7] = ((real_t)(elMat_2_1)); + _data_mat[8] = ((real_t)(elMat_2_2)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_BLUE = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_4_BLUE = tmp_coords_jac_0_BLUE*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_0_0_BLUE = tmp_coords_jac_1_BLUE; + const real_t p_affine_const_0_1_BLUE = tmp_coords_jac_2_BLUE; + const real_t p_affine_const_1_0_BLUE = macro_vertex_coord_id_0comp0 + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_1_1_BLUE = macro_vertex_coord_id_0comp1 + tmp_coords_jac_4_BLUE; + const real_t p_affine_const_2_0_BLUE = tmp_coords_jac_1_BLUE + tmp_coords_jac_3_BLUE; + const real_t p_affine_const_2_1_BLUE = tmp_coords_jac_2_BLUE + tmp_coords_jac_4_BLUE; + const real_t jac_affine_0_0_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_1_0_BLUE; + const real_t jac_affine_0_1_BLUE = -p_affine_const_0_0_BLUE + p_affine_const_2_0_BLUE; + const real_t jac_affine_1_0_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_1_1_BLUE; + const real_t jac_affine_1_1_BLUE = -p_affine_const_0_1_BLUE + p_affine_const_2_1_BLUE; + const real_t abs_det_jac_affine_BLUE = abs(jac_affine_0_0_BLUE*jac_affine_1_1_BLUE - jac_affine_0_1_BLUE*jac_affine_1_0_BLUE); + { + /* FaceType.BLUE */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE [] = {((real_t)(abs_det_jac_affine_BLUE*0.11111111111111117)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.11111111111111113)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.1111111111111111)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000029)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000015)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000004)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.35999999999999999)), ((real_t)(abs_det_jac_affine_BLUE*0.12)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.3600000000000001)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.12000000000000002)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008)), ((real_t)(abs_det_jac_affine_BLUE*0.040000000000000008))}; + + for (int64_t ctr_1 = 0; ctr_1 < micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_2_2 = 0.0; + for (int64_t q = 0; q < 4; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 2]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 3]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 4]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE[6*q + 5]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + + std::vector< uint_t > _data_rowIdx( 3 ); + std::vector< uint_t > _data_colIdx( 3 ); + std::vector< real_t > _data_mat( 9 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + 1])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2))])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + 1])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_1_0)); + _data_mat[4] = ((real_t)(elMat_1_1)); + _data_mat[5] = ((real_t)(elMat_1_2)); + _data_mat[6] = ((real_t)(elMat_2_0)); + _data_mat[7] = ((real_t)(elMat_2_1)); + _data_mat[8] = ((real_t)(elMat_2_2)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg diff --git a/operators/k_mass/noarch/P1ElementwiseKMass_toMatrix_macro_3D.cpp b/operators/k_mass/noarch/P1ElementwiseKMass_toMatrix_macro_3D.cpp new file mode 100644 index 0000000000000000000000000000000000000000..23fe6098bc14790a16f9cbbf0ebdea5e86bfb7de --- /dev/null +++ b/operators/k_mass/noarch/P1ElementwiseKMass_toMatrix_macro_3D.cpp @@ -0,0 +1,860 @@ +/* +* Copyright (c) 2017-2024 Nils Kohl, Daniel Bauer, Fabian Böhm. +* +* This file is part of HyTeG +* (see https://i10git.cs.fau.de/hyteg/hyteg). +* +* 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 <http://www.gnu.org/licenses/>. +*/ + +/* +* The entire file was generated with the HyTeG form generator. +* +* Avoid modifying this file. If buggy, consider fixing the generator itself. +*/ + + + + + + + + + + + + + + + + + + + + + + + + + +#include "../P1ElementwiseKMass.hpp" + +#define FUNC_PREFIX + +namespace hyteg { + +namespace operatorgeneration { + +void P1ElementwiseKMass::toMatrix_macro_3D( idx_t * RESTRICT _data_dst, real_t * RESTRICT _data_k, idx_t * RESTRICT _data_src, real_t macro_vertex_coord_id_0comp0, real_t macro_vertex_coord_id_0comp1, real_t macro_vertex_coord_id_0comp2, real_t macro_vertex_coord_id_1comp0, real_t macro_vertex_coord_id_1comp1, real_t macro_vertex_coord_id_1comp2, real_t macro_vertex_coord_id_2comp0, real_t macro_vertex_coord_id_2comp1, real_t macro_vertex_coord_id_2comp2, real_t macro_vertex_coord_id_3comp0, real_t macro_vertex_coord_id_3comp1, real_t macro_vertex_coord_id_3comp2, std::shared_ptr< SparseMatrixProxy > mat, int64_t micro_edges_per_macro_edge, real_t micro_edges_per_macro_edge_float ) const +{ + { + const real_t _data_q_w [] = {-0.1333333333333333, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983, 0.074999999999999983}; + + const real_t _data_q_p_0 [] = {0.25, 0.16666666666666666, 0.16666666666666666, 0.5, 0.16666666666666666}; + + const real_t _data_q_p_1 [] = {0.25, 0.16666666666666666, 0.5, 0.16666666666666666, 0.16666666666666666}; + + const real_t _data_q_p_2 [] = {0.25, 0.5, 0.16666666666666666, 0.16666666666666666, 0.16666666666666666}; + + const real_t tmp_coords_jac_0_WHITE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t p_affine_const_0_0_WHITE_UP = macro_vertex_coord_id_0comp0; + const real_t p_affine_const_0_1_WHITE_UP = macro_vertex_coord_id_0comp1; + const real_t p_affine_const_0_2_WHITE_UP = macro_vertex_coord_id_0comp2; + const real_t p_affine_const_1_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t p_affine_const_1_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t p_affine_const_1_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t p_affine_const_2_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_2_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_2_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_3_0_WHITE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t p_affine_const_3_1_WHITE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t p_affine_const_3_2_WHITE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t jac_affine_0_0_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_1_0_WHITE_UP; + const real_t jac_affine_0_1_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_2_0_WHITE_UP; + const real_t jac_affine_0_2_WHITE_UP = -p_affine_const_0_0_WHITE_UP + p_affine_const_3_0_WHITE_UP; + const real_t jac_affine_1_0_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_1_1_WHITE_UP; + const real_t jac_affine_1_1_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_2_1_WHITE_UP; + const real_t jac_affine_1_2_WHITE_UP = -p_affine_const_0_1_WHITE_UP + p_affine_const_3_1_WHITE_UP; + const real_t jac_affine_2_0_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_1_2_WHITE_UP; + const real_t jac_affine_2_1_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_2_2_WHITE_UP; + const real_t jac_affine_2_2_WHITE_UP = -p_affine_const_0_2_WHITE_UP + p_affine_const_3_2_WHITE_UP; + const real_t abs_det_jac_affine_WHITE_UP = abs(jac_affine_0_0_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_2_WHITE_UP - jac_affine_0_0_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_1_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_2_WHITE_UP + jac_affine_0_1_WHITE_UP*jac_affine_1_2_WHITE_UP*jac_affine_2_0_WHITE_UP + jac_affine_0_2_WHITE_UP*jac_affine_1_0_WHITE_UP*jac_affine_2_1_WHITE_UP - jac_affine_0_2_WHITE_UP*jac_affine_1_1_WHITE_UP*jac_affine_2_0_WHITE_UP); + { + /* CellType.WHITE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_UP [] = {((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_WHITE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_3_WHITE_DOWN = tmp_coords_jac_1_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t tmp_coords_jac_4_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_5_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_WHITE_DOWN = tmp_coords_jac_4_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t tmp_coords_jac_7_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_8_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_9_WHITE_DOWN = tmp_coords_jac_7_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t tmp_coords_jac_10_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_11_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_12_WHITE_DOWN = tmp_coords_jac_0_WHITE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_WHITE_DOWN = tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_0_1_WHITE_DOWN = tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_0_2_WHITE_DOWN = tmp_coords_jac_9_WHITE_DOWN; + const real_t p_affine_const_1_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_2_WHITE_DOWN; + const real_t p_affine_const_1_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_5_WHITE_DOWN; + const real_t p_affine_const_1_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_8_WHITE_DOWN; + const real_t p_affine_const_2_0_WHITE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_1_WHITE_DOWN; + const real_t p_affine_const_2_1_WHITE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_4_WHITE_DOWN; + const real_t p_affine_const_2_2_WHITE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_7_WHITE_DOWN; + const real_t p_affine_const_3_0_WHITE_DOWN = tmp_coords_jac_10_WHITE_DOWN + tmp_coords_jac_3_WHITE_DOWN; + const real_t p_affine_const_3_1_WHITE_DOWN = tmp_coords_jac_11_WHITE_DOWN + tmp_coords_jac_6_WHITE_DOWN; + const real_t p_affine_const_3_2_WHITE_DOWN = tmp_coords_jac_12_WHITE_DOWN + tmp_coords_jac_9_WHITE_DOWN; + const real_t jac_affine_0_0_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_1_0_WHITE_DOWN; + const real_t jac_affine_0_1_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_2_0_WHITE_DOWN; + const real_t jac_affine_0_2_WHITE_DOWN = -p_affine_const_0_0_WHITE_DOWN + p_affine_const_3_0_WHITE_DOWN; + const real_t jac_affine_1_0_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_1_1_WHITE_DOWN; + const real_t jac_affine_1_1_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_2_1_WHITE_DOWN; + const real_t jac_affine_1_2_WHITE_DOWN = -p_affine_const_0_1_WHITE_DOWN + p_affine_const_3_1_WHITE_DOWN; + const real_t jac_affine_2_0_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_1_2_WHITE_DOWN; + const real_t jac_affine_2_1_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_2_2_WHITE_DOWN; + const real_t jac_affine_2_2_WHITE_DOWN = -p_affine_const_0_2_WHITE_DOWN + p_affine_const_3_2_WHITE_DOWN; + const real_t abs_det_jac_affine_WHITE_DOWN = abs(jac_affine_0_0_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN - jac_affine_0_0_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_1_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_2_WHITE_DOWN + jac_affine_0_1_WHITE_DOWN*jac_affine_1_2_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN + jac_affine_0_2_WHITE_DOWN*jac_affine_1_0_WHITE_DOWN*jac_affine_2_1_WHITE_DOWN - jac_affine_0_2_WHITE_DOWN*jac_affine_1_1_WHITE_DOWN*jac_affine_2_0_WHITE_DOWN); + { + /* CellType.WHITE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_WHITE_DOWN [] = {((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_WHITE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 2; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_WHITE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_BLUE_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_5_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_6_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_0_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_0_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_0_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP; + const real_t p_affine_const_1_0_BLUE_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_1_1_BLUE_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_1_2_BLUE_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_2_0_BLUE_UP = tmp_coords_jac_1_BLUE_UP + tmp_coords_jac_4_BLUE_UP; + const real_t p_affine_const_2_1_BLUE_UP = tmp_coords_jac_2_BLUE_UP + tmp_coords_jac_5_BLUE_UP; + const real_t p_affine_const_2_2_BLUE_UP = tmp_coords_jac_3_BLUE_UP + tmp_coords_jac_6_BLUE_UP; + const real_t p_affine_const_3_0_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0) + tmp_coords_jac_1_BLUE_UP; + const real_t p_affine_const_3_1_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1) + tmp_coords_jac_2_BLUE_UP; + const real_t p_affine_const_3_2_BLUE_UP = tmp_coords_jac_0_BLUE_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2) + tmp_coords_jac_3_BLUE_UP; + const real_t jac_affine_0_0_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_1_0_BLUE_UP; + const real_t jac_affine_0_1_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_2_0_BLUE_UP; + const real_t jac_affine_0_2_BLUE_UP = -p_affine_const_0_0_BLUE_UP + p_affine_const_3_0_BLUE_UP; + const real_t jac_affine_1_0_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_1_1_BLUE_UP; + const real_t jac_affine_1_1_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_2_1_BLUE_UP; + const real_t jac_affine_1_2_BLUE_UP = -p_affine_const_0_1_BLUE_UP + p_affine_const_3_1_BLUE_UP; + const real_t jac_affine_2_0_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_1_2_BLUE_UP; + const real_t jac_affine_2_1_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_2_2_BLUE_UP; + const real_t jac_affine_2_2_BLUE_UP = -p_affine_const_0_2_BLUE_UP + p_affine_const_3_2_BLUE_UP; + const real_t abs_det_jac_affine_BLUE_UP = abs(jac_affine_0_0_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_2_BLUE_UP - jac_affine_0_0_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_1_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_2_BLUE_UP + jac_affine_0_1_BLUE_UP*jac_affine_1_2_BLUE_UP*jac_affine_2_0_BLUE_UP + jac_affine_0_2_BLUE_UP*jac_affine_1_0_BLUE_UP*jac_affine_2_1_BLUE_UP - jac_affine_0_2_BLUE_UP*jac_affine_1_1_BLUE_UP*jac_affine_2_0_BLUE_UP); + { + /* CellType.BLUE_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_UP [] = {((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_BLUE_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_BLUE_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_BLUE_DOWN; + const real_t tmp_coords_jac_6_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_7_BLUE_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_6_BLUE_DOWN; + const real_t tmp_coords_jac_8_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t tmp_coords_jac_9_BLUE_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_8_BLUE_DOWN; + const real_t p_affine_const_0_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN; + const real_t p_affine_const_0_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN; + const real_t p_affine_const_0_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN; + const real_t p_affine_const_1_0_BLUE_DOWN = tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_1_1_BLUE_DOWN = tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_1_2_BLUE_DOWN = tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_2_0_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0) + tmp_coords_jac_5_BLUE_DOWN; + const real_t p_affine_const_2_1_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1) + tmp_coords_jac_7_BLUE_DOWN; + const real_t p_affine_const_2_2_BLUE_DOWN = tmp_coords_jac_0_BLUE_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2) + tmp_coords_jac_9_BLUE_DOWN; + const real_t p_affine_const_3_0_BLUE_DOWN = tmp_coords_jac_1_BLUE_DOWN + tmp_coords_jac_4_BLUE_DOWN; + const real_t p_affine_const_3_1_BLUE_DOWN = tmp_coords_jac_2_BLUE_DOWN + tmp_coords_jac_6_BLUE_DOWN; + const real_t p_affine_const_3_2_BLUE_DOWN = tmp_coords_jac_3_BLUE_DOWN + tmp_coords_jac_8_BLUE_DOWN; + const real_t jac_affine_0_0_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_1_0_BLUE_DOWN; + const real_t jac_affine_0_1_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_2_0_BLUE_DOWN; + const real_t jac_affine_0_2_BLUE_DOWN = -p_affine_const_0_0_BLUE_DOWN + p_affine_const_3_0_BLUE_DOWN; + const real_t jac_affine_1_0_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_1_1_BLUE_DOWN; + const real_t jac_affine_1_1_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_2_1_BLUE_DOWN; + const real_t jac_affine_1_2_BLUE_DOWN = -p_affine_const_0_1_BLUE_DOWN + p_affine_const_3_1_BLUE_DOWN; + const real_t jac_affine_2_0_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_1_2_BLUE_DOWN; + const real_t jac_affine_2_1_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_2_2_BLUE_DOWN; + const real_t jac_affine_2_2_BLUE_DOWN = -p_affine_const_0_2_BLUE_DOWN + p_affine_const_3_2_BLUE_DOWN; + const real_t abs_det_jac_affine_BLUE_DOWN = abs(jac_affine_0_0_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN - jac_affine_0_0_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_1_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_2_BLUE_DOWN + jac_affine_0_1_BLUE_DOWN*jac_affine_1_2_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN + jac_affine_0_2_BLUE_DOWN*jac_affine_1_0_BLUE_DOWN*jac_affine_2_1_BLUE_DOWN - jac_affine_0_2_BLUE_DOWN*jac_affine_1_1_BLUE_DOWN*jac_affine_2_0_BLUE_DOWN); + { + /* CellType.BLUE_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_BLUE_DOWN [] = {((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_BLUE_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_BLUE_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_GREEN_UP = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_2_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_3_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_4_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_5_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_6_GREEN_UP = tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP; + const real_t p_affine_const_0_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP; + const real_t p_affine_const_0_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP; + const real_t p_affine_const_1_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t p_affine_const_1_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t p_affine_const_1_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_UP*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t p_affine_const_2_0_GREEN_UP = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_2_1_GREEN_UP = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_2_2_GREEN_UP = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_UP; + const real_t p_affine_const_3_0_GREEN_UP = tmp_coords_jac_1_GREEN_UP + tmp_coords_jac_4_GREEN_UP; + const real_t p_affine_const_3_1_GREEN_UP = tmp_coords_jac_2_GREEN_UP + tmp_coords_jac_5_GREEN_UP; + const real_t p_affine_const_3_2_GREEN_UP = tmp_coords_jac_3_GREEN_UP + tmp_coords_jac_6_GREEN_UP; + const real_t jac_affine_0_0_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_1_0_GREEN_UP; + const real_t jac_affine_0_1_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_2_0_GREEN_UP; + const real_t jac_affine_0_2_GREEN_UP = -p_affine_const_0_0_GREEN_UP + p_affine_const_3_0_GREEN_UP; + const real_t jac_affine_1_0_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_1_1_GREEN_UP; + const real_t jac_affine_1_1_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_2_1_GREEN_UP; + const real_t jac_affine_1_2_GREEN_UP = -p_affine_const_0_1_GREEN_UP + p_affine_const_3_1_GREEN_UP; + const real_t jac_affine_2_0_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_1_2_GREEN_UP; + const real_t jac_affine_2_1_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_2_2_GREEN_UP; + const real_t jac_affine_2_2_GREEN_UP = -p_affine_const_0_2_GREEN_UP + p_affine_const_3_2_GREEN_UP; + const real_t abs_det_jac_affine_GREEN_UP = abs(jac_affine_0_0_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_2_GREEN_UP - jac_affine_0_0_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_1_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_2_GREEN_UP + jac_affine_0_1_GREEN_UP*jac_affine_1_2_GREEN_UP*jac_affine_2_0_GREEN_UP + jac_affine_0_2_GREEN_UP*jac_affine_1_0_GREEN_UP*jac_affine_2_1_GREEN_UP - jac_affine_0_2_GREEN_UP*jac_affine_1_1_GREEN_UP*jac_affine_2_0_GREEN_UP); + { + /* CellType.GREEN_UP */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_UP [] = {((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_UP*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_3 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_UP[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 2) - ((ctr_1*(ctr_1 + 1)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + const real_t tmp_coords_jac_0_GREEN_DOWN = 1.0 / (micro_edges_per_macro_edge_float)*1.0; + const real_t tmp_coords_jac_1_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_2comp0); + const real_t tmp_coords_jac_2_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_2comp1); + const real_t tmp_coords_jac_3_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_2comp2); + const real_t tmp_coords_jac_4_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_1comp0); + const real_t tmp_coords_jac_5_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_1comp1); + const real_t tmp_coords_jac_6_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_1comp2); + const real_t tmp_coords_jac_7_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp0 + macro_vertex_coord_id_3comp0); + const real_t tmp_coords_jac_8_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp1 + macro_vertex_coord_id_3comp1); + const real_t tmp_coords_jac_9_GREEN_DOWN = tmp_coords_jac_0_GREEN_DOWN*(-macro_vertex_coord_id_0comp2 + macro_vertex_coord_id_3comp2); + const real_t p_affine_const_0_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN; + const real_t p_affine_const_0_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN; + const real_t p_affine_const_0_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN; + const real_t p_affine_const_1_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_4_GREEN_DOWN; + const real_t p_affine_const_1_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_5_GREEN_DOWN; + const real_t p_affine_const_1_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_6_GREEN_DOWN; + const real_t p_affine_const_2_0_GREEN_DOWN = macro_vertex_coord_id_0comp0 + tmp_coords_jac_4_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_2_1_GREEN_DOWN = macro_vertex_coord_id_0comp1 + tmp_coords_jac_5_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_2_2_GREEN_DOWN = macro_vertex_coord_id_0comp2 + tmp_coords_jac_6_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t p_affine_const_3_0_GREEN_DOWN = tmp_coords_jac_1_GREEN_DOWN + tmp_coords_jac_7_GREEN_DOWN; + const real_t p_affine_const_3_1_GREEN_DOWN = tmp_coords_jac_2_GREEN_DOWN + tmp_coords_jac_8_GREEN_DOWN; + const real_t p_affine_const_3_2_GREEN_DOWN = tmp_coords_jac_3_GREEN_DOWN + tmp_coords_jac_9_GREEN_DOWN; + const real_t jac_affine_0_0_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_1_0_GREEN_DOWN; + const real_t jac_affine_0_1_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_2_0_GREEN_DOWN; + const real_t jac_affine_0_2_GREEN_DOWN = -p_affine_const_0_0_GREEN_DOWN + p_affine_const_3_0_GREEN_DOWN; + const real_t jac_affine_1_0_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_1_1_GREEN_DOWN; + const real_t jac_affine_1_1_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_2_1_GREEN_DOWN; + const real_t jac_affine_1_2_GREEN_DOWN = -p_affine_const_0_1_GREEN_DOWN + p_affine_const_3_1_GREEN_DOWN; + const real_t jac_affine_2_0_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_1_2_GREEN_DOWN; + const real_t jac_affine_2_1_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_2_2_GREEN_DOWN; + const real_t jac_affine_2_2_GREEN_DOWN = -p_affine_const_0_2_GREEN_DOWN + p_affine_const_3_2_GREEN_DOWN; + const real_t abs_det_jac_affine_GREEN_DOWN = abs(jac_affine_0_0_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN - jac_affine_0_0_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_1_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_2_GREEN_DOWN + jac_affine_0_1_GREEN_DOWN*jac_affine_1_2_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN + jac_affine_0_2_GREEN_DOWN*jac_affine_1_0_GREEN_DOWN*jac_affine_2_1_GREEN_DOWN - jac_affine_0_2_GREEN_DOWN*jac_affine_1_1_GREEN_DOWN*jac_affine_2_0_GREEN_DOWN); + { + /* CellType.GREEN_DOWN */ + const real_t _data_phi_psi_jac_affine_det_0_0_GREEN_DOWN [] = {((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.0625)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777804)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.02777777777777779)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.08333333333333337)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777794)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333356)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777783)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333329)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.25000000000000011)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.083333333333333343)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776)), ((real_t)(abs_det_jac_affine_GREEN_DOWN*0.027777777777777776))}; + + for (int64_t ctr_2 = 0; ctr_2 < micro_edges_per_macro_edge; ctr_2 += 1) + for (int64_t ctr_1 = 0; ctr_1 < -ctr_2 + micro_edges_per_macro_edge; ctr_1 += 1) + for (int64_t ctr_0 = 0; ctr_0 < -ctr_1 - ctr_2 + micro_edges_per_macro_edge - 1; ctr_0 += 1) + { + const real_t k_dof_0 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))]; + const real_t k_dof_1 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_2 = _data_k[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1]; + const real_t k_dof_3 = _data_k[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))]; + real_t q_acc_0_0 = 0.0; + real_t q_acc_0_1 = 0.0; + real_t q_acc_0_2 = 0.0; + real_t q_acc_0_3 = 0.0; + real_t q_acc_1_1 = 0.0; + real_t q_acc_1_2 = 0.0; + real_t q_acc_1_3 = 0.0; + real_t q_acc_2_2 = 0.0; + real_t q_acc_2_3 = 0.0; + real_t q_acc_3_3 = 0.0; + for (int64_t q = 0; q < 5; q += 1) + { + const real_t tmp_qloop_0 = (k_dof_0*(1.0 - _data_q_p_0[q] - _data_q_p_1[q] - _data_q_p_2[q]) + k_dof_1*_data_q_p_0[q] + k_dof_2*_data_q_p_1[q] + k_dof_3*_data_q_p_2[q])*_data_q_w[q]; + const real_t q_tmp_0_0 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q]; + const real_t q_tmp_0_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 1]; + const real_t q_tmp_0_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 2]; + const real_t q_tmp_0_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 3]; + const real_t q_tmp_1_1 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 4]; + const real_t q_tmp_1_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 5]; + const real_t q_tmp_1_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 6]; + const real_t q_tmp_2_2 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 7]; + const real_t q_tmp_2_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 8]; + const real_t q_tmp_3_3 = tmp_qloop_0*_data_phi_psi_jac_affine_det_0_0_GREEN_DOWN[10*q + 9]; + q_acc_0_0 = q_acc_0_0 + q_tmp_0_0; + q_acc_0_1 = q_acc_0_1 + q_tmp_0_1; + q_acc_0_2 = q_acc_0_2 + q_tmp_0_2; + q_acc_0_3 = q_acc_0_3 + q_tmp_0_3; + q_acc_1_1 = q_acc_1_1 + q_tmp_1_1; + q_acc_1_2 = q_acc_1_2 + q_tmp_1_2; + q_acc_1_3 = q_acc_1_3 + q_tmp_1_3; + q_acc_2_2 = q_acc_2_2 + q_tmp_2_2; + q_acc_2_3 = q_acc_2_3 + q_tmp_2_3; + q_acc_3_3 = q_acc_3_3 + q_tmp_3_3; + } + const real_t elMat_0_0 = q_acc_0_0; + const real_t elMat_0_1 = q_acc_0_1; + const real_t elMat_0_2 = q_acc_0_2; + const real_t elMat_0_3 = q_acc_0_3; + const real_t elMat_1_0 = q_acc_0_1; + const real_t elMat_1_1 = q_acc_1_1; + const real_t elMat_1_2 = q_acc_1_2; + const real_t elMat_1_3 = q_acc_1_3; + const real_t elMat_2_0 = q_acc_0_2; + const real_t elMat_2_1 = q_acc_1_2; + const real_t elMat_2_2 = q_acc_2_2; + const real_t elMat_2_3 = q_acc_2_3; + const real_t elMat_3_0 = q_acc_0_3; + const real_t elMat_3_1 = q_acc_1_3; + const real_t elMat_3_2 = q_acc_2_3; + const real_t elMat_3_3 = q_acc_3_3; + + std::vector< uint_t > _data_rowIdx( 4 ); + std::vector< uint_t > _data_colIdx( 4 ); + std::vector< real_t > _data_mat( 16 ); + + _data_rowIdx[0] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_rowIdx[1] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[2] = ((uint64_t)(_data_dst[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_rowIdx[3] = ((uint64_t)(_data_dst[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[0] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6))])); + _data_colIdx[1] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) - (((-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)*(-ctr_2 + micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[2] = ((uint64_t)(_data_src[ctr_0 + ctr_1*(-ctr_2 + micro_edges_per_macro_edge + 1) - ((ctr_1*(ctr_1 + 1)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6)) + 1])); + _data_colIdx[3] = ((uint64_t)(_data_src[ctr_0 + (ctr_1 + 1)*(-ctr_2 + micro_edges_per_macro_edge + 1) - (((ctr_1 + 1)*(ctr_1 + 2)) / (2)) - (((-ctr_2 + micro_edges_per_macro_edge)*(-ctr_2 + micro_edges_per_macro_edge + 1)*(-ctr_2 + micro_edges_per_macro_edge + 2)) / (6)) + (((micro_edges_per_macro_edge + 1)*(micro_edges_per_macro_edge + 2)*(micro_edges_per_macro_edge + 3)) / (6))])); + + /* Apply basis transformation */ + + + + _data_mat[0] = ((real_t)(elMat_0_0)); + _data_mat[1] = ((real_t)(elMat_0_1)); + _data_mat[2] = ((real_t)(elMat_0_2)); + _data_mat[3] = ((real_t)(elMat_0_3)); + _data_mat[4] = ((real_t)(elMat_1_0)); + _data_mat[5] = ((real_t)(elMat_1_1)); + _data_mat[6] = ((real_t)(elMat_1_2)); + _data_mat[7] = ((real_t)(elMat_1_3)); + _data_mat[8] = ((real_t)(elMat_2_0)); + _data_mat[9] = ((real_t)(elMat_2_1)); + _data_mat[10] = ((real_t)(elMat_2_2)); + _data_mat[11] = ((real_t)(elMat_2_3)); + _data_mat[12] = ((real_t)(elMat_3_0)); + _data_mat[13] = ((real_t)(elMat_3_1)); + _data_mat[14] = ((real_t)(elMat_3_2)); + _data_mat[15] = ((real_t)(elMat_3_3)); + + + mat->addValues( _data_rowIdx, _data_colIdx, _data_mat ); + } + } + } +} +} // namespace operatorgeneration + +} // namespace hyteg