diff --git a/.github/workflows/build_docker_image_wheelbuilder_linux.yml b/.github/workflows/build_docker_image_wheelbuilder_linux.yml index d56eab1f65b6..62789c56c782 100644 --- a/.github/workflows/build_docker_image_wheelbuilder_linux.yml +++ b/.github/workflows/build_docker_image_wheelbuilder_linux.yml @@ -9,6 +9,9 @@ on: - 'scripts/docker_files/docker_file_wheelbuilder_linux/*' - '.github/workflows/build_docker_image_wheelbuilder_linux.yml' +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest diff --git a/.github/workflows/build_docker_image_wheelbuilder_windows.yml b/.github/workflows/build_docker_image_wheelbuilder_windows.yml index 057a580bec87..1f9489703153 100644 --- a/.github/workflows/build_docker_image_wheelbuilder_windows.yml +++ b/.github/workflows/build_docker_image_wheelbuilder_windows.yml @@ -9,6 +9,9 @@ on: - 'scripts/docker_files/docker_file_wheelbuilder_windows/*' - '.github/workflows/build_docker_image_wheelbuilder_windows.yml' +permissions: + contents: read + jobs: build: runs-on: windows-latest diff --git a/.github/workflows/build_docker_images_for_ci.yml b/.github/workflows/build_docker_images_for_ci.yml index 30d5e23314c3..86d8a49e0735 100644 --- a/.github/workflows/build_docker_images_for_ci.yml +++ b/.github/workflows/build_docker_images_for_ci.yml @@ -7,6 +7,7 @@ on: branches: - 'master' paths: + - 'scripts/docker_files/docker_file_ci_ubuntu_22_04/*' - 'scripts/docker_files/docker_file_ci_ubuntu_20_04/*' - 'scripts/docker_files/docker_file_ci_centos_7/*' - '.github/workflows/build_docker_images_for_ci.yml' @@ -14,10 +15,21 @@ on: branches: - 'master' paths: + - 'scripts/docker_files/docker_file_ci_ubuntu_22_04/*' - 'scripts/docker_files/docker_file_ci_ubuntu_20_04/*' - 'scripts/docker_files/docker_file_ci_centos_7/*' - '.github/workflows/build_docker_images_for_ci.yml' + workflow_dispatch: + +# for cancelling redundant runs +concurrency: + group: ci-${{ github.head_ref }} + cancel-in-progress: true + +permissions: + contents: read + jobs: build-docker-ubuntu: runs-on: ubuntu-latest @@ -36,6 +48,23 @@ jobs: # only push the new image when the changes are merged to master run: docker push kratosmultiphysics/kratos-image-ci-ubuntu-20-04 + build-docker-ubuntu-jammy: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + - name: Build the Docker image + run: docker build . --file scripts/docker_files/docker_file_ci_ubuntu_22_04/DockerFile --tag kratosmultiphysics/kratos-image-ci-ubuntu-22-04 + - name: Docker Login + uses: azure/docker-login@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - name: Publish the Docker image + if: ${{ github.event_name == 'push'}} + # only push the new image when the changes are merged to master + run: docker push kratosmultiphysics/kratos-image-ci-ubuntu-22-04 + build-docker-centos: runs-on: ubuntu-latest diff --git a/.github/workflows/build_docker_images_with_kratos.yml b/.github/workflows/build_docker_images_with_kratos.yml index 2f611382fc9c..656adfe95809 100644 --- a/.github/workflows/build_docker_images_with_kratos.yml +++ b/.github/workflows/build_docker_images_with_kratos.yml @@ -11,6 +11,9 @@ on: schedule: - cron: '0 0 * * *' # update it every night +permissions: + contents: read + jobs: build: runs-on: ubuntu-latest diff --git a/.github/workflows/centos_configure.sh b/.github/workflows/centos_configure.sh index 704902a7977d..37bbcec87d29 100644 --- a/.github/workflows/centos_configure.sh +++ b/.github/workflows/centos_configure.sh @@ -34,12 +34,15 @@ rm -rf "${KRATOS_BUILD}/${KRATOS_BUILD_TYPE}/CMakeFiles" echo "Kratos build type is ${KRATOS_BUILD_TYPE}" +# Enable devtoolset-8 +source scl_source enable devtoolset-8 + # Configure cmake -H"${KRATOS_SOURCE}" -B"${KRATOS_BUILD}/${KRATOS_BUILD_TYPE}" \ ${KRATOS_CMAKE_OPTIONS_FLAGS} \ -DUSE_MPI=OFF \ --DPYBIND11_PYTHON_VERSION="3.5" \ --DCMAKE_CXX_FLAGS="${KRATOS_CMAKE_CXX_FLAGS} -std=c++11 -O0 -Wall" \ +-DPYBIND11_PYTHON_VERSION="3.8" \ +-DCMAKE_CXX_FLAGS="${KRATOS_CMAKE_CXX_FLAGS} -O0 -Wall" \ -DCMAKE_UNITY_BUILD=ON \ # Buid diff --git a/.github/workflows/ci-dummy.yml b/.github/workflows/ci-dummy.yml new file mode 100644 index 000000000000..91594215f4df --- /dev/null +++ b/.github/workflows/ci-dummy.yml @@ -0,0 +1,37 @@ +name: CI + +# this is required to satisfy the required checks ba replacing them with dummy checks +# see https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks + +on: + pull_request: + branches: + - master + paths: # This must be the same as .github/workflows/ci.yml - "paths-ignore" ! + - '**.md' + - 'documents/**' + - 'scripts/**' + - 'kratos/templates/**' + - 'kratos/python_scripts/application_generator/**' + +permissions: + contents: read + +jobs: + ubuntu: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + build-type: [Custom, FullDebug] + compiler: [gcc, clang] + steps: + - run: 'echo "Dummy build, no checks executed ..."' + + windows: + runs-on: windows-2022 + env: + KRATOS_BUILD_TYPE: Custom + + steps: + - run: 'echo "Dummy build, no checks executed ..."' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 996cb6caa514..208ab5cd016c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,6 +4,12 @@ on: pull_request: branches: - master + paths-ignore: # This must be the same as .github/workflows/ci_dummy.yml - "paths" ! + - '**.md' + - 'documents/**' + - 'scripts/**' # Docker builds will be triggered by `build_docker_image_****.yml` workflows. + - 'kratos/templates/**' + - 'kratos/python_scripts/application_generator/**' workflow_dispatch: @@ -43,17 +49,12 @@ jobs: export CC=/usr/bin/gcc export CXX=/usr/bin/g++ export KRATOS_CMAKE_OPTIONS_FLAGS="-DUSE_EIGEN_MKL=ON -DUSE_EIGEN_FEAST=ON -DTRILINOS_EXCLUDE_AMESOS2_SOLVER=OFF -DMMG_ROOT=/external_libraries/mmg/mmg_5_5_1/ -DPMMG_ROOT=/external_libraries/ParMmg_5ffc6ad -DINCLUDE_PMMG=ON" - export KRATOS_CMAKE_CXX_FLAGS="-std=c++11 -Werror -Wno-deprecated-declarations -Wignored-qualifiers" + export KRATOS_CMAKE_CXX_FLAGS="-Werror -Wno-deprecated-declarations -Wignored-qualifiers" elif [ ${{ matrix.compiler }} = clang ]; then export CC=/usr/bin/clang export CXX=/usr/bin/clang++ export KRATOS_CMAKE_CXX_FLAGS="-Werror -Wno-deprecated-declarations" - if [ ${{ matrix.build-type }} = FullDebug ]; then - export KRATOS_CMAKE_CXX_FLAGS="${KRATOS_CMAKE_CXX_FLAGS} -std=c++17" - else - export KRATOS_CMAKE_CXX_FLAGS="${KRATOS_CMAKE_CXX_FLAGS} -std=c++11" - fi - export KRATOS_CMAKE_OPTIONS_FLAGS="-DTRILINOS_EXCLUDE_AMESOS2_SOLVER=OFF -DMMG_ROOT=/external_libraries/mmg/mmg_5_4_1/" + export KRATOS_CMAKE_OPTIONS_FLAGS="-DTRILINOS_EXCLUDE_AMESOS2_SOLVER=OFF -DMMG_ROOT=/external_libraries/mmg/mmg_5_5_1/" else echo 'Unsupported compiler: ${{ matrix.compiler }}' exit 1 @@ -68,7 +69,12 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }} export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }}/libs - python3 kratos/python_scripts/run_tests.py -v 2 -l nightly -c python3 + python3 kratos/python_scripts/testing/run_tests.py -v 2 -l nightly -c python3 + + - name: Prepare Parallel Env + shell: bash + run: | + echo "localhost slots=2" >> ${GITHUB_WORKSPACE}/ci_hostfile - name: Running MPICore C++ tests (2 Cores) shell: bash @@ -77,7 +83,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }} export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }}/libs - mpiexec -np 2 python3 kratos/python_scripts/run_cpp_mpi_tests.py --using-mpi + mpiexec -np 2 --hostfile ${GITHUB_WORKSPACE}/ci_hostfile python3 kratos/python_scripts/testing/run_cpp_mpi_tests.py --using-mpi - name: Running MPICore C++ tests (3 Cores) shell: bash @@ -86,7 +92,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }} export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }}/libs - mpiexec -np 3 python3 kratos/python_scripts/run_cpp_mpi_tests.py --using-mpi + mpiexec -np 3 --hostfile ${GITHUB_WORKSPACE}/ci_hostfile python3 kratos/python_scripts/testing/run_cpp_mpi_tests.py --using-mpi - name: Running MPICore C++ tests (4 Cores) shell: bash @@ -95,31 +101,34 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }} export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }}/libs - mpiexec -np 4 python3 kratos/python_scripts/run_cpp_mpi_tests.py --using-mpi + mpiexec -np 4 --hostfile ${GITHUB_WORKSPACE}/ci_hostfile python3 kratos/python_scripts/testing/run_cpp_mpi_tests.py --using-mpi - name: Running Python MPI tests (2 Cores) shell: bash run: | source /opt/intel/oneapi/setvars.sh + export OMP_NUM_THREADS=1 export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }} export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }}/libs - python3 kratos/python_scripts/testing/run_python_mpi_tests.py -l nightly -n 2 + python3 kratos/python_scripts/testing/run_python_mpi_tests.py -l nightly -n 2 --mpi_flags="--hostfile ${GITHUB_WORKSPACE}/ci_hostfile" - name: Running Python MPI tests (3 Cores) shell: bash run: | source /opt/intel/oneapi/setvars.sh + export OMP_NUM_THREADS=1 export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }} export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }}/libs - python3 kratos/python_scripts/testing/run_python_mpi_tests.py -l nightly -n 3 + python3 kratos/python_scripts/testing/run_python_mpi_tests.py -l nightly -n 3 --mpi_flags="--hostfile ${GITHUB_WORKSPACE}/ci_hostfile" - name: Running Python MPI tests (4 Cores) shell: bash run: | source /opt/intel/oneapi/setvars.sh + export OMP_NUM_THREADS=1 export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }} export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/${{ matrix.build-type }}/libs - python3 kratos/python_scripts/testing/run_python_mpi_tests.py -l nightly -n 4 + python3 kratos/python_scripts/testing/run_python_mpi_tests.py -l nightly -n 4 --mpi_flags="--hostfile ${GITHUB_WORKSPACE}/ci_hostfile" windows: runs-on: windows-2022 @@ -157,7 +166,7 @@ jobs: run: | set PYTHONPATH=%PYTHONPATH%;%GITHUB_WORKSPACE%/bin/%KRATOS_BUILD_TYPE% set PATH=%PATH%;%GITHUB_WORKSPACE%/bin/%KRATOS_BUILD_TYPE%/libs - python kratos/python_scripts/run_tests.py -l nightly -c python + python kratos/python_scripts/testing/run_tests.py -l nightly -c python centos: runs-on: ubuntu-latest @@ -180,7 +189,7 @@ jobs: run: | export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - python3.8 kratos/python_scripts/run_tests.py -l nightly -c python3.8 + python3.8 kratos/python_scripts/testing/run_tests.py -l nightly -c python3.8 ubuntu-core-without-unity: @@ -252,7 +261,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - python3 kratos/python_scripts/run_tests.py -l nightly -c python3 + python3 kratos/python_scripts/testing/run_tests.py -l nightly -c python3 - name: Running MPICore C++ tests (2 Cores) shell: bash @@ -261,7 +270,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - mpiexec -np 2 python3 kratos/python_scripts/run_cpp_mpi_tests.py --using-mpi + mpiexec -np 2 python3 kratos/python_scripts/testing/run_cpp_mpi_tests.py --using-mpi - name: Running MPICore C++ tests (3 Cores) shell: bash @@ -270,7 +279,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - mpiexec -np 3 python3 kratos/python_scripts/run_cpp_mpi_tests.py --using-mpi + mpiexec -np 3 python3 kratos/python_scripts/testing/run_cpp_mpi_tests.py --using-mpi - name: Running MPICore C++ tests (4 Cores) shell: bash @@ -279,7 +288,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - mpiexec -np 4 python3 kratos/python_scripts/run_cpp_mpi_tests.py --using-mpi + mpiexec -np 4 python3 kratos/python_scripts/testing/run_cpp_mpi_tests.py --using-mpi - name: Running Python MPI tests (2 Cores) shell: bash @@ -371,7 +380,7 @@ jobs: run: | set PYTHONPATH=%PYTHONPATH%;%GITHUB_WORKSPACE%/bin/%KRATOS_BUILD_TYPE% set PATH=%PATH%;%GITHUB_WORKSPACE%/bin/%KRATOS_BUILD_TYPE%/libs - python kratos/python_scripts/run_tests.py -l nightly -c python + python kratos/python_scripts/testing/run_tests.py -l nightly -c python ubuntu-intel: @@ -403,7 +412,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - python3 kratos/python_scripts/run_tests.py -l nightly -c python3 + python3 kratos/python_scripts/testing/run_tests.py -l nightly -c python3 - name: Running MPICore C++ tests (2 Cores) shell: bash @@ -412,7 +421,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - mpiexec -np 2 python3 kratos/python_scripts/run_cpp_mpi_tests.py --using-mpi + mpiexec -np 2 python3 kratos/python_scripts/testing/run_cpp_mpi_tests.py --using-mpi - name: Running MPICore C++ tests (3 Cores) shell: bash @@ -421,7 +430,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - mpiexec -np 3 python3 kratos/python_scripts/run_cpp_mpi_tests.py --using-mpi + mpiexec -np 3 python3 kratos/python_scripts/testing/run_cpp_mpi_tests.py --using-mpi - name: Running MPICore C++ tests (4 Cores) shell: bash @@ -430,7 +439,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - mpiexec -np 4 python3 kratos/python_scripts/run_cpp_mpi_tests.py --using-mpi + mpiexec -np 4 python3 kratos/python_scripts/testing/run_cpp_mpi_tests.py --using-mpi - name: Running Python MPI tests (2 Cores) shell: bash diff --git a/.github/workflows/configure.cmd b/.github/workflows/configure.cmd index 45a04dc60daa..ddb580a4e0ee 100644 --- a/.github/workflows/configure.cmd +++ b/.github/workflows/configure.cmd @@ -30,6 +30,7 @@ set KRATOS_APPLICATIONS=%KRATOS_APPLICATIONS%%KRATOS_APP_DIR%\RANSApplication; set KRATOS_APPLICATIONS=%KRATOS_APPLICATIONS%%KRATOS_APP_DIR%\CompressiblePotentialFlowApplication; set KRATOS_APPLICATIONS=%KRATOS_APPLICATIONS%%KRATOS_APP_DIR%\RomApplication; set KRATOS_APPLICATIONS=%KRATOS_APPLICATIONS%%KRATOS_APP_DIR%\ShallowWaterApplication; +set KRATOS_APPLICATIONS=%KRATOS_APPLICATIONS%%KRATOS_APP_DIR%\GeoMechanicsApplication; del /F /Q "%KRATOS_BUILD%\%KRATOS_BUILD_TYPE%\cmake_install.cmake" del /F /Q "%KRATOS_BUILD%\%KRATOS_BUILD_TYPE%\CMakeCache.txt" diff --git a/.github/workflows/configure.sh b/.github/workflows/configure.sh index c020d6372386..3dcb1df48212 100644 --- a/.github/workflows/configure.sh +++ b/.github/workflows/configure.sh @@ -49,6 +49,7 @@ add_app ${KRATOS_APP_DIR}/SwimmingDEMApplication; add_app ${KRATOS_APP_DIR}/ConstitutiveLawsApplication; add_app ${KRATOS_APP_DIR}/RomApplication; add_app ${KRATOS_APP_DIR}/ShallowWaterApplication; +add_app ${KRATOS_APP_DIR}/GeoMechanicsApplication; # Clean clear diff --git a/.github/workflows/intel_configure.sh b/.github/workflows/intel_configure.sh index a17c8e413b1c..909ef7f3ad12 100644 --- a/.github/workflows/intel_configure.sh +++ b/.github/workflows/intel_configure.sh @@ -62,7 +62,7 @@ ${KRATOS_CMAKE_OPTIONS_FLAGS} \ -DINSTALL_RUNKRATOS=OFF \ -DUSE_MPI=ON \ -DPYBIND11_PYTHON_VERSION="3.8" \ --DCMAKE_CXX_FLAGS="${KRATOS_CMAKE_CXX_FLAGS} -O3 -Wall -Werror-all -diag-disable 1478" \ +-DCMAKE_CXX_FLAGS="${KRATOS_CMAKE_CXX_FLAGS} -O3 -Wall -Werror-all -diag-disable 1478 -diag-disable 1786" \ -DTRILINOS_INCLUDE_DIR="/usr/include/trilinos" \ -DTRILINOS_LIBRARY_DIR="/usr/lib/x86_64-linux-gnu" \ -DTRILINOS_LIBRARY_PREFIX="trilinos_" \ diff --git a/.github/workflows/nightly_build.yml b/.github/workflows/nightly_build.yml index cf833621c4f3..aa486e2e05dd 100644 --- a/.github/workflows/nightly_build.yml +++ b/.github/workflows/nightly_build.yml @@ -45,7 +45,7 @@ jobs: elif [ ${{ matrix.compiler }} = clang ]; then export CC=/usr/bin/clang export CXX=/usr/bin/clang++ - export KRATOS_CMAKE_OPTIONS_FLAGS="-DTRILINOS_EXCLUDE_AMESOS2_SOLVER=OFF -DMMG_ROOT=/external_libraries/mmg/mmg_5_4_1/" + export KRATOS_CMAKE_OPTIONS_FLAGS="-DTRILINOS_EXCLUDE_AMESOS2_SOLVER=OFF -DMMG_ROOT=/external_libraries/mmg/mmg_5_5_1/" else echo 'Unsupported compiler: ${{ matrix.compiler }}' exit 1 @@ -60,7 +60,7 @@ jobs: source /opt/intel/oneapi/setvars.sh export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/${KRATOS_BUILD_TYPE} export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/${KRATOS_BUILD_TYPE}/libs - python3 kratos/python_scripts/run_tests.py -l nightly -c python3 + python3 kratos/python_scripts/testing/run_tests.py -l nightly -c python3 - name: Running Python MPI tests (2 Cores) shell: bash @@ -101,7 +101,7 @@ jobs: - name: Download boost run: | - $url = "https://sourceforge.net/projects/boost/files/boost/1.74.0/boost_1_74_0.tar.gz/download" + $url = "https://boostorg.jfrog.io/artifactory/main/release/1.74.0/source/boost_1_74_0.tar.gz" (New-Object System.Net.WebClient).DownloadFile($url, "$env:TEMP\boost.tar.gz") 7z.exe x "$env:TEMP\boost.tar.gz" -o"$env:TEMP\boostArchive" -y | Out-Null 7z.exe x "$env:TEMP\boostArchive" -o"$env:TEMP\boost" -y | Out-Null @@ -124,7 +124,7 @@ jobs: run: | set PYTHONPATH=%PYTHONPATH%;%GITHUB_WORKSPACE%/bin/%KRATOS_BUILD_TYPE% set PATH=%PATH%;%GITHUB_WORKSPACE%/bin/%KRATOS_BUILD_TYPE%/libs - python kratos/python_scripts/run_tests.py -l nightly -c python + python kratos/python_scripts/testing/run_tests.py -l nightly -c python centos-nightly: runs-on: ubuntu-latest @@ -147,4 +147,4 @@ jobs: run: | export PYTHONPATH=${PYTHONPATH}:${GITHUB_WORKSPACE}/bin/Custom export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:${GITHUB_WORKSPACE}/bin/Custom/libs - python3.8 kratos/python_scripts/run_tests.py -l nightly -c python3.8 \ No newline at end of file + python3.8 kratos/python_scripts/testing/run_tests.py -l nightly -c python3.8 diff --git a/CMakeLists.txt b/CMakeLists.txt index 92726194413b..bb9f220648b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ project (KratosMultiphysics) cmake_minimum_required (VERSION 2.8.6) -set (CMAKE_CXX_STANDARD 11) +set (CMAKE_CXX_STANDARD 17) # Setting some policies # No recursive dereferencing @@ -20,8 +20,8 @@ endif(POLICY CMP0074) # Set here the version number **** only update upon tagging a release! set (KratosMultiphysics_MAJOR_VERSION 9) -set (KratosMultiphysics_MINOR_VERSION 1) -set (KratosMultiphysics_PATCH_VERSION 3) +set (KratosMultiphysics_MINOR_VERSION 2) +set (KratosMultiphysics_PATCH_VERSION 0) # If KRATOS_SOURCE_DIR is not defined use the CMAKE_SOURCE_DIR if(NOT DEFINED KRATOS_SOURCE_DIR) @@ -51,15 +51,12 @@ endif(NOT DEFINED ENV{KRATOS_INSTALL_PYTHON_USING_LINKS}) set(CMAKE_INSTALL_RPATH "$ORIGIN/../libs") # If no test policy enable by default -if(NOT DEFINED KRATOS_BUILD_TESTING) -message("-- No KRATOS_BUILD_TESTING is defined. Setting to ON") -SET (KRATOS_BUILD_TESTING ON) -endif(NOT DEFINED KRATOS_BUILD_TESTING) +option(KRATOS_BUILD_TESTING "KRATOS_BUILD_TESTING defines if the C++ tests are compiled. These increase compilation time, but if not set only python tests can be executed. Default setting is ON" ON) # If not defined mute the very verbose installation messages if(NOT DEFINED CMAKE_INSTALL_MESSAGE) - message("-- No CMAKE_INSTALL_MESSAGE is defined. Setting to NEVER") - SET (CMAKE_INSTALL_MESSAGE NEVER) + message("-- No CMAKE_INSTALL_MESSAGE is defined. Setting to NEVER") + SET (CMAKE_INSTALL_MESSAGE NEVER) endif(NOT DEFINED CMAKE_INSTALL_MESSAGE) # Set kratos specific module path @@ -165,9 +162,10 @@ endif( ${CMAKE_BUILD_TYPE} MATCHES "Release" ) # Set compiler flags if(${CMAKE_COMPILER_IS_GNUCXX}) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funroll-loops -Wall -std=c++11 -Wl,--no-as-needed -ldl") - if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wsuggest-override") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -funroll-loops -Wall -Wl,--no-as-needed -ldl -Wsuggest-override") + if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0) + message( "DEPRECATED: detected compiler as GCC " ${CMAKE_CXX_COMPILER_VERSION} ) + message( FATAL_ERROR "Please use Version 8 or greater") endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -funroll-loops -Wall -Wl,--no-as-needed -ldl") set(CMAKE_SHARED_LINKER_FLAGS " -Wl,--no-undefined") @@ -205,10 +203,10 @@ if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") endif() if (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") # "IntelLLVM": Intel's NextGen LLVM compiler (icx) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops -diag-disable 654 -diag-disable 10010 ") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops -diag-disable 654 -diag-disable 10010 -diag-disable 1011") else (CMAKE_CXX_COMPILER_ID STREQUAL "IntelLLVM") # "Intel": Intel's Classic compiler (icc) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops -lpthread -wd654 -wd10010 ") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops -lpthread -wd654 -wd10010 -wd1011") endif() set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fPIC -funroll-loops ") set(CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined") @@ -229,30 +227,12 @@ else(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") endif(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin") # Old non-compatible versions of VS -if(${MSVC80}) - message( "DEPRECATED: detected compiler as MSVC80") - message( FATAL_ERROR "Please use VisualStudio 2015 or greater") -endif(${MSVC80}) - -if(${MSVC90}) - message( "DEPRECATED: detected compiler as MSVC90") - message( FATAL_ERROR "Please use VisualStudio 2015 or greater") -endif(${MSVC90}) - -if(${MSVC10}) - message( "DEPRECATED: detected compiler as MSVC10") - message( FATAL_ERROR "Please use VisualStudio 2015 or greater") -endif(${MSVC10}) - -if(${MSVC11}) - message( "DEPRECATED: detected compiler as MSVC11") - message( FATAL_ERROR "Please use VisualStudio 2015 or greater") -endif(${MSVC11}) - -if(${MSVC12}) - message( "DEPRECATED: detected compiler as MSVC12") - message( FATAL_ERROR "Please use VisualStudio 2015 or greater") -endif(${MSVC12}) +if(${MSVC}) + if(${MSVC_TOOLSET_VERSION} LESS 141) + message( "DEPRECATED: detected compiler as ${MSVC_TOOLSET_VERSION}") + message( FATAL_ERROR "Please use VisualStudio Toolset 141 (VisualStudio 2017) or greater") + endif(${MSVC_TOOLSET_VERSION} LESS 141) +endif(${MSVC}) # Common flags for MSVC if(${MSVC}) @@ -293,31 +273,30 @@ include(pybind11Tools) # Reset pybind11 config and remove -LTO since it gives multiple problems. if(NOT DEFINED KRATOS_ENABLE_LTO) - message("LTO is Disabled") + message(STATUS "LTO is Disabled") set(PYBIND11_LTO_CXX_FLAGS "" CACHE INTERNAL "") set(PYBIND11_LTO_LINKER_FLAGS "" CACHE INTERNAL "") else(NOT DEFINED KRATOS_ENABLE_LTO) - message("LTO is Enabled") + message(STATUS "LTO is Enabled") if(${CMAKE_COMPILER_IS_GNUCXX}) set(CMAKE_AR "gcc-ar") set(CMAKE_C_ARCHIVE_CREATE " qcs ") set(CMAKE_C_ARCHIVE_FINISH true) - set(CMAKE_C_FLAGS "-flto=jobserver") - set(CMAKE_CXX_FLAGS "-flto=jobserver") - set(CMAKE_SHARED_LINKER_FLAGS "-flto=jobserver") - endif(${CMAKE_COMPILER_IS_GNUCXX}) - if(${CMAKE_CXX_COMPILER_ID} MATCHES Clang) - set(CMAKE_C_FLAGS "-flto=thin") - set(CMAKE_CXX_FLAGS "-flto=thin") - set(CMAKE_SHARED_LINKER_FLAGS "-flto=thin") - endif(${CMAKE_CXX_COMPILER_ID} MATCHES Clang) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto=jobserver") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=jobserver") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto=jobserver") + elseif(${CMAKE_CXX_COMPILER_ID} MATCHES Clang) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -flto=thin") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=thin") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -flto=thin") + endif() endif(NOT DEFINED KRATOS_ENABLE_LTO) message("AR VERSION: ${CMAKE_AR}") # check version of Python, needs to be done after including pybind -if(${PYTHON_VERSION_MAJOR} LESS 3 OR (${PYTHON_VERSION_MAJOR} EQUAL 3 AND ${PYTHON_VERSION_MINOR} LESS 5)) -message( FATAL_ERROR "Kratos only supports Python version 3.5 and above") +if(${PYTHON_VERSION_MAJOR} LESS 3 OR (${PYTHON_VERSION_MAJOR} EQUAL 3 AND ${PYTHON_VERSION_MINOR} LESS 6)) +message( FATAL_ERROR "Kratos only supports Python version 3.6 and above") endif() set(PYTHON_INTERFACE_VERSION "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}") @@ -618,6 +597,7 @@ message("\t Geometry old projection methods deprecation: https://github.com/Krat message("\t Geometry old closest point methods deprecation: https://github.com/KratosMultiphysics/Kratos/pull/9243") message("\t Model 'CreateModelPart' behavior change (no error thrown if model part exists): https://github.com/KratosMultiphysics/Kratos/pull/9598") message("\t Make GetIntegrationMethod method of Condition const: https://github.com/KratosMultiphysics/Kratos/pull/9769") +message("\t Behavior change of ModelPart.GetProperties (MeshIndex removed): https://github.com/KratosMultiphysics/Kratos/pull/9774") # Compiling the triangle library if(${USE_TRIANGLE_NONFREE_TPL} MATCHES ON ) @@ -645,3 +625,6 @@ kratos_python_install(${INSTALL_PYTHON_USING_LINKS} "${KRATOS_SOURCE_DIR}/kratos # Install the libraries in the libs folder install(FILES ${Boost_LIBRARIES} DESTINATION libs) install(FILES ${EXTRA_INSTALL_LIBS} DESTINATION libs) + +# Perform post-install tasks (add_subdirectory commands are guaranteed to be executed in order) +add_subdirectory("scripts/post_install") diff --git a/INSTALL.md b/INSTALL.md index a948d0936533..9c8741d05a36 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -44,7 +44,7 @@ git clone https://github.com/KratosMultiphysics/Kratos Kratos ### Kratos Core Dependencies These are the basic dependecies needed to compile the Kratos Core and most of the Kratos applications. * Python3-dev - * C++11 compiler + * C++17 compiler * CMake * Boost (dependencies are header-only, no compilation of boost libraries required) @@ -369,7 +369,7 @@ The result should be: ' / __| _` | __| _ \ __| . \ | ( | | ( |\__ \ _|\_\_| \__,_|\__|\___/ ____/ - Multi-Physics 9.1 + Multi-Physics 9.2 ``` diff --git a/README.md b/README.md index ab69ea5b20c2..1a61d1b4e3ac 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,33 @@

-[![License][license-image]][license] [![Github CI][Nightly-Build]][Nightly-link] [![DOI][DOI-image]][DOI] [![Twitter][twitter-image]][twitter] +[![License][license-image]][license] [![C++][c++-image]][c++standard] [![Github CI][Nightly-Build]][Nightly-link] [![DOI][DOI-image]][DOI] [![GitHub stars][stars-image]][stars] [![Twitter][twitter-image]][twitter] [![Release][release-image]][releases] -[release-image]: https://img.shields.io/badge/release-9.1-green.svg?style=flat +[![PyPI pyversions](https://img.shields.io/pypi/pyversions/KratosMultiphysics.svg)](https://pypi.org/project/KratosMultiphysics/) +[![Downloads](https://pepy.tech/badge/KratosMultiphysics/month)](https://pepy.tech/project/KratosMultiphysics) + +[release-image]: https://img.shields.io/badge/release-9.2-green.svg?style=flat [releases]: https://github.com/KratosMultiphysics/Kratos/releases [license-image]: https://img.shields.io/badge/license-BSD-green.svg?style=flat [license]: https://github.com/KratosMultiphysics/Kratos/blob/master/kratos/license.txt +[c++-image]: https://img.shields.io/badge/C++-17-blue.svg?style=flat&logo=c%2B%2B +[c++standard]: https://isocpp.org/std/the-standard + [Nightly-Build]: https://github.com/KratosMultiphysics/Kratos/workflows/Nightly%20Build/badge.svg [Nightly-link]: https://github.com/KratosMultiphysics/Kratos/actions?query=workflow%3A%22Nightly+Build%22 [DOI-image]: https://zenodo.org/badge/DOI/10.5281/zenodo.3234644.svg [DOI]: https://doi.org/10.5281/zenodo.3234644 +[stars-image]: https://img.shields.io/github/stars/KratosMultiphysics/Kratos?label=Stars&logo=github +[stars]: https://github.com/KratosMultiphysics/Kratos/stargazers + [twitter-image]: https://img.shields.io/twitter/follow/kratosmultiphys.svg?label=Follow&style=social [twitter]: https://twitter.com/kratosmultiphys @@ -118,7 +127,6 @@ In Kratos Core: - [GidPost](https://www.gidhome.com/gid-plus/tools/476/gidpost/) providing output to [GiD](https://www.gidhome.com/) - [AMGCL](https://github.com/ddemidov/amgcl) for its highly scalable multigrid solver - [JSON](https://github.com/nlohmann/json) JSON for Modern C++ -- [filesystem](https://github.com/gulrak/filesystem) Header-only single-file std::filesystem compatible helper library, based on the C++17 specs - [ZLib](https://zlib.net/) The compression library In applications: diff --git a/applications/CSharpWrapperApplication/custom_sources/model_part_wrapper.cpp b/applications/CSharpWrapperApplication/custom_sources/model_part_wrapper.cpp index 0dcb324bb60e..7ffec84d9e36 100644 --- a/applications/CSharpWrapperApplication/custom_sources/model_part_wrapper.cpp +++ b/applications/CSharpWrapperApplication/custom_sources/model_part_wrapper.cpp @@ -14,7 +14,7 @@ // Main authors: Hubert Balcerzak // System includes -#include +#include // External includes diff --git a/applications/CSharpWrapperApplication/external_bindings/kratos_external_bindings.cpp b/applications/CSharpWrapperApplication/external_bindings/kratos_external_bindings.cpp index 27a5152e05e4..30b7ff936c33 100644 --- a/applications/CSharpWrapperApplication/external_bindings/kratos_external_bindings.cpp +++ b/applications/CSharpWrapperApplication/external_bindings/kratos_external_bindings.cpp @@ -1,6 +1,6 @@ #define EXPORT __declspec(dllexport) -#include +#include #include "custom_includes/kratos_wrapper.h" #include diff --git a/applications/ChimeraApplication/custom_processes/apply_chimera_process.cpp b/applications/ChimeraApplication/custom_processes/apply_chimera_process.cpp index 912fd641a6d8..1352b5ac188f 100644 --- a/applications/ChimeraApplication/custom_processes/apply_chimera_process.cpp +++ b/applications/ChimeraApplication/custom_processes/apply_chimera_process.cpp @@ -603,7 +603,7 @@ void ApplyChimera::MakeConstraints( StartConstraintId + init_index, rConstraintIdVector, rVelocityMsConstraintsVector); init_index += (TDim + 1); - if (TDim == 3) { + if constexpr (TDim == 3) { ApplyContinuityWithElement(r_geom, rNodeToFind, rWeights, VELOCITY_Z, StartConstraintId + init_index, rConstraintIdVector, rVelocityMsConstraintsVector); diff --git a/applications/ChimeraApplication/custom_strategies/strategies/fs_strategy_for_chimera.h b/applications/ChimeraApplication/custom_strategies/strategies/fs_strategy_for_chimera.h index a3cd5b5779dd..cd3e6e1bc150 100644 --- a/applications/ChimeraApplication/custom_strategies/strategies/fs_strategy_for_chimera.h +++ b/applications/ChimeraApplication/custom_strategies/strategies/fs_strategy_for_chimera.h @@ -589,7 +589,7 @@ class FractionalStepStrategyForChimera : public FractionalStepStrategyIsFixed(VELOCITY_Y)) it_node->FastGetSolutionStepValue(VELOCITY_Y) += it_node->FastGetSolutionStepValue(FRACT_VEL_Y) / NodalArea; - if(TDim > 2) + if constexpr (TDim > 2) if (!it_node->IsFixed(VELOCITY_Z)) it_node->FastGetSolutionStepValue(VELOCITY_Z) += it_node->FastGetSolutionStepValue(FRACT_VEL_Z) / NodalArea; @@ -608,7 +608,7 @@ class FractionalStepStrategyForChimera : public FractionalStepStrategy 2) + if constexpr (TDim > 2) r_slave_node.FastGetSolutionStepValue(VELOCITY_Z) = 0; } } @@ -636,7 +636,7 @@ class FractionalStepStrategyForChimera : public FractionalStepStrategy 2) + if constexpr (TDim > 2) r_slave_node.FastGetSolutionStepValue(VELOCITY_Z) += (r_master_node.FastGetSolutionStepValue(VELOCITY_Z)) * weight; diff --git a/applications/ChimeraApplication/custom_utilities/hole_cutting_utility.cpp b/applications/ChimeraApplication/custom_utilities/hole_cutting_utility.cpp index bbaeafd213bd..aee288a9c2fe 100644 --- a/applications/ChimeraApplication/custom_utilities/hole_cutting_utility.cpp +++ b/applications/ChimeraApplication/custom_utilities/hole_cutting_utility.cpp @@ -82,12 +82,12 @@ void ChimeraHoleCuttingUtility::RemoveOutOfDomainElements( for (auto& node : geom) { node.FastGetSolutionStepValue(VELOCITY_X, 0) = 0.0; node.FastGetSolutionStepValue(VELOCITY_Y, 0) = 0.0; - if (TDim > 2) + if constexpr (TDim > 2) node.FastGetSolutionStepValue(VELOCITY_Z, 0) = 0.0; node.FastGetSolutionStepValue(PRESSURE, 0) = 0.0; node.FastGetSolutionStepValue(VELOCITY_X, 1) = 0.0; node.FastGetSolutionStepValue(VELOCITY_Y, 1) = 0.0; - if (TDim > 2) + if constexpr (TDim > 2) node.FastGetSolutionStepValue(VELOCITY_Z, 1) = 0.0; node.FastGetSolutionStepValue(PRESSURE, 1) = 0.0; if (Side == ChimeraHoleCuttingUtility::SideToExtract::INSIDE) @@ -175,9 +175,9 @@ void ChimeraHoleCuttingUtility::ExtractBoundaryMesh(ModelPart& rVolumeModelPart, for (int i_e = 0; i_e < num_elements; ++i_e) { auto i_element = elements_begin + i_e; Element::GeometryType::GeometriesArrayType faces; - if (TDim == 2) + if constexpr (TDim == 2) faces = i_element->GetGeometry().GenerateEdges(); - else if (TDim == 3) + else if constexpr (TDim == 3) faces = i_element->GetGeometry().GenerateFaces(); for (IndexType i_face = 0; i_face < faces.size(); i_face++) { @@ -206,9 +206,9 @@ void ChimeraHoleCuttingUtility::ExtractBoundaryMesh(ModelPart& rVolumeModelPart, for (int i_e = 0; i_e < num_elements; ++i_e) { auto i_element = elements_begin + i_e; Element::GeometryType::GeometriesArrayType faces; - if (TDim == 2) + if constexpr (TDim == 2) faces = i_element->GetGeometry().GenerateEdges(); - else if (TDim == 3) + else if constexpr (TDim == 3) faces = i_element->GetGeometry().GenerateFaces(); for (IndexType i_face = 0; i_face < faces.size(); i_face++) { diff --git a/applications/CoSimulationApplication/README.md b/applications/CoSimulationApplication/README.md index a91a47027ecc..8540864dfd3c 100644 --- a/applications/CoSimulationApplication/README.md +++ b/applications/CoSimulationApplication/README.md @@ -409,4 +409,4 @@ If a solver does not support MPI-parallelism then it can only run on one rank. I ## References - [1] Wall, Wolfgang A., _Fluid structure interaction with stabilized finite elements_, PhD Thesis, University of Stuttgart, 1999, http://dx.doi.org/10.18419/opus-127 -- [2] Bucher et al., _Realizing CoSimulation in and with a multiphysics framework_, conference proceedings, IX International Conference on Computational Methods for Coupled Problems in Science and Engineering, 2021, under review +- [2] Bucher et al., _Realizing CoSimulation in and with a multiphysics framework_, conference proceedings, IX International Conference on Computational Methods for Coupled Problems in Science and Engineering, 2021, https://www.scipedia.com/public/Bucher_et_al_2021a diff --git a/applications/CoSimulationApplication/custom_external_libraries/CoSimIO/external_libraries/asio/include/asio/detail/socket_types.hpp b/applications/CoSimulationApplication/custom_external_libraries/CoSimIO/external_libraries/asio/include/asio/detail/socket_types.hpp index 33ad63eec8e4..61ed6edd2841 100644 --- a/applications/CoSimulationApplication/custom_external_libraries/CoSimIO/external_libraries/asio/include/asio/detail/socket_types.hpp +++ b/applications/CoSimulationApplication/custom_external_libraries/CoSimIO/external_libraries/asio/include/asio/detail/socket_types.hpp @@ -24,7 +24,7 @@ # error WinSock.h has already been included # endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_) # if defined(__BORLANDC__) -# include // Needed for __errno +# include // Needed for __errno # if !defined(_WSPIAPI_H_) # define _WSPIAPI_H_ # define ASIO_WSPIAPI_H_DEFINED diff --git a/applications/CoSimulationApplication/python_scripts/convergence_accelerators/mvqn.py b/applications/CoSimulationApplication/python_scripts/convergence_accelerators/mvqn.py index 8650fd9736e5..a731f4287ddb 100644 --- a/applications/CoSimulationApplication/python_scripts/convergence_accelerators/mvqn.py +++ b/applications/CoSimulationApplication/python_scripts/convergence_accelerators/mvqn.py @@ -54,13 +54,13 @@ def UpdateSolution( self, r, x ): ## For the first iteration if k == 0: - if self.J == []: + if len(self.J) == 0: return self.alpha * r # if no Jacobian, do relaxation else: return np.linalg.solve( self.J, -r ) # use the Jacobian from previous step ## Let the initial Jacobian correspond to a constant relaxation - if self.J == []: + if len(self.J) == 0: self.J = - np.identity( row ) / self.alpha # correspongding to constant relaxation ## Construct matrix V (differences of residuals) @@ -78,7 +78,7 @@ def UpdateSolution( self, r, x ): ## Solve least norm problem rhs = V - np.dot(self.J, W) b = np.identity( row ) - W_right_inverse = np.linalg.lstsq(W, b)[0] + W_right_inverse = np.linalg.lstsq(W, b, rcond=-1)[0] J_tilde = np.dot(rhs, W_right_inverse) self.J_hat = self.J + J_tilde delta_r = -self.R[0] @@ -89,7 +89,7 @@ def UpdateSolution( self, r, x ): ## FinalizeSolutionStep() # Finalizes the current time step and initializes the next time step. def FinalizeSolutionStep( self ): - if self.J == []: + if len(self.J) == 0: return row = self.J.shape[0] diff --git a/applications/CoSimulationApplication/python_scripts/processes/create_point_based_entites_process.py b/applications/CoSimulationApplication/python_scripts/processes/create_point_based_entites_process.py index 4b227351cbd0..3bccd1318737 100644 --- a/applications/CoSimulationApplication/python_scripts/processes/create_point_based_entites_process.py +++ b/applications/CoSimulationApplication/python_scripts/processes/create_point_based_entites_process.py @@ -75,7 +75,7 @@ def __init__(self, Model, settings ): new_model_part.AddNodes(node_ids) - props = root_model_part.GetProperties(properties_id, 0) # 0 is mesh-id # maybe check and then create the props + props = root_model_part.GetProperties(properties_id) mp_comm = root_model_part.GetCommunicator() if entity_type == "element": diff --git a/applications/CoSimulationApplication/python_scripts/solver_wrappers/kratos/kratos_base_wrapper.py b/applications/CoSimulationApplication/python_scripts/solver_wrappers/kratos/kratos_base_wrapper.py index e5d4a307889a..e59d2a524b27 100644 --- a/applications/CoSimulationApplication/python_scripts/solver_wrappers/kratos/kratos_base_wrapper.py +++ b/applications/CoSimulationApplication/python_scripts/solver_wrappers/kratos/kratos_base_wrapper.py @@ -33,12 +33,16 @@ class KratosBaseWrapper(CoSimulationSolverWrapper): It uses the AnalysisStage as black-box interface to Kratos """ def __init__(self, settings, model, solver_name): - input_file_name = settings["solver_wrapper_settings"]["input_file"].GetString() - if not input_file_name.endswith(".json"): - input_file_name += ".json" - - with open(input_file_name,'r') as parameter_file: - self.project_parameters = KM.Parameters(parameter_file.read()) + # We try to read the input file + if settings["solver_wrapper_settings"].Has("input_file"): + input_file_name = settings["solver_wrapper_settings"]["input_file"].GetString() + if not input_file_name.endswith(".json"): + input_file_name += ".json" + + with open(input_file_name,'r') as parameter_file: + self.project_parameters = KM.Parameters(parameter_file.read()) + else: # The settings are in the root Parameters + self.project_parameters = settings["solver_wrapper_settings"] super().__init__(settings, model, solver_name) diff --git a/applications/CoSimulationApplication/tests/test_CoSimulationApplication.py b/applications/CoSimulationApplication/tests/test_CoSimulationApplication.py index 9a24cff74ec3..90c44d5f4900 100644 --- a/applications/CoSimulationApplication/tests/test_CoSimulationApplication.py +++ b/applications/CoSimulationApplication/tests/test_CoSimulationApplication.py @@ -79,8 +79,8 @@ def AssembleTestSuites(): nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([TestSmallCoSimulationCases])) # This one has errors in GCC - # nightSuite.addTest(TestMokFSI('test_mok_fsi_mvqn')) - # nightSuite.addTest(TestMokFSI('test_mok_fsi_aitken')) + nightSuite.addTest(TestMokFSI('test_mok_fsi_mvqn')) + nightSuite.addTest(TestMokFSI('test_mok_fsi_aitken')) nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([TestCoSimIOPyExposure])) nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([TestKratosCoSimIO])) diff --git a/applications/CoSimulationApplication/tests/test_processes.py b/applications/CoSimulationApplication/tests/test_processes.py index 653dc24bda42..8e087a633efc 100644 --- a/applications/CoSimulationApplication/tests/test_processes.py +++ b/applications/CoSimulationApplication/tests/test_processes.py @@ -158,7 +158,7 @@ def test_create_entities_with_preexisting_entites(self): } }""") - props = self.root_model_part.GetProperties(0, 0) + props = self.root_model_part.GetProperties(0) num_local_nodes = self.root_model_part.NumberOfNodes() scan_sum_num_nodes = KM.Testing.GetDefaultDataCommunicator().ScanSum(num_local_nodes) diff --git a/applications/CompressiblePotentialFlowApplication/custom_conditions/potential_wall_condition.cpp b/applications/CompressiblePotentialFlowApplication/custom_conditions/potential_wall_condition.cpp index ae12b761320a..d75635ab9480 100644 --- a/applications/CompressiblePotentialFlowApplication/custom_conditions/potential_wall_condition.cpp +++ b/applications/CompressiblePotentialFlowApplication/custom_conditions/potential_wall_condition.cpp @@ -90,7 +90,7 @@ void PotentialWallCondition::CalculateRightHandSide(VectorType& rRightHandSideVector.resize(TNumNodes, false); array_1d An; - if (TDim == 2) + if constexpr (TDim == 2) CalculateNormal2D(An); else CalculateNormal3D(An); diff --git a/applications/CompressiblePotentialFlowApplication/custom_elements/transonic_perturbation_potential_flow_element.cpp b/applications/CompressiblePotentialFlowApplication/custom_elements/transonic_perturbation_potential_flow_element.cpp index 4ca2f5ceeed1..4339316c7b2b 100644 --- a/applications/CompressiblePotentialFlowApplication/custom_elements/transonic_perturbation_potential_flow_element.cpp +++ b/applications/CompressiblePotentialFlowApplication/custom_elements/transonic_perturbation_potential_flow_element.cpp @@ -1262,12 +1262,12 @@ void TransonicPerturbationPotentialFlowElement::GetElementGeome const GeometryType& r_geom = r_this.GetGeometry(); // get element edges or faces depending on dimension of the problem - if(TDim == 2) + if constexpr (TDim == 2) { // current element edges rElementGeometryBoundary = r_geom.GenerateEdges(); } - else if(TDim == 3) + else if constexpr (TDim == 3) { // current element faces rElementGeometryBoundary = r_geom.GenerateFaces(); diff --git a/applications/CompressiblePotentialFlowApplication/tests/cpp_tests/test_embedded_transonic_perturbation_potential_element.cpp b/applications/CompressiblePotentialFlowApplication/tests/cpp_tests/test_embedded_transonic_perturbation_potential_element.cpp index e7af67758d7b..c773884ad9bc 100644 --- a/applications/CompressiblePotentialFlowApplication/tests/cpp_tests/test_embedded_transonic_perturbation_potential_element.cpp +++ b/applications/CompressiblePotentialFlowApplication/tests/cpp_tests/test_embedded_transonic_perturbation_potential_element.cpp @@ -19,7 +19,7 @@ #include "custom_elements/embedded_transonic_perturbation_potential_flow_element.h" #include "custom_utilities/potential_flow_utilities.h" #include "tests/cpp_tests/test_utilities.h" -#include "processes/find_nodal_neighbours_process.h" +#include "processes/find_global_nodal_entity_neighbours_process.h" namespace Kratos { namespace Testing { @@ -181,7 +181,7 @@ KRATOS_TEST_CASE_IN_SUITE(EmbeddedTransonicPerturbationPotentialFlowSupersonicEl Element::Pointer p_element = model_part.pGetElement(1); Element::Pointer p_upwind_element = model_part.pGetElement(2); - FindGlobalNodalElementalNeighboursProcess find_nodal_neighbours_process(model_part); + FindGlobalNodalEntityNeighboursProcess find_nodal_neighbours_process(model_part); find_nodal_neighbours_process.Execute(); p_element -> Set(INLET, false); @@ -332,7 +332,7 @@ KRATOS_TEST_CASE_IN_SUITE(PingEmbeddedTransonicPerturbationPotentialFlowSuperson Element::Pointer p_upwind_element = model_part.pGetElement(2); const unsigned int number_of_nodes = p_element->GetGeometry().size(); - FindGlobalNodalElementalNeighboursProcess find_nodal_neighbours_process(model_part); + FindGlobalNodalEntityNeighboursProcess find_nodal_neighbours_process(model_part); find_nodal_neighbours_process.Execute(); const ProcessInfo& r_current_process_info = model_part.GetProcessInfo(); @@ -418,7 +418,7 @@ KRATOS_TEST_CASE_IN_SUITE(PingEmbeddedTransonicPerturbationPotentialFlowSuperson Element::Pointer p_upwind_element = model_part.pGetElement(2); const unsigned int number_of_nodes = p_element->GetGeometry().size(); - FindGlobalNodalElementalNeighboursProcess find_nodal_neighbours_process(model_part); + FindGlobalNodalEntityNeighboursProcess find_nodal_neighbours_process(model_part); find_nodal_neighbours_process.Execute(); const ProcessInfo& r_current_process_info = model_part.GetProcessInfo(); diff --git a/applications/ConstitutiveLawsApplication/constitutive_laws_application.cpp b/applications/ConstitutiveLawsApplication/constitutive_laws_application.cpp index aef50c7fa253..cd395cc01be9 100644 --- a/applications/ConstitutiveLawsApplication/constitutive_laws_application.cpp +++ b/applications/ConstitutiveLawsApplication/constitutive_laws_application.cpp @@ -183,99 +183,39 @@ void KratosConstitutiveLawsApplication::Register() /// Damage /* Small strain */ - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DVonMisesVonMises", mSmallStrainIsotropicDamage3DVonMisesVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DVonMisesModifiedMohrCoulomb", mSmallStrainIsotropicDamage3DVonMisesModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DVonMisesDruckerPrager", mSmallStrainIsotropicDamage3DVonMisesDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DVonMisesTresca", mSmallStrainIsotropicDamage3DVonMisesTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DModifiedMohrCoulombVonMises", mSmallStrainIsotropicDamage3DModifiedMohrCoulombVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DModifiedMohrCoulombModifiedMohrCoulomb", mSmallStrainIsotropicDamage3DModifiedMohrCoulombModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DModifiedMohrCoulombDruckerPrager", mSmallStrainIsotropicDamage3DModifiedMohrCoulombDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DModifiedMohrCoulombTresca", mSmallStrainIsotropicDamage3DModifiedMohrCoulombTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DTrescaVonMises", mSmallStrainIsotropicDamage3DTrescaVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DTrescaModifiedMohrCoulomb", mSmallStrainIsotropicDamage3DTrescaModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DTrescaDruckerPrager", mSmallStrainIsotropicDamage3DTrescaDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DTrescaTresca", mSmallStrainIsotropicDamage3DTrescaTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DDruckerPragerVonMises", mSmallStrainIsotropicDamage3DDruckerPragerVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DDruckerPragerModifiedMohrCoulomb", mSmallStrainIsotropicDamage3DDruckerPragerModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DDruckerPragerDruckerPrager", mSmallStrainIsotropicDamage3DDruckerPragerDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DDruckerPragerTresca", mSmallStrainIsotropicDamage3DDruckerPragerTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DRankineVonMises", mSmallStrainIsotropicDamage3DRankineVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DRankineModifiedMohrCoulomb", mSmallStrainIsotropicDamage3DRankineModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DRankineDruckerPrager", mSmallStrainIsotropicDamage3DRankineDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DRankineTresca", mSmallStrainIsotropicDamage3DRankineTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DSimoJuVonMises", mSmallStrainIsotropicDamage3DSimoJuVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DSimoJuModifiedMohrCoulomb", mSmallStrainIsotropicDamage3DSimoJuModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DSimoJuDruckerPrager", mSmallStrainIsotropicDamage3DSimoJuDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DSimoJuTresca", mSmallStrainIsotropicDamage3DSimoJuTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DVonMisesMohrCoulomb", mSmallStrainIsotropicDamage3DVonMisesMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DMohrCoulombVonMises", mSmallStrainIsotropicDamage3DMohrCoulombVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DMohrCoulombMohrCoulomb", mSmallStrainIsotropicDamage3DMohrCoulombMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DMohrCoulombDruckerPrager", mSmallStrainIsotropicDamage3DMohrCoulombDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DMohrCoulombTresca", mSmallStrainIsotropicDamage3DMohrCoulombTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DTrescaMohrCoulomb", mSmallStrainIsotropicDamage3DTrescaMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DDruckerPragerMohrCoulomb", mSmallStrainIsotropicDamage3DDruckerPragerMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DRankineMohrCoulomb", mSmallStrainIsotropicDamage3DRankineMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DSimoJuMohrCoulomb", mSmallStrainIsotropicDamage3DSimoJuMohrCoulomb); - - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DVonMisesVonMises", mSmallStrainIsotropicDamage2DVonMisesVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DVonMisesModifiedMohrCoulomb", mSmallStrainIsotropicDamage2DVonMisesModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DVonMisesDruckerPrager", mSmallStrainIsotropicDamage2DVonMisesDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DVonMisesTresca", mSmallStrainIsotropicDamage2DVonMisesTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DModifiedMohrCoulombVonMises", mSmallStrainIsotropicDamage2DModifiedMohrCoulombVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DModifiedMohrCoulombModifiedMohrCoulomb", mSmallStrainIsotropicDamage2DModifiedMohrCoulombModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DModifiedMohrCoulombDruckerPrager", mSmallStrainIsotropicDamage2DModifiedMohrCoulombDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DModifiedMohrCoulombTresca", mSmallStrainIsotropicDamage2DModifiedMohrCoulombTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DTrescaVonMises", mSmallStrainIsotropicDamage2DTrescaVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DTrescaModifiedMohrCoulomb", mSmallStrainIsotropicDamage2DTrescaModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DTrescaDruckerPrager", mSmallStrainIsotropicDamage2DTrescaDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DTrescaTresca", mSmallStrainIsotropicDamage2DTrescaTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DDruckerPragerVonMises", mSmallStrainIsotropicDamage2DDruckerPragerVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DDruckerPragerModifiedMohrCoulomb", mSmallStrainIsotropicDamage2DDruckerPragerModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DDruckerPragerDruckerPrager", mSmallStrainIsotropicDamage2DDruckerPragerDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DDruckerPragerTresca", mSmallStrainIsotropicDamage2DDruckerPragerTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DRankineVonMises", mSmallStrainIsotropicDamage2DRankineVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DRankineModifiedMohrCoulomb", mSmallStrainIsotropicDamage2DRankineModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DRankineDruckerPrager", mSmallStrainIsotropicDamage2DRankineDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DRankineTresca", mSmallStrainIsotropicDamage2DRankineTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DSimoJuVonMises", mSmallStrainIsotropicDamage2DSimoJuVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DSimoJuModifiedMohrCoulomb", mSmallStrainIsotropicDamage2DSimoJuModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DSimoJuDruckerPrager", mSmallStrainIsotropicDamage2DSimoJuDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DSimoJuTresca", mSmallStrainIsotropicDamage2DSimoJuTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DVonMisesMohrCoulomb", mSmallStrainIsotropicDamage2DVonMisesMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DMohrCoulombVonMises", mSmallStrainIsotropicDamage2DMohrCoulombVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DMohrCoulombMohrCoulomb", mSmallStrainIsotropicDamage2DMohrCoulombMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DMohrCoulombDruckerPrager", mSmallStrainIsotropicDamage2DMohrCoulombDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DMohrCoulombTresca", mSmallStrainIsotropicDamage2DMohrCoulombTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DTrescaMohrCoulomb", mSmallStrainIsotropicDamage2DTrescaMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DDruckerPragerMohrCoulomb", mSmallStrainIsotropicDamage2DDruckerPragerMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DRankineMohrCoulomb", mSmallStrainIsotropicDamage2DRankineMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage2DSimoJuMohrCoulomb", mSmallStrainIsotropicDamage2DSimoJuMohrCoulomb); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DVonMises", mSmallStrainIsotropicDamage3DVonMises); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DModifiedMohrCoulomb", mSmallStrainIsotropicDamage3DModifiedMohrCoulomb); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DTresca", mSmallStrainIsotropicDamage3DTresca); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DDruckerPrager", mSmallStrainIsotropicDamage3DDruckerPrager); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DRankine", mSmallStrainIsotropicDamage3DRankine); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DSimoJu", mSmallStrainIsotropicDamage3DSimoJu); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamage3DMohrCoulomb", mSmallStrainIsotropicDamage3DMohrCoulomb); + + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStrainVonMises", mSmallStrainIsotropicDamagePlaneStrainVonMises); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStrainModifiedMohrCoulomb", mSmallStrainIsotropicDamagePlaneStrainModifiedMohrCoulomb); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStrainTresca", mSmallStrainIsotropicDamagePlaneStrainTresca); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStrainDruckerPrager", mSmallStrainIsotropicDamagePlaneStrainDruckerPrager); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStrainRankine", mSmallStrainIsotropicDamagePlaneStrainRankine); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStrainSimoJu", mSmallStrainIsotropicDamagePlaneStrainSimoJu); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStrainMohrCoulomb", mSmallStrainIsotropicDamagePlaneStrainMohrCoulomb); + + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStressVonMises", mSmallStrainIsotropicDamagePlaneStressVonMises); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStressModifiedMohrCoulomb", mSmallStrainIsotropicDamagePlaneStressModifiedMohrCoulomb); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStressTresca", mSmallStrainIsotropicDamagePlaneStressTresca); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStressDruckerPrager", mSmallStrainIsotropicDamagePlaneStressDruckerPrager); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStressRankine", mSmallStrainIsotropicDamagePlaneStressRankine); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStressSimoJu", mSmallStrainIsotropicDamagePlaneStressSimoJu); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainIsotropicDamagePlaneStressMohrCoulomb", mSmallStrainIsotropicDamagePlaneStressMohrCoulomb); // HCF (High Cycle Fatigue) - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawVonMisesVonMises", mSmallStrainHighCycleFatigue3DLawVonMisesVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawVonMisesModifiedMohrCoulomb", mSmallStrainHighCycleFatigue3DLawVonMisesModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawVonMisesDruckerPrager", mSmallStrainHighCycleFatigue3DLawVonMisesDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawVonMisesTresca", mSmallStrainHighCycleFatigue3DLawVonMisesTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawModifiedMohrCoulombVonMises", mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulombVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawModifiedMohrCoulombModifiedMohrCoulomb", mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulombModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawModifiedMohrCoulombDruckerPrager", mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulombDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawModifiedMohrCoulombTresca", mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulombTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawTrescaVonMises", mSmallStrainHighCycleFatigue3DLawTrescaVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawTrescaModifiedMohrCoulomb", mSmallStrainHighCycleFatigue3DLawTrescaModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawTrescaDruckerPrager", mSmallStrainHighCycleFatigue3DLawTrescaDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawTrescaTresca", mSmallStrainHighCycleFatigue3DLawTrescaTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawDruckerPragerVonMises", mSmallStrainHighCycleFatigue3DLawDruckerPragerVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawDruckerPragerModifiedMohrCoulomb", mSmallStrainHighCycleFatigue3DLawDruckerPragerModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawDruckerPragerDruckerPrager", mSmallStrainHighCycleFatigue3DLawDruckerPragerDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawDruckerPragerTresca", mSmallStrainHighCycleFatigue3DLawDruckerPragerTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawRankineVonMises", mSmallStrainHighCycleFatigue3DLawRankineVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawRankineModifiedMohrCoulomb", mSmallStrainHighCycleFatigue3DLawRankineModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawRankineDruckerPrager", mSmallStrainHighCycleFatigue3DLawRankineDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawRankineTresca", mSmallStrainHighCycleFatigue3DLawRankineTresca); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawSimoJuVonMises", mSmallStrainHighCycleFatigue3DLawSimoJuVonMises); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawSimoJuModifiedMohrCoulomb", mSmallStrainHighCycleFatigue3DLawSimoJuModifiedMohrCoulomb); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawSimoJuDruckerPrager", mSmallStrainHighCycleFatigue3DLawSimoJuDruckerPrager); - KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawSimoJuTresca", mSmallStrainHighCycleFatigue3DLawSimoJuTresca); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawVonMises", mSmallStrainHighCycleFatigue3DLawVonMises); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawModifiedMohrCoulomb", mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulomb); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawTresca", mSmallStrainHighCycleFatigue3DLawTresca); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawDruckerPrager", mSmallStrainHighCycleFatigue3DLawDruckerPrager); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawRankine", mSmallStrainHighCycleFatigue3DLawRankine); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawSimoJu", mSmallStrainHighCycleFatigue3DLawSimoJu); + KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainHighCycleFatigue3DLawMohrCoulomb", mSmallStrainHighCycleFatigue3DLawMohrCoulomb); + // d+d- laws (3D) KRATOS_REGISTER_CONSTITUTIVE_LAW("SmallStrainDplusDminusDamageModifiedMohrCoulombModifiedMohrCoulomb3D", mSmallStrainDplusDminusDamageModifiedMohrCoulombModifiedMohrCoulomb3D); @@ -467,9 +407,13 @@ void KratosConstitutiveLawsApplication::Register() KRATOS_REGISTER_VARIABLE(EFFECTIVE_TENSION_STRESS_VECTOR) KRATOS_REGISTER_VARIABLE(EFFECTIVE_COMPRESSION_STRESS_VECTOR) KRATOS_REGISTER_VARIABLE(CAUCHY_STRESS_TENSOR_FIBER) + KRATOS_REGISTER_VARIABLE(CAUCHY_STRESS_VECTOR_FIBER) KRATOS_REGISTER_VARIABLE(CAUCHY_STRESS_TENSOR_MATRIX) + KRATOS_REGISTER_VARIABLE(CAUCHY_STRESS_VECTOR_MATRIX) KRATOS_REGISTER_VARIABLE(GREEN_LAGRANGE_STRAIN_TENSOR_MATRIX) + KRATOS_REGISTER_VARIABLE(GREEN_LAGRANGE_STRAIN_VECTOR_MATRIX) KRATOS_REGISTER_VARIABLE(GREEN_LAGRANGE_STRAIN_TENSOR_FIBER) + KRATOS_REGISTER_VARIABLE(GREEN_LAGRANGE_STRAIN_VECTOR_FIBER) KRATOS_REGISTER_VARIABLE(EXPONENTIAL_SATURATION_YIELD_STRESS) KRATOS_REGISTER_VARIABLE(ACCUMULATED_PLASTIC_STRAIN) KRATOS_REGISTER_VARIABLE(BACK_STRESS_VECTOR) diff --git a/applications/ConstitutiveLawsApplication/constitutive_laws_application.h b/applications/ConstitutiveLawsApplication/constitutive_laws_application.h index ae745b67028a..1ced0aefdb8c 100644 --- a/applications/ConstitutiveLawsApplication/constitutive_laws_application.h +++ b/applications/ConstitutiveLawsApplication/constitutive_laws_application.h @@ -26,82 +26,83 @@ #include "includes/kratos_application.h" // Constitutive laws -#include "custom_constitutive/wrinkling_linear_2d_law.h" -#include "custom_constitutive/truss_plasticity_constitutive_law.h" -#include "custom_constitutive/hyper_elastic_isotropic_ogden_1d.h" -#include "custom_constitutive/hyper_elastic_isotropic_henky_1d.h" -#include "custom_constitutive/elastic_isotropic_plane_stress_uncoupled_shear.h" -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h" -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h" -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h" -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.h" -#include "custom_constitutive/hyper_elastic_isotropic_quasi_incompressible_isochoric_neo_hookean_3d.h" -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h" -#include "custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_3d.h" -#include "custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h" -#include "custom_constitutive/linear_elastic_orthotropic_2D_law.h" -#include "custom_constitutive/small_strain_j2_plasticity_plane_strain_2d.h" -#include "custom_constitutive/small_strain_j2_plasticity_3d.h" -#include "custom_constitutive/small_strain_isotropic_damage_3d.h" -#include "custom_constitutive/small_strain_isotropic_damage_implex_3d.h" -#include "custom_constitutive/small_strain_isotropic_damage_plane_strain_2d.h" -#include "custom_constitutive/small_strain_isotropic_damage_traction_only_3d.h" -#include "custom_constitutive/small_strain_isotropic_damage_traction_only_implex_3d.h" -#include "custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.h" -#include "custom_constitutive/d_plus_d_minus_damage_masonry_3d.h" -#include "custom_constitutive/small_strain_isotropic_plasticity_factory.h" -#include "custom_constitutive/small_strain_kinematic_plasticity_factory.h" -#include "custom_constitutive/generic_small_strain_isotropic_plasticity.h" -#include "custom_constitutive/generic_small_strain_kinematic_plasticity.h" -#include "custom_constitutive/finite_strain_isotropic_plasticity_factory.h" -#include "custom_constitutive/finite_strain_kinematic_plasticity_factory.h" -#include "custom_constitutive/generic_finite_strain_isotropic_plasticity.h" -#include "custom_constitutive/generic_finite_strain_kinematic_plasticity.h" -#include "custom_constitutive/generic_small_strain_isotropic_damage.h" -#include "custom_constitutive/small_strain_isotropic_damage_factory.h" -#include "custom_constitutive/viscous_generalized_kelvin.h" -#include "custom_constitutive/viscous_generalized_maxwell.h" -#include "custom_constitutive/generic_small_strain_viscoplasticity_3d.h" -#include "custom_constitutive/generic_small_strain_d_plus_d_minus_damage.h" -#include "custom_constitutive/plasticity_isotropic_kinematic_j2.h" -#include "custom_constitutive/generic_small_strain_plastic_damage_model.h" -#include "custom_constitutive/generic_small_strain_orthotropic_damage.h" -#include "custom_constitutive/serial_parallel_rule_of_mixtures_law.h" -#include "custom_constitutive/generic_anisotropic_3d_law.h" -#include "custom_constitutive/multi_linear_elastic_1d_law.h" -#include "custom_constitutive/multi_linear_isotropic_plane_stress_2d.h" +#include "custom_constitutive/small_strains/linear/wrinkling_linear_2d_law.h" +#include "custom_constitutive/small_strains/plasticity/truss_plasticity_constitutive_law.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_ogden_1d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_henky_1d.h" +#include "custom_constitutive/small_strains/linear/elastic_isotropic_plane_stress_uncoupled_shear.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h" +#include "custom_constitutive/small_strains/linear/linear_elastic_orthotropic_2D_law.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_plane_strain_2d.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_implex_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_plane_strain_2d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_implex_3d.h" +#include "custom_constitutive/small_strains/damage/plane_stress_d_plus_d_minus_damage_masonry_2d.h" +#include "custom_constitutive/small_strains/damage/d_plus_d_minus_damage_masonry_3d.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_isotropic_plasticity_factory.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_kinematic_plasticity_factory.h" +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.h" +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.h" +#include "custom_constitutive/finite_strains/plasticity/finite_strain_isotropic_plasticity_factory.h" +#include "custom_constitutive/finite_strains/plasticity/finite_strain_kinematic_plasticity_factory.h" +#include "custom_constitutive/finite_strains/plasticity/generic_finite_strain_isotropic_plasticity.h" +#include "custom_constitutive/finite_strains/plasticity/generic_finite_strain_kinematic_plasticity.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_factory.h" +#include "custom_constitutive/small_strains/viscous/viscous_generalized_kelvin.h" +#include "custom_constitutive/small_strains/viscous/viscous_generalized_maxwell.h" +#include "custom_constitutive/small_strains/viscoplasticity/generic_small_strain_viscoplasticity_3d.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_d_plus_d_minus_damage.h" +#include "custom_constitutive/small_strains/plasticity/plasticity_isotropic_kinematic_j2.h" +#include "custom_constitutive/small_strains/plastic_damage/generic_small_strain_plastic_damage_model.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_orthotropic_damage.h" +#include "custom_constitutive/composites/serial_parallel_rule_of_mixtures_law.h" +#include "custom_constitutive/small_strains/anisotropy_orthotropy/generic_anisotropic_3d_law.h" +#include "custom_constitutive/small_strains/linear/multi_linear_elastic_1d_law.h" +#include "custom_constitutive/small_strains/linear/multi_linear_isotropic_plane_stress_2d.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage_plane_stress.h" // Integrators -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_kinematic_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_compression_constitutive_law_integrator.h" -#include "custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_tension_constitutive_law_integrator.h" -#include "custom_constitutive/generic_small_strain_high_cycle_fatigue_law.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_compression_cl_integrator.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_tension_cl_integrator.h" +#include "custom_constitutive/small_strains/fatigue/generic_small_strain_high_cycle_fatigue_law.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/rankine_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/rankine_plastic_potential.h" // Rules of mixtures -#include "custom_constitutive/rule_of_mixtures_law.h" +#include "custom_constitutive/composites/rule_of_mixtures_law.h" -#include "custom_constitutive/associative_plastic_damage_model.h" +#include "custom_constitutive/small_strains/plastic_damage/associative_plastic_damage_model.h" namespace Kratos { @@ -398,100 +399,41 @@ class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) KratosConstitutiveLawsApplicatio /// Damage /* Small strain 3D */ - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DVonMisesVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DVonMisesModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DVonMisesDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DVonMisesTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DModifiedMohrCoulombVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DModifiedMohrCoulombModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DModifiedMohrCoulombDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DModifiedMohrCoulombTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DTrescaVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DTrescaModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DTrescaDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DTrescaTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DDruckerPragerVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DDruckerPragerModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DDruckerPragerDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DDruckerPragerTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DRankineVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DRankineModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DRankineDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DRankineTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DSimoJuVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DSimoJuModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DSimoJuDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DSimoJuTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DVonMisesMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DMohrCoulombVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DMohrCoulombMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DMohrCoulombDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DMohrCoulombTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DTrescaMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DDruckerPragerMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DRankineMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DSimoJuMohrCoulomb; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DVonMises; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DModifiedMohrCoulomb; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DTresca; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DDruckerPrager; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DRankine; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DSimoJu; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage3DMohrCoulomb; /* Small strain 2D */ - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DVonMisesVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DVonMisesModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DVonMisesDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DVonMisesTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DModifiedMohrCoulombVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DModifiedMohrCoulombModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DModifiedMohrCoulombDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DModifiedMohrCoulombTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DTrescaVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DTrescaModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DTrescaDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DTrescaTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DDruckerPragerVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DDruckerPragerModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DDruckerPragerDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DDruckerPragerTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DRankineVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DRankineModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DRankineDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DRankineTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DSimoJuVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DSimoJuModifiedMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DSimoJuDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DSimoJuTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DVonMisesMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DMohrCoulombVonMises; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DMohrCoulombMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DMohrCoulombDruckerPrager; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DMohrCoulombTresca; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DTrescaMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DDruckerPragerMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DRankineMohrCoulomb; - const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamage2DSimoJuMohrCoulomb; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamagePlaneStrainVonMises; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamagePlaneStrainModifiedMohrCoulomb; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamagePlaneStrainTresca; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamagePlaneStrainDruckerPrager; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamagePlaneStrainRankine; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamagePlaneStrainSimoJu; + const GenericSmallStrainIsotropicDamage >>> mSmallStrainIsotropicDamagePlaneStrainMohrCoulomb; + + /* Small strain plane stress 2D */ + const GenericSmallStrainIsotropicDamagePlaneStress >>> mSmallStrainIsotropicDamagePlaneStressVonMises; + const GenericSmallStrainIsotropicDamagePlaneStress >>> mSmallStrainIsotropicDamagePlaneStressModifiedMohrCoulomb; + const GenericSmallStrainIsotropicDamagePlaneStress >>> mSmallStrainIsotropicDamagePlaneStressTresca; + const GenericSmallStrainIsotropicDamagePlaneStress >>> mSmallStrainIsotropicDamagePlaneStressDruckerPrager; + const GenericSmallStrainIsotropicDamagePlaneStress >>> mSmallStrainIsotropicDamagePlaneStressRankine; + const GenericSmallStrainIsotropicDamagePlaneStress >>> mSmallStrainIsotropicDamagePlaneStressSimoJu; + const GenericSmallStrainIsotropicDamagePlaneStress >>> mSmallStrainIsotropicDamagePlaneStressMohrCoulomb; // HCF (High Cycle Fatigue) - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawVonMisesVonMises; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawVonMisesModifiedMohrCoulomb; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawVonMisesDruckerPrager; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawVonMisesTresca; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulombVonMises; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulombModifiedMohrCoulomb; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulombDruckerPrager; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulombTresca; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawTrescaVonMises; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawTrescaModifiedMohrCoulomb; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawTrescaDruckerPrager; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawTrescaTresca; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawDruckerPragerVonMises; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawDruckerPragerModifiedMohrCoulomb; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawDruckerPragerDruckerPrager; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawDruckerPragerTresca; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawRankineVonMises; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawRankineModifiedMohrCoulomb; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawRankineDruckerPrager; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawRankineTresca; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawSimoJuVonMises; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawSimoJuModifiedMohrCoulomb; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawSimoJuDruckerPrager; - const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawSimoJuTresca; + const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawVonMises; + const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawModifiedMohrCoulomb; + const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawTresca; + const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawDruckerPrager; + const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawRankine; + const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawSimoJu; + const GenericSmallStrainHighCycleFatigueLaw >>> mSmallStrainHighCycleFatigue3DLawMohrCoulomb; + // d+d- laws (3D) const GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>> mSmallStrainDplusDminusDamageModifiedMohrCoulombModifiedMohrCoulomb3D; diff --git a/applications/ConstitutiveLawsApplication/constitutive_laws_application_variables.cpp b/applications/ConstitutiveLawsApplication/constitutive_laws_application_variables.cpp index c289cd2261f8..69d231f53c94 100644 --- a/applications/ConstitutiveLawsApplication/constitutive_laws_application_variables.cpp +++ b/applications/ConstitutiveLawsApplication/constitutive_laws_application_variables.cpp @@ -85,9 +85,13 @@ KRATOS_CREATE_VARIABLE(Vector, COMPRESSION_STRESS_VECTOR) KRATOS_CREATE_VARIABLE(Vector, EFFECTIVE_TENSION_STRESS_VECTOR) KRATOS_CREATE_VARIABLE(Vector, EFFECTIVE_COMPRESSION_STRESS_VECTOR) KRATOS_CREATE_VARIABLE(Matrix, CAUCHY_STRESS_TENSOR_FIBER) +KRATOS_CREATE_VARIABLE(Vector, CAUCHY_STRESS_VECTOR_FIBER) KRATOS_CREATE_VARIABLE(Matrix, CAUCHY_STRESS_TENSOR_MATRIX) +KRATOS_CREATE_VARIABLE(Vector, CAUCHY_STRESS_VECTOR_MATRIX) KRATOS_CREATE_VARIABLE(Matrix, GREEN_LAGRANGE_STRAIN_TENSOR_MATRIX) +KRATOS_CREATE_VARIABLE(Vector, GREEN_LAGRANGE_STRAIN_VECTOR_MATRIX) KRATOS_CREATE_VARIABLE(Matrix, GREEN_LAGRANGE_STRAIN_TENSOR_FIBER) +KRATOS_CREATE_VARIABLE(Vector, GREEN_LAGRANGE_STRAIN_VECTOR_FIBER) KRATOS_CREATE_VARIABLE(double, EXPONENTIAL_SATURATION_YIELD_STRESS) KRATOS_CREATE_VARIABLE(double, ACCUMULATED_PLASTIC_STRAIN) KRATOS_CREATE_3D_VARIABLE_WITH_COMPONENTS( EULER_ANGLES) diff --git a/applications/ConstitutiveLawsApplication/constitutive_laws_application_variables.h b/applications/ConstitutiveLawsApplication/constitutive_laws_application_variables.h index a95872abdf20..5c7a1e91eafa 100644 --- a/applications/ConstitutiveLawsApplication/constitutive_laws_application_variables.h +++ b/applications/ConstitutiveLawsApplication/constitutive_laws_application_variables.h @@ -103,9 +103,13 @@ namespace Kratos KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Vector, EFFECTIVE_TENSION_STRESS_VECTOR) KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Vector, EFFECTIVE_COMPRESSION_STRESS_VECTOR) KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Matrix, CAUCHY_STRESS_TENSOR_FIBER) + KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Vector, CAUCHY_STRESS_VECTOR_FIBER) KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Matrix, CAUCHY_STRESS_TENSOR_MATRIX) + KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Vector, CAUCHY_STRESS_VECTOR_MATRIX) KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Matrix, GREEN_LAGRANGE_STRAIN_TENSOR_MATRIX) + KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Vector, GREEN_LAGRANGE_STRAIN_VECTOR_MATRIX) KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Matrix, GREEN_LAGRANGE_STRAIN_TENSOR_FIBER) + KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, Vector, GREEN_LAGRANGE_STRAIN_VECTOR_FIBER) KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, double, EXPONENTIAL_SATURATION_YIELD_STRESS) KRATOS_DEFINE_APPLICATION_VARIABLE(CONSTITUTIVE_LAWS_APPLICATION, double, ACCUMULATED_PLASTIC_STRAIN) KRATOS_DEFINE_3D_APPLICATION_VARIABLE_WITH_COMPONENTS( CONSTITUTIVE_LAWS_APPLICATION, EULER_ANGLES) diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_compression_constitutive_law_integrator.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_compression_cl_integrator.h similarity index 97% rename from applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_compression_constitutive_law_integrator.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_compression_cl_integrator.h index 9ed4c97c0f1c..e0d1fa4cf9f9 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_compression_constitutive_law_integrator.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_compression_cl_integrator.h @@ -1,334 +1,334 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Alejandro Cornejo -// - -#if !defined(KRATOS_GENERIC_COMPRESSION_CONSTITUTIVE_LAW_INTEGRATOR_DAMAGE_H_INCLUDED) -#define KRATOS_GENERIC_COMPRESSION_CONSTITUTIVE_LAW_INTEGRATOR_DAMAGE_H_INCLUDED - -// System includes - -// Project includes -#include "includes/define.h" -#include "includes/checks.h" -#include "includes/serializer.h" -#include "includes/properties.h" -#include "utilities/math_utils.h" -#include "constitutive_laws_application_variables.h" - -namespace Kratos -{ - -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - - // The size type definition - typedef std::size_t SizeType; - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/** - * @class GenericCompressionConstitutiveLawIntegratorDplusDminusDamage - * @ingroup StructuralMechanicsApplication - * @brief: This object integrates the predictive stress using the isotropic the d+d- damage theory - * @details The definitions of these classes is completely static, the derivation is done in a static way - * The damage integrator requires the definition of the following properties: - * - SOFTENING_TYPE: The fosftening behaviour considered (linear, exponential,etc...) - * @tparam TYieldSurfaceType The yield surface considered - * @author Alejandro Cornejo - */ -template -class GenericCompressionConstitutiveLawIntegratorDplusDminusDamage -{ - public: - - ///@name Type Definitions - ///@{ - - /// The type of yield surface - typedef TYieldSurfaceType YieldSurfaceType; - - /// The define the working dimension size, already defined in the yield surface - static constexpr SizeType Dimension = YieldSurfaceType::Dimension; - - /// The define the Voigt size, already defined in the yield surface - static constexpr SizeType VoigtSize = YieldSurfaceType::VoigtSize; - - /// The type of plastic potential - typedef typename YieldSurfaceType::PlasticPotentialType PlasticPotentialType; - - /// Counted pointer of GenericCompressionConstitutiveLawIntegratorDplusDminusDamage - KRATOS_CLASS_POINTER_DEFINITION(GenericCompressionConstitutiveLawIntegratorDplusDminusDamage); - - /// Initialization constructor - GenericCompressionConstitutiveLawIntegratorDplusDminusDamage() - { - } - - /// Copy constructor - GenericCompressionConstitutiveLawIntegratorDplusDminusDamage(GenericCompressionConstitutiveLawIntegratorDplusDminusDamage const &rOther) - { - } - - /// Assignment operator - GenericCompressionConstitutiveLawIntegratorDplusDminusDamage &operator=(GenericCompressionConstitutiveLawIntegratorDplusDminusDamage const &rOther) - { - return *this; - } - - /// Destructor - virtual ~GenericCompressionConstitutiveLawIntegratorDplusDminusDamage() - { - } - - ///@} - ///@name Operators - ///@{ - - ///@} - ///@name Operations - ///@{ - - /** - * @brief This method integrates the predictive stress vector with the CL using linear or exponential softening - * @param PredictiveStressVector The predictive stress vector - * @param UniaxialStress The equivalent uniaxial stress - * @param Damage The internal variable of the damage model - * @param Threshold The maximum uniaxial stress achieved previously - * @param rValues Parameters of the constitutive law - * @param CharacteristicLength The equivalent length of the FE - */ - static void IntegrateStressVector( - array_1d& rPredictiveStressVector, - const double UniaxialStress, - double& rDamage, - double& rThreshold, - ConstitutiveLaw::Parameters& rValues, - const double CharacteristicLength - ) - { - const Properties& r_material_properties = rValues.GetMaterialProperties(); - const int softening_type = r_material_properties.Has(SOFTENING_TYPE_COMPRESSION) ? r_material_properties[SOFTENING_TYPE_COMPRESSION] : r_material_properties[SOFTENING_TYPE]; - double damage_parameter; - CalculateDamageParameterCompression(rValues, damage_parameter, CharacteristicLength); - - switch (softening_type) - { - case static_cast(SofteningType::Linear): - CalculateLinearDamage(UniaxialStress, rThreshold, damage_parameter, CharacteristicLength, rValues, rDamage); - break; - case static_cast(SofteningType::Exponential): - CalculateExponentialDamage(UniaxialStress, rThreshold, damage_parameter, CharacteristicLength, rValues, rDamage); - break; - default: - KRATOS_ERROR << "SOFTENING_TYPE not defined or wrong..." << softening_type << std::endl; - break; - } - rPredictiveStressVector *= (1.0 - rDamage); - } - - /** - * @brief This method returns the initial uniaxial stress threshold - * @param rThreshold The uniaxial stress threshold - * @param rValues Parameters of the constitutive law - */ - static void CalculateDamageParameterCompression( - ConstitutiveLaw::Parameters& rValues, - double& rDamageParameter, - const double CharacteristicLength - ) - { - const double fracture_energy_compression = rValues.GetMaterialProperties()[FRACTURE_ENERGY_COMPRESSION]; - ConstitutiveLaw::Parameters modified_values = rValues; - auto r_properties = modified_values.GetMaterialProperties(); - r_properties.SetValue(FRACTURE_ENERGY, fracture_energy_compression); - modified_values.SetMaterialProperties(r_properties); - TYieldSurfaceType::CalculateDamageParameter(modified_values, rDamageParameter, CharacteristicLength); - } - - /** - * @brief This method returns the initial uniaxial stress threshold - * @param rThreshold The uniaxial stress threshold - * @param rValues Parameters of the constitutive law - */ - static void GetInitialUniaxialThreshold( - ConstitutiveLaw::Parameters& rValues, - double& rThreshold - ) - { - // This is done to allow tension-driven yields to work as compression yields - if (YieldSurfaceType::IsWorkingWithTensionThreshold()) { - ConstitutiveLaw::Parameters modified_ones = rValues; - const double yield_compression = modified_ones.GetMaterialProperties()[YIELD_STRESS_COMPRESSION]; - Properties material_props = modified_ones.GetMaterialProperties(); - material_props.SetValue(YIELD_STRESS_TENSION, yield_compression); - modified_ones.SetMaterialProperties(material_props); - TYieldSurfaceType::GetInitialUniaxialThreshold(modified_ones, rThreshold); - } else { - TYieldSurfaceType::GetInitialUniaxialThreshold(rValues, rThreshold); - } - } - - /** - * @brief This computes the damage variable according to exponential softening - * @param UniaxialStress The equivalent uniaxial stress - * @param Threshold The maximum uniaxial stress achieved previously - * @param rDamage The internal variable of the damage model - * @param rValues Parameters of the constitutive law - * @param CharacteristicLength The equivalent length of the FE - */ - static void CalculateExponentialDamage( - const double UniaxialStress, - const double Threshold, - const double DamageParameter, - const double CharacteristicLength, - ConstitutiveLaw::Parameters& rValues, - double& rDamage - ) - { - double initial_threshold; - GetInitialUniaxialThreshold(rValues, initial_threshold); - rDamage = 1.0 - (initial_threshold / UniaxialStress) * std::exp(DamageParameter * - (1.0 - UniaxialStress / initial_threshold)); - } - - /** - * @brief This computes the damage variable according to linear softening - * @param UniaxialStress The equivalent uniaxial stress - * @param Threshold The maximum uniaxial stress achieved previously - * @param rDamage The internal variable of the damage model - * @param rValues Parameters of the constitutive law - * @param CharacteristicLength The equivalent length of the FE - */ - static void CalculateLinearDamage( - const double UniaxialStress, - const double Threshold, - const double DamageParameter, - const double CharacteristicLength, - ConstitutiveLaw::Parameters& rValues, - double& rDamage - ) - { - double initial_threshold; - GetInitialUniaxialThreshold(rValues, initial_threshold); - rDamage = (1.0 - initial_threshold / UniaxialStress) / (1.0 + DamageParameter); - } - - /** - * @brief This method defines in the CL integrator - * @return 0 if OK, 1 otherwise - */ - static int Check(const Properties& rMaterialProperties) - { - KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(SOFTENING_TYPE)) << "MAXIMUM_STRESS is not a defined value" << std::endl; - KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(YIELD_STRESS_TENSION)) << "YIELD_STRESS_TENSION is not a defined value" << std::endl; - KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(YIELD_STRESS_COMPRESSION)) << "YIELD_STRESS_COMPRESSION is not a defined value" << std::endl; - KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(YOUNG_MODULUS)) << "YOUNG_MODULUS is not a defined value" << std::endl; - KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(FRACTURE_ENERGY)) << "FRACTURE_ENERGY is not a defined value" << std::endl; - - return TYieldSurfaceType::Check(rMaterialProperties); - } - - ///@} - ///@name Access - ///@{ - - ///@} - ///@name Inquiry - ///@{ - - ///@} - ///@name Input and output - ///@{ - - ///@} - ///@name Friends - ///@{ - - ///@} - - protected: - ///@name Protected static Member Variables - ///@{ - - ///@} - ///@name Protected member Variables - ///@{ - - ///@} - ///@name Protected Operators - ///@{ - - ///@} - ///@name Protected Operations - ///@{ - - ///@} - ///@name Protected Access - ///@{ - - ///@} - ///@name Protected Inquiry - ///@{ - - ///@} - ///@name Protected LifeCycle - ///@{ - - ///@} - - private: - ///@name Static Member Variables - ///@{ - - ///@} - ///@name Member Variables - ///@{ - - ///@} - ///@name Private Operators - ///@{ - - ///@} - ///@name Private Operations - ///@{ - - ///@} - ///@name Private Access - ///@{ - - ///@} - ///@name Private Inquiry - ///@{ - - ///@} - ///@name Un accessible methods - ///@{ - - ///@} - -}; -} // namespace Kratos -#endif +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Alejandro Cornejo +// + +#if !defined(KRATOS_GENERIC_COMPRESSION_CONSTITUTIVE_LAW_INTEGRATOR_DAMAGE_H_INCLUDED) +#define KRATOS_GENERIC_COMPRESSION_CONSTITUTIVE_LAW_INTEGRATOR_DAMAGE_H_INCLUDED + +// System includes + +// Project includes +#include "includes/define.h" +#include "includes/checks.h" +#include "includes/serializer.h" +#include "includes/properties.h" +#include "utilities/math_utils.h" +#include "constitutive_laws_application_variables.h" + +namespace Kratos +{ + +///@name Kratos Globals +///@{ + +///@} +///@name Type Definitions +///@{ + + // The size type definition + typedef std::size_t SizeType; + +///@} +///@name Enum's +///@{ + +///@} +///@name Functions +///@{ + +///@} +///@name Kratos Classes +///@{ + +/** + * @class GenericCompressionConstitutiveLawIntegratorDplusDminusDamage + * @ingroup StructuralMechanicsApplication + * @brief: This object integrates the predictive stress using the isotropic the d+d- damage theory + * @details The definitions of these classes is completely static, the derivation is done in a static way + * The damage integrator requires the definition of the following properties: + * - SOFTENING_TYPE: The fosftening behaviour considered (linear, exponential,etc...) + * @tparam TYieldSurfaceType The yield surface considered + * @author Alejandro Cornejo + */ +template +class GenericCompressionConstitutiveLawIntegratorDplusDminusDamage +{ + public: + + ///@name Type Definitions + ///@{ + + /// The type of yield surface + typedef TYieldSurfaceType YieldSurfaceType; + + /// The define the working dimension size, already defined in the yield surface + static constexpr SizeType Dimension = YieldSurfaceType::Dimension; + + /// The define the Voigt size, already defined in the yield surface + static constexpr SizeType VoigtSize = YieldSurfaceType::VoigtSize; + + /// The type of plastic potential + typedef typename YieldSurfaceType::PlasticPotentialType PlasticPotentialType; + + /// Counted pointer of GenericCompressionConstitutiveLawIntegratorDplusDminusDamage + KRATOS_CLASS_POINTER_DEFINITION(GenericCompressionConstitutiveLawIntegratorDplusDminusDamage); + + /// Initialization constructor + GenericCompressionConstitutiveLawIntegratorDplusDminusDamage() + { + } + + /// Copy constructor + GenericCompressionConstitutiveLawIntegratorDplusDminusDamage(GenericCompressionConstitutiveLawIntegratorDplusDminusDamage const &rOther) + { + } + + /// Assignment operator + GenericCompressionConstitutiveLawIntegratorDplusDminusDamage &operator=(GenericCompressionConstitutiveLawIntegratorDplusDminusDamage const &rOther) + { + return *this; + } + + /// Destructor + virtual ~GenericCompressionConstitutiveLawIntegratorDplusDminusDamage() + { + } + + ///@} + ///@name Operators + ///@{ + + ///@} + ///@name Operations + ///@{ + + /** + * @brief This method integrates the predictive stress vector with the CL using linear or exponential softening + * @param PredictiveStressVector The predictive stress vector + * @param UniaxialStress The equivalent uniaxial stress + * @param Damage The internal variable of the damage model + * @param Threshold The maximum uniaxial stress achieved previously + * @param rValues Parameters of the constitutive law + * @param CharacteristicLength The equivalent length of the FE + */ + static void IntegrateStressVector( + array_1d& rPredictiveStressVector, + const double UniaxialStress, + double& rDamage, + double& rThreshold, + ConstitutiveLaw::Parameters& rValues, + const double CharacteristicLength + ) + { + const Properties& r_material_properties = rValues.GetMaterialProperties(); + const int softening_type = r_material_properties.Has(SOFTENING_TYPE_COMPRESSION) ? r_material_properties[SOFTENING_TYPE_COMPRESSION] : r_material_properties[SOFTENING_TYPE]; + double damage_parameter; + CalculateDamageParameterCompression(rValues, damage_parameter, CharacteristicLength); + + switch (softening_type) + { + case static_cast(SofteningType::Linear): + CalculateLinearDamage(UniaxialStress, rThreshold, damage_parameter, CharacteristicLength, rValues, rDamage); + break; + case static_cast(SofteningType::Exponential): + CalculateExponentialDamage(UniaxialStress, rThreshold, damage_parameter, CharacteristicLength, rValues, rDamage); + break; + default: + KRATOS_ERROR << "SOFTENING_TYPE not defined or wrong..." << softening_type << std::endl; + break; + } + rPredictiveStressVector *= (1.0 - rDamage); + } + + /** + * @brief This method returns the initial uniaxial stress threshold + * @param rThreshold The uniaxial stress threshold + * @param rValues Parameters of the constitutive law + */ + static void CalculateDamageParameterCompression( + ConstitutiveLaw::Parameters& rValues, + double& rDamageParameter, + const double CharacteristicLength + ) + { + const double fracture_energy_compression = rValues.GetMaterialProperties()[FRACTURE_ENERGY_COMPRESSION]; + ConstitutiveLaw::Parameters modified_values = rValues; + auto r_properties = modified_values.GetMaterialProperties(); + r_properties.SetValue(FRACTURE_ENERGY, fracture_energy_compression); + modified_values.SetMaterialProperties(r_properties); + TYieldSurfaceType::CalculateDamageParameter(modified_values, rDamageParameter, CharacteristicLength); + } + + /** + * @brief This method returns the initial uniaxial stress threshold + * @param rThreshold The uniaxial stress threshold + * @param rValues Parameters of the constitutive law + */ + static void GetInitialUniaxialThreshold( + ConstitutiveLaw::Parameters& rValues, + double& rThreshold + ) + { + // This is done to allow tension-driven yields to work as compression yields + if (YieldSurfaceType::IsWorkingWithTensionThreshold()) { + ConstitutiveLaw::Parameters modified_ones = rValues; + const double yield_compression = modified_ones.GetMaterialProperties()[YIELD_STRESS_COMPRESSION]; + Properties material_props = modified_ones.GetMaterialProperties(); + material_props.SetValue(YIELD_STRESS_TENSION, yield_compression); + modified_ones.SetMaterialProperties(material_props); + TYieldSurfaceType::GetInitialUniaxialThreshold(modified_ones, rThreshold); + } else { + TYieldSurfaceType::GetInitialUniaxialThreshold(rValues, rThreshold); + } + } + + /** + * @brief This computes the damage variable according to exponential softening + * @param UniaxialStress The equivalent uniaxial stress + * @param Threshold The maximum uniaxial stress achieved previously + * @param rDamage The internal variable of the damage model + * @param rValues Parameters of the constitutive law + * @param CharacteristicLength The equivalent length of the FE + */ + static void CalculateExponentialDamage( + const double UniaxialStress, + const double Threshold, + const double DamageParameter, + const double CharacteristicLength, + ConstitutiveLaw::Parameters& rValues, + double& rDamage + ) + { + double initial_threshold; + GetInitialUniaxialThreshold(rValues, initial_threshold); + rDamage = 1.0 - (initial_threshold / UniaxialStress) * std::exp(DamageParameter * + (1.0 - UniaxialStress / initial_threshold)); + } + + /** + * @brief This computes the damage variable according to linear softening + * @param UniaxialStress The equivalent uniaxial stress + * @param Threshold The maximum uniaxial stress achieved previously + * @param rDamage The internal variable of the damage model + * @param rValues Parameters of the constitutive law + * @param CharacteristicLength The equivalent length of the FE + */ + static void CalculateLinearDamage( + const double UniaxialStress, + const double Threshold, + const double DamageParameter, + const double CharacteristicLength, + ConstitutiveLaw::Parameters& rValues, + double& rDamage + ) + { + double initial_threshold; + GetInitialUniaxialThreshold(rValues, initial_threshold); + rDamage = (1.0 - initial_threshold / UniaxialStress) / (1.0 + DamageParameter); + } + + /** + * @brief This method defines in the CL integrator + * @return 0 if OK, 1 otherwise + */ + static int Check(const Properties& rMaterialProperties) + { + KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(SOFTENING_TYPE)) << "MAXIMUM_STRESS is not a defined value" << std::endl; + KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(YIELD_STRESS_TENSION)) << "YIELD_STRESS_TENSION is not a defined value" << std::endl; + KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(YIELD_STRESS_COMPRESSION)) << "YIELD_STRESS_COMPRESSION is not a defined value" << std::endl; + KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(YOUNG_MODULUS)) << "YOUNG_MODULUS is not a defined value" << std::endl; + KRATOS_ERROR_IF_NOT(rMaterialProperties.Has(FRACTURE_ENERGY)) << "FRACTURE_ENERGY is not a defined value" << std::endl; + + return TYieldSurfaceType::Check(rMaterialProperties); + } + + ///@} + ///@name Access + ///@{ + + ///@} + ///@name Inquiry + ///@{ + + ///@} + ///@name Input and output + ///@{ + + ///@} + ///@name Friends + ///@{ + + ///@} + + protected: + ///@name Protected static Member Variables + ///@{ + + ///@} + ///@name Protected member Variables + ///@{ + + ///@} + ///@name Protected Operators + ///@{ + + ///@} + ///@name Protected Operations + ///@{ + + ///@} + ///@name Protected Access + ///@{ + + ///@} + ///@name Protected Inquiry + ///@{ + + ///@} + ///@name Protected LifeCycle + ///@{ + + ///@} + + private: + ///@name Static Member Variables + ///@{ + + ///@} + ///@name Member Variables + ///@{ + + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + + ///@} + ///@name Private Access + ///@{ + + ///@} + ///@name Private Inquiry + ///@{ + + ///@} + ///@name Un accessible methods + ///@{ + + ///@} + +}; +} // namespace Kratos +#endif diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_tension_constitutive_law_integrator.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_tension_cl_integrator.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_tension_constitutive_law_integrator.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_tension_cl_integrator.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_kinematic_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_kinematic_plasticity.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h index 4d2fd644309a..24d3f037f6b0 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_kinematic_plasticity.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h @@ -23,7 +23,7 @@ #include "utilities/math_utils.h" #include "custom_utilities/advanced_constitutive_law_utilities.h" #include "constitutive_laws_application_variables.h" -#include "generic_constitutive_law_integrator_plasticity.h" +#include "generic_cl_integrator_plasticity.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/high_cycle_fatigue_law_integrator.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/high_cycle_fatigue_law_integrator.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/high_cycle_fatigue_law_integrator.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/high_cycle_fatigue_law_integrator.h index f5d963cb1a78..5a985d5c87d1 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/constitutive_laws_integrators/high_cycle_fatigue_law_integrator.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/cl_integrators/high_cycle_fatigue_law_integrator.h @@ -103,7 +103,7 @@ class HighCycleFatigueLawIntegrator const double CurrentStress, double& rMaximumStress, double& rMinimumStress, - const Vector PreviousStresses, + const Vector& PreviousStresses, bool& rMaxIndicator, bool& rMinIndicator) { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h index e27a2033a5d8..1deca31604b0 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h @@ -18,7 +18,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" +#include "generic_plastic_potential.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/generic_plastic_potential.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/generic_plastic_potential.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h index 1f39e1799bad..f3db35212435 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h @@ -18,7 +18,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" +#include "generic_plastic_potential.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h index 85f18aa958f2..b5c59e891905 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h @@ -17,7 +17,7 @@ // System includes // Project includes -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" +#include "generic_plastic_potential.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/rankine_plastic_potential.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/rankine_plastic_potential.h similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/rankine_plastic_potential.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/rankine_plastic_potential.h index f1b2c5e4b90e..abeea0cb4fdf 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/rankine_plastic_potential.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/rankine_plastic_potential.h @@ -17,7 +17,7 @@ // System includes // Project includes -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" +#include "generic_plastic_potential.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/tresca_plastic_potential.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/tresca_plastic_potential.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h index b320999dd4ae..292fa5f90143 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/tresca_plastic_potential.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h @@ -17,7 +17,7 @@ // System includes // Project includes -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" +#include "generic_plastic_potential.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/von_mises_plastic_potential.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/von_mises_plastic_potential.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h index cb060623ff3a..507d0de38082 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/plastic_potentials/von_mises_plastic_potential.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h @@ -17,7 +17,7 @@ // System includes // Project includes -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" +#include "generic_plastic_potential.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h index 44725425c22b..0f23e5c7f8f7 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h @@ -16,7 +16,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" +#include "generic_yield_surface.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/generic_yield_surface.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h similarity index 96% rename from applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/generic_yield_surface.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h index 7207b654a55d..b764e35bd6b5 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/generic_yield_surface.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h @@ -1,294 +1,294 @@ -// KRATOS ___| | | | -// \___ \ __| __| | | __| __| | | __| _` | | -// | | | | | ( | | | | ( | | -// _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Alejandro Cornejo & Lucia Barbu & Vicente Mataix -// - -#if !defined(KRATOS_GENERIC_YIELD_SURFACE_H_INCLUDED) -#define KRATOS_GENERIC_YIELD_SURFACE_H_INCLUDED - -// System includes - -// Project includes -#include "includes/define.h" -#include "includes/checks.h" -#include "includes/serializer.h" -#include "includes/properties.h" -#include "includes/constitutive_law.h" -#include "utilities/math_utils.h" -#include "custom_utilities/constitutive_law_utilities.h" -#include "custom_utilities/advanced_constitutive_law_utilities.h" - -namespace Kratos -{ -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - - // The size type definition - typedef std::size_t SizeType; - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ -/** - * @class GenericYieldSurface - * @ingroup StructuralMechanicsApplication - * @brief This class defines a generic yield surface - * @details This is a static "template" to use as main reference to define the rest of yield surfaces - * @tparam TPlasticPotentialType The plastic potential considered - * @tparam TVoigtSize The number of components on the Voigt notation - * @author Alejandro Cornejo & Lucia Barbu & Vicente Mataix - */ -template -class GenericYieldSurface -{ -public: - ///@name Type Definitions - ///@{ - - /// The type of potential plasticity - typedef TPlasticPotentialType PlasticPotentialType; - - /// The Plastic potential already defines the working simension size - static constexpr SizeType Dimension = PlasticPotentialType::Dimension; - - /// The Plastic potential already defines the Voigt size - static constexpr SizeType VoigtSize = PlasticPotentialType::VoigtSize; - - /// Counted pointer of GenericYieldSurface - KRATOS_CLASS_POINTER_DEFINITION(GenericYieldSurface); - - ///@} - ///@name Enum's - ///@{ - - ///@} - ///@name Life Cycle - ///@{ - - /// Initialization constructor. - GenericYieldSurface() - { - } - - /// Copy constructor - GenericYieldSurface(GenericYieldSurface const &rOther) - { - } - - /// Assignment operator - GenericYieldSurface &operator=(GenericYieldSurface const &rOther) - { - return *this; - } - - /// Destructor - virtual ~GenericYieldSurface(){}; - - ///@} - ///@name Operators - ///@{ - - ///@} - ///@name Operations - ///@{ - - /** - * @brief This method the uniaxial equivalent stress - * @param rPredictiveStressVector The predictive stress vector S = C:(E-Ep) - * @param rStrainVector The StrainVector vector - * @param rEquivalentStress The effective stress or equivalent uniaxial stress is a scalar. It is an invariant value which measures the “intensity” of a 3D stress state. - * @param rValues Parameters of the constitutive law - */ - static void CalculateEquivalentStress( - const array_1d& rPredictiveStressVector, - const Vector& rStrainVector, - double& rEquivalentStress, - ConstitutiveLaw::Parameters& rValues - ) - { - } - - /** - * @brief This method returns the initial uniaxial stress threshold - * @param rThreshold The uniaxial stress threshold - * @param rValues Parameters of the constitutive law - */ - static void GetInitialUniaxialThreshold( - ConstitutiveLaw::Parameters& rValues, - double& rThreshold - ) - { - } - - /** - * @brief This method returns the damage parameter needed in the exp/linear expressions of damage - * @param rAParameter The damage parameter - * @param rValues Parameters of the constitutive law - * @param CharacteristicLength The equivalent length of the FE - */ - static void CalculateDamageParameter( - ConstitutiveLaw::Parameters& rValues, - double& rAParameter, - const double CharacteristicLength - ) - { - } - - /** - * @brief This method calculates the derivative of the plastic potential DG/DS - * @param StressVector The stress vector - * @param Deviator The deviatoric part of the stress vector - * @param J2 The second invariant of the Deviator - * @param rDerivativePlasticPotential The derivative of the plastic potential - * @param rValues Parameters of the constitutive law - */ - static void CalculatePlasticPotentialDerivative( - const array_1d& rPredictiveStressVector, - const array_1d& rDeviator, - const double& J2, - array_1d& rDerivativePlasticPotential, - ConstitutiveLaw::Parameters& rValues - ) - { - TPlasticPotentialType::CalculatePlasticPotentialDerivative(rPredictiveStressVector, rDeviator, J2, rDerivativePlasticPotential, rValues); - } - - /** - * @brief This script calculates the derivatives of the Yield Surf - according to NAYAK-ZIENKIEWICZ paper International - journal for numerical methods in engineering vol 113-135 1972. - As: DF/DS = c1*V1 + c2*V2 + c3*V3 - * @param StressVector The stress vector - * @param Deviator The deviatoric part of the stress vector - * @param J2 The second invariant of the Deviator - * @param rFFlux The derivative of the yield surface - * @param rValues Parameters of the constitutive law - */ - static void CalculateYieldSurfaceDerivative( - const array_1d& StressVector, - const array_1d& Deviator, - const double J2, - array_1d& rFFlux, - ConstitutiveLaw::Parameters& rValues) - { - } - - /** - * @brief This method defines the check to be performed in the yield surface - * @return 0 if OK, 1 otherwise - */ - static int Check(const Properties& rMaterialProperties) - { - return TPlasticPotentialType::Check(rMaterialProperties); - } - - ///@} - ///@name Access - ///@{ - - ///@} - ///@name Inquiry - ///@{ - - ///@} - ///@name Input and output - ///@{ - - ///@} - ///@name Friends - ///@{ - - ///@} - -protected: - ///@name Protected static Member Variables - ///@{ - - ///@} - ///@name Protected member Variables - ///@{ - - ///@} - ///@name Protected Operators - ///@{ - - ///@} - ///@name Protected Operations - ///@{ - - ///@} - ///@name Protected Access - ///@{ - - ///@} - ///@name Protected Inquiry - ///@{ - - ///@} - ///@name Protected LifeCycle - ///@{ - - ///@} -private: - ///@name Static Member Variables - ///@{ - - ///@} - ///@name Member Variables - ///@{ - - ///@} - ///@name Private Operators - ///@{ - - ///@} - ///@name Private Operations - ///@{ - - ///@} - ///@name Private Access - ///@{ - - ///@} - ///@name Private Inquiry - ///@{ - - ///@} - ///@name Un accessible methods - ///@{ - - ///@} - -}; // Class GenericYieldSurface - -///@} - -///@name Type Definitions -///@{ - -///@} -///@name Input and output -///@{ - -///@} - -} // namespace Kratos. -#endif +// KRATOS ___| | | | +// \___ \ __| __| | | __| __| | | __| _` | | +// | | | | | ( | | | | ( | | +// _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Alejandro Cornejo & Lucia Barbu & Vicente Mataix +// + +#if !defined(KRATOS_GENERIC_YIELD_SURFACE_H_INCLUDED) +#define KRATOS_GENERIC_YIELD_SURFACE_H_INCLUDED + +// System includes + +// Project includes +#include "includes/define.h" +#include "includes/checks.h" +#include "includes/serializer.h" +#include "includes/properties.h" +#include "includes/constitutive_law.h" +#include "utilities/math_utils.h" +#include "custom_utilities/constitutive_law_utilities.h" +#include "custom_utilities/advanced_constitutive_law_utilities.h" + +namespace Kratos +{ +///@name Kratos Globals +///@{ + +///@} +///@name Type Definitions +///@{ + + // The size type definition + typedef std::size_t SizeType; + +///@} +///@name Enum's +///@{ + +///@} +///@name Functions +///@{ + +///@} +///@name Kratos Classes +///@{ +/** + * @class GenericYieldSurface + * @ingroup StructuralMechanicsApplication + * @brief This class defines a generic yield surface + * @details This is a static "template" to use as main reference to define the rest of yield surfaces + * @tparam TPlasticPotentialType The plastic potential considered + * @tparam TVoigtSize The number of components on the Voigt notation + * @author Alejandro Cornejo & Lucia Barbu & Vicente Mataix + */ +template +class GenericYieldSurface +{ +public: + ///@name Type Definitions + ///@{ + + /// The type of potential plasticity + typedef TPlasticPotentialType PlasticPotentialType; + + /// The Plastic potential already defines the working simension size + static constexpr SizeType Dimension = PlasticPotentialType::Dimension; + + /// The Plastic potential already defines the Voigt size + static constexpr SizeType VoigtSize = PlasticPotentialType::VoigtSize; + + /// Counted pointer of GenericYieldSurface + KRATOS_CLASS_POINTER_DEFINITION(GenericYieldSurface); + + ///@} + ///@name Enum's + ///@{ + + ///@} + ///@name Life Cycle + ///@{ + + /// Initialization constructor. + GenericYieldSurface() + { + } + + /// Copy constructor + GenericYieldSurface(GenericYieldSurface const &rOther) + { + } + + /// Assignment operator + GenericYieldSurface &operator=(GenericYieldSurface const &rOther) + { + return *this; + } + + /// Destructor + virtual ~GenericYieldSurface(){}; + + ///@} + ///@name Operators + ///@{ + + ///@} + ///@name Operations + ///@{ + + /** + * @brief This method the uniaxial equivalent stress + * @param rPredictiveStressVector The predictive stress vector S = C:(E-Ep) + * @param rStrainVector The StrainVector vector + * @param rEquivalentStress The effective stress or equivalent uniaxial stress is a scalar. It is an invariant value which measures the “intensity” of a 3D stress state. + * @param rValues Parameters of the constitutive law + */ + static void CalculateEquivalentStress( + const array_1d& rPredictiveStressVector, + const Vector& rStrainVector, + double& rEquivalentStress, + ConstitutiveLaw::Parameters& rValues + ) + { + } + + /** + * @brief This method returns the initial uniaxial stress threshold + * @param rThreshold The uniaxial stress threshold + * @param rValues Parameters of the constitutive law + */ + static void GetInitialUniaxialThreshold( + ConstitutiveLaw::Parameters& rValues, + double& rThreshold + ) + { + } + + /** + * @brief This method returns the damage parameter needed in the exp/linear expressions of damage + * @param rAParameter The damage parameter + * @param rValues Parameters of the constitutive law + * @param CharacteristicLength The equivalent length of the FE + */ + static void CalculateDamageParameter( + ConstitutiveLaw::Parameters& rValues, + double& rAParameter, + const double CharacteristicLength + ) + { + } + + /** + * @brief This method calculates the derivative of the plastic potential DG/DS + * @param StressVector The stress vector + * @param Deviator The deviatoric part of the stress vector + * @param J2 The second invariant of the Deviator + * @param rDerivativePlasticPotential The derivative of the plastic potential + * @param rValues Parameters of the constitutive law + */ + static void CalculatePlasticPotentialDerivative( + const array_1d& rPredictiveStressVector, + const array_1d& rDeviator, + const double& J2, + array_1d& rDerivativePlasticPotential, + ConstitutiveLaw::Parameters& rValues + ) + { + TPlasticPotentialType::CalculatePlasticPotentialDerivative(rPredictiveStressVector, rDeviator, J2, rDerivativePlasticPotential, rValues); + } + + /** + * @brief This script calculates the derivatives of the Yield Surf + according to NAYAK-ZIENKIEWICZ paper International + journal for numerical methods in engineering vol 113-135 1972. + As: DF/DS = c1*V1 + c2*V2 + c3*V3 + * @param StressVector The stress vector + * @param Deviator The deviatoric part of the stress vector + * @param J2 The second invariant of the Deviator + * @param rFFlux The derivative of the yield surface + * @param rValues Parameters of the constitutive law + */ + static void CalculateYieldSurfaceDerivative( + const array_1d& StressVector, + const array_1d& Deviator, + const double J2, + array_1d& rFFlux, + ConstitutiveLaw::Parameters& rValues) + { + } + + /** + * @brief This method defines the check to be performed in the yield surface + * @return 0 if OK, 1 otherwise + */ + static int Check(const Properties& rMaterialProperties) + { + return TPlasticPotentialType::Check(rMaterialProperties); + } + + ///@} + ///@name Access + ///@{ + + ///@} + ///@name Inquiry + ///@{ + + ///@} + ///@name Input and output + ///@{ + + ///@} + ///@name Friends + ///@{ + + ///@} + +protected: + ///@name Protected static Member Variables + ///@{ + + ///@} + ///@name Protected member Variables + ///@{ + + ///@} + ///@name Protected Operators + ///@{ + + ///@} + ///@name Protected Operations + ///@{ + + ///@} + ///@name Protected Access + ///@{ + + ///@} + ///@name Protected Inquiry + ///@{ + + ///@} + ///@name Protected LifeCycle + ///@{ + + ///@} +private: + ///@name Static Member Variables + ///@{ + + ///@} + ///@name Member Variables + ///@{ + + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + + ///@} + ///@name Private Access + ///@{ + + ///@} + ///@name Private Inquiry + ///@{ + + ///@} + ///@name Un accessible methods + ///@{ + + ///@} + +}; // Class GenericYieldSurface + +///@} + +///@name Type Definitions +///@{ + +///@} +///@name Input and output +///@{ + +///@} + +} // namespace Kratos. +#endif diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h index b65857b4d253..ca774a1b34b8 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h @@ -16,7 +16,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" +#include "generic_yield_surface.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h index 36bc30fbf22a..7c59678d3c6a 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h @@ -16,7 +16,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" +#include "generic_yield_surface.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/rankine_yield_surface.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/rankine_yield_surface.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h index 9e5e72e8bc96..0e2b6151eac0 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/rankine_yield_surface.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h @@ -16,8 +16,8 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/plastic_potentials/rankine_plastic_potential.h" +#include "generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/rankine_plastic_potential.h" #include "custom_utilities/advanced_constitutive_law_utilities.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/simo_ju_yield_surface.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/simo_ju_yield_surface.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h index 4c30b854d2bf..408434240d17 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/simo_ju_yield_surface.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h @@ -16,7 +16,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" +#include "generic_yield_surface.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/tresca_yield_surface.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/tresca_yield_surface.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h index 19febb9e299e..d3a150181895 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/tresca_yield_surface.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h @@ -16,7 +16,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" +#include "generic_yield_surface.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/von_mises_yield_surface.h b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/von_mises_yield_surface.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h index f93cfa628b90..7b80c2bd7df7 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/yield_surfaces/von_mises_yield_surface.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h @@ -16,7 +16,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" +#include "generic_yield_surface.h" #include "constitutive_laws_application_variables.h" namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/rule_of_mixtures_law.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/composites/rule_of_mixtures_law.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/rule_of_mixtures_law.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/composites/rule_of_mixtures_law.cpp index 040b80006c18..34a3366f9362 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/rule_of_mixtures_law.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/composites/rule_of_mixtures_law.cpp @@ -20,7 +20,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/rule_of_mixtures_law.h" +#include "rule_of_mixtures_law.h" #include "constitutive_laws_application_variables.h" #include "custom_utilities/tangent_operator_calculator_utility.h" #include "custom_utilities/advanced_constitutive_law_utilities.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/rule_of_mixtures_law.h b/applications/ConstitutiveLawsApplication/custom_constitutive/composites/rule_of_mixtures_law.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/rule_of_mixtures_law.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/composites/rule_of_mixtures_law.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/serial_parallel_rule_of_mixtures_law.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/composites/serial_parallel_rule_of_mixtures_law.cpp similarity index 82% rename from applications/ConstitutiveLawsApplication/custom_constitutive/serial_parallel_rule_of_mixtures_law.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/composites/serial_parallel_rule_of_mixtures_law.cpp index c2c540d2ae4f..0defe80db42b 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/serial_parallel_rule_of_mixtures_law.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/composites/serial_parallel_rule_of_mixtures_law.cpp @@ -410,8 +410,8 @@ void SerialParallelRuleOfMixturesLaw::CheckStressEquilibrium( /***********************************************************************************/ void SerialParallelRuleOfMixturesLaw::IntegrateStressesOfFiberAndMatrix( ConstitutiveLaw::Parameters& rValues, - Vector rMatrixStrainVector, - Vector rFiberStrainVector, + Vector& rMatrixStrainVector, + Vector& rFiberStrainVector, Vector& rMatrixStressVector, Vector& rFiberStressVector, const ConstitutiveLaw::StressMeasure& rStressMeasure @@ -509,10 +509,10 @@ void SerialParallelRuleOfMixturesLaw::CalculateInitialApproximationSerialStrainM double det_aux = 0.0; MathUtils::InvertMatrix(aux, A, det_aux); - Vector auxiliar(rInitialApproximationSerialStrainMatrix.size()); - auxiliar = prod(rConstitutiveTensorFiberSS, r_total_strain_increment_serial) + k_f * prod(trans(Matrix(r_constitutive_tensor_fiber_sp - r_constitutive_tensor_matrix_sp)), r_total_strain_increment_parallel); + Vector auxiliary(rInitialApproximationSerialStrainMatrix.size()); + noalias(auxiliary) = prod(rConstitutiveTensorFiberSS, r_total_strain_increment_serial) + k_f * prod(trans(Matrix(r_constitutive_tensor_fiber_sp - r_constitutive_tensor_matrix_sp)), r_total_strain_increment_parallel); - noalias(rInitialApproximationSerialStrainMatrix) = prod(A, auxiliar) + mPreviousSerialStrainMatrix; + noalias(rInitialApproximationSerialStrainMatrix) = prod(A, auxiliary) + mPreviousSerialStrainMatrix; } /***********************************************************************************/ @@ -558,7 +558,7 @@ void SerialParallelRuleOfMixturesLaw::CalculateSerialParallelProjectionMatrices( noalias(rParallelProjector) = ZeroMatrix(voigt_size, num_parallel_components); noalias(rSerialProjector) = ZeroMatrix(num_serial_components, voigt_size); - int parallel_counter = 0, serial_counter = 0; + IndexType parallel_counter = 0, serial_counter = 0; for (IndexType i_comp = 0; i_comp < voigt_size; ++i_comp) { if (mParallelDirections[i_comp] == 1) { rParallelProjector(i_comp, parallel_counter) = 1.0; @@ -573,49 +573,6 @@ void SerialParallelRuleOfMixturesLaw::CalculateSerialParallelProjectionMatrices( /***********************************************************************************/ /***********************************************************************************/ -void SerialParallelRuleOfMixturesLaw::FinalizeSolutionStep( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const Vector& rShapeFunctionsValues, - const ProcessInfo& rCurrentProcessInfo) -{ - // Deprecated -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void SerialParallelRuleOfMixturesLaw::CalculateElasticMatrix( - Matrix& rElasticityTensor, - const Properties& rMaterialProperties) -{ - const double E = rMaterialProperties[YOUNG_MODULUS]; - const double poisson_ratio = rMaterialProperties[POISSON_RATIO]; - const double lambda = - E * poisson_ratio / ((1. + poisson_ratio) * (1.0 - 2.0 * poisson_ratio)); - const double mu = E / (2.0 + 2.0 * poisson_ratio); - - if (rElasticityTensor.size1() != 6 || rElasticityTensor.size2() != 6) - rElasticityTensor.resize(6, 6, false); - rElasticityTensor.clear(); - - rElasticityTensor(0, 0) = lambda + 2.0 * mu; - rElasticityTensor(0, 1) = lambda; - rElasticityTensor(0, 2) = lambda; - rElasticityTensor(1, 0) = lambda; - rElasticityTensor(1, 1) = lambda + 2.0 * mu; - rElasticityTensor(1, 2) = lambda; - rElasticityTensor(2, 0) = lambda; - rElasticityTensor(2, 1) = lambda; - rElasticityTensor(2, 2) = lambda + 2.0 * mu; - rElasticityTensor(3, 3) = mu; - rElasticityTensor(4, 4) = mu; - rElasticityTensor(5, 5) = mu; -} - -/***********************************************************************************/ -/***********************************************************************************/ - void SerialParallelRuleOfMixturesLaw::CalculateGreenLagrangeStrain(ConstitutiveLaw::Parameters& rValues) { // Some auxiliar values @@ -950,7 +907,7 @@ double& SerialParallelRuleOfMixturesLaw::GetValue( if (rThisVariable == DAMAGE_MATRIX) { return mpMatrixConstitutiveLaw->GetValue(DAMAGE, rValue); } else if (rThisVariable == DAMAGE_FIBER) { - return mpFiberConstitutiveLaw->GetValue(DAMAGE, rValue); + return mpFiberConstitutiveLaw->GetValue(DAMAGE, rValue); } else if (rThisVariable == DAMAGE && mpFiberConstitutiveLaw->Has(rThisVariable) && mpMatrixConstitutiveLaw->Has(rThisVariable)) { double damage_fiber, damage_matrix; mpFiberConstitutiveLaw->GetValue(DAMAGE, damage_fiber); @@ -1173,7 +1130,160 @@ Vector& SerialParallelRuleOfMixturesLaw::CalculateValue( const Variable& rThisVariable, Vector& rValue) { - return this->GetValue(rThisVariable, rValue); + const SizeType voigt_size = GetStrainSize(); + // We do some special operations for constitutive matrices + if (rThisVariable == CAUCHY_STRESS_VECTOR_FIBER) { + + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_strain = r_flags.Is(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); + const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS ); + + const Properties& r_material_properties = rParameterValues.GetMaterialProperties(); + + // The deformation gradient + if (rParameterValues.IsSetDeterminantF()) { + const double determinant_f = rParameterValues.GetDeterminantF(); + KRATOS_ERROR_IF(determinant_f < 0.0) << "Deformation gradient determinant (detF) < 0.0 : " << determinant_f << std::endl; + } + // In case the element has not computed the Strain + if (r_flags.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { + CalculateGreenLagrangeStrain(rParameterValues); + } + + // Set new flags + r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, true); + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + + // Total strain vector + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + Vector serial_strain_matrix_old = mPreviousSerialStrainMatrix; + Vector fiber_stress_vector, matrix_stress_vector; + this->IntegrateStrainSerialParallelBehaviour(r_strain_vector, fiber_stress_vector, matrix_stress_vector, r_material_properties, rParameterValues, serial_strain_matrix_old); + // Previous flags restored + r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain); + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + + if (rValue.size() != voigt_size) + rValue.resize(voigt_size, false); + noalias(rValue) = fiber_stress_vector; + return rValue; + + } else if (rThisVariable == CAUCHY_STRESS_VECTOR_MATRIX) { + + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_strain = r_flags.Is(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); + const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS ); + + const Properties& r_material_properties = rParameterValues.GetMaterialProperties(); + + // The deformation gradient + if (rParameterValues.IsSetDeterminantF()) { + const double determinant_f = rParameterValues.GetDeterminantF(); + KRATOS_ERROR_IF(determinant_f < 0.0) << "Deformation gradient determinant (detF) < 0.0 : " << determinant_f << std::endl; + } + // In case the element has not computed the Strain + if (r_flags.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { + CalculateGreenLagrangeStrain(rParameterValues); + } + + // Set new flags + r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, true); + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + + // Total strain vector + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + Vector serial_strain_matrix_old = mPreviousSerialStrainMatrix; + Vector fiber_stress_vector, matrix_stress_vector; + this->IntegrateStrainSerialParallelBehaviour(r_strain_vector, fiber_stress_vector, matrix_stress_vector, r_material_properties, rParameterValues, serial_strain_matrix_old); + // Previous flags restored + r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain); + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + if (rValue.size() != voigt_size) + rValue.resize(voigt_size, false); + noalias(rValue) = matrix_stress_vector; + return rValue; + + } else if (rThisVariable == CAUCHY_STRESS_VECTOR || rThisVariable == PK2_STRESS_VECTOR || rThisVariable == KIRCHHOFF_STRESS_VECTOR) { + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS); + + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); + + // We compute the stress + if (rThisVariable == CAUCHY_STRESS_VECTOR) { + this->CalculateMaterialResponseCauchy(rParameterValues); + } else if (rThisVariable == PK2_STRESS_VECTOR) { + this->CalculateMaterialResponsePK2(rParameterValues); + } else if (rThisVariable == KIRCHHOFF_STRESS_VECTOR) { + this->CalculateMaterialResponseKirchhoff(rParameterValues); + } + + if (rValue.size() != voigt_size) + rValue.resize(voigt_size, false); + noalias(rValue) = rParameterValues.GetStressVector(); + + // Previous flags restored + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + return rValue; + } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR_MATRIX) { + Matrix parallel_projector, serial_projector; + this->CalculateSerialParallelProjectionMatrices(parallel_projector, serial_projector); + + const Vector& r_strain_vector = rParameterValues.GetStrainVector(); + Vector matrix_strain_vector(voigt_size), fiber_strain_vector(voigt_size); + this->CalculateStrainsOnEachComponent(r_strain_vector, parallel_projector, serial_projector, mPreviousSerialStrainMatrix, matrix_strain_vector, fiber_strain_vector); + if (rValue.size() != voigt_size) + rValue.resize(voigt_size, false); + noalias(rValue) = matrix_strain_vector; + return rValue; + } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR_FIBER) { + const std::size_t voigt_size = this->GetStrainSize(); + Matrix parallel_projector, serial_projector; + this->CalculateSerialParallelProjectionMatrices(parallel_projector, serial_projector); + + const Vector& r_strain_vector = rParameterValues.GetStrainVector(); + Vector matrix_strain_vector(voigt_size), fiber_strain_vector(voigt_size); + this->CalculateStrainsOnEachComponent(r_strain_vector, parallel_projector, serial_projector, mPreviousSerialStrainMatrix, matrix_strain_vector, fiber_strain_vector); + if (rValue.size() != voigt_size) + rValue.resize(voigt_size, false); + noalias(rValue) = fiber_strain_vector; + return rValue; + } else { + Vector aux_value; + const Properties& r_material_properties = rParameterValues.GetMaterialProperties(); + const auto it_prop_begin = r_material_properties.GetSubProperties().begin(); + Properties& r_prop = *(it_prop_begin); + + rValue.clear(); + rParameterValues.SetMaterialProperties(r_prop); + mpMatrixConstitutiveLaw->CalculateValue(rParameterValues, rThisVariable, aux_value); + noalias(rValue) += (1.0 - mFiberVolumetricParticipation) * aux_value; + + r_prop = *(it_prop_begin + 1); + rParameterValues.SetMaterialProperties(r_prop); + mpFiberConstitutiveLaw->CalculateValue(rParameterValues, rThisVariable, aux_value); + noalias(rValue) += (mFiberVolumetricParticipation) * aux_value; + + // Reset properties + rParameterValues.SetMaterialProperties(r_material_properties); + } + return rValue; } /***********************************************************************************/ @@ -1206,10 +1316,10 @@ Matrix& SerialParallelRuleOfMixturesLaw::CalculateValue( Matrix& rValue ) { + const SizeType dimension = WorkingSpaceDimension(); + const SizeType voigt_size = GetStrainSize(); // We do some special operations for constitutive matrices - if (rThisVariable == CONSTITUTIVE_MATRIX || - rThisVariable == CONSTITUTIVE_MATRIX_PK2 || - rThisVariable == CONSTITUTIVE_MATRIX_KIRCHHOFF) { + if (rThisVariable == CONSTITUTIVE_MATRIX || rThisVariable == CONSTITUTIVE_MATRIX_PK2 || rThisVariable == CONSTITUTIVE_MATRIX_KIRCHHOFF) { // Get Values to compute the constitutive law: Flags& r_flags = rParameterValues.GetOptions(); @@ -1231,18 +1341,19 @@ Matrix& SerialParallelRuleOfMixturesLaw::CalculateValue( this->CalculateMaterialResponseKirchhoff(rParameterValues); } + if (rValue.size1() != voigt_size) + rValue.resize(voigt_size, voigt_size, false); noalias(rValue) = rParameterValues.GetConstitutiveMatrix(); // Previous flags restored r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain); r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); - } else if (rThisVariable == DEFORMATION_GRADIENT) { // TODO: Make in the future modifications for take into account different layers combinations + } else if (rThisVariable == DEFORMATION_GRADIENT) { + if (rValue.size1() != dimension) + rValue.resize(dimension, dimension, false); noalias(rValue) = rParameterValues.GetDeformationGradientF(); - } else if (rThisVariable == CAUCHY_STRESS_TENSOR_FIBER) { // TODO: Make in the future modifications for take into account different layers combinations - // Some auxiliar values - const SizeType dimension = WorkingSpaceDimension(); - const SizeType voigt_size = GetStrainSize(); + } else if (rThisVariable == CAUCHY_STRESS_TENSOR_FIBER) { // Get Values to compute the constitutive law: Flags& r_flags = rParameterValues.GetOptions(); @@ -1261,62 +1372,29 @@ Matrix& SerialParallelRuleOfMixturesLaw::CalculateValue( } // In case the element has not computed the Strain if (r_flags.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - - Matrix F_deformation_gradient; - this->CalculateValue(rParameterValues, DEFORMATION_GRADIENT, F_deformation_gradient); - const Matrix B_matrix = prod(F_deformation_gradient, trans(F_deformation_gradient)); - // Doing resize in case is needed - if (r_strain_vector.size() != voigt_size) - r_strain_vector.resize(voigt_size); - - // Identity matrix - Matrix identity_matrix(dimension, dimension); - for (IndexType i = 0; i < dimension; ++i) { - for (IndexType j = 0; j < dimension; ++j) { - if (i == j) identity_matrix(i, j) = 1.0; - else identity_matrix(i, j) = 0.0; - } - } - - // Calculating the inverse of the left Cauchy tensor - Matrix inverse_B_tensor (dimension, dimension); - double aux_det_b = 0; - MathUtils::InvertMatrix(B_matrix, inverse_B_tensor, aux_det_b); - - // Calculate E matrix - const Matrix E_matrix = 0.5 * (identity_matrix - inverse_B_tensor); - // Almansi Strain Calculation - r_strain_vector = MathUtils::StrainTensorToVector(E_matrix, voigt_size); + CalculateGreenLagrangeStrain(rParameterValues); } - if (r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS)) { - // Set new flags - r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, true); - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); - - // Total strain vector - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - Vector serial_strain_matrix_old = mPreviousSerialStrainMatrix; - Vector fiber_stress_vector, matrix_stress_vector; - this->IntegrateStrainSerialParallelBehaviour(r_strain_vector, - fiber_stress_vector, - matrix_stress_vector, - r_material_properties, - rParameterValues, - serial_strain_matrix_old); - // Previous flags restored - r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain); - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); - rValue = MathUtils::StressVectorToTensor(fiber_stress_vector); - return rValue; - } - } else if (rThisVariable == CAUCHY_STRESS_TENSOR_MATRIX) { // TODO: Make in the future modifications for take into account different layers combinations - // Some auxiliar values - const SizeType dimension = WorkingSpaceDimension(); - const SizeType voigt_size = GetStrainSize(); + // Set new flags + r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, true); + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + + // Total strain vector + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + Vector serial_strain_matrix_old = mPreviousSerialStrainMatrix; + Vector fiber_stress_vector, matrix_stress_vector; + this->IntegrateStrainSerialParallelBehaviour(r_strain_vector, fiber_stress_vector, matrix_stress_vector, r_material_properties, rParameterValues, serial_strain_matrix_old); + // Previous flags restored + r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain); + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + + if (rValue.size1() != voigt_size) + rValue.resize(voigt_size, voigt_size, false); + noalias(rValue) = MathUtils::StressVectorToTensor(fiber_stress_vector); + return rValue; + + } else if (rThisVariable == CAUCHY_STRESS_TENSOR_MATRIX) { // Get Values to compute the constitutive law: Flags& r_flags = rParameterValues.GetOptions(); @@ -1335,59 +1413,28 @@ Matrix& SerialParallelRuleOfMixturesLaw::CalculateValue( } // In case the element has not computed the Strain if (r_flags.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - - Matrix F_deformation_gradient; - this->CalculateValue(rParameterValues, DEFORMATION_GRADIENT, F_deformation_gradient); - const Matrix B_matrix = prod(F_deformation_gradient, trans(F_deformation_gradient)); - // Doing resize in case is needed - if (r_strain_vector.size() != voigt_size) - r_strain_vector.resize(voigt_size); - - // Identity matrix - Matrix identity_matrix(dimension, dimension); - for (IndexType i = 0; i < dimension; ++i) { - for (IndexType j = 0; j < dimension; ++j) { - if (i == j) identity_matrix(i, j) = 1.0; - else identity_matrix(i, j) = 0.0; - } - } - - // Calculating the inverse of the left Cauchy tensor - Matrix inverse_B_tensor (dimension, dimension); - double aux_det_b = 0; - MathUtils::InvertMatrix(B_matrix, inverse_B_tensor, aux_det_b); - - // Calculate E matrix - const Matrix E_matrix = 0.5 * (identity_matrix - inverse_B_tensor); - // Almansi Strain Calculation - r_strain_vector = MathUtils::StrainTensorToVector(E_matrix, voigt_size); + CalculateGreenLagrangeStrain(rParameterValues); } - if (r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS)) { - // Set new flags - r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, true); - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); - - // Total strain vector - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - Vector serial_strain_matrix_old = mPreviousSerialStrainMatrix; - Vector fiber_stress_vector, matrix_stress_vector; - this->IntegrateStrainSerialParallelBehaviour(r_strain_vector, - fiber_stress_vector, - matrix_stress_vector, - r_material_properties, - rParameterValues, - serial_strain_matrix_old); - // Previous flags restored - r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain); - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); - rValue = MathUtils::StressVectorToTensor(matrix_stress_vector); - return rValue; - } - } else if (rThisVariable == CAUCHY_STRESS_TENSOR) { + // Set new flags + r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, true); + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + + // Total strain vector + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + Vector serial_strain_matrix_old = mPreviousSerialStrainMatrix; + Vector fiber_stress_vector, matrix_stress_vector; + this->IntegrateStrainSerialParallelBehaviour(r_strain_vector, fiber_stress_vector, matrix_stress_vector, r_material_properties, rParameterValues, serial_strain_matrix_old); + // Previous flags restored + r_flags.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain); + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + if (rValue.size1() != voigt_size) + rValue.resize(voigt_size, voigt_size, false); + noalias(rValue) = MathUtils::StressVectorToTensor(matrix_stress_vector); + return rValue; + + } else if (rThisVariable == CAUCHY_STRESS_TENSOR || rThisVariable == PK2_STRESS_TENSOR || rThisVariable == KIRCHHOFF_STRESS_TENSOR) { // Get Values to compute the constitutive law: Flags& r_flags = rParameterValues.GetOptions(); @@ -1399,24 +1446,32 @@ Matrix& SerialParallelRuleOfMixturesLaw::CalculateValue( r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); // We compute the stress - this->CalculateMaterialResponsePK2(rParameterValues); - rValue = MathUtils::StressVectorToTensor(rParameterValues.GetStressVector()); + if (rThisVariable == CAUCHY_STRESS_TENSOR) { + this->CalculateMaterialResponseCauchy(rParameterValues); + } else if (rThisVariable == PK2_STRESS_TENSOR) { + this->CalculateMaterialResponsePK2(rParameterValues); + } else if (rThisVariable == KIRCHHOFF_STRESS_TENSOR) { + this->CalculateMaterialResponseKirchhoff(rParameterValues); + } + + if (rValue.size1() != voigt_size) + rValue.resize(voigt_size, voigt_size, false); + noalias(rValue) = MathUtils::StressVectorToTensor(rParameterValues.GetStressVector()); // Previous flags restored - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); return rValue; } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_TENSOR_MATRIX) { - const std::size_t voigt_size = this->GetStrainSize(); Matrix parallel_projector, serial_projector; this->CalculateSerialParallelProjectionMatrices(parallel_projector, serial_projector); const Vector& r_strain_vector = rParameterValues.GetStrainVector(); Vector matrix_strain_vector(voigt_size), fiber_strain_vector(voigt_size); - this->CalculateStrainsOnEachComponent(r_strain_vector, - parallel_projector, serial_projector, mPreviousSerialStrainMatrix, - matrix_strain_vector, fiber_strain_vector); - rValue = MathUtils::StrainVectorToTensor(matrix_strain_vector); + this->CalculateStrainsOnEachComponent(r_strain_vector, parallel_projector, serial_projector, mPreviousSerialStrainMatrix, matrix_strain_vector, fiber_strain_vector); + if (rValue.size1() != voigt_size) + rValue.resize(voigt_size, voigt_size, false); + noalias(rValue) = MathUtils::StrainVectorToTensor(matrix_strain_vector); return rValue; } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_TENSOR_FIBER) { const std::size_t voigt_size = this->GetStrainSize(); @@ -1425,30 +1480,31 @@ Matrix& SerialParallelRuleOfMixturesLaw::CalculateValue( const Vector& r_strain_vector = rParameterValues.GetStrainVector(); Vector matrix_strain_vector(voigt_size), fiber_strain_vector(voigt_size); - this->CalculateStrainsOnEachComponent(r_strain_vector, - parallel_projector, serial_projector, mPreviousSerialStrainMatrix, - matrix_strain_vector, fiber_strain_vector); - rValue = MathUtils::StrainVectorToTensor(fiber_strain_vector); + this->CalculateStrainsOnEachComponent(r_strain_vector, parallel_projector, serial_projector, mPreviousSerialStrainMatrix, matrix_strain_vector, fiber_strain_vector); + if (rValue.size1() != voigt_size) + rValue.resize(voigt_size, voigt_size, false); + noalias(rValue) = MathUtils::StrainVectorToTensor(fiber_strain_vector); return rValue; } else { Matrix aux_value; - Properties material_properties = rParameterValues.GetMaterialProperties(); - Properties& r_prop = material_properties.GetSubProperties(0); + const Properties& r_material_properties = rParameterValues.GetMaterialProperties(); + const auto it_prop_begin = r_material_properties.GetSubProperties().begin(); + Properties& r_prop = *(it_prop_begin); rValue.clear(); rParameterValues.SetMaterialProperties(r_prop); mpMatrixConstitutiveLaw->CalculateValue(rParameterValues, rThisVariable, aux_value); noalias(rValue) += (1.0 - mFiberVolumetricParticipation) * aux_value; - r_prop = material_properties.GetSubProperties(1); + r_prop = *(it_prop_begin + 1); rParameterValues.SetMaterialProperties(r_prop); - mpMatrixConstitutiveLaw->CalculateValue(rParameterValues, rThisVariable, aux_value); - noalias(rValue) += (1.0 - mFiberVolumetricParticipation) * aux_value; + mpFiberConstitutiveLaw->CalculateValue(rParameterValues, rThisVariable, aux_value); + noalias(rValue) += (mFiberVolumetricParticipation) * aux_value; // Reset properties - rParameterValues.SetMaterialProperties(material_properties); + rParameterValues.SetMaterialProperties(r_material_properties); } - return(rValue); + return rValue; } /***********************************************************************************/ diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/serial_parallel_rule_of_mixtures_law.h b/applications/ConstitutiveLawsApplication/custom_constitutive/composites/serial_parallel_rule_of_mixtures_law.h similarity index 95% rename from applications/ConstitutiveLawsApplication/custom_constitutive/serial_parallel_rule_of_mixtures_law.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/composites/serial_parallel_rule_of_mixtures_law.h index 47171e015915..533faed50dcc 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/serial_parallel_rule_of_mixtures_law.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/composites/serial_parallel_rule_of_mixtures_law.h @@ -167,20 +167,6 @@ class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) SerialParallelRuleOfMixturesLaw */ void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) override; - /** - * to be called at the end of each solution step - * (e.g. from Element::FinalizeSolutionStep) - * @param rMaterialProperties the Properties instance of the current element - * @param rElementGeometry the geometry of the current element - * @param rShapeFunctionsValues the shape functions values in the current integration point - * @param the current ProcessInfo instance - */ - void FinalizeSolutionStep( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const Vector& rShapeFunctionsValues, - const ProcessInfo& rCurrentProcessInfo) override; - /** * Finalize the material response in terms of 1st Piola-Kirchhoff stresses * @see Parameters @@ -505,8 +491,8 @@ class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) SerialParallelRuleOfMixturesLaw */ void IntegrateStressesOfFiberAndMatrix( ConstitutiveLaw::Parameters& rValues, - Vector rMatrixStrainVector, - Vector rFiberStrainVector, + Vector& rMatrixStrainVector, + Vector& rFiberStrainVector, Vector& rMatrixStressVector, Vector& rFiberStressVector, const ConstitutiveLaw::StressMeasure& rStressMeasure); @@ -670,8 +656,8 @@ class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) SerialParallelRuleOfMixturesLaw ConstitutiveLaw::Pointer mpMatrixConstitutiveLaw; ConstitutiveLaw::Pointer mpFiberConstitutiveLaw; double mFiberVolumetricParticipation; - Vector mParallelDirections = ZeroVector(6); - Vector mPreviousStrainVector = ZeroVector(6); + array_1d mParallelDirections = ZeroVector(6); + array_1d mPreviousStrainVector = ZeroVector(6); Vector mPreviousSerialStrainMatrix = ZeroVector(GetNumberOfSerialComponents()); ///@} @@ -682,15 +668,6 @@ class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) SerialParallelRuleOfMixturesLaw ///@name Private Operations ///@{ - /** - * @brief This method computes the elastic tensor - * @param rElasticityTensor The elastic tensor - * @param rMaterialProperties The material properties - */ - void CalculateElasticMatrix( - Matrix& rElasticityTensor, - const Properties& rMaterialProperties); - ///@} ///@name Private Access ///@{ diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_henky_1d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_henky_1d.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_henky_1d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_henky_1d.cpp index b2fa634fbbb6..1812571f944b 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_henky_1d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_henky_1d.cpp @@ -17,7 +17,7 @@ // Project includes #include "includes/checks.h" #include "includes/properties.h" -#include "custom_constitutive/hyper_elastic_isotropic_henky_1d.h" +#include "hyper_elastic_isotropic_henky_1d.h" #include "constitutive_laws_application_variables.h" #include "structural_mechanics_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_henky_1d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_henky_1d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_henky_1d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_henky_1d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.cpp similarity index 97% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.cpp index d7be5fdcaa71..325bf42403da 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.cpp @@ -1,573 +1,573 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Malik Ali Dawi -// Ruben Zorrilla -// - -// System includes -#include - -// External includes - -// Project includes -#include "includes/checks.h" -#include "includes/properties.h" -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h" -#include "custom_utilities/advanced_constitutive_law_utilities.h" -#include "custom_utilities/constitutive_law_utilities.h" -#include "constitutive_laws_application_variables.h" -#include "structural_mechanics_application_variables.h" - -namespace Kratos -{ -//******************************CONSTRUCTOR******************************************* -/***********************************************************************************/ -HyperElasticIsotropicKirchhoff3D::HyperElasticIsotropicKirchhoff3D() - : ConstitutiveLaw() -{ -} - -//******************************COPY CONSTRUCTOR************************************** -/***********************************************************************************/ - -HyperElasticIsotropicKirchhoff3D::HyperElasticIsotropicKirchhoff3D(const HyperElasticIsotropicKirchhoff3D& rOther) - : ConstitutiveLaw(rOther) -{ -} - -//********************************CLONE*********************************************** -/***********************************************************************************/ - -ConstitutiveLaw::Pointer HyperElasticIsotropicKirchhoff3D::Clone() const -{ - return Kratos::make_shared(*this); -} - -//*******************************DESTRUCTOR******************************************* -/***********************************************************************************/ - -HyperElasticIsotropicKirchhoff3D::~HyperElasticIsotropicKirchhoff3D() -{ -}; - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK1 (ConstitutiveLaw::Parameters& rValues) -{ - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rValues); - - Vector& stress_vector = rValues.GetStressVector(); - const Matrix& deformation_gradient_f = rValues.GetDeformationGradientF(); - const double determinant_f = rValues.GetDeterminantF(); - - this->TransformStresses(stress_vector, deformation_gradient_f, determinant_f, StressMeasure_PK2, StressMeasure_PK1); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ - KRATOS_TRY; - - // Get Values to compute the constitutive law: - Flags& r_flags= rValues.GetOptions(); - - const Properties& material_properties = rValues.GetMaterialProperties(); - Vector& strain_vector = rValues.GetStrainVector(); - - // The material properties - const double young_modulus = material_properties[YOUNG_MODULUS]; - const double poisson_coefficient = material_properties[POISSON_RATIO]; - - if(r_flags.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { - this->CalculateGreenLagrangianStrain(rValues, strain_vector); - } - - if( r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - Matrix& constitutive_matrix = rValues.GetConstitutiveMatrix(); - this->CalculateConstitutiveMatrixPK2( constitutive_matrix, young_modulus, poisson_coefficient); - } - - if( r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ) ) { - Vector& stress_vector = rValues.GetStressVector(); - if( r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - Matrix& constitutive_matrix = rValues.GetConstitutiveMatrix(); - noalias(stress_vector) = prod(constitutive_matrix, strain_vector); - } else { - this->CalculatePK2Stress( strain_vector, stress_vector, young_modulus, poisson_coefficient ); - } - } - - KRATOS_CATCH(""); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseKirchhoff (ConstitutiveLaw::Parameters& rValues) -{ - // Get Values to compute the constitutive law: - Flags& r_flags= rValues.GetOptions(); - - const Properties& material_properties = rValues.GetMaterialProperties(); - Vector& strain_vector = rValues.GetStrainVector(); - Vector& stress_vector = rValues.GetStressVector(); - - // The material properties - const double young_modulus = material_properties[YOUNG_MODULUS]; - const double poisson_coefficient = material_properties[POISSON_RATIO]; - - // The deformation gradient - const Matrix& deformation_gradient_f = rValues.GetDeformationGradientF(); - - if(r_flags.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { - this->CalculateAlmansiStrain(rValues, strain_vector); - } - - if( r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - Matrix& constitutive_matrix = rValues.GetConstitutiveMatrix(); - this->CalculateConstitutiveMatrixKirchhoff(constitutive_matrix, deformation_gradient_f ,young_modulus, poisson_coefficient); - } - - if( r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ) ) { - if (rValues.IsSetDeformationGradientF()) { - this->CalculateGreenLagrangianStrain(rValues, strain_vector); - } - this->CalculateKirchhoffStress(strain_vector, stress_vector, deformation_gradient_f ,young_modulus, poisson_coefficient); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseCauchy (ConstitutiveLaw::Parameters& rValues) -{ - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseKirchhoff(rValues); - - Vector& stress_vector = rValues.GetStressVector(); - Matrix& constitutive_matrix = rValues.GetConstitutiveMatrix(); - const double determinant_f = rValues.GetDeterminantF(); - - // Set to Cauchy Stress: - stress_vector /= determinant_f; - constitutive_matrix /= determinant_f; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::InitializeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::InitializeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::InitializeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::InitializeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -double& HyperElasticIsotropicKirchhoff3D::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue - ) -{ - const Properties& material_properties = rParameterValues.GetMaterialProperties(); - Vector& strain_vector = rParameterValues.GetStrainVector(); - - // The material properties - const double young_modulus = material_properties[YOUNG_MODULUS]; - const double poisson_coefficient = material_properties[POISSON_RATIO]; - - // The LAME parameters - const double lame_lambda = (young_modulus * poisson_coefficient)/((1.0 + poisson_coefficient)*(1.0 - 2.0 * poisson_coefficient)); - const double lame_mu = young_modulus/(2.0 * (1.0 + poisson_coefficient)); - - // We compute the right Cauchy-Green tensor (C): - if (rThisVariable == STRAIN_ENERGY) { - CalculateGreenLagrangianStrain(rParameterValues,strain_vector); - const Matrix E_tensor=MathUtils::StrainVectorToTensor(strain_vector); - const Matrix E_tensor_sq=prod(E_tensor,E_tensor); - double E_trace = 0.0; - double E_trace_sq = 0.0; - for (IndexType i = 0; i < E_tensor.size1();i++) { - E_trace += E_tensor (i,i); - E_trace_sq += E_tensor_sq(i,i); - } - - rValue = 0.5 * lame_lambda * E_trace * E_trace + 0.5 *lame_mu *E_trace_sq ; - } - - return( rValue ); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -Vector& HyperElasticIsotropicKirchhoff3D::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) -{ - if (rThisVariable == STRAIN || - rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR || - rThisVariable == HENCKY_STRAIN_VECTOR || - rThisVariable == BIOT_STRAIN_VECTOR || - rThisVariable == ALMANSI_STRAIN_VECTOR) { - - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, false ); - - // We compute the strain - if (rThisVariable == STRAIN) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); - } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rParameterValues); - } else if (rThisVariable == ALMANSI_STRAIN_VECTOR) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseKirchhoff(rParameterValues); - } else if (rThisVariable == HENCKY_STRAIN_VECTOR) { - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(C_tensor, r_strain_vector); - } else if (rThisVariable == BIOT_STRAIN_VECTOR) { - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - AdvancedConstitutiveLawUtilities::CalculateBiotStrain(C_tensor, r_strain_vector); - } - - rValue = rParameterValues.GetStrainVector(); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } else if (rThisVariable == STRESSES || - rThisVariable == CAUCHY_STRESS_VECTOR || - rThisVariable == KIRCHHOFF_STRESS_VECTOR || - rThisVariable == PK2_STRESS_VECTOR) { - - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, true ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); - - // We compute the stress - if (rThisVariable == STRESSES) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); - } if (rThisVariable == KIRCHHOFF_STRESS_VECTOR) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseKirchhoff(rParameterValues); - } if (rThisVariable == CAUCHY_STRESS_VECTOR) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseCauchy(rParameterValues); - } if (rThisVariable == PK2_STRESS_VECTOR) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rParameterValues); - } - - rValue = rParameterValues.GetStressVector(); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } - - return( rValue ); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -Matrix& HyperElasticIsotropicKirchhoff3D::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) -{ - if (rThisVariable == CONSTITUTIVE_MATRIX || - rThisVariable == CONSTITUTIVE_MATRIX_PK2 || - rThisVariable == CONSTITUTIVE_MATRIX_KIRCHHOFF) { - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, true ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, false ); - - // We compute the constitutive matrix - if (rThisVariable == CONSTITUTIVE_MATRIX) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); - } else if (rThisVariable == CONSTITUTIVE_MATRIX_PK2) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rParameterValues); - } else if (rThisVariable == CONSTITUTIVE_MATRIX_KIRCHHOFF) { - HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rParameterValues); - } - - rValue = rParameterValues.GetConstitutiveMatrix(); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } - - return( rValue ); -} - -//*************************CONSTITUTIVE LAW GENERAL FEATURES ************************* -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::GetLawFeatures(Features& rFeatures) -{ - //Set the type of law - rFeatures.mOptions.Set( THREE_DIMENSIONAL_LAW ); - rFeatures.mOptions.Set( FINITE_STRAINS ); - rFeatures.mOptions.Set( ISOTROPIC ); - - //Set strain measure required by the consitutive law - rFeatures.mStrainMeasures.push_back(StrainMeasure_GreenLagrange); - rFeatures.mStrainMeasures.push_back(StrainMeasure_Deformation_Gradient); - - //Set the strain size - rFeatures.mStrainSize = GetStrainSize(); - - //Set the spacedimension - rFeatures.mSpaceDimension = WorkingSpaceDimension(); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -int HyperElasticIsotropicKirchhoff3D::Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const -{ - KRATOS_ERROR_IF(rMaterialProperties[YOUNG_MODULUS] <= 0.0) << "YOUNG_MODULUS is null or negative." << std::endl; - - const double tolerance = 1.0e-12; - const double nu_upper_bound = 0.5; - const double nu_lower_bound = -1.0; - const double nu = rMaterialProperties[POISSON_RATIO]; - KRATOS_ERROR_IF((nu_upper_bound - nu) < tolerance) << "POISSON_RATIO is above the upper bound 0.5." << std::endl; - KRATOS_ERROR_IF((nu - nu_lower_bound) < tolerance) << "POISSON_RATIO is below the lower bound -1.0." << std::endl; - - KRATOS_ERROR_IF(rMaterialProperties[DENSITY] < 0.0) << "DENSITY is negative." << std::endl; - - return 0; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculateConstitutiveMatrixPK2( - Matrix& rConstitutiveMatrix, - const double YoungModulus, - const double PoissonCoefficient - ) -{ - rConstitutiveMatrix.clear(); - if (rConstitutiveMatrix.size1() != 6 || rConstitutiveMatrix.size2() != 6) - rConstitutiveMatrix.resize(6, 6, false); - const double c1 = YoungModulus / (( 1.00 + PoissonCoefficient ) * ( 1 - 2 * PoissonCoefficient ) ); - const double c2 = c1 * ( 1 - PoissonCoefficient ); - const double c3 = c1 * PoissonCoefficient; - const double c4 = c1 * 0.5 * ( 1 - 2 * PoissonCoefficient ); - - rConstitutiveMatrix( 0, 0 ) = c2; - rConstitutiveMatrix( 0, 1 ) = c3; - rConstitutiveMatrix( 0, 2 ) = c3; - rConstitutiveMatrix( 1, 0 ) = c3; - rConstitutiveMatrix( 1, 1 ) = c2; - rConstitutiveMatrix( 1, 2 ) = c3; - rConstitutiveMatrix( 2, 0 ) = c3; - rConstitutiveMatrix( 2, 1 ) = c3; - rConstitutiveMatrix( 2, 2 ) = c2; - rConstitutiveMatrix( 3, 3 ) = c4; - rConstitutiveMatrix( 4, 4 ) = c4; - rConstitutiveMatrix( 5, 5 ) = c4; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculateKirchhoffStress( - const Vector& rStrainVector, - Vector& rStressVector, - const Matrix& rDeformationGradientF, - const double YoungModulus, - const double PoissonCoefficient - ) -{ - CalculatePK2Stress( rStrainVector, rStressVector, YoungModulus, PoissonCoefficient ); - Matrix stress_matrix(3, 3); - noalias(stress_matrix) = MathUtils::StressVectorToTensor( rStressVector ); - ContraVariantPushForward (stress_matrix, rDeformationGradientF); //Kirchhoff - noalias(rStressVector) = MathUtils::StressTensorToVector( stress_matrix, rStressVector.size() ); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculatePK2Stress( - const Vector& rStrainVector, - Vector& rStressVector, - const double YoungModulus, - const double PoissonCoefficient - ) -{ - const double lame_lambda = (YoungModulus * PoissonCoefficient)/((1.0 + PoissonCoefficient)*(1.0 - 2.0 * PoissonCoefficient)); - const double lame_mu = YoungModulus/(2.0 * (1.0 + PoissonCoefficient)); - const SizeType dimension = WorkingSpaceDimension(); - - Matrix E_tensor(dimension, dimension), stress_matrix(dimension, dimension); - noalias(E_tensor) = MathUtils::StrainVectorToTensor(rStrainVector); - double E_trace = 0.0; - for (unsigned int i = 0; i < E_tensor.size1(); ++i) { - E_trace += E_tensor(i, i); - } - - noalias(stress_matrix) = lame_lambda*E_trace*IdentityMatrix(dimension) + 2.0 * lame_mu * E_tensor; - noalias(rStressVector) = MathUtils::StressTensorToVector( stress_matrix, rStressVector.size() ); - -// // Other possibility -// SizeType size_system = GetStrainSize(); -// Matrix constitutive_matrix_pk2(size_system,size_system); -// CalculateConstitutiveMatrixPK2(constitutive_matrix_pk2, YoungModulus, PoissonCoefficient); -// noalias(rStressVector) = prod(constitutive_matrix_pk2,rStrainVector); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculateConstitutiveMatrixKirchhoff( - Matrix& ConstitutiveMatrix, - const Matrix& DeformationGradientF, - const double YoungModulus, - const double PoissonCoefficient - ) -{ - ConstitutiveMatrix.clear(); - - this->CalculateConstitutiveMatrixPK2(ConstitutiveMatrix, YoungModulus, PoissonCoefficient); - PushForwardConstitutiveMatrix (ConstitutiveMatrix,DeformationGradientF ); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculateGreenLagrangianStrain( - ConstitutiveLaw::Parameters& rValues, - Vector& rStrainVector - ) -{ - // 1.-Compute total deformation gradient - const Matrix& F = rValues.GetDeformationGradientF(); - const int dimension = WorkingSpaceDimension(); - - // 2.-Compute e = 0.5*(inv(C) - I) - Matrix C_tensor; - C_tensor.resize(dimension, dimension, false); - noalias(C_tensor) = prod(trans(F),F); - ConstitutiveLawUtilities::CalculateGreenLagrangianStrain(C_tensor, rStrainVector); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -void HyperElasticIsotropicKirchhoff3D::CalculateAlmansiStrain( - ConstitutiveLaw::Parameters& rValues, - Vector& rStrainVector - ) -{ - // 1.-Compute total deformation gradient - const Matrix& F = rValues.GetDeformationGradientF(); - const int dimension = WorkingSpaceDimension(); - - // 2.-COmpute e = 0.5*(1-inv(B)) - Matrix B_tensor; - B_tensor.resize(dimension, dimension, false); - noalias(B_tensor) = prod(F, trans(F)); - AdvancedConstitutiveLawUtilities::CalculateAlmansiStrain(B_tensor, rStrainVector); -} - -} // Namespace Kratos +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Malik Ali Dawi +// Ruben Zorrilla +// + +// System includes +#include + +// External includes + +// Project includes +#include "includes/checks.h" +#include "includes/properties.h" +#include "hyper_elastic_isotropic_kirchhoff_3d.h" +#include "custom_utilities/advanced_constitutive_law_utilities.h" +#include "custom_utilities/constitutive_law_utilities.h" +#include "constitutive_laws_application_variables.h" +#include "structural_mechanics_application_variables.h" + +namespace Kratos +{ +//******************************CONSTRUCTOR******************************************* +/***********************************************************************************/ +HyperElasticIsotropicKirchhoff3D::HyperElasticIsotropicKirchhoff3D() + : ConstitutiveLaw() +{ +} + +//******************************COPY CONSTRUCTOR************************************** +/***********************************************************************************/ + +HyperElasticIsotropicKirchhoff3D::HyperElasticIsotropicKirchhoff3D(const HyperElasticIsotropicKirchhoff3D& rOther) + : ConstitutiveLaw(rOther) +{ +} + +//********************************CLONE*********************************************** +/***********************************************************************************/ + +ConstitutiveLaw::Pointer HyperElasticIsotropicKirchhoff3D::Clone() const +{ + return Kratos::make_shared(*this); +} + +//*******************************DESTRUCTOR******************************************* +/***********************************************************************************/ + +HyperElasticIsotropicKirchhoff3D::~HyperElasticIsotropicKirchhoff3D() +{ +}; + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK1 (ConstitutiveLaw::Parameters& rValues) +{ + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rValues); + + Vector& stress_vector = rValues.GetStressVector(); + const Matrix& deformation_gradient_f = rValues.GetDeformationGradientF(); + const double determinant_f = rValues.GetDeterminantF(); + + this->TransformStresses(stress_vector, deformation_gradient_f, determinant_f, StressMeasure_PK2, StressMeasure_PK1); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ + KRATOS_TRY; + + // Get Values to compute the constitutive law: + Flags& r_flags= rValues.GetOptions(); + + const Properties& material_properties = rValues.GetMaterialProperties(); + Vector& strain_vector = rValues.GetStrainVector(); + + // The material properties + const double young_modulus = material_properties[YOUNG_MODULUS]; + const double poisson_coefficient = material_properties[POISSON_RATIO]; + + if(r_flags.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { + this->CalculateGreenLagrangianStrain(rValues, strain_vector); + } + + if( r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + Matrix& constitutive_matrix = rValues.GetConstitutiveMatrix(); + this->CalculateConstitutiveMatrixPK2( constitutive_matrix, young_modulus, poisson_coefficient); + } + + if( r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ) ) { + Vector& stress_vector = rValues.GetStressVector(); + if( r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + Matrix& constitutive_matrix = rValues.GetConstitutiveMatrix(); + noalias(stress_vector) = prod(constitutive_matrix, strain_vector); + } else { + this->CalculatePK2Stress( strain_vector, stress_vector, young_modulus, poisson_coefficient ); + } + } + + KRATOS_CATCH(""); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseKirchhoff (ConstitutiveLaw::Parameters& rValues) +{ + // Get Values to compute the constitutive law: + Flags& r_flags= rValues.GetOptions(); + + const Properties& material_properties = rValues.GetMaterialProperties(); + Vector& strain_vector = rValues.GetStrainVector(); + Vector& stress_vector = rValues.GetStressVector(); + + // The material properties + const double young_modulus = material_properties[YOUNG_MODULUS]; + const double poisson_coefficient = material_properties[POISSON_RATIO]; + + // The deformation gradient + const Matrix& deformation_gradient_f = rValues.GetDeformationGradientF(); + + if(r_flags.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { + this->CalculateAlmansiStrain(rValues, strain_vector); + } + + if( r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + Matrix& constitutive_matrix = rValues.GetConstitutiveMatrix(); + this->CalculateConstitutiveMatrixKirchhoff(constitutive_matrix, deformation_gradient_f ,young_modulus, poisson_coefficient); + } + + if( r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ) ) { + if (rValues.IsSetDeformationGradientF()) { + this->CalculateGreenLagrangianStrain(rValues, strain_vector); + } + this->CalculateKirchhoffStress(strain_vector, stress_vector, deformation_gradient_f ,young_modulus, poisson_coefficient); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseCauchy (ConstitutiveLaw::Parameters& rValues) +{ + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseKirchhoff(rValues); + + Vector& stress_vector = rValues.GetStressVector(); + Matrix& constitutive_matrix = rValues.GetConstitutiveMatrix(); + const double determinant_f = rValues.GetDeterminantF(); + + // Set to Cauchy Stress: + stress_vector /= determinant_f; + constitutive_matrix /= determinant_f; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::InitializeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::InitializeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::InitializeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::InitializeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +double& HyperElasticIsotropicKirchhoff3D::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue + ) +{ + const Properties& material_properties = rParameterValues.GetMaterialProperties(); + Vector& strain_vector = rParameterValues.GetStrainVector(); + + // The material properties + const double young_modulus = material_properties[YOUNG_MODULUS]; + const double poisson_coefficient = material_properties[POISSON_RATIO]; + + // The LAME parameters + const double lame_lambda = (young_modulus * poisson_coefficient)/((1.0 + poisson_coefficient)*(1.0 - 2.0 * poisson_coefficient)); + const double lame_mu = young_modulus/(2.0 * (1.0 + poisson_coefficient)); + + // We compute the right Cauchy-Green tensor (C): + if (rThisVariable == STRAIN_ENERGY) { + CalculateGreenLagrangianStrain(rParameterValues,strain_vector); + const Matrix E_tensor=MathUtils::StrainVectorToTensor(strain_vector); + const Matrix E_tensor_sq=prod(E_tensor,E_tensor); + double E_trace = 0.0; + double E_trace_sq = 0.0; + for (IndexType i = 0; i < E_tensor.size1();i++) { + E_trace += E_tensor (i,i); + E_trace_sq += E_tensor_sq(i,i); + } + + rValue = 0.5 * lame_lambda * E_trace * E_trace + 0.5 *lame_mu *E_trace_sq ; + } + + return( rValue ); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +Vector& HyperElasticIsotropicKirchhoff3D::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) +{ + if (rThisVariable == STRAIN || + rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR || + rThisVariable == HENCKY_STRAIN_VECTOR || + rThisVariable == BIOT_STRAIN_VECTOR || + rThisVariable == ALMANSI_STRAIN_VECTOR) { + + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, false ); + + // We compute the strain + if (rThisVariable == STRAIN) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); + } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rParameterValues); + } else if (rThisVariable == ALMANSI_STRAIN_VECTOR) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseKirchhoff(rParameterValues); + } else if (rThisVariable == HENCKY_STRAIN_VECTOR) { + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(C_tensor, r_strain_vector); + } else if (rThisVariable == BIOT_STRAIN_VECTOR) { + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + AdvancedConstitutiveLawUtilities::CalculateBiotStrain(C_tensor, r_strain_vector); + } + + rValue = rParameterValues.GetStrainVector(); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } else if (rThisVariable == STRESSES || + rThisVariable == CAUCHY_STRESS_VECTOR || + rThisVariable == KIRCHHOFF_STRESS_VECTOR || + rThisVariable == PK2_STRESS_VECTOR) { + + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, true ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); + + // We compute the stress + if (rThisVariable == STRESSES) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); + } if (rThisVariable == KIRCHHOFF_STRESS_VECTOR) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseKirchhoff(rParameterValues); + } if (rThisVariable == CAUCHY_STRESS_VECTOR) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponseCauchy(rParameterValues); + } if (rThisVariable == PK2_STRESS_VECTOR) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rParameterValues); + } + + rValue = rParameterValues.GetStressVector(); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } + + return( rValue ); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +Matrix& HyperElasticIsotropicKirchhoff3D::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (rThisVariable == CONSTITUTIVE_MATRIX || + rThisVariable == CONSTITUTIVE_MATRIX_PK2 || + rThisVariable == CONSTITUTIVE_MATRIX_KIRCHHOFF) { + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, true ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, false ); + + // We compute the constitutive matrix + if (rThisVariable == CONSTITUTIVE_MATRIX) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); + } else if (rThisVariable == CONSTITUTIVE_MATRIX_PK2) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rParameterValues); + } else if (rThisVariable == CONSTITUTIVE_MATRIX_KIRCHHOFF) { + HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponsePK2(rParameterValues); + } + + rValue = rParameterValues.GetConstitutiveMatrix(); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } + + return( rValue ); +} + +//*************************CONSTITUTIVE LAW GENERAL FEATURES ************************* +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::GetLawFeatures(Features& rFeatures) +{ + //Set the type of law + rFeatures.mOptions.Set( THREE_DIMENSIONAL_LAW ); + rFeatures.mOptions.Set( FINITE_STRAINS ); + rFeatures.mOptions.Set( ISOTROPIC ); + + //Set strain measure required by the consitutive law + rFeatures.mStrainMeasures.push_back(StrainMeasure_GreenLagrange); + rFeatures.mStrainMeasures.push_back(StrainMeasure_Deformation_Gradient); + + //Set the strain size + rFeatures.mStrainSize = GetStrainSize(); + + //Set the spacedimension + rFeatures.mSpaceDimension = WorkingSpaceDimension(); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +int HyperElasticIsotropicKirchhoff3D::Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const +{ + KRATOS_ERROR_IF(rMaterialProperties[YOUNG_MODULUS] <= 0.0) << "YOUNG_MODULUS is null or negative." << std::endl; + + const double tolerance = 1.0e-12; + const double nu_upper_bound = 0.5; + const double nu_lower_bound = -1.0; + const double nu = rMaterialProperties[POISSON_RATIO]; + KRATOS_ERROR_IF((nu_upper_bound - nu) < tolerance) << "POISSON_RATIO is above the upper bound 0.5." << std::endl; + KRATOS_ERROR_IF((nu - nu_lower_bound) < tolerance) << "POISSON_RATIO is below the lower bound -1.0." << std::endl; + + KRATOS_ERROR_IF(rMaterialProperties[DENSITY] < 0.0) << "DENSITY is negative." << std::endl; + + return 0; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculateConstitutiveMatrixPK2( + Matrix& rConstitutiveMatrix, + const double YoungModulus, + const double PoissonCoefficient + ) +{ + rConstitutiveMatrix.clear(); + if (rConstitutiveMatrix.size1() != 6 || rConstitutiveMatrix.size2() != 6) + rConstitutiveMatrix.resize(6, 6, false); + const double c1 = YoungModulus / (( 1.00 + PoissonCoefficient ) * ( 1 - 2 * PoissonCoefficient ) ); + const double c2 = c1 * ( 1 - PoissonCoefficient ); + const double c3 = c1 * PoissonCoefficient; + const double c4 = c1 * 0.5 * ( 1 - 2 * PoissonCoefficient ); + + rConstitutiveMatrix( 0, 0 ) = c2; + rConstitutiveMatrix( 0, 1 ) = c3; + rConstitutiveMatrix( 0, 2 ) = c3; + rConstitutiveMatrix( 1, 0 ) = c3; + rConstitutiveMatrix( 1, 1 ) = c2; + rConstitutiveMatrix( 1, 2 ) = c3; + rConstitutiveMatrix( 2, 0 ) = c3; + rConstitutiveMatrix( 2, 1 ) = c3; + rConstitutiveMatrix( 2, 2 ) = c2; + rConstitutiveMatrix( 3, 3 ) = c4; + rConstitutiveMatrix( 4, 4 ) = c4; + rConstitutiveMatrix( 5, 5 ) = c4; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculateKirchhoffStress( + const Vector& rStrainVector, + Vector& rStressVector, + const Matrix& rDeformationGradientF, + const double YoungModulus, + const double PoissonCoefficient + ) +{ + CalculatePK2Stress( rStrainVector, rStressVector, YoungModulus, PoissonCoefficient ); + Matrix stress_matrix(3, 3); + noalias(stress_matrix) = MathUtils::StressVectorToTensor( rStressVector ); + ContraVariantPushForward (stress_matrix, rDeformationGradientF); //Kirchhoff + noalias(rStressVector) = MathUtils::StressTensorToVector( stress_matrix, rStressVector.size() ); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculatePK2Stress( + const Vector& rStrainVector, + Vector& rStressVector, + const double YoungModulus, + const double PoissonCoefficient + ) +{ + const double lame_lambda = (YoungModulus * PoissonCoefficient)/((1.0 + PoissonCoefficient)*(1.0 - 2.0 * PoissonCoefficient)); + const double lame_mu = YoungModulus/(2.0 * (1.0 + PoissonCoefficient)); + const SizeType dimension = WorkingSpaceDimension(); + + Matrix E_tensor(dimension, dimension), stress_matrix(dimension, dimension); + noalias(E_tensor) = MathUtils::StrainVectorToTensor(rStrainVector); + double E_trace = 0.0; + for (unsigned int i = 0; i < E_tensor.size1(); ++i) { + E_trace += E_tensor(i, i); + } + + noalias(stress_matrix) = lame_lambda*E_trace*IdentityMatrix(dimension) + 2.0 * lame_mu * E_tensor; + noalias(rStressVector) = MathUtils::StressTensorToVector( stress_matrix, rStressVector.size() ); + +// // Other possibility +// SizeType size_system = GetStrainSize(); +// Matrix constitutive_matrix_pk2(size_system,size_system); +// CalculateConstitutiveMatrixPK2(constitutive_matrix_pk2, YoungModulus, PoissonCoefficient); +// noalias(rStressVector) = prod(constitutive_matrix_pk2,rStrainVector); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculateConstitutiveMatrixKirchhoff( + Matrix& ConstitutiveMatrix, + const Matrix& DeformationGradientF, + const double YoungModulus, + const double PoissonCoefficient + ) +{ + ConstitutiveMatrix.clear(); + + this->CalculateConstitutiveMatrixPK2(ConstitutiveMatrix, YoungModulus, PoissonCoefficient); + PushForwardConstitutiveMatrix (ConstitutiveMatrix,DeformationGradientF ); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculateGreenLagrangianStrain( + ConstitutiveLaw::Parameters& rValues, + Vector& rStrainVector + ) +{ + // 1.-Compute total deformation gradient + const Matrix& F = rValues.GetDeformationGradientF(); + const int dimension = WorkingSpaceDimension(); + + // 2.-Compute e = 0.5*(inv(C) - I) + Matrix C_tensor; + C_tensor.resize(dimension, dimension, false); + noalias(C_tensor) = prod(trans(F),F); + ConstitutiveLawUtilities::CalculateGreenLagrangianStrain(C_tensor, rStrainVector); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void HyperElasticIsotropicKirchhoff3D::CalculateAlmansiStrain( + ConstitutiveLaw::Parameters& rValues, + Vector& rStrainVector + ) +{ + // 1.-Compute total deformation gradient + const Matrix& F = rValues.GetDeformationGradientF(); + const int dimension = WorkingSpaceDimension(); + + // 2.-COmpute e = 0.5*(1-inv(B)) + Matrix B_tensor; + B_tensor.resize(dimension, dimension, false); + noalias(B_tensor) = prod(F, trans(F)); + AdvancedConstitutiveLawUtilities::CalculateAlmansiStrain(B_tensor, rStrainVector); +} + +} // Namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.h similarity index 96% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.h index ca940ee01be8..3dce570a9a02 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.h @@ -1,433 +1,433 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Malik Ali Dawi -// Ruben Zorrilla -// - -#if !defined (KRATOS_HYPER_ELASTIC_ISOTROPIC_KIRCHHOFF_SAINT_VENANT_3D_LAW_H_INCLUDED) -#define KRATOS_HYPER_ELASTIC_ISOTROPIC_KIRCHHOFF_SAINT_VENANT_3D_LAW_H_INCLUDED - -// System includes - -// External includes - -// Project includes -#include "includes/constitutive_law.h" - -namespace Kratos -{ -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ -/** - * @class HyperElasticIsotropicKirchhoff3D - * @ingroup StructuralMechanicsApplication - * @brief This law defines an hyperelastic material according to the Saint-Venant–Kirchhoff formulation for 3D cases - * @details The simplest hyperelastic material model is the Saint Venant–Kirchhoff model which is just an extension of the linear elastic material model to the nonlinear regime. - * More info https://en.wikipedia.org/wiki/Hyperelastic_material#Saint_Venant%E2%80%93Kirchhoff_model - * @author Malik Ali Dawi - * @author Ruben Zorrilla - */ -class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) HyperElasticIsotropicKirchhoff3D - : public ConstitutiveLaw -{ -public: - - ///@name Type Definitions - ///@{ - - /// The definition of the process info - typedef ProcessInfo ProcessInfoType; - - /// The definition of the base class - typedef ConstitutiveLaw BaseType; - - /// The definition of the size type - typedef std::size_t SizeType; - - /// Static definition of the dimension - static constexpr SizeType Dimension = 3; - - /// Static definition of the VoigtSize - static constexpr SizeType VoigtSize = 6; - - /// Pointer definition of HyperElasticIsotropicKirchhoff3D - KRATOS_CLASS_POINTER_DEFINITION( HyperElasticIsotropicKirchhoff3D ); - - ///@name Lyfe Cycle - ///@{ - - /** - * Default constructor. - */ - HyperElasticIsotropicKirchhoff3D(); - - ConstitutiveLaw::Pointer Clone() const override; - - /** - * Copy constructor. - */ - HyperElasticIsotropicKirchhoff3D (const HyperElasticIsotropicKirchhoff3D& rOther); - - /** - * Destructor. - */ - ~HyperElasticIsotropicKirchhoff3D() override; - - ///@} - ///@name Operators - ///@{ - - ///@} - ///@name Operations - ///@{ - - /** - * @brief This function is designed to be called once to check compatibility with element - * @param rFeatures: The Features of the law - */ - void GetLawFeatures(Features& rFeatures) override; - - /** - * @brief Dimension of the law: - */ - SizeType WorkingSpaceDimension() override - { - return Dimension; - }; - - /** - * @brief Voigt tensor size: - */ - SizeType GetStrainSize() const override - { - return VoigtSize; - }; - - /** - * @brief Returns the expected strain measure of this constitutive law (by default Green-Lagrange) - * @return the expected strain measure - */ - StrainMeasure GetStrainMeasure() override - { - return StrainMeasure_GreenLagrange; - } - - /** - * @brief Returns the stress measure of this constitutive law (by default 2st Piola-Kirchhoff stress in voigt notation) - * @return the expected stress measure - */ - StressMeasure GetStressMeasure() override - { - return StressMeasure_PK2; - } - - /** - * @brief Computes the material response: PK1 stresses and algorithmic ConstitutiveMatrix - * @param rValues The Internalvalues of the law - * @see Parameters - */ - void CalculateMaterialResponsePK1 (ConstitutiveLaw::Parameters & rValues) override; - - /** - * @brief Computes the material response: PK2 stresses and algorithmic ConstitutiveMatrix - * @param rValues The Internalvalues of the law - * @see Parameters - */ - void CalculateMaterialResponsePK2 (ConstitutiveLaw::Parameters & rValues) override; - - /** - * @brief Computes the material response: Kirchhoff stresses and algorithmic ConstitutiveMatrix - * @param rValues The Internalvalues of the law - * @see Parameters - */ - void CalculateMaterialResponseKirchhoff (ConstitutiveLaw::Parameters & rValues) override; - - /** - * @brief Computes the material response: Cauchy stresses and algorithmic ConstitutiveMatrix - * @param rValues The Internalvalues of the law - * @see Parameters - */ - void CalculateMaterialResponseCauchy (ConstitutiveLaw::Parameters & rValues) override; - - /** - * @brief Initialize the material response in terms of 1st Piola-Kirchhoff stresses - * @see Parameters - */ - void InitializeMaterialResponsePK1 (ConstitutiveLaw::Parameters& rValues) override; - - /** - * @brief Initialize the material response in terms of 2nd Piola-Kirchhoff stresses - * @see Parameters - */ - void InitializeMaterialResponsePK2 (ConstitutiveLaw::Parameters& rValues) override; - - /** - * @brief Initialize the material response in terms of Kirchhoff stresses - * @see Parameters - */ - void InitializeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters& rValues) override; - - /** - * @brief Initialize the material response in terms of Cauchy stresses - * @see Parameters - */ - void InitializeMaterialResponseCauchy (ConstitutiveLaw::Parameters& rValues) override; - - /** - * @brief Updates the material response: Cauchy stresses and Internal Variables - * @param rValues The Internalvalues of the law - * @see Parameters - */ - void FinalizeMaterialResponsePK1 (ConstitutiveLaw::Parameters & rValues) override; - - /** - * @brief Updates the material response: Cauchy stresses and Internal Variables - * @param rValues The Internalvalues of the law - * @see Parameters - */ - void FinalizeMaterialResponsePK2 (ConstitutiveLaw::Parameters & rValues) override; - - /** - * @brief Updates the material response: Cauchy stresses and Internal Variables - * @param rValues The Internalvalues of the law - * @see Parameters - */ - void FinalizeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters & rValues) override; - - /** - * @brief Updates the material response: Cauchy stresses and Internal Variables - * @param rValues The Internalvalues of the law - * @see Parameters - */ - void FinalizeMaterialResponseCauchy (ConstitutiveLaw::Parameters & rValues) override; - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresInitializeMaterialResponse() override - { - return false; - } - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresFinalizeMaterialResponse() override - { - return false; - } - - /** - * @brief It calculates the value of a specified variable (double) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - double& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue - ) override; - - /** - * @brief It calculates the value of a specified variable (Vector) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Vector& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) override; - - /** - * @brief It calculates the value of a specified variable (Matrix) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Matrix& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) override; - - /** - * @brief This function provides the place to perform checks on the completeness of the input. - * @details It is designed to be called only once (or anyway, not often) typically at the beginning - * of the calculations, so to verify that nothing is missing from the input - * or that no common error is found. - * @param rMaterialProperties The properties of the material - * @param rElementGeometry The geometry of the element - * @param rCurrentProcessInfo The current process info instance - */ - int Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const override; - -protected: - - ///@name Protected static Member Variables - ///@{ - - ///@} - ///@name Protected member Variables - ///@{ - - ///@} - ///@name Protected Operators - ///@{ - - ///@} - ///@name Protected Operations - ///@{ - - /** - * @brief It calculates the constitutive matrix C (PK2) - * @param rConstitutiveMatrix The constitutive matrix - * @param YoungModulus The young modulus - * @param PoissonCoefficient The Poisson coefficient - */ - virtual void CalculateConstitutiveMatrixPK2( - Matrix& rConstitutiveMatrix, - const double YoungModulus, - const double PoissonCoefficient - ); - - /** - * @brief It calculates the constitutive matrix C (Kirchoff) - * @param rConstitutiveMatrix The constitutive matrix - * @param rDeformationGradientF The deformation gradient - * @param YoungModulus The young modulus - * @param PoissonCoefficient The Poisson coefficient - */ - virtual void CalculateConstitutiveMatrixKirchhoff( - Matrix& rConstitutiveMatrix, - const Matrix& rDeformationGradientF, - const double YoungModulus, - const double PoissonCoefficient - ); - - /** - * @brief It calculates the PK2 stress vector - * @param rStrainVector The strain vector in Voigt notation - * @param rStressVector The stress vector in Voigt notation - * @param LameLambda: First Lame parameter - * @param LameMu: Second Lame parameter - */ - virtual void CalculatePK2Stress( - const Vector& rStrainVector, - Vector& rStressVector, - const double YoungModulus, - const double PoissonCoefficient - ); - - /** - * @brief It calculates the Kirchoff stress vector - * @param rStrainVector The strain vector in Voigt notation - * @param rStressVector The stress vector in Voigt notation - * @param rDeformationGradientF The deformation gradient - * @param YoungModulus The young modulus - * @param PoissonCoefficient The Poisson coefficient - */ - virtual void CalculateKirchhoffStress( - const Vector& rStrainVector, - Vector& rStressVector, - const Matrix& rDeformationGradientF, - const double YoungModulus, - const double PoissonCoefficient - ); - - /** - * @brief It calculates the strain vector - * @param rValues The Internalvalues of the law - * @param rStrainVector The strain vector in Voigt notation - */ - virtual void CalculateGreenLagrangianStrain( - ConstitutiveLaw::Parameters& rValues, - Vector& rStrainVector - ); - - /** - * @brief Calculates the Almansi strains - * @param rValues The Internalvalues of the law - * @param rStrainVector The strain vector in Voigt notation - */ - virtual void CalculateAlmansiStrain( - ConstitutiveLaw::Parameters& rValues, - Vector& rStrainVector - ); - - ///@} - -private: - - ///@name Static Member Variables - ///@{ - - ///@} - ///@name Member Variables - ///@{ - - ///@} - ///@name Private Operators - ///@{ - - ///@} - ///@name Private Operations - ///@{ - ///@} - - ///@} - ///@name Private Access - ///@{ - ///@} - - ///@} - ///@name Serialization - ///@{ - friend class Serializer; - - void save(Serializer& rSerializer) const override - { - KRATOS_SERIALIZE_SAVE_BASE_CLASS( rSerializer, ConstitutiveLaw ) - } - - void load(Serializer& rSerializer) override - { - KRATOS_SERIALIZE_LOAD_BASE_CLASS( rSerializer, ConstitutiveLaw) - } - -}; // Class HyperElasticIsotropicKirchhoff3D -} // namespace Kratos. -#endif // KRATOS_HYPER_ELASTIC_ISOTROPIC_KIRCHHOFF_SAINT_VENANT_3D_LAW_H_INCLUDED defined +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Malik Ali Dawi +// Ruben Zorrilla +// + +#if !defined (KRATOS_HYPER_ELASTIC_ISOTROPIC_KIRCHHOFF_SAINT_VENANT_3D_LAW_H_INCLUDED) +#define KRATOS_HYPER_ELASTIC_ISOTROPIC_KIRCHHOFF_SAINT_VENANT_3D_LAW_H_INCLUDED + +// System includes + +// External includes + +// Project includes +#include "includes/constitutive_law.h" + +namespace Kratos +{ +///@name Kratos Globals +///@{ + +///@} +///@name Type Definitions +///@{ + +///@} +///@name Enum's +///@{ + +///@} +///@name Functions +///@{ + +///@} +///@name Kratos Classes +///@{ +/** + * @class HyperElasticIsotropicKirchhoff3D + * @ingroup StructuralMechanicsApplication + * @brief This law defines an hyperelastic material according to the Saint-Venant–Kirchhoff formulation for 3D cases + * @details The simplest hyperelastic material model is the Saint Venant–Kirchhoff model which is just an extension of the linear elastic material model to the nonlinear regime. + * More info https://en.wikipedia.org/wiki/Hyperelastic_material#Saint_Venant%E2%80%93Kirchhoff_model + * @author Malik Ali Dawi + * @author Ruben Zorrilla + */ +class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) HyperElasticIsotropicKirchhoff3D + : public ConstitutiveLaw +{ +public: + + ///@name Type Definitions + ///@{ + + /// The definition of the process info + typedef ProcessInfo ProcessInfoType; + + /// The definition of the base class + typedef ConstitutiveLaw BaseType; + + /// The definition of the size type + typedef std::size_t SizeType; + + /// Static definition of the dimension + static constexpr SizeType Dimension = 3; + + /// Static definition of the VoigtSize + static constexpr SizeType VoigtSize = 6; + + /// Pointer definition of HyperElasticIsotropicKirchhoff3D + KRATOS_CLASS_POINTER_DEFINITION( HyperElasticIsotropicKirchhoff3D ); + + ///@name Lyfe Cycle + ///@{ + + /** + * Default constructor. + */ + HyperElasticIsotropicKirchhoff3D(); + + ConstitutiveLaw::Pointer Clone() const override; + + /** + * Copy constructor. + */ + HyperElasticIsotropicKirchhoff3D (const HyperElasticIsotropicKirchhoff3D& rOther); + + /** + * Destructor. + */ + ~HyperElasticIsotropicKirchhoff3D() override; + + ///@} + ///@name Operators + ///@{ + + ///@} + ///@name Operations + ///@{ + + /** + * @brief This function is designed to be called once to check compatibility with element + * @param rFeatures: The Features of the law + */ + void GetLawFeatures(Features& rFeatures) override; + + /** + * @brief Dimension of the law: + */ + SizeType WorkingSpaceDimension() override + { + return Dimension; + }; + + /** + * @brief Voigt tensor size: + */ + SizeType GetStrainSize() const override + { + return VoigtSize; + }; + + /** + * @brief Returns the expected strain measure of this constitutive law (by default Green-Lagrange) + * @return the expected strain measure + */ + StrainMeasure GetStrainMeasure() override + { + return StrainMeasure_GreenLagrange; + } + + /** + * @brief Returns the stress measure of this constitutive law (by default 2st Piola-Kirchhoff stress in voigt notation) + * @return the expected stress measure + */ + StressMeasure GetStressMeasure() override + { + return StressMeasure_PK2; + } + + /** + * @brief Computes the material response: PK1 stresses and algorithmic ConstitutiveMatrix + * @param rValues The Internalvalues of the law + * @see Parameters + */ + void CalculateMaterialResponsePK1 (ConstitutiveLaw::Parameters & rValues) override; + + /** + * @brief Computes the material response: PK2 stresses and algorithmic ConstitutiveMatrix + * @param rValues The Internalvalues of the law + * @see Parameters + */ + void CalculateMaterialResponsePK2 (ConstitutiveLaw::Parameters & rValues) override; + + /** + * @brief Computes the material response: Kirchhoff stresses and algorithmic ConstitutiveMatrix + * @param rValues The Internalvalues of the law + * @see Parameters + */ + void CalculateMaterialResponseKirchhoff (ConstitutiveLaw::Parameters & rValues) override; + + /** + * @brief Computes the material response: Cauchy stresses and algorithmic ConstitutiveMatrix + * @param rValues The Internalvalues of the law + * @see Parameters + */ + void CalculateMaterialResponseCauchy (ConstitutiveLaw::Parameters & rValues) override; + + /** + * @brief Initialize the material response in terms of 1st Piola-Kirchhoff stresses + * @see Parameters + */ + void InitializeMaterialResponsePK1 (ConstitutiveLaw::Parameters& rValues) override; + + /** + * @brief Initialize the material response in terms of 2nd Piola-Kirchhoff stresses + * @see Parameters + */ + void InitializeMaterialResponsePK2 (ConstitutiveLaw::Parameters& rValues) override; + + /** + * @brief Initialize the material response in terms of Kirchhoff stresses + * @see Parameters + */ + void InitializeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters& rValues) override; + + /** + * @brief Initialize the material response in terms of Cauchy stresses + * @see Parameters + */ + void InitializeMaterialResponseCauchy (ConstitutiveLaw::Parameters& rValues) override; + + /** + * @brief Updates the material response: Cauchy stresses and Internal Variables + * @param rValues The Internalvalues of the law + * @see Parameters + */ + void FinalizeMaterialResponsePK1 (ConstitutiveLaw::Parameters & rValues) override; + + /** + * @brief Updates the material response: Cauchy stresses and Internal Variables + * @param rValues The Internalvalues of the law + * @see Parameters + */ + void FinalizeMaterialResponsePK2 (ConstitutiveLaw::Parameters & rValues) override; + + /** + * @brief Updates the material response: Cauchy stresses and Internal Variables + * @param rValues The Internalvalues of the law + * @see Parameters + */ + void FinalizeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters & rValues) override; + + /** + * @brief Updates the material response: Cauchy stresses and Internal Variables + * @param rValues The Internalvalues of the law + * @see Parameters + */ + void FinalizeMaterialResponseCauchy (ConstitutiveLaw::Parameters & rValues) override; + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresInitializeMaterialResponse() override + { + return false; + } + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresFinalizeMaterialResponse() override + { + return false; + } + + /** + * @brief It calculates the value of a specified variable (double) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + double& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue + ) override; + + /** + * @brief It calculates the value of a specified variable (Vector) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Vector& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) override; + + /** + * @brief It calculates the value of a specified variable (Matrix) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Matrix& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) override; + + /** + * @brief This function provides the place to perform checks on the completeness of the input. + * @details It is designed to be called only once (or anyway, not often) typically at the beginning + * of the calculations, so to verify that nothing is missing from the input + * or that no common error is found. + * @param rMaterialProperties The properties of the material + * @param rElementGeometry The geometry of the element + * @param rCurrentProcessInfo The current process info instance + */ + int Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const override; + +protected: + + ///@name Protected static Member Variables + ///@{ + + ///@} + ///@name Protected member Variables + ///@{ + + ///@} + ///@name Protected Operators + ///@{ + + ///@} + ///@name Protected Operations + ///@{ + + /** + * @brief It calculates the constitutive matrix C (PK2) + * @param rConstitutiveMatrix The constitutive matrix + * @param YoungModulus The young modulus + * @param PoissonCoefficient The Poisson coefficient + */ + virtual void CalculateConstitutiveMatrixPK2( + Matrix& rConstitutiveMatrix, + const double YoungModulus, + const double PoissonCoefficient + ); + + /** + * @brief It calculates the constitutive matrix C (Kirchoff) + * @param rConstitutiveMatrix The constitutive matrix + * @param rDeformationGradientF The deformation gradient + * @param YoungModulus The young modulus + * @param PoissonCoefficient The Poisson coefficient + */ + virtual void CalculateConstitutiveMatrixKirchhoff( + Matrix& rConstitutiveMatrix, + const Matrix& rDeformationGradientF, + const double YoungModulus, + const double PoissonCoefficient + ); + + /** + * @brief It calculates the PK2 stress vector + * @param rStrainVector The strain vector in Voigt notation + * @param rStressVector The stress vector in Voigt notation + * @param LameLambda: First Lame parameter + * @param LameMu: Second Lame parameter + */ + virtual void CalculatePK2Stress( + const Vector& rStrainVector, + Vector& rStressVector, + const double YoungModulus, + const double PoissonCoefficient + ); + + /** + * @brief It calculates the Kirchoff stress vector + * @param rStrainVector The strain vector in Voigt notation + * @param rStressVector The stress vector in Voigt notation + * @param rDeformationGradientF The deformation gradient + * @param YoungModulus The young modulus + * @param PoissonCoefficient The Poisson coefficient + */ + virtual void CalculateKirchhoffStress( + const Vector& rStrainVector, + Vector& rStressVector, + const Matrix& rDeformationGradientF, + const double YoungModulus, + const double PoissonCoefficient + ); + + /** + * @brief It calculates the strain vector + * @param rValues The Internalvalues of the law + * @param rStrainVector The strain vector in Voigt notation + */ + virtual void CalculateGreenLagrangianStrain( + ConstitutiveLaw::Parameters& rValues, + Vector& rStrainVector + ); + + /** + * @brief Calculates the Almansi strains + * @param rValues The Internalvalues of the law + * @param rStrainVector The strain vector in Voigt notation + */ + virtual void CalculateAlmansiStrain( + ConstitutiveLaw::Parameters& rValues, + Vector& rStrainVector + ); + + ///@} + +private: + + ///@name Static Member Variables + ///@{ + + ///@} + ///@name Member Variables + ///@{ + + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + ///@} + + ///@} + ///@name Private Access + ///@{ + ///@} + + ///@} + ///@name Serialization + ///@{ + friend class Serializer; + + void save(Serializer& rSerializer) const override + { + KRATOS_SERIALIZE_SAVE_BASE_CLASS( rSerializer, ConstitutiveLaw ) + } + + void load(Serializer& rSerializer) override + { + KRATOS_SERIALIZE_LOAD_BASE_CLASS( rSerializer, ConstitutiveLaw) + } + +}; // Class HyperElasticIsotropicKirchhoff3D +} // namespace Kratos. +#endif // KRATOS_HYPER_ELASTIC_ISOTROPIC_KIRCHHOFF_SAINT_VENANT_3D_LAW_H_INCLUDED defined diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.cpp similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.cpp index 9c6dd9f1fdc7..c3633c5894cc 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.cpp @@ -19,7 +19,7 @@ // Project includes #include "includes/properties.h" -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h" +#include "hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h" // #include "constitutive_laws_application_variables.h" #include "structural_mechanics_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h index 43894c4509a0..d8c181a3b332 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h @@ -20,7 +20,7 @@ // External includes // Project includes -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h" +#include "hyper_elastic_isotropic_kirchhoff_3d.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.cpp similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.cpp index 0d687c54751d..91d9c29e3e1e 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.cpp @@ -19,7 +19,7 @@ // Project includes #include "includes/properties.h" -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h" +#include "hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h" // #include "constitutive_laws_application_variables.h" #include "structural_mechanics_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h index c4fc0e006a9f..032c6d038bc8 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h @@ -20,7 +20,7 @@ // External includes // Project includes -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h" +#include "hyper_elastic_isotropic_kirchhoff_3d.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_3d.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_3d.cpp index 1f2b67f38f98..f4df8729a06b 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_3d.cpp @@ -17,7 +17,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.h" +#include "hyper_elastic_isotropic_neo_hookean_3d.h" #include "custom_utilities/advanced_constitutive_law_utilities.h" #include "custom_utilities/constitutive_law_utilities.h" #include "constitutive_laws_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_3d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_3d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.cpp similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.cpp index e12267940744..eaef2cbfbbdf 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.cpp @@ -16,7 +16,7 @@ // External includes // Project includes -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h" +#include "hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h" #include "constitutive_laws_application_variables.h" #include "structural_mechanics_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h index 4a38c2beb52c..29f4171af259 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h @@ -20,7 +20,7 @@ // Project includes #include "includes/constitutive_law.h" -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.h" +#include "hyper_elastic_isotropic_neo_hookean_3d.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_ogden_1d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_ogden_1d.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_ogden_1d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_ogden_1d.cpp index a0e14e49f597..4a55d9d0f833 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_ogden_1d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_ogden_1d.cpp @@ -17,7 +17,7 @@ // Project includes #include "includes/checks.h" #include "includes/properties.h" -#include "custom_constitutive/hyper_elastic_isotropic_ogden_1d.h" +#include "hyper_elastic_isotropic_ogden_1d.h" #include "constitutive_laws_application_variables.h" #include "structural_mechanics_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_ogden_1d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_ogden_1d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_ogden_1d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_ogden_1d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_quasi_incompressible_isochoric_neo_hookean_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_quasi_incompressible_isochoric_neo_hookean_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.cpp index 3bc1426f4ffb..62689f6a8887 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_quasi_incompressible_isochoric_neo_hookean_3d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.cpp @@ -16,7 +16,7 @@ // External includes // Project includes -#include "custom_constitutive/hyper_elastic_isotropic_quasi_incompressible_isochoric_neo_hookean_3d.h" +#include "hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_quasi_incompressible_isochoric_neo_hookean_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_quasi_incompressible_isochoric_neo_hookean_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.h index af25c484428d..26693b6d30fa 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_isotropic_quasi_incompressible_isochoric_neo_hookean_3d.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.h @@ -19,7 +19,7 @@ // External includes // Project includes -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.h" +#include "hyper_elastic_isotropic_neo_hookean_3d.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_3d.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_3d.cpp index 10d4c3d5b8ae..cd0a6d1c5d60 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_3d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_3d.cpp @@ -18,7 +18,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_3d.h" +#include "hyper_elastic_simo_taylor_neo_hookean_3d.h" #include "custom_utilities/advanced_constitutive_law_utilities.h" #include "custom_utilities/constitutive_law_utilities.h" #include "constitutive_laws_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_3d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_3d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.cpp similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.cpp index 73e7dc2ab0d7..1d570a155fb0 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.cpp @@ -20,7 +20,7 @@ #include "structural_mechanics_application_variables.h" // Application includes -#include "custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h" +#include "hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h" #include "constitutive_laws_application_variables.h" namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_isotropic_plasticity_factory.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_isotropic_plasticity_factory.cpp similarity index 92% rename from applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_isotropic_plasticity_factory.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_isotropic_plasticity_factory.cpp index f65cf6f9165d..5a2f483ffb15 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_isotropic_plasticity_factory.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_isotropic_plasticity_factory.cpp @@ -17,8 +17,8 @@ // External includes // Project includes -#include "custom_constitutive/finite_strain_isotropic_plasticity_factory.h" -#include "custom_constitutive/generic_finite_strain_isotropic_plasticity.h" +#include "finite_strain_isotropic_plasticity_factory.h" +#include "generic_finite_strain_isotropic_plasticity.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_isotropic_plasticity_factory.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_isotropic_plasticity_factory.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_isotropic_plasticity_factory.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_isotropic_plasticity_factory.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_kinematic_plasticity_factory.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_kinematic_plasticity_factory.cpp similarity index 92% rename from applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_kinematic_plasticity_factory.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_kinematic_plasticity_factory.cpp index bef26ed7fbb1..e69e96e5bb21 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_kinematic_plasticity_factory.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_kinematic_plasticity_factory.cpp @@ -17,8 +17,8 @@ // External includes // Project includes -#include "custom_constitutive/finite_strain_kinematic_plasticity_factory.h" -#include "custom_constitutive/generic_finite_strain_kinematic_plasticity.h" +#include "finite_strain_kinematic_plasticity_factory.h" +#include "generic_finite_strain_kinematic_plasticity.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_kinematic_plasticity_factory.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_kinematic_plasticity_factory.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/finite_strain_kinematic_plasticity_factory.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/finite_strain_kinematic_plasticity_factory.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_isotropic_plasticity.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_isotropic_plasticity.cpp similarity index 93% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_isotropic_plasticity.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_isotropic_plasticity.cpp index 8a9e850c15d6..0e5e621c09b7 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_isotropic_plasticity.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_isotropic_plasticity.cpp @@ -1,530 +1,530 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Vicente Mataix Ferrandiz -// Alejandro Cornejo -// -// - -// System includes - -// Project includes -#include "utilities/math_utils.h" -#include "constitutive_laws_application_variables.h" -#include "structural_mechanics_application_variables.h" -#include "custom_utilities/tangent_operator_calculator_utility.h" -#include "custom_constitutive/generic_finite_strain_isotropic_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h" - -// Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" - -// Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" - -namespace Kratos -{ -template -void GenericFiniteStrainIsotropicPlasticity:: - CalculateMaterialResponsePK1( - ConstitutiveLaw::Parameters& rValues - ) -{ - this->CalculateMaterialResponsePK2(rValues); - - Vector& r_stress_vector = rValues.GetStressVector(); - const Matrix& r_deformation_gradient_f = rValues.GetDeformationGradientF(); - const double determinant_f = rValues.GetDeterminantF(); - - this->TransformStresses(r_stress_vector, r_deformation_gradient_f, determinant_f, - ConstitutiveLaw::StressMeasure_PK2, ConstitutiveLaw::StressMeasure_PK1); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainIsotropicPlasticity:: - CalculateMaterialResponsePK2( - ConstitutiveLaw::Parameters& rValues - ) -{ - this->CalculateMaterialResponseKirchhoff(rValues); - - Vector& r_stress_vector = rValues.GetStressVector(); - const Matrix& r_deformation_gradient_f = rValues.GetDeformationGradientF(); - const double determinant_f = rValues.GetDeterminantF(); - - this->TransformStresses(r_stress_vector, r_deformation_gradient_f, determinant_f, - ConstitutiveLaw::StressMeasure_Kirchhoff, ConstitutiveLaw::StressMeasure_PK2); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainIsotropicPlasticity:: - CalculateMaterialResponseKirchhoff( - ConstitutiveLaw::Parameters& rValues - ) -{ - // Auxiliar values - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - - // We get the Deformation gradient F - const Matrix& rF = rValues.GetDeformationGradientF(); - const Matrix& r_B = prod(rF, trans(rF)); - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - - AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(r_B, r_strain_vector); - - // We check the current step and NL iteration - const ProcessInfo& r_current_process_info = rValues.GetProcessInfo(); - const bool first_computation = (r_current_process_info[NL_ITERATION_NUMBER] == 1 && r_current_process_info[STEP] == 1) ? true : false; - - if (first_computation) { // First computation always pure elastic for elemements not providing the strain - this->template AddInitialStrainVectorContribution(r_strain_vector); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || - r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - Vector& r_stress_vector = rValues.GetStressVector(); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - noalias(r_stress_vector) = prod(r_constitutive_matrix, r_strain_vector); - this->template AddInitialStressVectorContribution(r_stress_vector); - } else { - noalias(r_stress_vector) = prod(r_constitutive_matrix, r_strain_vector); - this->template AddInitialStressVectorContribution(r_stress_vector); - } - } - } else { // We check for plasticity - Vector& r_integrated_stress_vector = rValues.GetStressVector(); - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); - this->template AddInitialStrainVectorContribution(r_strain_vector); - - // We compute the stress or the constitutive matrix - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS) || - r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - - // We get some variables - double threshold = this->GetThreshold(); - double plastic_dissipation = this->GetPlasticDissipation(); - Vector plastic_strain = this->GetPlasticStrain(); - - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - BoundedArrayType predictive_stress_vector; - noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); - - // Initialize Plastic Parameters - double uniaxial_stress = 0.0, plastic_denominator = 0.0; - BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS - BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS - BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); - - // Compute the plastic parameters - const double F = TConstLawIntegratorType::CalculatePlasticParameters( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, rValues, characteristic_length, - plastic_strain); - - if (F <= std::abs(1.0e-4 * threshold)) { // Elastic case - noalias(r_integrated_stress_vector) = predictive_stress_vector; - } else { // Plastic case - // While loop backward euler - /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, plastic_strain, rValues, - characteristic_length); - noalias(r_integrated_stress_vector) = predictive_stress_vector; - - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - this->CalculateTangentTensor(rValues, ConstitutiveLaw::StressMeasure_Kirchhoff); - } else { - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - } - } - } - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainIsotropicPlasticity:: - CalculateMaterialResponseCauchy( - ConstitutiveLaw::Parameters& rValues - ) -{ - this->CalculateMaterialResponseKirchhoff(rValues); - - Vector& r_stress_vector = rValues.GetStressVector(); - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - const double determinant_f = rValues.GetDeterminantF(); - - // Set to Cauchy Stress: - r_stress_vector /= determinant_f; - r_constitutive_matrix /= determinant_f; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainIsotropicPlasticity:: - FinalizeMaterialResponsePK1( - ConstitutiveLaw::Parameters& rValues - ) -{ - FinalizeMaterialResponsePK2(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainIsotropicPlasticity:: - FinalizeMaterialResponsePK2( - ConstitutiveLaw::Parameters& rValues - ) -{ - FinalizeMaterialResponseKirchhoff(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainIsotropicPlasticity:: - FinalizeMaterialResponseKirchhoff( - ConstitutiveLaw::Parameters& rValues - ) -{ - // Auxiliar values - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - - // We get the Deformation gradient F - const Matrix& rF = rValues.GetDeformationGradientF(); - const Matrix& r_B = prod(rF, trans(rF)); - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - - AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(r_B, r_strain_vector); - - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); - this->template AddInitialStrainVectorContribution(r_strain_vector); - - // We compute the stress or the constitutive matrix - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS) || - r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - - // We get some variables - double& r_threshold = this->GetThreshold(); - double& r_plastic_dissipation = this->GetPlasticDissipation(); - Vector& r_plastic_strain = this->GetPlasticStrain(); - - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - BoundedArrayType predictive_stress_vector; - noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - r_plastic_strain); - - // Initialize Plastic Parameters - double uniaxial_stress = 0.0, plastic_denominator = 0.0; - BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS - BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS - BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); - - // Compute the plastic parameters - const double F = TConstLawIntegratorType::CalculatePlasticParameters( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - r_threshold, plastic_denominator, f_flux, g_flux, - r_plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, rValues, characteristic_length, - r_plastic_strain); - - if (F > std::abs(1.0e-4 * r_threshold)) { // Plastic case - // While loop backward euler - /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - r_threshold, plastic_denominator, f_flux, g_flux, - r_plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, r_plastic_strain, rValues, - characteristic_length); - } - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainIsotropicPlasticity:: - FinalizeMaterialResponseCauchy( - ConstitutiveLaw::Parameters& rValues - ) -{ - FinalizeMaterialResponseKirchhoff(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainIsotropicPlasticity:: - CalculateTangentTensor( - ConstitutiveLaw::Parameters& rValues, - const ConstitutiveLaw::StressMeasure& rStressMeasure - ) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - - const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; - const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; - - if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { - // Already stored in rValues.GetConstitutiveMatrix()... - } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (first order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, rStressMeasure, consider_perturbation_threshold, 1); - } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (second order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, rStressMeasure, consider_perturbation_threshold, 2); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -double& GenericFiniteStrainIsotropicPlasticity:: - CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue - ) -{ - if (rThisVariable == UNIAXIAL_STRESS) { - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); - - // Calculate the stress vector - CalculateMaterialResponseCauchy(rParameterValues); - const Vector& r_stress_vector = rParameterValues.GetStressVector(); - const Vector& r_strain_vector = rParameterValues.GetStrainVector(); - - BoundedArrayType aux_stress_vector = r_stress_vector; - TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress(aux_stress_vector, - r_strain_vector, rValue, rParameterValues); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } else { - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Vector& GenericFiniteStrainIsotropicPlasticity:: - CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) -{ - if (rThisVariable == STRAIN || - rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR || - rThisVariable == HENCKY_STRAIN_VECTOR || - rThisVariable == BIOT_STRAIN_VECTOR || - rThisVariable == ALMANSI_STRAIN_VECTOR) { - - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, false ); - - // We compute the strain - if (rThisVariable == STRAIN) { - // HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); - } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR) { - Matrix identity_matrix(Dimension, Dimension); - noalias(identity_matrix) = IdentityMatrix(Dimension); - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix E_matrix = 0.5 * (prod(trans(deformation_gradient_f), deformation_gradient_f) - identity_matrix); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - noalias(r_strain_vector) = MathUtils::StrainTensorToVector(E_matrix, VoigtSize); - } else if (rThisVariable == ALMANSI_STRAIN_VECTOR) { - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix B_tensor = prod(deformation_gradient_f, trans(deformation_gradient_f)); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - AdvancedConstitutiveLawUtilities::CalculateAlmansiStrain(B_tensor, r_strain_vector); - } else if (rThisVariable == HENCKY_STRAIN_VECTOR) { - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(C_tensor, r_strain_vector); - } else if (rThisVariable == BIOT_STRAIN_VECTOR) { - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - AdvancedConstitutiveLawUtilities::CalculateBiotStrain(C_tensor, r_strain_vector); - } - - rValue = rParameterValues.GetStrainVector(); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } else if (rThisVariable == STRESSES || - rThisVariable == CAUCHY_STRESS_VECTOR || - rThisVariable == KIRCHHOFF_STRESS_VECTOR || - rThisVariable == PK2_STRESS_VECTOR) { - - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, true ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); - - // We compute the stress - if (rThisVariable == STRESSES) { - this->CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); - } if (rThisVariable == KIRCHHOFF_STRESS_VECTOR) { - this->CalculateMaterialResponseKirchhoff(rParameterValues); - } if (rThisVariable == CAUCHY_STRESS_VECTOR) { - this->CalculateMaterialResponseCauchy(rParameterValues); - } if (rThisVariable == PK2_STRESS_VECTOR) { - this->CalculateMaterialResponsePK2(rParameterValues); - } - rValue = rParameterValues.GetStressVector(); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } - - return( rValue ); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Matrix& GenericFiniteStrainIsotropicPlasticity:: - CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) -{ - if (rThisVariable == PLASTIC_STRAIN_TENSOR) { - rValue = MathUtils::StrainVectorToTensor(this->GetPlasticStrain()); - } else if (this->Has(rThisVariable)) { - return this->GetValue(rThisVariable, rValue); - } else { - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -int GenericFiniteStrainIsotropicPlasticity:: - Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const -{ - const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); - const int check_integrator = TConstLawIntegratorType::Check(rMaterialProperties); - KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; - if ((check_base + check_integrator) > 0) return 1; - - return 0; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; -template class GenericFiniteStrainIsotropicPlasticity>>>; - -} // namespace Kratos +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Vicente Mataix Ferrandiz +// Alejandro Cornejo +// +// + +// System includes + +// Project includes +#include "utilities/math_utils.h" +#include "constitutive_laws_application_variables.h" +#include "structural_mechanics_application_variables.h" +#include "custom_utilities/tangent_operator_calculator_utility.h" +#include "generic_finite_strain_isotropic_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h" + +// Yield surfaces +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" + +// Plastic potentials +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" + +namespace Kratos +{ +template +void GenericFiniteStrainIsotropicPlasticity:: + CalculateMaterialResponsePK1( + ConstitutiveLaw::Parameters& rValues + ) +{ + this->CalculateMaterialResponsePK2(rValues); + + Vector& r_stress_vector = rValues.GetStressVector(); + const Matrix& r_deformation_gradient_f = rValues.GetDeformationGradientF(); + const double determinant_f = rValues.GetDeterminantF(); + + this->TransformStresses(r_stress_vector, r_deformation_gradient_f, determinant_f, + ConstitutiveLaw::StressMeasure_PK2, ConstitutiveLaw::StressMeasure_PK1); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainIsotropicPlasticity:: + CalculateMaterialResponsePK2( + ConstitutiveLaw::Parameters& rValues + ) +{ + this->CalculateMaterialResponseKirchhoff(rValues); + + Vector& r_stress_vector = rValues.GetStressVector(); + const Matrix& r_deformation_gradient_f = rValues.GetDeformationGradientF(); + const double determinant_f = rValues.GetDeterminantF(); + + this->TransformStresses(r_stress_vector, r_deformation_gradient_f, determinant_f, + ConstitutiveLaw::StressMeasure_Kirchhoff, ConstitutiveLaw::StressMeasure_PK2); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainIsotropicPlasticity:: + CalculateMaterialResponseKirchhoff( + ConstitutiveLaw::Parameters& rValues + ) +{ + // Auxiliar values + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + + // We get the Deformation gradient F + const Matrix& rF = rValues.GetDeformationGradientF(); + const Matrix& r_B = prod(rF, trans(rF)); + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + + AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(r_B, r_strain_vector); + + // We check the current step and NL iteration + const ProcessInfo& r_current_process_info = rValues.GetProcessInfo(); + const bool first_computation = (r_current_process_info[NL_ITERATION_NUMBER] == 1 && r_current_process_info[STEP] == 1) ? true : false; + + if (first_computation) { // First computation always pure elastic for elemements not providing the strain + this->template AddInitialStrainVectorContribution(r_strain_vector); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || + r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + Vector& r_stress_vector = rValues.GetStressVector(); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + noalias(r_stress_vector) = prod(r_constitutive_matrix, r_strain_vector); + this->template AddInitialStressVectorContribution(r_stress_vector); + } else { + noalias(r_stress_vector) = prod(r_constitutive_matrix, r_strain_vector); + this->template AddInitialStressVectorContribution(r_stress_vector); + } + } + } else { // We check for plasticity + Vector& r_integrated_stress_vector = rValues.GetStressVector(); + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); + this->template AddInitialStrainVectorContribution(r_strain_vector); + + // We compute the stress or the constitutive matrix + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS) || + r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + + // We get some variables + double threshold = this->GetThreshold(); + double plastic_dissipation = this->GetPlasticDissipation(); + Vector plastic_strain = this->GetPlasticStrain(); + + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + BoundedArrayType predictive_stress_vector; + noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); + + // Initialize Plastic Parameters + double uniaxial_stress = 0.0, plastic_denominator = 0.0; + BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS + BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS + BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); + + // Compute the plastic parameters + const double F = TConstLawIntegratorType::CalculatePlasticParameters( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, rValues, characteristic_length, + plastic_strain); + + if (F <= std::abs(1.0e-4 * threshold)) { // Elastic case + noalias(r_integrated_stress_vector) = predictive_stress_vector; + } else { // Plastic case + // While loop backward euler + /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ + TConstLawIntegratorType::IntegrateStressVector( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, plastic_strain, rValues, + characteristic_length); + noalias(r_integrated_stress_vector) = predictive_stress_vector; + + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + this->CalculateTangentTensor(rValues, ConstitutiveLaw::StressMeasure_Kirchhoff); + } else { + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + } + } + } + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainIsotropicPlasticity:: + CalculateMaterialResponseCauchy( + ConstitutiveLaw::Parameters& rValues + ) +{ + this->CalculateMaterialResponseKirchhoff(rValues); + + Vector& r_stress_vector = rValues.GetStressVector(); + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + const double determinant_f = rValues.GetDeterminantF(); + + // Set to Cauchy Stress: + r_stress_vector /= determinant_f; + r_constitutive_matrix /= determinant_f; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainIsotropicPlasticity:: + FinalizeMaterialResponsePK1( + ConstitutiveLaw::Parameters& rValues + ) +{ + FinalizeMaterialResponsePK2(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainIsotropicPlasticity:: + FinalizeMaterialResponsePK2( + ConstitutiveLaw::Parameters& rValues + ) +{ + FinalizeMaterialResponseKirchhoff(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainIsotropicPlasticity:: + FinalizeMaterialResponseKirchhoff( + ConstitutiveLaw::Parameters& rValues + ) +{ + // Auxiliar values + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + + // We get the Deformation gradient F + const Matrix& rF = rValues.GetDeformationGradientF(); + const Matrix& r_B = prod(rF, trans(rF)); + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + + AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(r_B, r_strain_vector); + + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); + this->template AddInitialStrainVectorContribution(r_strain_vector); + + // We compute the stress or the constitutive matrix + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS) || + r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + + // We get some variables + double& r_threshold = this->GetThreshold(); + double& r_plastic_dissipation = this->GetPlasticDissipation(); + Vector& r_plastic_strain = this->GetPlasticStrain(); + + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + BoundedArrayType predictive_stress_vector; + noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - r_plastic_strain); + + // Initialize Plastic Parameters + double uniaxial_stress = 0.0, plastic_denominator = 0.0; + BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS + BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS + BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); + + // Compute the plastic parameters + const double F = TConstLawIntegratorType::CalculatePlasticParameters( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + r_threshold, plastic_denominator, f_flux, g_flux, + r_plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, rValues, characteristic_length, + r_plastic_strain); + + if (F > std::abs(1.0e-4 * r_threshold)) { // Plastic case + // While loop backward euler + /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ + TConstLawIntegratorType::IntegrateStressVector( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + r_threshold, plastic_denominator, f_flux, g_flux, + r_plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, r_plastic_strain, rValues, + characteristic_length); + } + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainIsotropicPlasticity:: + FinalizeMaterialResponseCauchy( + ConstitutiveLaw::Parameters& rValues + ) +{ + FinalizeMaterialResponseKirchhoff(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainIsotropicPlasticity:: + CalculateTangentTensor( + ConstitutiveLaw::Parameters& rValues, + const ConstitutiveLaw::StressMeasure& rStressMeasure + ) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + + const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; + const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; + + if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { + // Already stored in rValues.GetConstitutiveMatrix()... + } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (first order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, rStressMeasure, consider_perturbation_threshold, 1); + } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (second order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, rStressMeasure, consider_perturbation_threshold, 2); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +double& GenericFiniteStrainIsotropicPlasticity:: + CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue + ) +{ + if (rThisVariable == UNIAXIAL_STRESS) { + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); + + // Calculate the stress vector + CalculateMaterialResponseCauchy(rParameterValues); + const Vector& r_stress_vector = rParameterValues.GetStressVector(); + const Vector& r_strain_vector = rParameterValues.GetStrainVector(); + + BoundedArrayType aux_stress_vector = r_stress_vector; + TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress(aux_stress_vector, + r_strain_vector, rValue, rParameterValues); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } else { + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Vector& GenericFiniteStrainIsotropicPlasticity:: + CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) +{ + if (rThisVariable == STRAIN || + rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR || + rThisVariable == HENCKY_STRAIN_VECTOR || + rThisVariable == BIOT_STRAIN_VECTOR || + rThisVariable == ALMANSI_STRAIN_VECTOR) { + + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, false ); + + // We compute the strain + if (rThisVariable == STRAIN) { + // HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); + } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR) { + Matrix identity_matrix(Dimension, Dimension); + noalias(identity_matrix) = IdentityMatrix(Dimension); + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix E_matrix = 0.5 * (prod(trans(deformation_gradient_f), deformation_gradient_f) - identity_matrix); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + noalias(r_strain_vector) = MathUtils::StrainTensorToVector(E_matrix, VoigtSize); + } else if (rThisVariable == ALMANSI_STRAIN_VECTOR) { + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix B_tensor = prod(deformation_gradient_f, trans(deformation_gradient_f)); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + AdvancedConstitutiveLawUtilities::CalculateAlmansiStrain(B_tensor, r_strain_vector); + } else if (rThisVariable == HENCKY_STRAIN_VECTOR) { + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(C_tensor, r_strain_vector); + } else if (rThisVariable == BIOT_STRAIN_VECTOR) { + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + AdvancedConstitutiveLawUtilities::CalculateBiotStrain(C_tensor, r_strain_vector); + } + + rValue = rParameterValues.GetStrainVector(); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } else if (rThisVariable == STRESSES || + rThisVariable == CAUCHY_STRESS_VECTOR || + rThisVariable == KIRCHHOFF_STRESS_VECTOR || + rThisVariable == PK2_STRESS_VECTOR) { + + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, true ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); + + // We compute the stress + if (rThisVariable == STRESSES) { + this->CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); + } if (rThisVariable == KIRCHHOFF_STRESS_VECTOR) { + this->CalculateMaterialResponseKirchhoff(rParameterValues); + } if (rThisVariable == CAUCHY_STRESS_VECTOR) { + this->CalculateMaterialResponseCauchy(rParameterValues); + } if (rThisVariable == PK2_STRESS_VECTOR) { + this->CalculateMaterialResponsePK2(rParameterValues); + } + rValue = rParameterValues.GetStressVector(); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } + + return( rValue ); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Matrix& GenericFiniteStrainIsotropicPlasticity:: + CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (rThisVariable == PLASTIC_STRAIN_TENSOR) { + rValue = MathUtils::StrainVectorToTensor(this->GetPlasticStrain()); + } else if (this->Has(rThisVariable)) { + return this->GetValue(rThisVariable, rValue); + } else { + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +int GenericFiniteStrainIsotropicPlasticity:: + Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const +{ + const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); + const int check_integrator = TConstLawIntegratorType::Check(rMaterialProperties); + KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; + if ((check_base + check_integrator) > 0) return 1; + + return 0; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; +template class GenericFiniteStrainIsotropicPlasticity>>>; + +} // namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_isotropic_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_isotropic_plasticity.h similarity index 95% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_isotropic_plasticity.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_isotropic_plasticity.h index 66b757c1128a..0d5ebff0cd17 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_isotropic_plasticity.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_isotropic_plasticity.h @@ -1,340 +1,340 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Vicente Mataix Ferrandiz -// Alejandro Cornejo -// -// - -#if !defined(KRATOS_GENERIC_FINITE_STRAIN_ISOTROPIC_PLASTICITY_3D_H_INCLUDED) -#define KRATOS_GENERIC_FINITE_STRAIN_ISOTROPIC_PLASTICITY_3D_H_INCLUDED - -// System includes - -// External includes - -// Project includes -#include "custom_constitutive/generic_small_strain_isotropic_plasticity.h" - -namespace Kratos -{ -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - - // The size type definition - typedef std::size_t SizeType; - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/** - * @class GenericFiniteStrainIsotropicPlasticity - * @ingroup StructuralMechanicsApplication - * @brief This class is the base class which define all the constitutive laws for plasticity in strain framework - * @details This class considers a constitutive law integrator as an intermediate utility to compute the plasticity - * This implementation is based on the Eulerian logarithmic strain measure (COMPUTATIONAL METHODS FOR PLASTICITY THEORY AND APPLICATIONS. EA de Souza Neto,D Perić, DRJ Owen pag. 596). - * @tparam TConstLawIntegratorType The constitutive law integrator considered - * @author Alejandro Cornejo & Vicente Mataix Ferrandiz - */ -template -class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericFiniteStrainIsotropicPlasticity - : public GenericSmallStrainIsotropicPlasticity -{ -public: - ///@name Type Definitions - ///@{ - - /// The define the working dimension size, already defined in the integrator - static constexpr SizeType Dimension = TConstLawIntegratorType::Dimension; - - /// The define the Voigt size, already defined in the integrator - static constexpr SizeType VoigtSize = TConstLawIntegratorType::VoigtSize; - - /// Definition of the base class - typedef GenericSmallStrainIsotropicPlasticity BaseType; - - /// The definition of the Voigt array type - typedef array_1d BoundedArrayType; - - /// The definition of the bounded matrix type - typedef BoundedMatrix BoundedMatrixType; - - /// Counted pointer of GenericFiniteStrainIsotropicPlasticity - KRATOS_CLASS_POINTER_DEFINITION(GenericFiniteStrainIsotropicPlasticity); - - /// The node definition - typedef Node<3> NodeType; - - /// The geometry definition - typedef Geometry GeometryType; - - ///@} - ///@name Life Cycle - ///@{ - - /** - * Default constructor. - */ - GenericFiniteStrainIsotropicPlasticity() - { - } - - /** - * Clone. - */ - ConstitutiveLaw::Pointer Clone() const override - { - return Kratos::make_shared>(*this); - } - - /** - * Copy constructor. - */ - GenericFiniteStrainIsotropicPlasticity(const GenericFiniteStrainIsotropicPlasticity &rOther) - : BaseType(rOther) - { - } - - /** - * Destructor. - */ - ~GenericFiniteStrainIsotropicPlasticity() override - { - } - - ///@} - ///@name Operators - ///@{ - - ///@} - ///@name Operations - ///@{ - - /** - * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - /** - * Finalize the material response in terms of Cauchy stresses - * @see Parameters - */ - void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresFinalizeMaterialResponse() override - { - return true; - } - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresInitializeMaterialResponse() override - { - return false; - } - - /** - * @brief Returns the value of a specified variable (double) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - double& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue) override; - - /** - * @brief Returns the value of a specified variable (vector) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Vector& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (matrix) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Matrix& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) override; - - /** - * @brief This function provides the place to perform checks on the completeness of the input. - * @details It is designed to be called only once (or anyway, not often) typically at the beginning - * of the calculations, so to verify that nothing is missing from the input or that no common error is found. - * @param rMaterialProperties The properties of the material - * @param rElementGeometry The geometry of the element - * @param rCurrentProcessInfo The current process info instance - * @return 0 if OK, 1 otherwise - */ - int Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const override; - - ///@} - ///@name Access - ///@{ - - ///@} - ///@name Inquiry - ///@{ - - ///@} - ///@name Input and output - ///@{ - - ///@} - ///@name Friends - ///@{ - - ///@} - -protected: - ///@name Protected static Member Variables - ///@{ - - ///@} - ///@name Protected member Variables - ///@{ - - ///@} - ///@name Protected Operators - ///@{ - - ///@} - ///@name Protected Operations - ///@{ - - ///@} - ///@name Protected Access - ///@{ - - ///@} - ///@name Protected Inquiry - ///@{ - - ///@} - ///@name Protected LifeCycle - ///@{ - - ///@} - private: - ///@name Static Member Variables - ///@{ - - ///@} - ///@name Member Variables - ///@{ - - ///@} - ///@name Private Operators - ///@{ - - ///@} - ///@name Private Operations - ///@{ - - /** - * @brief This method computes the tangent tensor - * @param rValues The constitutive law parameters and flags - * @param rStressMeasure The stress measure of the law - */ - void CalculateTangentTensor( - ConstitutiveLaw::Parameters &rValues, - const ConstitutiveLaw::StressMeasure& rStressMeasure = ConstitutiveLaw::StressMeasure_Cauchy - ); - - ///@} - ///@name Private Access - ///@{ - - ///@} - ///@name Private Inquiry - ///@{ - - ///@} - ///@name Un accessible methods - ///@{ - - - ///@} - -}; // Class GenericYieldSurface - -} // namespace Kratos -#endif +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Vicente Mataix Ferrandiz +// Alejandro Cornejo +// +// + +#if !defined(KRATOS_GENERIC_FINITE_STRAIN_ISOTROPIC_PLASTICITY_3D_H_INCLUDED) +#define KRATOS_GENERIC_FINITE_STRAIN_ISOTROPIC_PLASTICITY_3D_H_INCLUDED + +// System includes + +// External includes + +// Project includes +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.h" + +namespace Kratos +{ +///@name Kratos Globals +///@{ + +///@} +///@name Type Definitions +///@{ + + // The size type definition + typedef std::size_t SizeType; + +///@} +///@name Enum's +///@{ + +///@} +///@name Functions +///@{ + +///@} +///@name Kratos Classes +///@{ + +/** + * @class GenericFiniteStrainIsotropicPlasticity + * @ingroup StructuralMechanicsApplication + * @brief This class is the base class which define all the constitutive laws for plasticity in strain framework + * @details This class considers a constitutive law integrator as an intermediate utility to compute the plasticity + * This implementation is based on the Eulerian logarithmic strain measure (COMPUTATIONAL METHODS FOR PLASTICITY THEORY AND APPLICATIONS. EA de Souza Neto,D Perić, DRJ Owen pag. 596). + * @tparam TConstLawIntegratorType The constitutive law integrator considered + * @author Alejandro Cornejo & Vicente Mataix Ferrandiz + */ +template +class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericFiniteStrainIsotropicPlasticity + : public GenericSmallStrainIsotropicPlasticity +{ +public: + ///@name Type Definitions + ///@{ + + /// The define the working dimension size, already defined in the integrator + static constexpr SizeType Dimension = TConstLawIntegratorType::Dimension; + + /// The define the Voigt size, already defined in the integrator + static constexpr SizeType VoigtSize = TConstLawIntegratorType::VoigtSize; + + /// Definition of the base class + typedef GenericSmallStrainIsotropicPlasticity BaseType; + + /// The definition of the Voigt array type + typedef array_1d BoundedArrayType; + + /// The definition of the bounded matrix type + typedef BoundedMatrix BoundedMatrixType; + + /// Counted pointer of GenericFiniteStrainIsotropicPlasticity + KRATOS_CLASS_POINTER_DEFINITION(GenericFiniteStrainIsotropicPlasticity); + + /// The node definition + typedef Node<3> NodeType; + + /// The geometry definition + typedef Geometry GeometryType; + + ///@} + ///@name Life Cycle + ///@{ + + /** + * Default constructor. + */ + GenericFiniteStrainIsotropicPlasticity() + { + } + + /** + * Clone. + */ + ConstitutiveLaw::Pointer Clone() const override + { + return Kratos::make_shared>(*this); + } + + /** + * Copy constructor. + */ + GenericFiniteStrainIsotropicPlasticity(const GenericFiniteStrainIsotropicPlasticity &rOther) + : BaseType(rOther) + { + } + + /** + * Destructor. + */ + ~GenericFiniteStrainIsotropicPlasticity() override + { + } + + ///@} + ///@name Operators + ///@{ + + ///@} + ///@name Operations + ///@{ + + /** + * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + /** + * Finalize the material response in terms of Cauchy stresses + * @see Parameters + */ + void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresFinalizeMaterialResponse() override + { + return true; + } + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresInitializeMaterialResponse() override + { + return false; + } + + /** + * @brief Returns the value of a specified variable (double) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + double& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue) override; + + /** + * @brief Returns the value of a specified variable (vector) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Vector& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (matrix) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Matrix& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) override; + + /** + * @brief This function provides the place to perform checks on the completeness of the input. + * @details It is designed to be called only once (or anyway, not often) typically at the beginning + * of the calculations, so to verify that nothing is missing from the input or that no common error is found. + * @param rMaterialProperties The properties of the material + * @param rElementGeometry The geometry of the element + * @param rCurrentProcessInfo The current process info instance + * @return 0 if OK, 1 otherwise + */ + int Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const override; + + ///@} + ///@name Access + ///@{ + + ///@} + ///@name Inquiry + ///@{ + + ///@} + ///@name Input and output + ///@{ + + ///@} + ///@name Friends + ///@{ + + ///@} + +protected: + ///@name Protected static Member Variables + ///@{ + + ///@} + ///@name Protected member Variables + ///@{ + + ///@} + ///@name Protected Operators + ///@{ + + ///@} + ///@name Protected Operations + ///@{ + + ///@} + ///@name Protected Access + ///@{ + + ///@} + ///@name Protected Inquiry + ///@{ + + ///@} + ///@name Protected LifeCycle + ///@{ + + ///@} + private: + ///@name Static Member Variables + ///@{ + + ///@} + ///@name Member Variables + ///@{ + + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + + /** + * @brief This method computes the tangent tensor + * @param rValues The constitutive law parameters and flags + * @param rStressMeasure The stress measure of the law + */ + void CalculateTangentTensor( + ConstitutiveLaw::Parameters &rValues, + const ConstitutiveLaw::StressMeasure& rStressMeasure = ConstitutiveLaw::StressMeasure_Cauchy + ); + + ///@} + ///@name Private Access + ///@{ + + ///@} + ///@name Private Inquiry + ///@{ + + ///@} + ///@name Un accessible methods + ///@{ + + + ///@} + +}; // Class GenericYieldSurface + +} // namespace Kratos +#endif diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_kinematic_plasticity.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_kinematic_plasticity.cpp similarity index 93% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_kinematic_plasticity.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_kinematic_plasticity.cpp index 13d1bd963725..69e228c4c4ce 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_kinematic_plasticity.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_kinematic_plasticity.cpp @@ -1,543 +1,543 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Vicente Mataix Ferrandiz -// Alejandro Cornejo -// -// - -// System includes - -// Project includes -#include "utilities/math_utils.h" -#include "constitutive_laws_application_variables.h" -#include "structural_mechanics_application_variables.h" -#include "custom_utilities/tangent_operator_calculator_utility.h" -#include "custom_constitutive/generic_finite_strain_kinematic_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_kinematic_plasticity.h" - -// Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" - -// Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" - -namespace Kratos -{ -template -void GenericFiniteStrainKinematicPlasticity:: - CalculateMaterialResponsePK1( - ConstitutiveLaw::Parameters& rValues - ) -{ - this->CalculateMaterialResponsePK2(rValues); - - Vector& r_stress_vector = rValues.GetStressVector(); - const Matrix& r_deformation_gradient_f = rValues.GetDeformationGradientF(); - const double determinant_f = rValues.GetDeterminantF(); - - this->TransformStresses(r_stress_vector, r_deformation_gradient_f, determinant_f, - ConstitutiveLaw::StressMeasure_PK2, ConstitutiveLaw::StressMeasure_PK1); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainKinematicPlasticity:: - CalculateMaterialResponsePK2( - ConstitutiveLaw::Parameters& rValues - ) -{ - this->CalculateMaterialResponseKirchhoff(rValues); - - Vector& r_stress_vector = rValues.GetStressVector(); - const Matrix& r_deformation_gradient_f = rValues.GetDeformationGradientF(); - const double determinant_f = rValues.GetDeterminantF(); - - this->TransformStresses(r_stress_vector, r_deformation_gradient_f, determinant_f, - ConstitutiveLaw::StressMeasure_Kirchhoff, ConstitutiveLaw::StressMeasure_PK2); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainKinematicPlasticity:: - CalculateMaterialResponseKirchhoff( - ConstitutiveLaw::Parameters& rValues - ) -{ - // Auxiliar values - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - - // We get the Deformation gradient F - const Matrix& rF = rValues.GetDeformationGradientF(); - const Matrix& r_B = prod(rF, trans(rF)); - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - - AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(r_B, r_strain_vector); - - // We check the current step and NL iteration - const ProcessInfo& r_current_process_info = rValues.GetProcessInfo(); - const bool first_computation = (r_current_process_info[NL_ITERATION_NUMBER] == 1 && r_current_process_info[STEP] == 1) ? true : false; - - if (first_computation) { // First computation always pure elastic for elemements not providing the strain - this->template AddInitialStrainVectorContribution(r_strain_vector); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || - r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - Vector& r_stress_vector = rValues.GetStressVector(); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - noalias(r_stress_vector) = prod(r_constitutive_matrix, r_strain_vector); - this->template AddInitialStressVectorContribution(r_stress_vector); - } else { - noalias(r_stress_vector) = prod(r_constitutive_matrix, r_strain_vector); - this->template AddInitialStressVectorContribution(r_stress_vector); - } - } - } else { // We check for plasticity - Vector& r_integrated_stress_vector = rValues.GetStressVector(); - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); - this->template AddInitialStrainVectorContribution(r_strain_vector); - - // We compute the stress or the constitutive matrix - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS) || - r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - - // We get some variables - double threshold = this->GetThreshold(); - double plastic_dissipation = this->GetPlasticDissipation(); - Vector plastic_strain = this->GetPlasticStrain(); - Vector back_stress_vector = this->GetBackStressVector(); - const Vector previous_stress_vector = this->GetPreviousStressVector(); - - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - BoundedArrayType predictive_stress_vector, kin_hard_stress_vector; - noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); - - // Initialize Plastic Parameters - double uniaxial_stress = 0.0, plastic_denominator = 0.0; - BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS - BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS - BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); - - // Kinematic back stress substracted - noalias(kin_hard_stress_vector) = predictive_stress_vector - back_stress_vector; - - // Compute the plastic parameters - const double F = TConstLawIntegratorType::CalculatePlasticParameters( - kin_hard_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, rValues, characteristic_length, - plastic_strain, back_stress_vector); - - if (F <= std::abs(1.0e-4 * threshold)) { // Elastic case - noalias(r_integrated_stress_vector) = predictive_stress_vector; - } else { // Plastic case - // While loop backward euler - /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, plastic_strain, rValues, - characteristic_length, back_stress_vector, - previous_stress_vector); - noalias(r_integrated_stress_vector) = predictive_stress_vector; - - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - this->CalculateTangentTensor(rValues, ConstitutiveLaw::StressMeasure_Kirchhoff); - } else { - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - } - } - } - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainKinematicPlasticity:: - CalculateMaterialResponseCauchy( - ConstitutiveLaw::Parameters& rValues - ) -{ - this->CalculateMaterialResponseKirchhoff(rValues); - - Vector& r_stress_vector = rValues.GetStressVector(); - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - const double determinant_f = rValues.GetDeterminantF(); - - // Set to Cauchy Stress: - r_stress_vector /= determinant_f; - r_constitutive_matrix /= determinant_f; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainKinematicPlasticity:: - FinalizeMaterialResponsePK1( - ConstitutiveLaw::Parameters& rValues - ) -{ - FinalizeMaterialResponsePK2(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainKinematicPlasticity:: - FinalizeMaterialResponsePK2( - ConstitutiveLaw::Parameters& rValues - ) -{ - FinalizeMaterialResponseKirchhoff(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainKinematicPlasticity:: - FinalizeMaterialResponseKirchhoff( - ConstitutiveLaw::Parameters& rValues - ) -{ - // Auxiliar values - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - - // We get the Deformation gradient F - const Matrix& rF = rValues.GetDeformationGradientF(); - const Matrix& r_B = prod(rF, trans(rF)); - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - - AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(r_B, r_strain_vector); - - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); - this->template AddInitialStrainVectorContribution(r_strain_vector); - - // We compute the stress or the constitutive matrix - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS) || - r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - - // We get some variables - double& r_threshold = this->GetThreshold(); - double& r_plastic_dissipation = this->GetPlasticDissipation(); - Vector& r_plastic_strain = this->GetPlasticStrain(); - Vector& r_back_stress_vector = this->GetBackStressVector(); - const Vector previous_stress_vector = this->GetPreviousStressVector(); - - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - BoundedArrayType predictive_stress_vector, kin_hard_stress_vector; - noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - r_plastic_strain); - - // Initialize Plastic Parameters - double uniaxial_stress = 0.0, plastic_denominator = 0.0; - BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS - BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS - BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); - - // Kinematic back stress substracted - noalias(kin_hard_stress_vector) = predictive_stress_vector - r_back_stress_vector; - - // Compute the plastic parameters - const double threshold_indicator = TConstLawIntegratorType::CalculatePlasticParameters( - kin_hard_stress_vector, r_strain_vector, uniaxial_stress, - r_threshold, plastic_denominator, f_flux, g_flux, - r_plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, rValues, characteristic_length, - r_plastic_strain, r_back_stress_vector); - - if (threshold_indicator > std::abs(1.0e-4 * r_threshold)) { // Plastic case - // While loop backward euler - /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - r_threshold, plastic_denominator, f_flux, g_flux, - r_plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, r_plastic_strain, rValues, - characteristic_length, r_back_stress_vector, - previous_stress_vector); - } - noalias(this->GetPreviousStressVector()) = predictive_stress_vector; - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainKinematicPlasticity:: - FinalizeMaterialResponseCauchy( - ConstitutiveLaw::Parameters& rValues - ) -{ - FinalizeMaterialResponseKirchhoff(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericFiniteStrainKinematicPlasticity:: - CalculateTangentTensor( - ConstitutiveLaw::Parameters& rValues, - const ConstitutiveLaw::StressMeasure& rStressMeasure - ) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - - const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; - const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; - - if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { - // Already stored in rValues.GetConstitutiveMatrix()... - } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (first order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); - } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (second order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -double& GenericFiniteStrainKinematicPlasticity:: - CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue - ) -{ - if (rThisVariable == UNIAXIAL_STRESS) { - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); - const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); - - // Calculate the stress vector - CalculateMaterialResponseCauchy(rParameterValues); - const Vector& r_stress_vector = rParameterValues.GetStressVector(); - const Vector& r_strain_vector = rParameterValues.GetStrainVector(); - - BoundedArrayType aux_stress_vector = r_stress_vector; - TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress(aux_stress_vector, - r_strain_vector, rValue, rParameterValues); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } else { - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Vector& GenericFiniteStrainKinematicPlasticity:: - CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) -{ - if (rThisVariable == STRAIN || - rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR || - rThisVariable == HENCKY_STRAIN_VECTOR || - rThisVariable == BIOT_STRAIN_VECTOR || - rThisVariable == ALMANSI_STRAIN_VECTOR) { - - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, false ); - - // We compute the strain - if (rThisVariable == STRAIN) { - // HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); - } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR) { - Matrix identity_matrix(Dimension, Dimension); - noalias(identity_matrix) = IdentityMatrix(Dimension); - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix E_matrix = 0.5 * (prod(trans(deformation_gradient_f), deformation_gradient_f) - identity_matrix); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - noalias(r_strain_vector) = MathUtils::StrainTensorToVector(E_matrix, VoigtSize); - } else if (rThisVariable == ALMANSI_STRAIN_VECTOR) { - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix B_tensor = prod(deformation_gradient_f, trans(deformation_gradient_f)); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - AdvancedConstitutiveLawUtilities::CalculateAlmansiStrain(B_tensor, r_strain_vector); - } else if (rThisVariable == HENCKY_STRAIN_VECTOR) { - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(C_tensor, r_strain_vector); - } else if (rThisVariable == BIOT_STRAIN_VECTOR) { - const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); - const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); - Vector& r_strain_vector = rParameterValues.GetStrainVector(); - AdvancedConstitutiveLawUtilities::CalculateBiotStrain(C_tensor, r_strain_vector); - } - - rValue = rParameterValues.GetStrainVector(); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } else if (rThisVariable == STRESSES || - rThisVariable == CAUCHY_STRESS_VECTOR || - rThisVariable == KIRCHHOFF_STRESS_VECTOR || - rThisVariable == PK2_STRESS_VECTOR) { - - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, true ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); - - // We compute the stress - if (rThisVariable == STRESSES) { - this->CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); - } if (rThisVariable == KIRCHHOFF_STRESS_VECTOR) { - this->CalculateMaterialResponseKirchhoff(rParameterValues); - } if (rThisVariable == CAUCHY_STRESS_VECTOR) { - this->CalculateMaterialResponseCauchy(rParameterValues); - } if (rThisVariable == PK2_STRESS_VECTOR) { - this->CalculateMaterialResponsePK2(rParameterValues); - } - rValue = rParameterValues.GetStressVector(); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } - - return( rValue ); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Matrix& GenericFiniteStrainKinematicPlasticity:: - CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) -{ - if (rThisVariable == PLASTIC_STRAIN_TENSOR) { - rValue = MathUtils::StrainVectorToTensor(this->GetPlasticStrain()); - } else if (this->Has(rThisVariable)) { - return this->GetValue(rThisVariable, rValue); - } else { - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -int GenericFiniteStrainKinematicPlasticity:: - Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const -{ - const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); - const int check_integrator = TConstLawIntegratorType::Check(rMaterialProperties); - KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; - if ((check_base + check_integrator) > 0) return 1; - - return 0; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; -template class GenericFiniteStrainKinematicPlasticity>>>; - -} // namespace Kratos +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Vicente Mataix Ferrandiz +// Alejandro Cornejo +// +// + +// System includes + +// Project includes +#include "utilities/math_utils.h" +#include "constitutive_laws_application_variables.h" +#include "structural_mechanics_application_variables.h" +#include "custom_utilities/tangent_operator_calculator_utility.h" +#include "generic_finite_strain_kinematic_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h" + +// Yield surfaces +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" + +// Plastic potentials +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" + +namespace Kratos +{ +template +void GenericFiniteStrainKinematicPlasticity:: + CalculateMaterialResponsePK1( + ConstitutiveLaw::Parameters& rValues + ) +{ + this->CalculateMaterialResponsePK2(rValues); + + Vector& r_stress_vector = rValues.GetStressVector(); + const Matrix& r_deformation_gradient_f = rValues.GetDeformationGradientF(); + const double determinant_f = rValues.GetDeterminantF(); + + this->TransformStresses(r_stress_vector, r_deformation_gradient_f, determinant_f, + ConstitutiveLaw::StressMeasure_PK2, ConstitutiveLaw::StressMeasure_PK1); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainKinematicPlasticity:: + CalculateMaterialResponsePK2( + ConstitutiveLaw::Parameters& rValues + ) +{ + this->CalculateMaterialResponseKirchhoff(rValues); + + Vector& r_stress_vector = rValues.GetStressVector(); + const Matrix& r_deformation_gradient_f = rValues.GetDeformationGradientF(); + const double determinant_f = rValues.GetDeterminantF(); + + this->TransformStresses(r_stress_vector, r_deformation_gradient_f, determinant_f, + ConstitutiveLaw::StressMeasure_Kirchhoff, ConstitutiveLaw::StressMeasure_PK2); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainKinematicPlasticity:: + CalculateMaterialResponseKirchhoff( + ConstitutiveLaw::Parameters& rValues + ) +{ + // Auxiliar values + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + + // We get the Deformation gradient F + const Matrix& rF = rValues.GetDeformationGradientF(); + const Matrix& r_B = prod(rF, trans(rF)); + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + + AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(r_B, r_strain_vector); + + // We check the current step and NL iteration + const ProcessInfo& r_current_process_info = rValues.GetProcessInfo(); + const bool first_computation = (r_current_process_info[NL_ITERATION_NUMBER] == 1 && r_current_process_info[STEP] == 1) ? true : false; + + if (first_computation) { // First computation always pure elastic for elemements not providing the strain + this->template AddInitialStrainVectorContribution(r_strain_vector); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || + r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + Vector& r_stress_vector = rValues.GetStressVector(); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + noalias(r_stress_vector) = prod(r_constitutive_matrix, r_strain_vector); + this->template AddInitialStressVectorContribution(r_stress_vector); + } else { + noalias(r_stress_vector) = prod(r_constitutive_matrix, r_strain_vector); + this->template AddInitialStressVectorContribution(r_stress_vector); + } + } + } else { // We check for plasticity + Vector& r_integrated_stress_vector = rValues.GetStressVector(); + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); + this->template AddInitialStrainVectorContribution(r_strain_vector); + + // We compute the stress or the constitutive matrix + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS) || + r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + + // We get some variables + double threshold = this->GetThreshold(); + double plastic_dissipation = this->GetPlasticDissipation(); + Vector plastic_strain = this->GetPlasticStrain(); + Vector back_stress_vector = this->GetBackStressVector(); + const Vector previous_stress_vector = this->GetPreviousStressVector(); + + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + BoundedArrayType predictive_stress_vector, kin_hard_stress_vector; + noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); + + // Initialize Plastic Parameters + double uniaxial_stress = 0.0, plastic_denominator = 0.0; + BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS + BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS + BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); + + // Kinematic back stress substracted + noalias(kin_hard_stress_vector) = predictive_stress_vector - back_stress_vector; + + // Compute the plastic parameters + const double F = TConstLawIntegratorType::CalculatePlasticParameters( + kin_hard_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, rValues, characteristic_length, + plastic_strain, back_stress_vector); + + if (F <= std::abs(1.0e-4 * threshold)) { // Elastic case + noalias(r_integrated_stress_vector) = predictive_stress_vector; + } else { // Plastic case + // While loop backward euler + /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ + TConstLawIntegratorType::IntegrateStressVector( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, plastic_strain, rValues, + characteristic_length, back_stress_vector, + previous_stress_vector); + noalias(r_integrated_stress_vector) = predictive_stress_vector; + + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + this->CalculateTangentTensor(rValues, ConstitutiveLaw::StressMeasure_Kirchhoff); + } else { + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + } + } + } + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainKinematicPlasticity:: + CalculateMaterialResponseCauchy( + ConstitutiveLaw::Parameters& rValues + ) +{ + this->CalculateMaterialResponseKirchhoff(rValues); + + Vector& r_stress_vector = rValues.GetStressVector(); + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + const double determinant_f = rValues.GetDeterminantF(); + + // Set to Cauchy Stress: + r_stress_vector /= determinant_f; + r_constitutive_matrix /= determinant_f; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainKinematicPlasticity:: + FinalizeMaterialResponsePK1( + ConstitutiveLaw::Parameters& rValues + ) +{ + FinalizeMaterialResponsePK2(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainKinematicPlasticity:: + FinalizeMaterialResponsePK2( + ConstitutiveLaw::Parameters& rValues + ) +{ + FinalizeMaterialResponseKirchhoff(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainKinematicPlasticity:: + FinalizeMaterialResponseKirchhoff( + ConstitutiveLaw::Parameters& rValues + ) +{ + // Auxiliar values + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + + // We get the Deformation gradient F + const Matrix& rF = rValues.GetDeformationGradientF(); + const Matrix& r_B = prod(rF, trans(rF)); + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + + AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(r_B, r_strain_vector); + + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); + this->template AddInitialStrainVectorContribution(r_strain_vector); + + // We compute the stress or the constitutive matrix + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS) || + r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + + // We get some variables + double& r_threshold = this->GetThreshold(); + double& r_plastic_dissipation = this->GetPlasticDissipation(); + Vector& r_plastic_strain = this->GetPlasticStrain(); + Vector& r_back_stress_vector = this->GetBackStressVector(); + const Vector previous_stress_vector = this->GetPreviousStressVector(); + + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + BoundedArrayType predictive_stress_vector, kin_hard_stress_vector; + noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - r_plastic_strain); + + // Initialize Plastic Parameters + double uniaxial_stress = 0.0, plastic_denominator = 0.0; + BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS + BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS + BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); + + // Kinematic back stress substracted + noalias(kin_hard_stress_vector) = predictive_stress_vector - r_back_stress_vector; + + // Compute the plastic parameters + const double threshold_indicator = TConstLawIntegratorType::CalculatePlasticParameters( + kin_hard_stress_vector, r_strain_vector, uniaxial_stress, + r_threshold, plastic_denominator, f_flux, g_flux, + r_plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, rValues, characteristic_length, + r_plastic_strain, r_back_stress_vector); + + if (threshold_indicator > std::abs(1.0e-4 * r_threshold)) { // Plastic case + // While loop backward euler + /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ + TConstLawIntegratorType::IntegrateStressVector( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + r_threshold, plastic_denominator, f_flux, g_flux, + r_plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, r_plastic_strain, rValues, + characteristic_length, r_back_stress_vector, + previous_stress_vector); + } + noalias(this->GetPreviousStressVector()) = predictive_stress_vector; + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainKinematicPlasticity:: + FinalizeMaterialResponseCauchy( + ConstitutiveLaw::Parameters& rValues + ) +{ + FinalizeMaterialResponseKirchhoff(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericFiniteStrainKinematicPlasticity:: + CalculateTangentTensor( + ConstitutiveLaw::Parameters& rValues, + const ConstitutiveLaw::StressMeasure& rStressMeasure + ) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + + const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; + const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; + + if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { + // Already stored in rValues.GetConstitutiveMatrix()... + } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (first order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); + } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (second order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +double& GenericFiniteStrainKinematicPlasticity:: + CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue + ) +{ + if (rThisVariable == UNIAXIAL_STRESS) { + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); + const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); + + // Calculate the stress vector + CalculateMaterialResponseCauchy(rParameterValues); + const Vector& r_stress_vector = rParameterValues.GetStressVector(); + const Vector& r_strain_vector = rParameterValues.GetStrainVector(); + + BoundedArrayType aux_stress_vector = r_stress_vector; + TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress(aux_stress_vector, + r_strain_vector, rValue, rParameterValues); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } else { + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Vector& GenericFiniteStrainKinematicPlasticity:: + CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) +{ + if (rThisVariable == STRAIN || + rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR || + rThisVariable == HENCKY_STRAIN_VECTOR || + rThisVariable == BIOT_STRAIN_VECTOR || + rThisVariable == ALMANSI_STRAIN_VECTOR) { + + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, false ); + + // We compute the strain + if (rThisVariable == STRAIN) { + // HyperElasticIsotropicKirchhoff3D::CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); + } else if (rThisVariable == GREEN_LAGRANGE_STRAIN_VECTOR) { + Matrix identity_matrix(Dimension, Dimension); + noalias(identity_matrix) = IdentityMatrix(Dimension); + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix E_matrix = 0.5 * (prod(trans(deformation_gradient_f), deformation_gradient_f) - identity_matrix); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + noalias(r_strain_vector) = MathUtils::StrainTensorToVector(E_matrix, VoigtSize); + } else if (rThisVariable == ALMANSI_STRAIN_VECTOR) { + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix B_tensor = prod(deformation_gradient_f, trans(deformation_gradient_f)); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + AdvancedConstitutiveLawUtilities::CalculateAlmansiStrain(B_tensor, r_strain_vector); + } else if (rThisVariable == HENCKY_STRAIN_VECTOR) { + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + AdvancedConstitutiveLawUtilities::CalculateHenckyStrain(C_tensor, r_strain_vector); + } else if (rThisVariable == BIOT_STRAIN_VECTOR) { + const Matrix& deformation_gradient_f = rParameterValues.GetDeformationGradientF(); + const Matrix C_tensor = prod(trans( deformation_gradient_f), deformation_gradient_f); + Vector& r_strain_vector = rParameterValues.GetStrainVector(); + AdvancedConstitutiveLawUtilities::CalculateBiotStrain(C_tensor, r_strain_vector); + } + + rValue = rParameterValues.GetStrainVector(); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } else if (rThisVariable == STRESSES || + rThisVariable == CAUCHY_STRESS_VECTOR || + rThisVariable == KIRCHHOFF_STRESS_VECTOR || + rThisVariable == PK2_STRESS_VECTOR) { + + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_strain = r_flags.Is( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ); + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, true ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); + + // We compute the stress + if (rThisVariable == STRESSES) { + this->CalculateMaterialResponse(rParameterValues, this->GetStressMeasure()); + } if (rThisVariable == KIRCHHOFF_STRESS_VECTOR) { + this->CalculateMaterialResponseKirchhoff(rParameterValues); + } if (rThisVariable == CAUCHY_STRESS_VECTOR) { + this->CalculateMaterialResponseCauchy(rParameterValues); + } if (rThisVariable == PK2_STRESS_VECTOR) { + this->CalculateMaterialResponsePK2(rParameterValues); + } + rValue = rParameterValues.GetStressVector(); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN, flag_strain ); + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } + + return( rValue ); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Matrix& GenericFiniteStrainKinematicPlasticity:: + CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (rThisVariable == PLASTIC_STRAIN_TENSOR) { + rValue = MathUtils::StrainVectorToTensor(this->GetPlasticStrain()); + } else if (this->Has(rThisVariable)) { + return this->GetValue(rThisVariable, rValue); + } else { + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +int GenericFiniteStrainKinematicPlasticity:: + Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const +{ + const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); + const int check_integrator = TConstLawIntegratorType::Check(rMaterialProperties); + KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; + if ((check_base + check_integrator) > 0) return 1; + + return 0; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; +template class GenericFiniteStrainKinematicPlasticity>>>; + +} // namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_kinematic_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_kinematic_plasticity.h similarity index 95% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_kinematic_plasticity.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_kinematic_plasticity.h index 974d77035016..c84239bab7b9 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_finite_strain_kinematic_plasticity.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/finite_strains/plasticity/generic_finite_strain_kinematic_plasticity.h @@ -1,340 +1,340 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Vicente Mataix Ferrandiz -// Alejandro Cornejo -// -// - -#if !defined(KRATOS_GENERIC_FINITE_STRAIN_KINEMATIC_PLASTICITY_3D_H_INCLUDED) -#define KRATOS_GENERIC_FINITE_STRAIN_KINEMATIC_PLASTICITY_3D_H_INCLUDED - -// System includes - -// External includes - -// Project includes -#include "custom_constitutive/generic_small_strain_kinematic_plasticity.h" - -namespace Kratos -{ -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - - // The size type definition - typedef std::size_t SizeType; - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/** - * @class GenericFiniteStrainKinematicPlasticity - * @ingroup StructuralMechanicsApplication - * @brief This class is the base class which define all the constitutive laws for plasticity in strain framework - * @details This class considers a constitutive law integrator as an intermediate utility to compute the plasticity - * This implementation is based on the Eulerian logarithmic strain measure (COMPUTATIONAL METHODS FOR PLASTICITY THEORY AND APPLICATIONS. EA de Souza Neto,D Perić, DRJ Owen pag. 596). - * @tparam TConstLawIntegratorType The constitutive law integrator considered - * @author Alejandro Cornejo & Vicente Mataix Ferrandiz - */ -template -class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericFiniteStrainKinematicPlasticity - : public GenericSmallStrainKinematicPlasticity -{ -public: - ///@name Type Definitions - ///@{ - - /// The define the working dimension size, already defined in the integrator - static constexpr SizeType Dimension = TConstLawIntegratorType::Dimension; - - /// The define the Voigt size, already defined in the integrator - static constexpr SizeType VoigtSize = TConstLawIntegratorType::VoigtSize; - - /// Definition of the base class - typedef GenericSmallStrainKinematicPlasticity BaseType; - - /// The definition of the Voigt array type - typedef array_1d BoundedArrayType; - - /// The definition of the bounded matrix type - typedef BoundedMatrix BoundedMatrixType; - - /// Counted pointer of GenericFiniteStrainKinematicPlasticity - KRATOS_CLASS_POINTER_DEFINITION(GenericFiniteStrainKinematicPlasticity); - - /// The node definition - typedef Node<3> NodeType; - - /// The geometry definition - typedef Geometry GeometryType; - - ///@} - ///@name Life Cycle - ///@{ - - /** - * Default constructor. - */ - GenericFiniteStrainKinematicPlasticity() - { - } - - /** - * Clone. - */ - ConstitutiveLaw::Pointer Clone() const override - { - return Kratos::make_shared>(*this); - } - - /** - * Copy constructor. - */ - GenericFiniteStrainKinematicPlasticity(const GenericFiniteStrainKinematicPlasticity &rOther) - : BaseType(rOther) - { - } - - /** - * Destructor. - */ - ~GenericFiniteStrainKinematicPlasticity() override - { - } - - ///@} - ///@name Operators - ///@{ - - ///@} - ///@name Operations - ///@{ - - /** - * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - /** - * Finalize the material response in terms of Cauchy stresses - * @see Parameters - */ - void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresFinalizeMaterialResponse() override - { - return true; - } - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresInitializeMaterialResponse() override - { - return false; - } - - /** - * @brief Returns the value of a specified variable (double) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - double& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue) override; - - /** - * @brief Returns the value of a specified variable (vector) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Vector& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (matrix) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Matrix& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) override; - - /** - * @brief This function provides the place to perform checks on the completeness of the input. - * @details It is designed to be called only once (or anyway, not often) typically at the beginning - * of the calculations, so to verify that nothing is missing from the input or that no common error is found. - * @param rMaterialProperties The properties of the material - * @param rElementGeometry The geometry of the element - * @param rCurrentProcessInfo The current process info instance - * @return 0 if OK, 1 otherwise - */ - int Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const override; - - ///@} - ///@name Access - ///@{ - - ///@} - ///@name Inquiry - ///@{ - - ///@} - ///@name Input and output - ///@{ - - ///@} - ///@name Friends - ///@{ - - ///@} - -protected: - ///@name Protected static Member Variables - ///@{ - - ///@} - ///@name Protected member Variables - ///@{ - - ///@} - ///@name Protected Operators - ///@{ - - ///@} - ///@name Protected Operations - ///@{ - - ///@} - ///@name Protected Access - ///@{ - - ///@} - ///@name Protected Inquiry - ///@{ - - ///@} - ///@name Protected LifeCycle - ///@{ - - ///@} - private: - ///@name Static Member Variables - ///@{ - - ///@} - ///@name Member Variables - ///@{ - - ///@} - ///@name Private Operators - ///@{ - - ///@} - ///@name Private Operations - ///@{ - - /** - * @brief This method computes the tangent tensor - * @param rValues The constitutive law parameters and flags - * @param rStressMeasure The stress measure of the law - */ - void CalculateTangentTensor( - ConstitutiveLaw::Parameters &rValues, - const ConstitutiveLaw::StressMeasure& rStressMeasure = ConstitutiveLaw::StressMeasure_Cauchy - ); - - ///@} - ///@name Private Access - ///@{ - - ///@} - ///@name Private Inquiry - ///@{ - - ///@} - ///@name Un accessible methods - ///@{ - - - ///@} - -}; // Class GenericYieldSurface - -} // namespace Kratos -#endif +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Vicente Mataix Ferrandiz +// Alejandro Cornejo +// +// + +#if !defined(KRATOS_GENERIC_FINITE_STRAIN_KINEMATIC_PLASTICITY_3D_H_INCLUDED) +#define KRATOS_GENERIC_FINITE_STRAIN_KINEMATIC_PLASTICITY_3D_H_INCLUDED + +// System includes + +// External includes + +// Project includes +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.h" + +namespace Kratos +{ +///@name Kratos Globals +///@{ + +///@} +///@name Type Definitions +///@{ + + // The size type definition + typedef std::size_t SizeType; + +///@} +///@name Enum's +///@{ + +///@} +///@name Functions +///@{ + +///@} +///@name Kratos Classes +///@{ + +/** + * @class GenericFiniteStrainKinematicPlasticity + * @ingroup StructuralMechanicsApplication + * @brief This class is the base class which define all the constitutive laws for plasticity in strain framework + * @details This class considers a constitutive law integrator as an intermediate utility to compute the plasticity + * This implementation is based on the Eulerian logarithmic strain measure (COMPUTATIONAL METHODS FOR PLASTICITY THEORY AND APPLICATIONS. EA de Souza Neto,D Perić, DRJ Owen pag. 596). + * @tparam TConstLawIntegratorType The constitutive law integrator considered + * @author Alejandro Cornejo & Vicente Mataix Ferrandiz + */ +template +class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericFiniteStrainKinematicPlasticity + : public GenericSmallStrainKinematicPlasticity +{ +public: + ///@name Type Definitions + ///@{ + + /// The define the working dimension size, already defined in the integrator + static constexpr SizeType Dimension = TConstLawIntegratorType::Dimension; + + /// The define the Voigt size, already defined in the integrator + static constexpr SizeType VoigtSize = TConstLawIntegratorType::VoigtSize; + + /// Definition of the base class + typedef GenericSmallStrainKinematicPlasticity BaseType; + + /// The definition of the Voigt array type + typedef array_1d BoundedArrayType; + + /// The definition of the bounded matrix type + typedef BoundedMatrix BoundedMatrixType; + + /// Counted pointer of GenericFiniteStrainKinematicPlasticity + KRATOS_CLASS_POINTER_DEFINITION(GenericFiniteStrainKinematicPlasticity); + + /// The node definition + typedef Node<3> NodeType; + + /// The geometry definition + typedef Geometry GeometryType; + + ///@} + ///@name Life Cycle + ///@{ + + /** + * Default constructor. + */ + GenericFiniteStrainKinematicPlasticity() + { + } + + /** + * Clone. + */ + ConstitutiveLaw::Pointer Clone() const override + { + return Kratos::make_shared>(*this); + } + + /** + * Copy constructor. + */ + GenericFiniteStrainKinematicPlasticity(const GenericFiniteStrainKinematicPlasticity &rOther) + : BaseType(rOther) + { + } + + /** + * Destructor. + */ + ~GenericFiniteStrainKinematicPlasticity() override + { + } + + ///@} + ///@name Operators + ///@{ + + ///@} + ///@name Operations + ///@{ + + /** + * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + /** + * Finalize the material response in terms of Cauchy stresses + * @see Parameters + */ + void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresFinalizeMaterialResponse() override + { + return true; + } + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresInitializeMaterialResponse() override + { + return false; + } + + /** + * @brief Returns the value of a specified variable (double) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + double& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue) override; + + /** + * @brief Returns the value of a specified variable (vector) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Vector& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (matrix) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Matrix& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) override; + + /** + * @brief This function provides the place to perform checks on the completeness of the input. + * @details It is designed to be called only once (or anyway, not often) typically at the beginning + * of the calculations, so to verify that nothing is missing from the input or that no common error is found. + * @param rMaterialProperties The properties of the material + * @param rElementGeometry The geometry of the element + * @param rCurrentProcessInfo The current process info instance + * @return 0 if OK, 1 otherwise + */ + int Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const override; + + ///@} + ///@name Access + ///@{ + + ///@} + ///@name Inquiry + ///@{ + + ///@} + ///@name Input and output + ///@{ + + ///@} + ///@name Friends + ///@{ + + ///@} + +protected: + ///@name Protected static Member Variables + ///@{ + + ///@} + ///@name Protected member Variables + ///@{ + + ///@} + ///@name Protected Operators + ///@{ + + ///@} + ///@name Protected Operations + ///@{ + + ///@} + ///@name Protected Access + ///@{ + + ///@} + ///@name Protected Inquiry + ///@{ + + ///@} + ///@name Protected LifeCycle + ///@{ + + ///@} + private: + ///@name Static Member Variables + ///@{ + + ///@} + ///@name Member Variables + ///@{ + + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + + /** + * @brief This method computes the tangent tensor + * @param rValues The constitutive law parameters and flags + * @param rStressMeasure The stress measure of the law + */ + void CalculateTangentTensor( + ConstitutiveLaw::Parameters &rValues, + const ConstitutiveLaw::StressMeasure& rStressMeasure = ConstitutiveLaw::StressMeasure_Cauchy + ); + + ///@} + ///@name Private Access + ///@{ + + ///@} + ///@name Private Inquiry + ///@{ + + ///@} + ///@name Un accessible methods + ///@{ + + + ///@} + +}; // Class GenericYieldSurface + +} // namespace Kratos +#endif diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_anisotropic_3d_law.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/anisotropy_orthotropy/generic_anisotropic_3d_law.cpp similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_anisotropic_3d_law.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/anisotropy_orthotropy/generic_anisotropic_3d_law.cpp diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_anisotropic_3d_law.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/anisotropy_orthotropy/generic_anisotropic_3d_law.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_anisotropic_3d_law.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/anisotropy_orthotropy/generic_anisotropic_3d_law.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/d_plus_d_minus_damage_masonry_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/d_plus_d_minus_damage_masonry_3d.cpp similarity index 97% rename from applications/ConstitutiveLawsApplication/custom_constitutive/d_plus_d_minus_damage_masonry_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/d_plus_d_minus_damage_masonry_3d.cpp index 974c2528433d..c3d702fae225 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/d_plus_d_minus_damage_masonry_3d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/d_plus_d_minus_damage_masonry_3d.cpp @@ -1,746 +1,746 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Philip Kalkbrenner -// Alejandro Cornejo -// -// - -// System includes - -// External includes - -// Project includes - -#include "includes/checks.h" -#include "custom_utilities/tangent_operator_calculator_utility.h" -#include "custom_utilities/advanced_constitutive_law_utilities.h" -#include "constitutive_laws_application_variables.h" -#include "custom_constitutive/d_plus_d_minus_damage_masonry_3d.h" - -namespace Kratos -{ - -DamageDPlusDMinusMasonry3DLaw::DamageDPlusDMinusMasonry3DLaw() { - -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ - this->CalculateMaterialResponseCauchy(rValues); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) -{ - this->CalculateMaterialResponseCauchy(rValues); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) -{ - this->CalculateMaterialResponseCauchy(rValues); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) -{ - KRATOS_TRY - - // Integrate Stress Damage - Vector& integrated_stress_vector = rValues.GetStressVector(); - array_1d auxiliar_integrated_stress_vector = integrated_stress_vector; - Matrix& r_tangent_tensor = rValues.GetConstitutiveMatrix(); // todo modify after integration - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - - //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN - if( r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { - this->CalculateValue(rValues, STRAIN, r_strain_vector); - } - - // Elastic Matrix - if( r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); - } - - // We compute the stress - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS)) { - // Elastic Matrix - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); - - DamageParameters damage_parameters; - damage_parameters.ThresholdTension = this->GetTensionThreshold(); - damage_parameters.DamageTension = this->GetTensionDamage(); - damage_parameters.ThresholdCompression = this->GetCompressionThreshold(); - damage_parameters.DamageCompression = this->GetCompressionDamage(); - - // S0 = C0:E - array_1d predictive_stress_vector = prod(r_constitutive_matrix, r_strain_vector); - - // Perform the separation of the Stress in tension and compression - array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; - AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, predictive_stress_vector_tension, predictive_stress_vector_compression); - noalias(damage_parameters.TensionStressVector) = predictive_stress_vector_tension; - noalias(damage_parameters.CompressionStressVector) = predictive_stress_vector_compression; - - // Compute the equivalent uniaxial Stress in tension and compression - this->CalculateEquivalentStressTension(predictive_stress_vector, damage_parameters.UniaxialTensionStress, rValues); - - this->CalculateEquivalentStressCompression(predictive_stress_vector, damage_parameters.UniaxialCompressionStress, rValues); - - const double F_tension = damage_parameters.UniaxialTensionStress - damage_parameters.ThresholdTension; - const double F_compression = damage_parameters.UniaxialCompressionStress - damage_parameters.ThresholdCompression; - const bool is_damaging_tension = this->IntegrateStressTensionIfNecessary(F_tension, damage_parameters, predictive_stress_vector_tension, predictive_stress_vector, rValues); - const bool is_damaging_compression = this->IntegrateStressCompressionIfNecessary(F_compression, damage_parameters, predictive_stress_vector_compression, predictive_stress_vector, rValues); - - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - if (is_damaging_tension || is_damaging_compression) { // Perturbations - this->CalculateTangentTensor(rValues); - } else { // Secant matrix - this->CalculateSecantTensor(rValues, r_tangent_tensor); - } - } - this->CalculateIntegratedStressVector(integrated_stress_vector, damage_parameters, rValues); - } - KRATOS_CATCH("") -} -/***********************************************************************************/ -/***********************************************************************************/ -bool DamageDPlusDMinusMasonry3DLaw::IntegrateStressTensionIfNecessary( - const double F_tension, - DamageParameters& rParameters, - array_1d& rIntegratedStressVectorTension, - array_1d effective_stress_vector, - ConstitutiveLaw::Parameters& rValues) -{ - bool is_damaging = false; - const Flags& r_constitutive_law_options = rValues.GetOptions(); - if (F_tension <= tolerance) { //Elastic Case - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - this->SetNonConvTensionDamage(rParameters.DamageTension); - this->SetNonConvTensionThreshold(rParameters.ThresholdTension); - } - rIntegratedStressVectorTension *= (1.0 - rParameters.DamageTension); - } else { // Increasing damage... - const double characteristic_length = AdvancedConstitutiveLawUtilities<3>::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); - // This routine updates the IntegratedStressVectorTension to verify the yield surf - this->IntegrateStressVectorTension( - rIntegratedStressVectorTension, - rParameters.UniaxialTensionStress, - rParameters.DamageTension, - rParameters.ThresholdTension, - rValues, characteristic_length); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - this->SetNonConvTensionDamage(rParameters.DamageTension); - this->SetNonConvTensionThreshold(rParameters.UniaxialTensionStress); - } - is_damaging = true; - } - // Just for Plotting - - double uniaxial_stress_tension = 0.0; - this->CalculateEquivalentStressTension(effective_stress_vector, uniaxial_stress_tension, rValues); - this->SetTensionStress(uniaxial_stress_tension); - - return is_damaging; -} -/***********************************************************************************/ -/***********************************************************************************/ -bool DamageDPlusDMinusMasonry3DLaw::IntegrateStressCompressionIfNecessary( - const double F_compression, - DamageParameters& rParameters, - array_1d& rIntegratedStressVectorCompression, - array_1d effective_stress_vector, - ConstitutiveLaw::Parameters& rValues) -{ - bool is_damaging = false; - const Flags& r_constitutive_law_options = rValues.GetOptions(); - if (F_compression <= tolerance) { // Elastic case - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - this->SetNonConvCompressionDamage(rParameters.DamageCompression); - this->SetNonConvCompressionThreshold(rParameters.ThresholdCompression); - } - rIntegratedStressVectorCompression *= (1.0 - rParameters.DamageCompression); - } else { // Increasing damage... - const double characteristic_length = AdvancedConstitutiveLawUtilities<3>::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); - - // This routine updates the IntegratedStressVectorCompression to verify the yield surf - this->IntegrateStressVectorCompression( - rIntegratedStressVectorCompression, - rParameters.UniaxialCompressionStress, - rParameters.DamageCompression, - rParameters.ThresholdCompression, - rValues, characteristic_length); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - this->SetNonConvCompressionDamage(rParameters.DamageCompression); - this->SetNonConvCompressionThreshold(rParameters.UniaxialCompressionStress); - } - is_damaging = true; - } - // Just for Plotting - double uniaxial_stress_compression = 0.0; - this->CalculateEquivalentStressCompression(effective_stress_vector, uniaxial_stress_compression, rValues); - this->SetCompressionStress(uniaxial_stress_compression); - return is_damaging; -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateIntegratedStressVector( - Vector& rIntegratedStressVector, - const DamageParameters& rParameters, - ConstitutiveLaw::Parameters& rValues) -{ - rIntegratedStressVector = (1.0 - rParameters.DamageTension) * rParameters.TensionStressVector + - (1.0 - rParameters.DamageCompression) * rParameters.CompressionStressVector; -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateTangentTensor(ConstitutiveLaw::Parameters& rValues) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - - const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; - const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; - - if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { - KRATOS_ERROR << "Analytic solution not available" << std::endl; - } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (first order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); - } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (second order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); - } -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateSecantTensor(ConstitutiveLaw::Parameters& rValues, Matrix& rSecantTensor) -{ - this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, rSecantTensor); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::InitializeMaterial( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const Vector& rShapeFunctionsValues) -{ - // We construct the CL parameters - double initial_threshold_tension = rMaterialProperties[YIELD_STRESS_TENSION]; - double initial_threshold_compression = rMaterialProperties[DAMAGE_ONSET_STRESS_COMPRESSION]; - - this->SetTensionThreshold(initial_threshold_tension); - this->SetCompressionThreshold(initial_threshold_compression); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::FinalizeSolutionStep( - const Properties& rMaterialProperties, - const GeometryType &rElementGeometry, - const Vector& rShapeFunctionsValues, - const ProcessInfo& rCurrentProcessInfo - ) -{ - this->SetTensionDamage(this->GetNonConvTensionDamage()); - this->SetTensionThreshold(this->GetNonConvTensionThreshold()); - - this->SetCompressionDamage(this->GetNonConvCompressionDamage()); - this->SetCompressionThreshold(this->GetNonConvCompressionThreshold()); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) -{ -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) -{ -} -/***********************************************************************************/ -/***********************************************************************************/ -bool DamageDPlusDMinusMasonry3DLaw::Has(const Variable& rThisVariable) -{ - if (rThisVariable == DAMAGE_TENSION) { - return true; - } else if (rThisVariable == THRESHOLD_TENSION) { - return true; - } else if (rThisVariable == DAMAGE_COMPRESSION) { - return true; - } else if (rThisVariable == THRESHOLD_COMPRESSION) { - return true; - } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { - return true; - } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { - return true; - } else { - return BaseType::Has(rThisVariable); - } - return false; -} -/***********************************************************************************/ -/***********************************************************************************/ -bool DamageDPlusDMinusMasonry3DLaw::Has(const Variable& rThisVariable) -{ - if(rThisVariable == INTERNAL_VARIABLES){ - return true; - } - return BaseType::Has(rThisVariable); -} -/***********************************************************************************/ -/***********************************************************************************/ -bool DamageDPlusDMinusMasonry3DLaw::Has(const Variable& rThisVariable) -{ - if(rThisVariable == INTEGRATED_STRESS_TENSOR) { - // explicitly returning "false", so we know we must call CalculateValue(...) - return false; - } - return BaseType::Has(rThisVariable); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::SetValue( - const Variable& rThisVariable, - const double& rValue, - const ProcessInfo& rCurrentProcessInfo - ) -{ - if (rThisVariable == DAMAGE_TENSION) { - mTensionDamage = rValue; - } else if (rThisVariable == THRESHOLD_TENSION) { - mTensionThreshold = rValue; - } else if (rThisVariable == DAMAGE_COMPRESSION) { - mCompressionDamage = rValue; - } else if (rThisVariable == THRESHOLD_COMPRESSION) { - mCompressionThreshold = rValue; - } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { - mCompressionUniaxialStress = rValue; - } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { - mTensionUniaxialStress = rValue; - } else { - return BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); - } -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::SetValue( - const Variable& rThisVariable, - const Vector& rValue, - const ProcessInfo& rCurrentProcessInfo - ) -{ - if (rThisVariable == INTERNAL_VARIABLES) { - mTensionDamage = rValue[0]; - mTensionThreshold = rValue[1]; - mCompressionDamage = rValue[2]; - mCompressionThreshold = rValue[3]; - mCompressionUniaxialStress = rValue[4]; - mTensionUniaxialStress = rValue[5]; - } -} -/***********************************************************************************/ -/***********************************************************************************/ -double& DamageDPlusDMinusMasonry3DLaw::GetValue( - const Variable& rThisVariable, - double& rValue - ) -{ - if (rThisVariable == DAMAGE_TENSION) { - rValue = mTensionDamage; - } else if (rThisVariable == THRESHOLD_TENSION) { - rValue = mTensionThreshold; - } else if (rThisVariable == DAMAGE_COMPRESSION) { - rValue = mCompressionDamage; - } else if (rThisVariable == THRESHOLD_COMPRESSION) { - rValue = mCompressionThreshold; - } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { - rValue = mCompressionUniaxialStress; - } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { - rValue = mTensionUniaxialStress; - } else { - return BaseType::GetValue(rThisVariable, rValue); - } - return rValue; -} -/***********************************************************************************/ -/***********************************************************************************/ -Vector& DamageDPlusDMinusMasonry3DLaw::GetValue( - const Variable& rThisVariable, - Vector& rValue - ) -{ - if(rThisVariable == INTERNAL_VARIABLES){ - rValue.resize(6); - rValue[0] = mTensionDamage; - rValue[1] = mTensionThreshold; - rValue[2] = mCompressionDamage; - rValue[3] = mCompressionThreshold; - rValue[4] = mCompressionUniaxialStress; - rValue[5] = mTensionUniaxialStress; - } - return rValue; -} -/***********************************************************************************/ -/***********************************************************************************/ -Matrix& DamageDPlusDMinusMasonry3DLaw::GetValue( - const Variable& rThisVariable, - Matrix& rValue - ) -{ - return BaseType::GetValue(rThisVariable, rValue); -} -/***********************************************************************************/ -/***********************************************************************************/ -double& DamageDPlusDMinusMasonry3DLaw::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue - ) -{ - return this->GetValue(rThisVariable, rValue); -} -/***********************************************************************************/ -/***********************************************************************************/ -Vector& DamageDPlusDMinusMasonry3DLaw::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) -{ - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); -} -/***********************************************************************************/ -/***********************************************************************************/ -Matrix& DamageDPlusDMinusMasonry3DLaw::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) -{ - if (rThisVariable == INTEGRATED_STRESS_TENSOR) { - //1.-Compute total deformation gradient - const Matrix& deformation_gradient_F = rParameterValues.GetDeformationGradientF(); - //2.-Right Cauchy-Green tensor C - Matrix right_cauchy_green = prod(trans(deformation_gradient_F), deformation_gradient_F); - Vector strain_vector = ZeroVector(6); - - //E= 0.5*(FT*F-1) or E = 0.5*(C-1) - strain_vector[0] = 0.5 * (right_cauchy_green(0, 0) - 1.00); - strain_vector[1] = 0.5 * (right_cauchy_green(1, 1) - 1.00); - strain_vector[2] = 0.5 * (right_cauchy_green(2, 2) - 1.00); - strain_vector[3] = right_cauchy_green(0, 1); // xy - strain_vector[4] = right_cauchy_green(1, 2); // yz - strain_vector[5] = right_cauchy_green(0, 2); // xz - - Matrix constitutive_matrix; - this->CalculateElasticMatrix(constitutive_matrix, rParameterValues); - - Vector stress = prod(constitutive_matrix, strain_vector); - //stress *= (1.0 - mDamage); - rValue = MathUtils::StressVectorToTensor(stress); - return rValue; - } else if (this->Has(rThisVariable)) { - return this->GetValue(rThisVariable, rValue); - } else { - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - return rValue; -} -/***********************************************************************************/ -/***********************************************************************************/ -int DamageDPlusDMinusMasonry3DLaw::Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const -{ - const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); - - if (check_base > 0) return 1; - return 0; -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateEquivalentStressTension( - array_1d& rPredictiveStressVector, - double& rEquivalentStress, - ConstitutiveLaw::Parameters& rValues - ) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - - const double yield_tension = r_material_properties[YIELD_STRESS_TENSION]; - const double yield_compression = r_material_properties[YIELD_STRESS_COMPRESSION]; - const double biaxial_compression_multiplier = r_material_properties[BIAXIAL_COMPRESSION_MULTIPLIER]; - const double alpha = (biaxial_compression_multiplier - 1.0)/(2 * biaxial_compression_multiplier - 1.0); - const double alpha_factor = 1.0 / (1.0 - alpha); - const double beta = (yield_compression / yield_tension) * (1.0 - alpha) - (1.0 + alpha); - - double I1,J2; - AdvancedConstitutiveLawUtilities::CalculateI1Invariant(rPredictiveStressVector, I1); - array_1d deviator = ZeroVector(VoigtSize); - AdvancedConstitutiveLawUtilities::CalculateJ2Invariant(rPredictiveStressVector, I1, deviator, J2); - - array_1d principal_stress_vector; - AdvancedConstitutiveLawUtilities::CalculatePrincipalStresses(principal_stress_vector, rPredictiveStressVector); - const double principal_stress_1 = principal_stress_vector[0]; - - if (principal_stress_1 > 0.0){ - rEquivalentStress = alpha_factor * (alpha*I1 + std::sqrt(3.0 * J2) + beta * principal_stress_1) * (yield_tension / yield_compression); - } -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateEquivalentStressCompression( - array_1d& rPredictiveStressVector, - double& rEquivalentStress, - ConstitutiveLaw::Parameters& rValues - ) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - - const double yield_tension = r_material_properties[YIELD_STRESS_TENSION]; - const double yield_compression = r_material_properties[YIELD_STRESS_COMPRESSION]; - const double biaxial_compression_multiplier = r_material_properties[BIAXIAL_COMPRESSION_MULTIPLIER]; - const double shear_compression_reductor = r_material_properties[SHEAR_COMPRESSION_REDUCTOR]; - const double rho = r_material_properties[TRIAXIAL_COMPRESSION_COEFFICIENT]; - - KRATOS_ERROR_IF(shear_compression_reductor < 0.0)<< "The SHEAR_COMPRESSION_REDUCTOR is supposed to be a value between 0.0 and 1.0" << std::endl; - KRATOS_ERROR_IF(shear_compression_reductor > 1.0)<< "The SHEAR_COMPRESSION_REDUCTOR is supposed to be a value between 0.0 and 1.0" << std::endl; - KRATOS_ERROR_IF(rho <= 0.5)<< "The TRIAXIAL_COMPRESSION_COEFFICIENT is supposed to be a value between 0.5 and 1.0" << std::endl; - KRATOS_ERROR_IF(rho > 1.0)<< "The TRIAXIAL_COMPRESSION_COEFFICIENT is supposed to be a value between 0.5 and 1.0" << std::endl; - - const double alpha = (biaxial_compression_multiplier - 1.0)/(2.0* biaxial_compression_multiplier - 1.0); - const double alpha_factor = 1.0 / (1.0 - alpha); - const double beta = (yield_compression / yield_tension) * (1.0 - alpha) - (1.0 + alpha); - const double gamma = 3.0 * (1.0 - rho) / (2.0 * rho - 1.0); - - double I1,J2; - AdvancedConstitutiveLawUtilities::CalculateI1Invariant(rPredictiveStressVector, I1); - array_1d deviator = ZeroVector(VoigtSize); - AdvancedConstitutiveLawUtilities::CalculateJ2Invariant(rPredictiveStressVector, I1, deviator, J2); - - array_1d principal_stress_vector; - AdvancedConstitutiveLawUtilities::CalculatePrincipalStresses(principal_stress_vector, rPredictiveStressVector); - const double principal_stress_1 = principal_stress_vector[0]; - const double principal_stress_3 = principal_stress_vector[2]; - const double smax_macaulay = std::max(principal_stress_1, 0.0); - const double smax_macaulay_neg = std::abs(std::min(principal_stress_1, 0.0)); - - if (principal_stress_3 < 0.0){ - rEquivalentStress = alpha_factor * (alpha*I1 + std::sqrt(3.0 * J2) + - beta * shear_compression_reductor * smax_macaulay + - gamma * smax_macaulay_neg); - } -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::IntegrateStressVectorTension( - array_1d& rPredictiveStressVector, - const double UniaxialStress, - double& rDamage, - double& rThreshold, - ConstitutiveLaw::Parameters& rValues, - const double CharacteristicLength) -{ - double damage_parameter; - this->CalculateDamageParameterTension(rValues, damage_parameter, CharacteristicLength); - this->CalculateExponentialDamageTension(UniaxialStress, rThreshold, damage_parameter, CharacteristicLength, rValues, rDamage); - - rPredictiveStressVector *= (1.0 - rDamage); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateDamageParameterTension( - ConstitutiveLaw::Parameters& rValues, - double& rAParameter, - const double CharacteristicLength) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - - const double Gf = r_material_properties[FRACTURE_ENERGY_TENSION]; - const double E = r_material_properties[YOUNG_MODULUS]; - const double yield_tension = r_material_properties[YIELD_STRESS_TENSION]; - const double l_mat = 2.0 * E * Gf / (std::pow(yield_tension, 2)); - - KRATOS_ERROR_IF(CharacteristicLength >= l_mat) << "FRACTURE_ENERGY_TENSION is too low: 2*E*Gt/(ft*ft) = " << l_mat - << ", Characteristic Length = " << CharacteristicLength << std::endl; - - rAParameter = 2.0 * (CharacteristicLength / (l_mat - CharacteristicLength)); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateExponentialDamageTension( - const double UniaxialStress, - const double Threshold, - const double DamageParameter, - const double CharacteristicLength, - ConstitutiveLaw::Parameters& rValues, - double& rDamage) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - const double initial_threshold = r_material_properties[YIELD_STRESS_TENSION]; - rDamage = 1.0 - (initial_threshold / UniaxialStress) * std::exp(DamageParameter * (1.0 - (UniaxialStress / initial_threshold))); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::IntegrateStressVectorCompression( - array_1d& rPredictiveStressVector, - const double UniaxialStress, - double& rDamage, - double& rThreshold, - ConstitutiveLaw::Parameters& rValues, - const double CharacteristicLength) -{ - this->CalculateBezier3DamageCompression(UniaxialStress, rDamage, rThreshold, CharacteristicLength, rValues); - rPredictiveStressVector *= (1.0 - rDamage); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::CalculateBezier3DamageCompression( - const double UniaxialStress, - double& rDamage, - double& rThreshold, - const double CharacteristicLength, - ConstitutiveLaw::Parameters& rValues) -{ - // Call the Material Properties - const Properties& r_material_properties = rValues.GetMaterialProperties(); - const double young_modulus = r_material_properties[YOUNG_MODULUS]; - const double stress_damage_onset = r_material_properties[DAMAGE_ONSET_STRESS_COMPRESSION]; - const double yield_stress_compression = r_material_properties[YIELD_STRESS_COMPRESSION]; - const double yield_strain_compression = r_material_properties[YIELD_STRAIN_COMPRESSION]; - const double residual_stress_compression = r_material_properties[RESIDUAL_STRESS_COMPRESSION]; - const double bezier_controller_c1 = r_material_properties[BEZIER_CONTROLLER_C1]; - const double bezier_controller_c2 = r_material_properties[BEZIER_CONTROLLER_C2]; - const double bezier_controller_c3 = r_material_properties[BEZIER_CONTROLLER_C3]; - const double fracture_energy_compression = r_material_properties[FRACTURE_ENERGY_COMPRESSION]; - - // Calculate missing Bezier Determinators - const double bezier_control_alpha = 2.0 * (yield_strain_compression - (yield_stress_compression / young_modulus)); - const double strain_damage_onset = stress_damage_onset / young_modulus; - const double bezier_control_strain_i = yield_stress_compression / young_modulus; - const double bezier_control_stress_k = residual_stress_compression + - (yield_stress_compression - residual_stress_compression) * bezier_controller_c1; - double bezier_control_strain_j = yield_strain_compression + bezier_control_alpha * bezier_controller_c2; - double bezier_control_strain_k = 3.0 * yield_strain_compression - 2.0 * yield_stress_compression / young_modulus; - double bezier_control_strain_r = ( (bezier_control_strain_k - bezier_control_strain_j) * - (yield_stress_compression - residual_stress_compression)/(yield_stress_compression - bezier_control_stress_k) ) - + bezier_control_strain_j; - double bezier_control_strain_u = bezier_control_strain_r * bezier_controller_c3; - const double specific_fracture_energy_compression = fracture_energy_compression / CharacteristicLength; - - // Perform the Energy Regularization of the Bezier Determinators - this->RegulateBezierDeterminators( - specific_fracture_energy_compression, - yield_stress_compression, bezier_control_stress_k, residual_stress_compression, yield_strain_compression, - bezier_control_strain_j, bezier_control_strain_k, bezier_control_strain_r, bezier_control_strain_u); - - // Compute rDamage - const double strain_like_counterpart = UniaxialStress / young_modulus; - double damage_variable_bezier = UniaxialStress; - if (strain_like_counterpart <= yield_strain_compression) { - damage_variable_bezier = this->EvaluateBezierCurve( - strain_like_counterpart, - strain_damage_onset, bezier_control_strain_i, yield_strain_compression, - stress_damage_onset, yield_stress_compression, yield_stress_compression); - } else if (strain_like_counterpart <= bezier_control_strain_k) { - damage_variable_bezier = this->EvaluateBezierCurve( - strain_like_counterpart, - yield_strain_compression, bezier_control_strain_j, bezier_control_strain_k, - yield_stress_compression, yield_stress_compression, bezier_control_stress_k); - } else if (strain_like_counterpart <= bezier_control_strain_u) { - damage_variable_bezier = this->EvaluateBezierCurve( - strain_like_counterpart, - bezier_control_strain_k, bezier_control_strain_r, bezier_control_strain_u, - bezier_control_stress_k, residual_stress_compression, residual_stress_compression); - } else { - damage_variable_bezier = residual_stress_compression; - } - - rDamage = 1.0 - damage_variable_bezier / UniaxialStress; -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::RegulateBezierDeterminators( - const double specific_dissipated_fracture_energy, - const double sp, const double sk, const double sr, const double ep, - double& ej, double& ek, double& er, double& eu) -{ - const double bezier_energy_1 = sp * ep / 2.0; - double bezier_energy_2; - double bezier_energy_3; - this->ComputeBezierEnergy(bezier_energy_2, ep, ej, ek, sp, sp, sk); - this->ComputeBezierEnergy(bezier_energy_3, ek, er, eu, sk, sr, sr); - const double BezierEnergy = bezier_energy_1 + bezier_energy_2 + bezier_energy_3; - - const double bezier_stretcher = ((specific_dissipated_fracture_energy - bezier_energy_1) / - (BezierEnergy - bezier_energy_1)) - 1.0; - - KRATOS_ERROR_IF(bezier_stretcher <= -1.0) << "Error in Compression Damage: FRACTURE_ENERGY_COMPRESSION is too low, increase it to avoid constitutive snap-back!" << std::endl; - - // Update Strain values - ej += bezier_stretcher * (ej - ep); - ek += bezier_stretcher * (ek - ep); - er += bezier_stretcher * (er - ep); - eu += bezier_stretcher * (eu - ep); -} -/***********************************************************************************/ -/***********************************************************************************/ -void DamageDPlusDMinusMasonry3DLaw::ComputeBezierEnergy( - double& rBezier_energy, - const double x1, const double x2, const double x3, - const double y1, const double y2, const double y3) -{ - rBezier_energy = (x2*y1/3.0) + (x3*y1/6.0) - (x2*y3/3) + (x3*y2/3) + (x3*y3/2.0) - x1*((y1/2.0) + (y2/3.0) + (y3/6.0)); -} -/***********************************************************************************/ -/***********************************************************************************/ -double DamageDPlusDMinusMasonry3DLaw::EvaluateBezierCurve( - const double Xi, - const double x1, double x2, const double x3, - const double y1, const double y2, const double y3) -{ - double A = x1 - 2.0 * x2 + x3; - double B = 2.0 * (x2 - x1); - double C = x1 - Xi; - if (std::abs(A) < 1.0e-12) { - x2 = x2 + 1.0E-6 * (x3-x1); - A = x1 - 2.0 * x2 + x3; - B = 2.0 * (x2 - x1); - C = x1 - Xi; - } - - const double D = B * B - 4.0 * A * C; - const double t = (-B + std::sqrt(D)) / (2.0 * A); - const double bezier_damage_parameter = (y1 - 2.0 * y2 + y3) * t * t + (y2 - y1) * 2.0 * t + y1; - return bezier_damage_parameter; -} -/***********************************************************************************/ -/***********************************************************************************/ - -}// namespace Kratos +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Philip Kalkbrenner +// Alejandro Cornejo +// +// + +// System includes + +// External includes + +// Project includes + +#include "includes/checks.h" +#include "custom_utilities/tangent_operator_calculator_utility.h" +#include "custom_utilities/advanced_constitutive_law_utilities.h" +#include "constitutive_laws_application_variables.h" +#include "d_plus_d_minus_damage_masonry_3d.h" + +namespace Kratos +{ + +DamageDPlusDMinusMasonry3DLaw::DamageDPlusDMinusMasonry3DLaw() { + +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ + this->CalculateMaterialResponseCauchy(rValues); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) +{ + this->CalculateMaterialResponseCauchy(rValues); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) +{ + this->CalculateMaterialResponseCauchy(rValues); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) +{ + KRATOS_TRY + + // Integrate Stress Damage + Vector& integrated_stress_vector = rValues.GetStressVector(); + array_1d auxiliar_integrated_stress_vector = integrated_stress_vector; + Matrix& r_tangent_tensor = rValues.GetConstitutiveMatrix(); // todo modify after integration + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + + //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN + if( r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { + this->CalculateValue(rValues, STRAIN, r_strain_vector); + } + + // Elastic Matrix + if( r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); + } + + // We compute the stress + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS)) { + // Elastic Matrix + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); + + DamageParameters damage_parameters; + damage_parameters.ThresholdTension = this->GetTensionThreshold(); + damage_parameters.DamageTension = this->GetTensionDamage(); + damage_parameters.ThresholdCompression = this->GetCompressionThreshold(); + damage_parameters.DamageCompression = this->GetCompressionDamage(); + + // S0 = C0:E + array_1d predictive_stress_vector = prod(r_constitutive_matrix, r_strain_vector); + + // Perform the separation of the Stress in tension and compression + array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; + AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, predictive_stress_vector_tension, predictive_stress_vector_compression); + noalias(damage_parameters.TensionStressVector) = predictive_stress_vector_tension; + noalias(damage_parameters.CompressionStressVector) = predictive_stress_vector_compression; + + // Compute the equivalent uniaxial Stress in tension and compression + this->CalculateEquivalentStressTension(predictive_stress_vector, damage_parameters.UniaxialTensionStress, rValues); + + this->CalculateEquivalentStressCompression(predictive_stress_vector, damage_parameters.UniaxialCompressionStress, rValues); + + const double F_tension = damage_parameters.UniaxialTensionStress - damage_parameters.ThresholdTension; + const double F_compression = damage_parameters.UniaxialCompressionStress - damage_parameters.ThresholdCompression; + const bool is_damaging_tension = this->IntegrateStressTensionIfNecessary(F_tension, damage_parameters, predictive_stress_vector_tension, predictive_stress_vector, rValues); + const bool is_damaging_compression = this->IntegrateStressCompressionIfNecessary(F_compression, damage_parameters, predictive_stress_vector_compression, predictive_stress_vector, rValues); + + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + if (is_damaging_tension || is_damaging_compression) { // Perturbations + this->CalculateTangentTensor(rValues); + } else { // Secant matrix + this->CalculateSecantTensor(rValues, r_tangent_tensor); + } + } + this->CalculateIntegratedStressVector(integrated_stress_vector, damage_parameters, rValues); + } + KRATOS_CATCH("") +} +/***********************************************************************************/ +/***********************************************************************************/ +bool DamageDPlusDMinusMasonry3DLaw::IntegrateStressTensionIfNecessary( + const double F_tension, + DamageParameters& rParameters, + array_1d& rIntegratedStressVectorTension, + array_1d effective_stress_vector, + ConstitutiveLaw::Parameters& rValues) +{ + bool is_damaging = false; + const Flags& r_constitutive_law_options = rValues.GetOptions(); + if (F_tension <= tolerance) { //Elastic Case + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + this->SetNonConvTensionDamage(rParameters.DamageTension); + this->SetNonConvTensionThreshold(rParameters.ThresholdTension); + } + rIntegratedStressVectorTension *= (1.0 - rParameters.DamageTension); + } else { // Increasing damage... + const double characteristic_length = AdvancedConstitutiveLawUtilities<3>::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); + // This routine updates the IntegratedStressVectorTension to verify the yield surf + this->IntegrateStressVectorTension( + rIntegratedStressVectorTension, + rParameters.UniaxialTensionStress, + rParameters.DamageTension, + rParameters.ThresholdTension, + rValues, characteristic_length); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + this->SetNonConvTensionDamage(rParameters.DamageTension); + this->SetNonConvTensionThreshold(rParameters.UniaxialTensionStress); + } + is_damaging = true; + } + // Just for Plotting + + double uniaxial_stress_tension = 0.0; + this->CalculateEquivalentStressTension(effective_stress_vector, uniaxial_stress_tension, rValues); + this->SetTensionStress(uniaxial_stress_tension); + + return is_damaging; +} +/***********************************************************************************/ +/***********************************************************************************/ +bool DamageDPlusDMinusMasonry3DLaw::IntegrateStressCompressionIfNecessary( + const double F_compression, + DamageParameters& rParameters, + array_1d& rIntegratedStressVectorCompression, + array_1d effective_stress_vector, + ConstitutiveLaw::Parameters& rValues) +{ + bool is_damaging = false; + const Flags& r_constitutive_law_options = rValues.GetOptions(); + if (F_compression <= tolerance) { // Elastic case + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + this->SetNonConvCompressionDamage(rParameters.DamageCompression); + this->SetNonConvCompressionThreshold(rParameters.ThresholdCompression); + } + rIntegratedStressVectorCompression *= (1.0 - rParameters.DamageCompression); + } else { // Increasing damage... + const double characteristic_length = AdvancedConstitutiveLawUtilities<3>::CalculateCharacteristicLengthOnReferenceConfiguration(rValues.GetElementGeometry()); + + // This routine updates the IntegratedStressVectorCompression to verify the yield surf + this->IntegrateStressVectorCompression( + rIntegratedStressVectorCompression, + rParameters.UniaxialCompressionStress, + rParameters.DamageCompression, + rParameters.ThresholdCompression, + rValues, characteristic_length); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + this->SetNonConvCompressionDamage(rParameters.DamageCompression); + this->SetNonConvCompressionThreshold(rParameters.UniaxialCompressionStress); + } + is_damaging = true; + } + // Just for Plotting + double uniaxial_stress_compression = 0.0; + this->CalculateEquivalentStressCompression(effective_stress_vector, uniaxial_stress_compression, rValues); + this->SetCompressionStress(uniaxial_stress_compression); + return is_damaging; +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateIntegratedStressVector( + Vector& rIntegratedStressVector, + const DamageParameters& rParameters, + ConstitutiveLaw::Parameters& rValues) +{ + rIntegratedStressVector = (1.0 - rParameters.DamageTension) * rParameters.TensionStressVector + + (1.0 - rParameters.DamageCompression) * rParameters.CompressionStressVector; +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateTangentTensor(ConstitutiveLaw::Parameters& rValues) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + + const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; + const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; + + if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { + KRATOS_ERROR << "Analytic solution not available" << std::endl; + } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (first order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); + } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (second order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); + } +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateSecantTensor(ConstitutiveLaw::Parameters& rValues, Matrix& rSecantTensor) +{ + this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, rSecantTensor); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::InitializeMaterial( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const Vector& rShapeFunctionsValues) +{ + // We construct the CL parameters + double initial_threshold_tension = rMaterialProperties[YIELD_STRESS_TENSION]; + double initial_threshold_compression = rMaterialProperties[DAMAGE_ONSET_STRESS_COMPRESSION]; + + this->SetTensionThreshold(initial_threshold_tension); + this->SetCompressionThreshold(initial_threshold_compression); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::FinalizeSolutionStep( + const Properties& rMaterialProperties, + const GeometryType &rElementGeometry, + const Vector& rShapeFunctionsValues, + const ProcessInfo& rCurrentProcessInfo + ) +{ + this->SetTensionDamage(this->GetNonConvTensionDamage()); + this->SetTensionThreshold(this->GetNonConvTensionThreshold()); + + this->SetCompressionDamage(this->GetNonConvCompressionDamage()); + this->SetCompressionThreshold(this->GetNonConvCompressionThreshold()); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) +{ +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) +{ +} +/***********************************************************************************/ +/***********************************************************************************/ +bool DamageDPlusDMinusMasonry3DLaw::Has(const Variable& rThisVariable) +{ + if (rThisVariable == DAMAGE_TENSION) { + return true; + } else if (rThisVariable == THRESHOLD_TENSION) { + return true; + } else if (rThisVariable == DAMAGE_COMPRESSION) { + return true; + } else if (rThisVariable == THRESHOLD_COMPRESSION) { + return true; + } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { + return true; + } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { + return true; + } else { + return BaseType::Has(rThisVariable); + } + return false; +} +/***********************************************************************************/ +/***********************************************************************************/ +bool DamageDPlusDMinusMasonry3DLaw::Has(const Variable& rThisVariable) +{ + if(rThisVariable == INTERNAL_VARIABLES){ + return true; + } + return BaseType::Has(rThisVariable); +} +/***********************************************************************************/ +/***********************************************************************************/ +bool DamageDPlusDMinusMasonry3DLaw::Has(const Variable& rThisVariable) +{ + if(rThisVariable == INTEGRATED_STRESS_TENSOR) { + // explicitly returning "false", so we know we must call CalculateValue(...) + return false; + } + return BaseType::Has(rThisVariable); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::SetValue( + const Variable& rThisVariable, + const double& rValue, + const ProcessInfo& rCurrentProcessInfo + ) +{ + if (rThisVariable == DAMAGE_TENSION) { + mTensionDamage = rValue; + } else if (rThisVariable == THRESHOLD_TENSION) { + mTensionThreshold = rValue; + } else if (rThisVariable == DAMAGE_COMPRESSION) { + mCompressionDamage = rValue; + } else if (rThisVariable == THRESHOLD_COMPRESSION) { + mCompressionThreshold = rValue; + } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { + mCompressionUniaxialStress = rValue; + } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { + mTensionUniaxialStress = rValue; + } else { + return BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); + } +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::SetValue( + const Variable& rThisVariable, + const Vector& rValue, + const ProcessInfo& rCurrentProcessInfo + ) +{ + if (rThisVariable == INTERNAL_VARIABLES) { + mTensionDamage = rValue[0]; + mTensionThreshold = rValue[1]; + mCompressionDamage = rValue[2]; + mCompressionThreshold = rValue[3]; + mCompressionUniaxialStress = rValue[4]; + mTensionUniaxialStress = rValue[5]; + } +} +/***********************************************************************************/ +/***********************************************************************************/ +double& DamageDPlusDMinusMasonry3DLaw::GetValue( + const Variable& rThisVariable, + double& rValue + ) +{ + if (rThisVariable == DAMAGE_TENSION) { + rValue = mTensionDamage; + } else if (rThisVariable == THRESHOLD_TENSION) { + rValue = mTensionThreshold; + } else if (rThisVariable == DAMAGE_COMPRESSION) { + rValue = mCompressionDamage; + } else if (rThisVariable == THRESHOLD_COMPRESSION) { + rValue = mCompressionThreshold; + } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { + rValue = mCompressionUniaxialStress; + } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { + rValue = mTensionUniaxialStress; + } else { + return BaseType::GetValue(rThisVariable, rValue); + } + return rValue; +} +/***********************************************************************************/ +/***********************************************************************************/ +Vector& DamageDPlusDMinusMasonry3DLaw::GetValue( + const Variable& rThisVariable, + Vector& rValue + ) +{ + if(rThisVariable == INTERNAL_VARIABLES){ + rValue.resize(6); + rValue[0] = mTensionDamage; + rValue[1] = mTensionThreshold; + rValue[2] = mCompressionDamage; + rValue[3] = mCompressionThreshold; + rValue[4] = mCompressionUniaxialStress; + rValue[5] = mTensionUniaxialStress; + } + return rValue; +} +/***********************************************************************************/ +/***********************************************************************************/ +Matrix& DamageDPlusDMinusMasonry3DLaw::GetValue( + const Variable& rThisVariable, + Matrix& rValue + ) +{ + return BaseType::GetValue(rThisVariable, rValue); +} +/***********************************************************************************/ +/***********************************************************************************/ +double& DamageDPlusDMinusMasonry3DLaw::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue + ) +{ + return this->GetValue(rThisVariable, rValue); +} +/***********************************************************************************/ +/***********************************************************************************/ +Vector& DamageDPlusDMinusMasonry3DLaw::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) +{ + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); +} +/***********************************************************************************/ +/***********************************************************************************/ +Matrix& DamageDPlusDMinusMasonry3DLaw::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (rThisVariable == INTEGRATED_STRESS_TENSOR) { + //1.-Compute total deformation gradient + const Matrix& deformation_gradient_F = rParameterValues.GetDeformationGradientF(); + //2.-Right Cauchy-Green tensor C + Matrix right_cauchy_green = prod(trans(deformation_gradient_F), deformation_gradient_F); + Vector strain_vector = ZeroVector(6); + + //E= 0.5*(FT*F-1) or E = 0.5*(C-1) + strain_vector[0] = 0.5 * (right_cauchy_green(0, 0) - 1.00); + strain_vector[1] = 0.5 * (right_cauchy_green(1, 1) - 1.00); + strain_vector[2] = 0.5 * (right_cauchy_green(2, 2) - 1.00); + strain_vector[3] = right_cauchy_green(0, 1); // xy + strain_vector[4] = right_cauchy_green(1, 2); // yz + strain_vector[5] = right_cauchy_green(0, 2); // xz + + Matrix constitutive_matrix; + this->CalculateElasticMatrix(constitutive_matrix, rParameterValues); + + Vector stress = prod(constitutive_matrix, strain_vector); + //stress *= (1.0 - mDamage); + rValue = MathUtils::StressVectorToTensor(stress); + return rValue; + } else if (this->Has(rThisVariable)) { + return this->GetValue(rThisVariable, rValue); + } else { + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + return rValue; +} +/***********************************************************************************/ +/***********************************************************************************/ +int DamageDPlusDMinusMasonry3DLaw::Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const +{ + const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); + + if (check_base > 0) return 1; + return 0; +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateEquivalentStressTension( + array_1d& rPredictiveStressVector, + double& rEquivalentStress, + ConstitutiveLaw::Parameters& rValues + ) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + + const double yield_tension = r_material_properties[YIELD_STRESS_TENSION]; + const double yield_compression = r_material_properties[YIELD_STRESS_COMPRESSION]; + const double biaxial_compression_multiplier = r_material_properties[BIAXIAL_COMPRESSION_MULTIPLIER]; + const double alpha = (biaxial_compression_multiplier - 1.0)/(2 * biaxial_compression_multiplier - 1.0); + const double alpha_factor = 1.0 / (1.0 - alpha); + const double beta = (yield_compression / yield_tension) * (1.0 - alpha) - (1.0 + alpha); + + double I1,J2; + AdvancedConstitutiveLawUtilities::CalculateI1Invariant(rPredictiveStressVector, I1); + array_1d deviator = ZeroVector(VoigtSize); + AdvancedConstitutiveLawUtilities::CalculateJ2Invariant(rPredictiveStressVector, I1, deviator, J2); + + array_1d principal_stress_vector; + AdvancedConstitutiveLawUtilities::CalculatePrincipalStresses(principal_stress_vector, rPredictiveStressVector); + const double principal_stress_1 = principal_stress_vector[0]; + + if (principal_stress_1 > 0.0){ + rEquivalentStress = alpha_factor * (alpha*I1 + std::sqrt(3.0 * J2) + beta * principal_stress_1) * (yield_tension / yield_compression); + } +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateEquivalentStressCompression( + array_1d& rPredictiveStressVector, + double& rEquivalentStress, + ConstitutiveLaw::Parameters& rValues + ) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + + const double yield_tension = r_material_properties[YIELD_STRESS_TENSION]; + const double yield_compression = r_material_properties[YIELD_STRESS_COMPRESSION]; + const double biaxial_compression_multiplier = r_material_properties[BIAXIAL_COMPRESSION_MULTIPLIER]; + const double shear_compression_reductor = r_material_properties[SHEAR_COMPRESSION_REDUCTOR]; + const double rho = r_material_properties[TRIAXIAL_COMPRESSION_COEFFICIENT]; + + KRATOS_ERROR_IF(shear_compression_reductor < 0.0)<< "The SHEAR_COMPRESSION_REDUCTOR is supposed to be a value between 0.0 and 1.0" << std::endl; + KRATOS_ERROR_IF(shear_compression_reductor > 1.0)<< "The SHEAR_COMPRESSION_REDUCTOR is supposed to be a value between 0.0 and 1.0" << std::endl; + KRATOS_ERROR_IF(rho <= 0.5)<< "The TRIAXIAL_COMPRESSION_COEFFICIENT is supposed to be a value between 0.5 and 1.0" << std::endl; + KRATOS_ERROR_IF(rho > 1.0)<< "The TRIAXIAL_COMPRESSION_COEFFICIENT is supposed to be a value between 0.5 and 1.0" << std::endl; + + const double alpha = (biaxial_compression_multiplier - 1.0)/(2.0* biaxial_compression_multiplier - 1.0); + const double alpha_factor = 1.0 / (1.0 - alpha); + const double beta = (yield_compression / yield_tension) * (1.0 - alpha) - (1.0 + alpha); + const double gamma = 3.0 * (1.0 - rho) / (2.0 * rho - 1.0); + + double I1,J2; + AdvancedConstitutiveLawUtilities::CalculateI1Invariant(rPredictiveStressVector, I1); + array_1d deviator = ZeroVector(VoigtSize); + AdvancedConstitutiveLawUtilities::CalculateJ2Invariant(rPredictiveStressVector, I1, deviator, J2); + + array_1d principal_stress_vector; + AdvancedConstitutiveLawUtilities::CalculatePrincipalStresses(principal_stress_vector, rPredictiveStressVector); + const double principal_stress_1 = principal_stress_vector[0]; + const double principal_stress_3 = principal_stress_vector[2]; + const double smax_macaulay = std::max(principal_stress_1, 0.0); + const double smax_macaulay_neg = std::abs(std::min(principal_stress_1, 0.0)); + + if (principal_stress_3 < 0.0){ + rEquivalentStress = alpha_factor * (alpha*I1 + std::sqrt(3.0 * J2) + + beta * shear_compression_reductor * smax_macaulay + + gamma * smax_macaulay_neg); + } +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::IntegrateStressVectorTension( + array_1d& rPredictiveStressVector, + const double UniaxialStress, + double& rDamage, + double& rThreshold, + ConstitutiveLaw::Parameters& rValues, + const double CharacteristicLength) +{ + double damage_parameter; + this->CalculateDamageParameterTension(rValues, damage_parameter, CharacteristicLength); + this->CalculateExponentialDamageTension(UniaxialStress, rThreshold, damage_parameter, CharacteristicLength, rValues, rDamage); + + rPredictiveStressVector *= (1.0 - rDamage); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateDamageParameterTension( + ConstitutiveLaw::Parameters& rValues, + double& rAParameter, + const double CharacteristicLength) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + + const double Gf = r_material_properties[FRACTURE_ENERGY_TENSION]; + const double E = r_material_properties[YOUNG_MODULUS]; + const double yield_tension = r_material_properties[YIELD_STRESS_TENSION]; + const double l_mat = 2.0 * E * Gf / (std::pow(yield_tension, 2)); + + KRATOS_ERROR_IF(CharacteristicLength >= l_mat) << "FRACTURE_ENERGY_TENSION is too low: 2*E*Gt/(ft*ft) = " << l_mat + << ", Characteristic Length = " << CharacteristicLength << std::endl; + + rAParameter = 2.0 * (CharacteristicLength / (l_mat - CharacteristicLength)); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateExponentialDamageTension( + const double UniaxialStress, + const double Threshold, + const double DamageParameter, + const double CharacteristicLength, + ConstitutiveLaw::Parameters& rValues, + double& rDamage) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + const double initial_threshold = r_material_properties[YIELD_STRESS_TENSION]; + rDamage = 1.0 - (initial_threshold / UniaxialStress) * std::exp(DamageParameter * (1.0 - (UniaxialStress / initial_threshold))); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::IntegrateStressVectorCompression( + array_1d& rPredictiveStressVector, + const double UniaxialStress, + double& rDamage, + double& rThreshold, + ConstitutiveLaw::Parameters& rValues, + const double CharacteristicLength) +{ + this->CalculateBezier3DamageCompression(UniaxialStress, rDamage, rThreshold, CharacteristicLength, rValues); + rPredictiveStressVector *= (1.0 - rDamage); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::CalculateBezier3DamageCompression( + const double UniaxialStress, + double& rDamage, + double& rThreshold, + const double CharacteristicLength, + ConstitutiveLaw::Parameters& rValues) +{ + // Call the Material Properties + const Properties& r_material_properties = rValues.GetMaterialProperties(); + const double young_modulus = r_material_properties[YOUNG_MODULUS]; + const double stress_damage_onset = r_material_properties[DAMAGE_ONSET_STRESS_COMPRESSION]; + const double yield_stress_compression = r_material_properties[YIELD_STRESS_COMPRESSION]; + const double yield_strain_compression = r_material_properties[YIELD_STRAIN_COMPRESSION]; + const double residual_stress_compression = r_material_properties[RESIDUAL_STRESS_COMPRESSION]; + const double bezier_controller_c1 = r_material_properties[BEZIER_CONTROLLER_C1]; + const double bezier_controller_c2 = r_material_properties[BEZIER_CONTROLLER_C2]; + const double bezier_controller_c3 = r_material_properties[BEZIER_CONTROLLER_C3]; + const double fracture_energy_compression = r_material_properties[FRACTURE_ENERGY_COMPRESSION]; + + // Calculate missing Bezier Determinators + const double bezier_control_alpha = 2.0 * (yield_strain_compression - (yield_stress_compression / young_modulus)); + const double strain_damage_onset = stress_damage_onset / young_modulus; + const double bezier_control_strain_i = yield_stress_compression / young_modulus; + const double bezier_control_stress_k = residual_stress_compression + + (yield_stress_compression - residual_stress_compression) * bezier_controller_c1; + double bezier_control_strain_j = yield_strain_compression + bezier_control_alpha * bezier_controller_c2; + double bezier_control_strain_k = 3.0 * yield_strain_compression - 2.0 * yield_stress_compression / young_modulus; + double bezier_control_strain_r = ( (bezier_control_strain_k - bezier_control_strain_j) * + (yield_stress_compression - residual_stress_compression)/(yield_stress_compression - bezier_control_stress_k) ) + + bezier_control_strain_j; + double bezier_control_strain_u = bezier_control_strain_r * bezier_controller_c3; + const double specific_fracture_energy_compression = fracture_energy_compression / CharacteristicLength; + + // Perform the Energy Regularization of the Bezier Determinators + this->RegulateBezierDeterminators( + specific_fracture_energy_compression, + yield_stress_compression, bezier_control_stress_k, residual_stress_compression, yield_strain_compression, + bezier_control_strain_j, bezier_control_strain_k, bezier_control_strain_r, bezier_control_strain_u); + + // Compute rDamage + const double strain_like_counterpart = UniaxialStress / young_modulus; + double damage_variable_bezier = UniaxialStress; + if (strain_like_counterpart <= yield_strain_compression) { + damage_variable_bezier = this->EvaluateBezierCurve( + strain_like_counterpart, + strain_damage_onset, bezier_control_strain_i, yield_strain_compression, + stress_damage_onset, yield_stress_compression, yield_stress_compression); + } else if (strain_like_counterpart <= bezier_control_strain_k) { + damage_variable_bezier = this->EvaluateBezierCurve( + strain_like_counterpart, + yield_strain_compression, bezier_control_strain_j, bezier_control_strain_k, + yield_stress_compression, yield_stress_compression, bezier_control_stress_k); + } else if (strain_like_counterpart <= bezier_control_strain_u) { + damage_variable_bezier = this->EvaluateBezierCurve( + strain_like_counterpart, + bezier_control_strain_k, bezier_control_strain_r, bezier_control_strain_u, + bezier_control_stress_k, residual_stress_compression, residual_stress_compression); + } else { + damage_variable_bezier = residual_stress_compression; + } + + rDamage = 1.0 - damage_variable_bezier / UniaxialStress; +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::RegulateBezierDeterminators( + const double specific_dissipated_fracture_energy, + const double sp, const double sk, const double sr, const double ep, + double& ej, double& ek, double& er, double& eu) +{ + const double bezier_energy_1 = sp * ep / 2.0; + double bezier_energy_2; + double bezier_energy_3; + this->ComputeBezierEnergy(bezier_energy_2, ep, ej, ek, sp, sp, sk); + this->ComputeBezierEnergy(bezier_energy_3, ek, er, eu, sk, sr, sr); + const double BezierEnergy = bezier_energy_1 + bezier_energy_2 + bezier_energy_3; + + const double bezier_stretcher = ((specific_dissipated_fracture_energy - bezier_energy_1) / + (BezierEnergy - bezier_energy_1)) - 1.0; + + KRATOS_ERROR_IF(bezier_stretcher <= -1.0) << "Error in Compression Damage: FRACTURE_ENERGY_COMPRESSION is too low, increase it to avoid constitutive snap-back!" << std::endl; + + // Update Strain values + ej += bezier_stretcher * (ej - ep); + ek += bezier_stretcher * (ek - ep); + er += bezier_stretcher * (er - ep); + eu += bezier_stretcher * (eu - ep); +} +/***********************************************************************************/ +/***********************************************************************************/ +void DamageDPlusDMinusMasonry3DLaw::ComputeBezierEnergy( + double& rBezier_energy, + const double x1, const double x2, const double x3, + const double y1, const double y2, const double y3) +{ + rBezier_energy = (x2*y1/3.0) + (x3*y1/6.0) - (x2*y3/3) + (x3*y2/3) + (x3*y3/2.0) - x1*((y1/2.0) + (y2/3.0) + (y3/6.0)); +} +/***********************************************************************************/ +/***********************************************************************************/ +double DamageDPlusDMinusMasonry3DLaw::EvaluateBezierCurve( + const double Xi, + const double x1, double x2, const double x3, + const double y1, const double y2, const double y3) +{ + double A = x1 - 2.0 * x2 + x3; + double B = 2.0 * (x2 - x1); + double C = x1 - Xi; + if (std::abs(A) < 1.0e-12) { + x2 = x2 + 1.0E-6 * (x3-x1); + A = x1 - 2.0 * x2 + x3; + B = 2.0 * (x2 - x1); + C = x1 - Xi; + } + + const double D = B * B - 4.0 * A * C; + const double t = (-B + std::sqrt(D)) / (2.0 * A); + const double bezier_damage_parameter = (y1 - 2.0 * y2 + y3) * t * t + (y2 - y1) * 2.0 * t + y1; + return bezier_damage_parameter; +} +/***********************************************************************************/ +/***********************************************************************************/ + +}// namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/d_plus_d_minus_damage_masonry_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/d_plus_d_minus_damage_masonry_3d.h similarity index 97% rename from applications/ConstitutiveLawsApplication/custom_constitutive/d_plus_d_minus_damage_masonry_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/d_plus_d_minus_damage_masonry_3d.h index e6bd17d15261..d68d08c8a6ed 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/d_plus_d_minus_damage_masonry_3d.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/d_plus_d_minus_damage_masonry_3d.h @@ -1,732 +1,732 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Philip Kalkbrenner -// Alejandro Cornejo -// -// -#if !defined(KRATOS_D_PLUS_D_MINUS_DAMAGE_MASONRY_3D_H_INCLUDED) -#define KRATOS_D_PLUS_D_MINUS_DAMAGE_MASONRY_3D_H_INCLUDED - -// System includes - -// External includes - -// Project includes -#include "custom_constitutive/elastic_isotropic_3d.h" - -namespace Kratos -{ -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - - // The size type definition - typedef std::size_t SizeType; - - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ -/** - * @class DamageDPlusDMinusMasonry3DLaw - * @ingroup StructuralMechanicsApplication - */ - class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) DamageDPlusDMinusMasonry3DLaw - : public ElasticIsotropic3D -{ -public: - ///@name Type Definitions - ///@{ - - - /// The define the working dimension size, already defined in the integrator - static constexpr SizeType Dimension = 3; - - /// The define the Voigt size, already defined in the integrator - static constexpr SizeType VoigtSize = 6; - - /// Definition of the base class - typedef ElasticIsotropic3D BaseType; - - // Adding the respective using to avoid overload conflicts - //using BaseType::Has; - //using BaseType::GetValue; - - /// Counted pointer of GenericYieldSurface - KRATOS_CLASS_POINTER_DEFINITION(DamageDPlusDMinusMasonry3DLaw); - - /// The node definition - typedef Node<3> NodeType; - - /// The geometry definition - typedef Geometry GeometryType; - - /// Definition of the machine precision tolerance - static constexpr double tolerance = std::numeric_limits::epsilon(); - - struct DamageParameters { - double DamageTension = 0.0; - double DamageCompression = 0.0; - double ThresholdTension = 0.0; - double ThresholdCompression = 0.0; - array_1d TensionStressVector; - array_1d CompressionStressVector; - double UniaxialTensionStress = 0.0; - double UniaxialCompressionStress = 0.0; - }; - ///@} - ///@name Life Cycle - ///@{ - - /** - * Default constructor. - */ - DamageDPlusDMinusMasonry3DLaw(); - - - /** - * Clone. - */ - ConstitutiveLaw::Pointer Clone() const override - { - return Kratos::make_shared(*this); - } - /** - * @brief Dimension of the law: - */ - SizeType WorkingSpaceDimension() override - { - return Dimension; - }; - - /** - * @brief Voigt tensor size: - */ - SizeType GetStrainSize() const override - { - return VoigtSize; - }; - - /** - * Copy constructor. - */ - DamageDPlusDMinusMasonry3DLaw(const DamageDPlusDMinusMasonry3DLaw &rOther) - : BaseType(rOther), - mTensionDamage(rOther.mTensionDamage), - mTensionThreshold(rOther.mTensionThreshold), - mNonConvTensionDamage(rOther.mNonConvTensionDamage), - mNonConvTensionThreshold(rOther.mNonConvTensionThreshold), - mCompressionDamage(rOther.mCompressionDamage), - mCompressionThreshold(rOther.mCompressionThreshold), - mNonConvCompressionDamage(rOther.mNonConvCompressionDamage), - mNonConvCompressionThreshold(rOther.mNonConvCompressionThreshold) - { - } - - /** - * Destructor. - */ - ~DamageDPlusDMinusMasonry3DLaw() override - { - } - - /** - * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Integrates the predictive tension stress vector if necessary - * @param F_compression = uniaxial_stress_tension - threshold - */ - bool IntegrateStressTensionIfNecessary( - const double F_tension, - DamageParameters& Parameters, - array_1d& IntegratedStressVectorTension, - const array_1d rIntegratedStressVector, - ConstitutiveLaw::Parameters& rValues - ); - - /** - * @brief Integrates the predictive tension stress vector if necessary - * @param F_compression = uniaxial_stress_compression - threshold - */ - bool IntegrateStressCompressionIfNecessary( - const double F_compression, - DamageParameters& Parameters, - array_1d& IntegratedStressVectorCompression, - array_1d rIntegratedStressVector, - ConstitutiveLaw::Parameters& rValues - ); - - /** - * @brief Computes the inetgarted stress vector S = A:D0:A:E - */ - void CalculateIntegratedStressVector( - Vector& IntegratedStressVectorTension, - const DamageParameters& Parameters, - ConstitutiveLaw::Parameters& rValues - ); - - /** - * @brief This is to be called at the very beginning of the calculation - * @details (e.g. from InitializeElement) in order to initialize all relevant attributes of the constitutive law - * @param rMaterialProperties the Properties instance of the current element - * @param rElementGeometry the geometry of the current element - * @param rShapeFunctionsValues the shape functions values in the current integration point - */ - void InitializeMaterial( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const Vector& rShapeFunctionsValues - ) override; - - /** - * @brief To be called at the end of each solution step - * @details (e.g. from Element::FinalizeSolutionStep) - * @param rMaterialProperties the Properties instance of the current element - * @param rElementGeometry the geometry of the current element - * @param rShapeFunctionsValues the shape functions values in the current integration point - * @param rCurrentProcessInfo the current ProcessInfo instance - */ - void FinalizeSolutionStep( - const Properties &rMaterialProperties, - const GeometryType &rElementGeometry, - const Vector& rShapeFunctionsValues, - const ProcessInfo& rCurrentProcessInfo - ) override; - - /** - * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - /** - * Finalize the material response in terms of Cauchy stresses - * @see Parameters - */ - void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Returns whether this constitutive Law has specified variable (double) - * @param rThisVariable the variable to be checked for - * @return true if the variable is defined in the constitutive law - */ - bool Has(const Variable &rThisVariable) override; - - /** - * @brief Returns whether this constitutive Law has specified variable (Vector) - * @param rThisVariable the variable to be checked for - * @return true if the variable is defined in the constitutive law - */ - bool Has(const Variable &rThisVariable) override; - - /** - * @brief Returns whether this constitutive Law has specified variable (Matrix) - * @param rThisVariable the variable to be checked for - * @return true if the variable is defined in the constitutive law - */ - bool Has(const Variable &rThisVariable) override; - - /** - * @brief Sets the value of a specified variable (double) - * @param rVariable the variable to be returned - * @param rValue new value of the specified variable - * @param rCurrentProcessInfo the process info - */ - void SetValue( - const Variable &rThisVariable, - const double& rValue, - const ProcessInfo& rCurrentProcessInfo - ) override; - - /** - * @brief Sets the value of a specified variable (Vector) - * @param rVariable the variable to be returned - * @param rValue new value of the specified variable - * @param rCurrentProcessInfo the process info - */ - void SetValue( - const Variable &rThisVariable, - const Vector& rValue, - const ProcessInfo& rCurrentProcessInfo - ) override; - - /** - * @brief Returns the value of a specified variable (double) - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @return rValue output: the value of the specified variable - */ - double& GetValue( - const Variable &rThisVariable, - double& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (Vector) - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @return rValue output: the value of the specified variable - */ - Vector& GetValue( - const Variable &rThisVariable, - Vector& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (matrix) - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @return rValue output: the value of the specified variable - */ - Matrix& GetValue( - const Variable& rThisVariable, - Matrix& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (double) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - double& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue) override; - - /** - * @brief Returns the value of a specified variable (vector) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Vector& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (matrix) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Matrix& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) override; - - /** - * @brief This function provides the place to perform checks on the completeness of the input. - * @details It is designed to be called only once (or anyway, not often) typically at the beginning - * of the calculations, so to verify that nothing is missing from the input or that no common error is found. - * @param rMaterialProperties The properties of the material - * @param rElementGeometry The geometry of the element - * @param rCurrentProcessInfo The current process info instance - * @return 0 if OK, 1 otherwise - */ - int Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const override; - - ///@} - ///@name Access - ///@{ - - ///@} - ///@name Inquiry - ///@{ - - ///@} - ///@name Input and output - ///@{ - - ///@} - ///@name Friends - ///@{ - - ///@} - -protected: - ///@name Protected static Member Variables - ///@{ - - ///@} - ///@name Protected member Variables - ///@{ - - ///@} - ///@name Protected Operators - ///@{ - - ///@} - ///@name Protected Operations - ///@{ - // Tension values - double& GetTensionThreshold() { return mTensionThreshold; } - double& GetTensionDamage() { return mTensionDamage; } - double& GetNonConvTensionThreshold() { return mNonConvTensionThreshold; } - double& GetNonConvTensionDamage() { return mNonConvTensionDamage; } - - void SetTensionThreshold(const double toThreshold) { mTensionThreshold = toThreshold; } - void SetTensionDamage(const double toDamage) { mTensionDamage = toDamage; } - void SetNonConvTensionThreshold(const double toThreshold) { mNonConvTensionThreshold = toThreshold; } - void SetNonConvTensionDamage(const double toDamage) { mNonConvTensionDamage = toDamage; } - - // Compression values - double& GetCompressionThreshold() { return mCompressionThreshold; } - double& GetCompressionDamage() { return mCompressionDamage; } - double& GetNonConvCompressionThreshold() { return mNonConvCompressionThreshold; } - double& GetNonConvCompressionDamage() { return mNonConvCompressionDamage; } - - void SetCompressionThreshold(const double toThreshold) { mCompressionThreshold = toThreshold; } - void SetCompressionDamage(const double toDamage) { mCompressionDamage = toDamage; } - void SetNonConvCompressionThreshold(const double toThreshold) { mNonConvCompressionThreshold = toThreshold; } - void SetNonConvCompressionDamage(const double toDamage) { mNonConvCompressionDamage = toDamage; } - - void SetTensionStress(const double toS){mTensionUniaxialStress = toS;} - void SetCompressionStress(const double toS){mCompressionUniaxialStress = toS;} - - ///@} - ///@name Protected Access - ///@{ - - ///@} - ///@name Protected Inquiry - ///@{ - - ///@} - ///@name Protected LifeCycle - ///@{ - - ///@} - -private: - ///@name Static Member Variables - ///@{ - - ///@} - ///@name Member Variables - ///@{ - - // Converged values - double mTensionDamage = 0.0; - double mTensionThreshold = 0.0; - - // Non Converged values - double mNonConvTensionDamage = 0.0; - double mNonConvTensionThreshold = 0.0; - - double mCompressionDamage = 0.0; - double mCompressionThreshold = 0.0; - // double mUniaxialStress = 0.0; - - // Non Converged values - double mNonConvCompressionDamage = 0.0; - double mNonConvCompressionThreshold = 0.0; - - double mTensionUniaxialStress = 0.0; - double mCompressionUniaxialStress = 0.0; - ///@} - ///@name Private Operators - ///@{ - - ///@} - ///@name Private Operations - ///@{ - - /** - * @brief This method computes the tangent tensor - * @param rValues The constitutive law parameters and flags - */ - void CalculateTangentTensor(ConstitutiveLaw::Parameters &rValues); - - /** - * @brief This method computes the secant tensor - * @param rValues The constitutive law parameters and flags - */ - void CalculateSecantTensor(ConstitutiveLaw::Parameters& rValues, Matrix& rSecantTensor); - - - // Serialization - - friend class Serializer; - - void save(Serializer &rSerializer) const override - { - KRATOS_SERIALIZE_SAVE_BASE_CLASS(rSerializer, ConstitutiveLaw) - rSerializer.save("TensionDamage", mTensionDamage); - rSerializer.save("TensionThreshold", mTensionThreshold); - rSerializer.save("NonConvTensionDamage", mNonConvTensionDamage); - rSerializer.save("NonConvTensionThreshold", mNonConvTensionThreshold); - rSerializer.save("CompressionDamage", mCompressionDamage); - rSerializer.save("CompressionThreshold", mCompressionThreshold); - rSerializer.save("NonConvCompressionnDamage", mNonConvCompressionDamage); - rSerializer.save("NonConvCompressionThreshold", mNonConvCompressionThreshold); - } - - void load(Serializer &rSerializer) override - { - KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, ConstitutiveLaw) - rSerializer.load("TensionDamage", mTensionDamage); - rSerializer.load("TensionThreshold", mTensionThreshold); - rSerializer.load("NonConvTensionDamage", mNonConvTensionDamage); - rSerializer.load("NonConvTensionThreshold", mNonConvTensionThreshold); - rSerializer.load("CompressionDamage", mCompressionDamage); - rSerializer.load("CompressionThreshold", mCompressionThreshold); - rSerializer.load("NonConvCompressionnDamage", mNonConvCompressionDamage); - rSerializer.load("NonConvCompressionThreshold", mNonConvCompressionThreshold); - } - - /** - * @brief This method computes the equivalent stress in Tension - * @param rValues The constitutive law parameters and flags - * rPredictiveStressVector Predictive or effective Stress Vector - * rEquivalentStress The equivalent Stress to be filled by method - */ - void CalculateEquivalentStressTension( - array_1d& rPredictiveStressVector, - double& rEquivalentStress, - ConstitutiveLaw::Parameters& rValues); - - /** - * @brief This method computes the equivalent stress in Compression - * @param rValues The constitutive law parameters and flags - * rPredictiveStressVector Predictive or effective Stress Vector - * rEquivalentStress The equivalent Stress to be filled by method - */ - void CalculateEquivalentStressCompression( - array_1d& rPredictiveStressVector, - double& rEquivalentStress, - ConstitutiveLaw::Parameters& rValues); - - /** - * @brief This method computes the final stress vector in Tension - * @param rValues The constitutive law parameters and flags - * rPredictiveStressVector Tension Part of the predictive or effective stress vector - * UniaxialStress The equivalent uniaxial stress in Tension - * rDamage The damage variable in Tension - * rThreshold The Damage Threshold in Tension - * CharacteristicLength The finite element charecteristic length - */ - void IntegrateStressVectorTension( - array_1d& rPredictiveStressVector, - const double UniaxialStress, - double& rDamage, - double& rThreshold, - ConstitutiveLaw::Parameters& rValues, - const double CharacteristicLength); - - /** - * @brief This method computes the damage parameter for the exponential softening behavior in tension - * @params rValues The constitutive law parameters and flags - * rAParameter The damage parameter filled by method - * CharacteristicLength The finite element charecteristic length - */ - void CalculateDamageParameterTension( - ConstitutiveLaw::Parameters& rValues, - double& rAParameter, - const double CharacteristicLength); - - /** - * @brief This method computes the tension damage variable for the exponential softening law in tension - * @params rValues The constitutive law parameters and flags - * UniaxialStress The equivalent uniaxial stress in Tension - * Threshold The damage threshold in Tension - * DamageParameter The damage parameter for the exponential softening law - * CharacteristicLength The finite element charecteristic length - * rDamage The tension damage variable filled by the method - */ - - void CalculateExponentialDamageTension( - const double UniaxialStress, - const double Threshold, - const double DamageParameter, - const double CharacteristicLength, - ConstitutiveLaw::Parameters& rValues, - double& rDamage); - - /** - * @brief This method computes the final stress vector in Tension - * @param rValues The constitutive law parameters and flags - * rPredictiveStressVector Compression Part of the predictive or effective stress vector - * UniaxialStress The equivalent uniaxial stress in Compression - * rDamage The damage variable in Compression - * rThreshold The Damage Threshold in Compression - * CharacteristicLength The finite element charecteristic length - */ - void IntegrateStressVectorCompression( - array_1d& rPredictiveStressVector, - const double UniaxialStress, - double& rDamage, - double& rThreshold, - ConstitutiveLaw::Parameters& rValues, - const double CharacteristicLength); - - /** - * BRIEF DOCUMENTATION OF THE USED UNIAXIAL SOFTENING BEHAVIOR IN COMPRESSION - * Entire documentation can be found in the the Phd Thesis of Massimo Petracca - * << Computational Multiscale Analysis of Masonry Structures>> - * - * UNIAXIAL BEZIER COMPRESSION DAMAGE - * {I} Linear Elastic - * {II} Hardening Quadratic Bezier Curve - * Control nodes: 0=(e_0,s_0); I=(e_i,s_p); P=(e_p,s_p) - * {III} Softening Quadratic Bezier Curve - * Control nodes: P=(e_p,s_p); J=(e_j,s_j); K=(e_k,s_k) - * {IV} Softening Quadratic Bezier Curve - * Control nodes: K=(e_k,s_k); R=(e_r,s_r); U=(e_u,s_u) - * {V} Residual Strength - * - * STRESS - * ^ - * /|\ - * | (P) - * s_p = |------------(I)+----#####--+(J) - * s_i = | ' ### ' #### - * s_j | ### ' #### - * | ###' ' ' ### - * s_k |-----------##--+------+----+--## (K) - * s_0 |---------##(0) ' ' ' ### - * | ## ' ' ' ' '## - * | ## ' ' ' ' ' #### - * | ## ' ' ' ' ' ##### - * | ## ' ' ' ' ' ##### - * | ## ' ' ' ' ' (R) ######## (U) - * s_r = |---##------+---+------'----+----+-----+-----------------###################### - * s_u | ## ' ' ' ' ' ' ' - * |_##________+___+______+____+____+_____+_________________+______________________________\ - * e_0 e_i e_p e_j e_k e_r e_u / STRAIN - * ' ' ' ' ' - * ' {I} ' {II} ' {III} ' {IV} ' {V} - * ' ' ' ' ' - * - */ - /** - * @brief This method computes the Damage Variable in Compression by considering three Bezier curves (hardening + softening + softening + residual) - * @param rValues The constitutive law parameters and flags - * UniaxialStress The equivalent uniaxial stress in Compression - * rDamage The damage variable in Compression - * rThreshold The Damage Threshold in Compression - * CharacteristicLength The finite element charecteristic length - */ - void CalculateBezier3DamageCompression( - const double UniaxialStress, - double& rDamage, - double& rThreshold, - const double CharacteristicLength, - ConstitutiveLaw::Parameters& rValues); - - /** - * @brief This method regulates the four bezier control strains to avoid a constitutive snap-back (fracture energy considerations) - * @param specific_dissipated_fracture_energy FRACTURE_ENERGY_CMOPRESSION devided by CharacteristicLength - * sp, sk, sr stress Values to control the bezier curves - * ep strain pproperty to control the bezier curve - * ej, ek, er, eu strain properties to be regulated in method - */ - void RegulateBezierDeterminators( - const double specific_dissipated_fracture_energy, - const double sp, const double sk, const double sr, const double ep, - double& ej, double& ek, double& er, double& eu); - - /** - * @brief This method computes the area beneath the parts of the bezier curves, respectively - * @param BezierG Area beneath the curve, to be filled by method - * x1, x2, x3, y1, y2, y3 coordinates of the control points of the bezier - */ - void ComputeBezierEnergy( - double& BezierG, - const double x1, const double x2, const double x3, - const double y1, const double y2, const double y3); - - /** - * @brief This method returns the bezier damage parameter - * @param Xi Strain-like counterpart of the uniaxial compression stress - * x1, x2, x3 Necesarry Stress values to define the uniaxial compression damage bezier curve - * y1, y2, y3 Necesarry Strain vlaues to define the uniaxial compression damage bezier curve - */ - double EvaluateBezierCurve( - const double Xi, - const double x1, double x2, const double x3, - const double y1, const double y2, const double y3); - - - ///@} - ///@name Private Access - ///@{ - - ///@} - ///@name Private Inquiry - ///@{ - - ///@} - ///@name Un accessible methods - ///@{ - - - - ///@} - -}; // Class DamageDPlusDMinusMasonry3DLaw -}// namespace Kratos -#endif - +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Philip Kalkbrenner +// Alejandro Cornejo +// +// +#if !defined(KRATOS_D_PLUS_D_MINUS_DAMAGE_MASONRY_3D_H_INCLUDED) +#define KRATOS_D_PLUS_D_MINUS_DAMAGE_MASONRY_3D_H_INCLUDED + +// System includes + +// External includes + +// Project includes +#include "custom_constitutive/elastic_isotropic_3d.h" + +namespace Kratos +{ +///@name Kratos Globals +///@{ + +///@} +///@name Type Definitions +///@{ + + // The size type definition + typedef std::size_t SizeType; + + +///@} +///@name Enum's +///@{ + +///@} +///@name Functions +///@{ + +///@} +///@name Kratos Classes +///@{ +/** + * @class DamageDPlusDMinusMasonry3DLaw + * @ingroup StructuralMechanicsApplication + */ + class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) DamageDPlusDMinusMasonry3DLaw + : public ElasticIsotropic3D +{ +public: + ///@name Type Definitions + ///@{ + + + /// The define the working dimension size, already defined in the integrator + static constexpr SizeType Dimension = 3; + + /// The define the Voigt size, already defined in the integrator + static constexpr SizeType VoigtSize = 6; + + /// Definition of the base class + typedef ElasticIsotropic3D BaseType; + + // Adding the respective using to avoid overload conflicts + //using BaseType::Has; + //using BaseType::GetValue; + + /// Counted pointer of GenericYieldSurface + KRATOS_CLASS_POINTER_DEFINITION(DamageDPlusDMinusMasonry3DLaw); + + /// The node definition + typedef Node<3> NodeType; + + /// The geometry definition + typedef Geometry GeometryType; + + /// Definition of the machine precision tolerance + static constexpr double tolerance = std::numeric_limits::epsilon(); + + struct DamageParameters { + double DamageTension = 0.0; + double DamageCompression = 0.0; + double ThresholdTension = 0.0; + double ThresholdCompression = 0.0; + array_1d TensionStressVector; + array_1d CompressionStressVector; + double UniaxialTensionStress = 0.0; + double UniaxialCompressionStress = 0.0; + }; + ///@} + ///@name Life Cycle + ///@{ + + /** + * Default constructor. + */ + DamageDPlusDMinusMasonry3DLaw(); + + + /** + * Clone. + */ + ConstitutiveLaw::Pointer Clone() const override + { + return Kratos::make_shared(*this); + } + /** + * @brief Dimension of the law: + */ + SizeType WorkingSpaceDimension() override + { + return Dimension; + }; + + /** + * @brief Voigt tensor size: + */ + SizeType GetStrainSize() const override + { + return VoigtSize; + }; + + /** + * Copy constructor. + */ + DamageDPlusDMinusMasonry3DLaw(const DamageDPlusDMinusMasonry3DLaw &rOther) + : BaseType(rOther), + mTensionDamage(rOther.mTensionDamage), + mTensionThreshold(rOther.mTensionThreshold), + mNonConvTensionDamage(rOther.mNonConvTensionDamage), + mNonConvTensionThreshold(rOther.mNonConvTensionThreshold), + mCompressionDamage(rOther.mCompressionDamage), + mCompressionThreshold(rOther.mCompressionThreshold), + mNonConvCompressionDamage(rOther.mNonConvCompressionDamage), + mNonConvCompressionThreshold(rOther.mNonConvCompressionThreshold) + { + } + + /** + * Destructor. + */ + ~DamageDPlusDMinusMasonry3DLaw() override + { + } + + /** + * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Integrates the predictive tension stress vector if necessary + * @param F_compression = uniaxial_stress_tension - threshold + */ + bool IntegrateStressTensionIfNecessary( + const double F_tension, + DamageParameters& Parameters, + array_1d& IntegratedStressVectorTension, + const array_1d rIntegratedStressVector, + ConstitutiveLaw::Parameters& rValues + ); + + /** + * @brief Integrates the predictive tension stress vector if necessary + * @param F_compression = uniaxial_stress_compression - threshold + */ + bool IntegrateStressCompressionIfNecessary( + const double F_compression, + DamageParameters& Parameters, + array_1d& IntegratedStressVectorCompression, + array_1d rIntegratedStressVector, + ConstitutiveLaw::Parameters& rValues + ); + + /** + * @brief Computes the inetgarted stress vector S = A:D0:A:E + */ + void CalculateIntegratedStressVector( + Vector& IntegratedStressVectorTension, + const DamageParameters& Parameters, + ConstitutiveLaw::Parameters& rValues + ); + + /** + * @brief This is to be called at the very beginning of the calculation + * @details (e.g. from InitializeElement) in order to initialize all relevant attributes of the constitutive law + * @param rMaterialProperties the Properties instance of the current element + * @param rElementGeometry the geometry of the current element + * @param rShapeFunctionsValues the shape functions values in the current integration point + */ + void InitializeMaterial( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const Vector& rShapeFunctionsValues + ) override; + + /** + * @brief To be called at the end of each solution step + * @details (e.g. from Element::FinalizeSolutionStep) + * @param rMaterialProperties the Properties instance of the current element + * @param rElementGeometry the geometry of the current element + * @param rShapeFunctionsValues the shape functions values in the current integration point + * @param rCurrentProcessInfo the current ProcessInfo instance + */ + void FinalizeSolutionStep( + const Properties &rMaterialProperties, + const GeometryType &rElementGeometry, + const Vector& rShapeFunctionsValues, + const ProcessInfo& rCurrentProcessInfo + ) override; + + /** + * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + /** + * Finalize the material response in terms of Cauchy stresses + * @see Parameters + */ + void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Returns whether this constitutive Law has specified variable (double) + * @param rThisVariable the variable to be checked for + * @return true if the variable is defined in the constitutive law + */ + bool Has(const Variable &rThisVariable) override; + + /** + * @brief Returns whether this constitutive Law has specified variable (Vector) + * @param rThisVariable the variable to be checked for + * @return true if the variable is defined in the constitutive law + */ + bool Has(const Variable &rThisVariable) override; + + /** + * @brief Returns whether this constitutive Law has specified variable (Matrix) + * @param rThisVariable the variable to be checked for + * @return true if the variable is defined in the constitutive law + */ + bool Has(const Variable &rThisVariable) override; + + /** + * @brief Sets the value of a specified variable (double) + * @param rVariable the variable to be returned + * @param rValue new value of the specified variable + * @param rCurrentProcessInfo the process info + */ + void SetValue( + const Variable &rThisVariable, + const double& rValue, + const ProcessInfo& rCurrentProcessInfo + ) override; + + /** + * @brief Sets the value of a specified variable (Vector) + * @param rVariable the variable to be returned + * @param rValue new value of the specified variable + * @param rCurrentProcessInfo the process info + */ + void SetValue( + const Variable &rThisVariable, + const Vector& rValue, + const ProcessInfo& rCurrentProcessInfo + ) override; + + /** + * @brief Returns the value of a specified variable (double) + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @return rValue output: the value of the specified variable + */ + double& GetValue( + const Variable &rThisVariable, + double& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (Vector) + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @return rValue output: the value of the specified variable + */ + Vector& GetValue( + const Variable &rThisVariable, + Vector& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (matrix) + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @return rValue output: the value of the specified variable + */ + Matrix& GetValue( + const Variable& rThisVariable, + Matrix& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (double) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + double& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue) override; + + /** + * @brief Returns the value of a specified variable (vector) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Vector& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (matrix) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Matrix& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) override; + + /** + * @brief This function provides the place to perform checks on the completeness of the input. + * @details It is designed to be called only once (or anyway, not often) typically at the beginning + * of the calculations, so to verify that nothing is missing from the input or that no common error is found. + * @param rMaterialProperties The properties of the material + * @param rElementGeometry The geometry of the element + * @param rCurrentProcessInfo The current process info instance + * @return 0 if OK, 1 otherwise + */ + int Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const override; + + ///@} + ///@name Access + ///@{ + + ///@} + ///@name Inquiry + ///@{ + + ///@} + ///@name Input and output + ///@{ + + ///@} + ///@name Friends + ///@{ + + ///@} + +protected: + ///@name Protected static Member Variables + ///@{ + + ///@} + ///@name Protected member Variables + ///@{ + + ///@} + ///@name Protected Operators + ///@{ + + ///@} + ///@name Protected Operations + ///@{ + // Tension values + double& GetTensionThreshold() { return mTensionThreshold; } + double& GetTensionDamage() { return mTensionDamage; } + double& GetNonConvTensionThreshold() { return mNonConvTensionThreshold; } + double& GetNonConvTensionDamage() { return mNonConvTensionDamage; } + + void SetTensionThreshold(const double toThreshold) { mTensionThreshold = toThreshold; } + void SetTensionDamage(const double toDamage) { mTensionDamage = toDamage; } + void SetNonConvTensionThreshold(const double toThreshold) { mNonConvTensionThreshold = toThreshold; } + void SetNonConvTensionDamage(const double toDamage) { mNonConvTensionDamage = toDamage; } + + // Compression values + double& GetCompressionThreshold() { return mCompressionThreshold; } + double& GetCompressionDamage() { return mCompressionDamage; } + double& GetNonConvCompressionThreshold() { return mNonConvCompressionThreshold; } + double& GetNonConvCompressionDamage() { return mNonConvCompressionDamage; } + + void SetCompressionThreshold(const double toThreshold) { mCompressionThreshold = toThreshold; } + void SetCompressionDamage(const double toDamage) { mCompressionDamage = toDamage; } + void SetNonConvCompressionThreshold(const double toThreshold) { mNonConvCompressionThreshold = toThreshold; } + void SetNonConvCompressionDamage(const double toDamage) { mNonConvCompressionDamage = toDamage; } + + void SetTensionStress(const double toS){mTensionUniaxialStress = toS;} + void SetCompressionStress(const double toS){mCompressionUniaxialStress = toS;} + + ///@} + ///@name Protected Access + ///@{ + + ///@} + ///@name Protected Inquiry + ///@{ + + ///@} + ///@name Protected LifeCycle + ///@{ + + ///@} + +private: + ///@name Static Member Variables + ///@{ + + ///@} + ///@name Member Variables + ///@{ + + // Converged values + double mTensionDamage = 0.0; + double mTensionThreshold = 0.0; + + // Non Converged values + double mNonConvTensionDamage = 0.0; + double mNonConvTensionThreshold = 0.0; + + double mCompressionDamage = 0.0; + double mCompressionThreshold = 0.0; + // double mUniaxialStress = 0.0; + + // Non Converged values + double mNonConvCompressionDamage = 0.0; + double mNonConvCompressionThreshold = 0.0; + + double mTensionUniaxialStress = 0.0; + double mCompressionUniaxialStress = 0.0; + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + + /** + * @brief This method computes the tangent tensor + * @param rValues The constitutive law parameters and flags + */ + void CalculateTangentTensor(ConstitutiveLaw::Parameters &rValues); + + /** + * @brief This method computes the secant tensor + * @param rValues The constitutive law parameters and flags + */ + void CalculateSecantTensor(ConstitutiveLaw::Parameters& rValues, Matrix& rSecantTensor); + + + // Serialization + + friend class Serializer; + + void save(Serializer &rSerializer) const override + { + KRATOS_SERIALIZE_SAVE_BASE_CLASS(rSerializer, ConstitutiveLaw) + rSerializer.save("TensionDamage", mTensionDamage); + rSerializer.save("TensionThreshold", mTensionThreshold); + rSerializer.save("NonConvTensionDamage", mNonConvTensionDamage); + rSerializer.save("NonConvTensionThreshold", mNonConvTensionThreshold); + rSerializer.save("CompressionDamage", mCompressionDamage); + rSerializer.save("CompressionThreshold", mCompressionThreshold); + rSerializer.save("NonConvCompressionnDamage", mNonConvCompressionDamage); + rSerializer.save("NonConvCompressionThreshold", mNonConvCompressionThreshold); + } + + void load(Serializer &rSerializer) override + { + KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, ConstitutiveLaw) + rSerializer.load("TensionDamage", mTensionDamage); + rSerializer.load("TensionThreshold", mTensionThreshold); + rSerializer.load("NonConvTensionDamage", mNonConvTensionDamage); + rSerializer.load("NonConvTensionThreshold", mNonConvTensionThreshold); + rSerializer.load("CompressionDamage", mCompressionDamage); + rSerializer.load("CompressionThreshold", mCompressionThreshold); + rSerializer.load("NonConvCompressionnDamage", mNonConvCompressionDamage); + rSerializer.load("NonConvCompressionThreshold", mNonConvCompressionThreshold); + } + + /** + * @brief This method computes the equivalent stress in Tension + * @param rValues The constitutive law parameters and flags + * rPredictiveStressVector Predictive or effective Stress Vector + * rEquivalentStress The equivalent Stress to be filled by method + */ + void CalculateEquivalentStressTension( + array_1d& rPredictiveStressVector, + double& rEquivalentStress, + ConstitutiveLaw::Parameters& rValues); + + /** + * @brief This method computes the equivalent stress in Compression + * @param rValues The constitutive law parameters and flags + * rPredictiveStressVector Predictive or effective Stress Vector + * rEquivalentStress The equivalent Stress to be filled by method + */ + void CalculateEquivalentStressCompression( + array_1d& rPredictiveStressVector, + double& rEquivalentStress, + ConstitutiveLaw::Parameters& rValues); + + /** + * @brief This method computes the final stress vector in Tension + * @param rValues The constitutive law parameters and flags + * rPredictiveStressVector Tension Part of the predictive or effective stress vector + * UniaxialStress The equivalent uniaxial stress in Tension + * rDamage The damage variable in Tension + * rThreshold The Damage Threshold in Tension + * CharacteristicLength The finite element charecteristic length + */ + void IntegrateStressVectorTension( + array_1d& rPredictiveStressVector, + const double UniaxialStress, + double& rDamage, + double& rThreshold, + ConstitutiveLaw::Parameters& rValues, + const double CharacteristicLength); + + /** + * @brief This method computes the damage parameter for the exponential softening behavior in tension + * @params rValues The constitutive law parameters and flags + * rAParameter The damage parameter filled by method + * CharacteristicLength The finite element charecteristic length + */ + void CalculateDamageParameterTension( + ConstitutiveLaw::Parameters& rValues, + double& rAParameter, + const double CharacteristicLength); + + /** + * @brief This method computes the tension damage variable for the exponential softening law in tension + * @params rValues The constitutive law parameters and flags + * UniaxialStress The equivalent uniaxial stress in Tension + * Threshold The damage threshold in Tension + * DamageParameter The damage parameter for the exponential softening law + * CharacteristicLength The finite element charecteristic length + * rDamage The tension damage variable filled by the method + */ + + void CalculateExponentialDamageTension( + const double UniaxialStress, + const double Threshold, + const double DamageParameter, + const double CharacteristicLength, + ConstitutiveLaw::Parameters& rValues, + double& rDamage); + + /** + * @brief This method computes the final stress vector in Tension + * @param rValues The constitutive law parameters and flags + * rPredictiveStressVector Compression Part of the predictive or effective stress vector + * UniaxialStress The equivalent uniaxial stress in Compression + * rDamage The damage variable in Compression + * rThreshold The Damage Threshold in Compression + * CharacteristicLength The finite element charecteristic length + */ + void IntegrateStressVectorCompression( + array_1d& rPredictiveStressVector, + const double UniaxialStress, + double& rDamage, + double& rThreshold, + ConstitutiveLaw::Parameters& rValues, + const double CharacteristicLength); + + /** + * BRIEF DOCUMENTATION OF THE USED UNIAXIAL SOFTENING BEHAVIOR IN COMPRESSION + * Entire documentation can be found in the the Phd Thesis of Massimo Petracca + * << Computational Multiscale Analysis of Masonry Structures>> + * + * UNIAXIAL BEZIER COMPRESSION DAMAGE + * {I} Linear Elastic + * {II} Hardening Quadratic Bezier Curve + * Control nodes: 0=(e_0,s_0); I=(e_i,s_p); P=(e_p,s_p) + * {III} Softening Quadratic Bezier Curve + * Control nodes: P=(e_p,s_p); J=(e_j,s_j); K=(e_k,s_k) + * {IV} Softening Quadratic Bezier Curve + * Control nodes: K=(e_k,s_k); R=(e_r,s_r); U=(e_u,s_u) + * {V} Residual Strength + * + * STRESS + * ^ + * /|\ + * | (P) + * s_p = |------------(I)+----#####--+(J) + * s_i = | ' ### ' #### + * s_j | ### ' #### + * | ###' ' ' ### + * s_k |-----------##--+------+----+--## (K) + * s_0 |---------##(0) ' ' ' ### + * | ## ' ' ' ' '## + * | ## ' ' ' ' ' #### + * | ## ' ' ' ' ' ##### + * | ## ' ' ' ' ' ##### + * | ## ' ' ' ' ' (R) ######## (U) + * s_r = |---##------+---+------'----+----+-----+-----------------###################### + * s_u | ## ' ' ' ' ' ' ' + * |_##________+___+______+____+____+_____+_________________+______________________________\ + * e_0 e_i e_p e_j e_k e_r e_u / STRAIN + * ' ' ' ' ' + * ' {I} ' {II} ' {III} ' {IV} ' {V} + * ' ' ' ' ' + * + */ + /** + * @brief This method computes the Damage Variable in Compression by considering three Bezier curves (hardening + softening + softening + residual) + * @param rValues The constitutive law parameters and flags + * UniaxialStress The equivalent uniaxial stress in Compression + * rDamage The damage variable in Compression + * rThreshold The Damage Threshold in Compression + * CharacteristicLength The finite element charecteristic length + */ + void CalculateBezier3DamageCompression( + const double UniaxialStress, + double& rDamage, + double& rThreshold, + const double CharacteristicLength, + ConstitutiveLaw::Parameters& rValues); + + /** + * @brief This method regulates the four bezier control strains to avoid a constitutive snap-back (fracture energy considerations) + * @param specific_dissipated_fracture_energy FRACTURE_ENERGY_CMOPRESSION devided by CharacteristicLength + * sp, sk, sr stress Values to control the bezier curves + * ep strain pproperty to control the bezier curve + * ej, ek, er, eu strain properties to be regulated in method + */ + void RegulateBezierDeterminators( + const double specific_dissipated_fracture_energy, + const double sp, const double sk, const double sr, const double ep, + double& ej, double& ek, double& er, double& eu); + + /** + * @brief This method computes the area beneath the parts of the bezier curves, respectively + * @param BezierG Area beneath the curve, to be filled by method + * x1, x2, x3, y1, y2, y3 coordinates of the control points of the bezier + */ + void ComputeBezierEnergy( + double& BezierG, + const double x1, const double x2, const double x3, + const double y1, const double y2, const double y3); + + /** + * @brief This method returns the bezier damage parameter + * @param Xi Strain-like counterpart of the uniaxial compression stress + * x1, x2, x3 Necesarry Stress values to define the uniaxial compression damage bezier curve + * y1, y2, y3 Necesarry Strain vlaues to define the uniaxial compression damage bezier curve + */ + double EvaluateBezierCurve( + const double Xi, + const double x1, double x2, const double x3, + const double y1, const double y2, const double y3); + + + ///@} + ///@name Private Access + ///@{ + + ///@} + ///@name Private Inquiry + ///@{ + + ///@} + ///@name Un accessible methods + ///@{ + + + + ///@} + +}; // Class DamageDPlusDMinusMasonry3DLaw +}// namespace Kratos +#endif + diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_d_plus_d_minus_damage.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_d_plus_d_minus_damage.cpp similarity index 96% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_d_plus_d_minus_damage.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_d_plus_d_minus_damage.cpp index 28673e600cd1..56031602d8c5 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_d_plus_d_minus_damage.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_d_plus_d_minus_damage.cpp @@ -1,795 +1,795 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Alejandro Cornejo -// -// - -// System includes - -// External includes - -// Project includes -#include "custom_utilities/tangent_operator_calculator_utility.h" -#include "constitutive_laws_application_variables.h" -#include "custom_constitutive/generic_small_strain_d_plus_d_minus_damage.h" -#include "custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_compression_constitutive_law_integrator.h" -#include "custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_tension_constitutive_law_integrator.h" - -// Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" - -// Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" - -namespace Kratos -{ - -template -void GenericSmallStrainDplusDminusDamage:: - CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ - this->CalculateMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) -{ - this->CalculateMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) -{ - this->CalculateMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) -{ - KRATOS_TRY - - // Integrate Stress Damage - Vector& integrated_stress_vector = rValues.GetStressVector(); - array_1d auxiliar_integrated_stress_vector = integrated_stress_vector; - Matrix& r_tangent_tensor = rValues.GetConstitutiveMatrix(); // todo modify after integration - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - - //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN - if( r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { - this->CalculateValue(rValues, STRAIN, r_strain_vector); - } - - // Elastic Matrix - if( r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); - } - - // We compute the stress - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS)) { - // Elastic Matrix - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); - - DamageParameters damage_parameters; - damage_parameters.ThresholdTension = this->GetTensionThreshold(); - damage_parameters.DamageTension = this->GetTensionDamage(); - damage_parameters.ThresholdCompression = this->GetCompressionThreshold(); - damage_parameters.DamageCompression = this->GetCompressionDamage(); - - // S0 = C0:E - array_1d predictive_stress_vector = prod(r_constitutive_matrix, r_strain_vector); - - // Perform the separation of the Stress in tension and compression - array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; - AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, predictive_stress_vector_tension, predictive_stress_vector_compression); - - damage_parameters.TensionStressVector = predictive_stress_vector_tension; - damage_parameters.CompressionStressVector = predictive_stress_vector_compression; - - TConstLawIntegratorTensionType::YieldSurfaceType::CalculateEquivalentStress(predictive_stress_vector_tension, r_strain_vector, - damage_parameters.UniaxialTensionStress, rValues); - TConstLawIntegratorCompressionType::YieldSurfaceType::CalculateEquivalentStress(predictive_stress_vector_compression, r_strain_vector, - damage_parameters.UniaxialCompressionStress, rValues); - - const double F_tension = damage_parameters.UniaxialTensionStress - damage_parameters.ThresholdTension; - const double F_compression = damage_parameters.UniaxialCompressionStress - damage_parameters.ThresholdCompression; - - const bool is_damaging_tension = this->IntegrateStressTensionIfNecessary(F_tension, damage_parameters, predictive_stress_vector_tension, rValues); - const bool is_damaging_compression = this->IntegrateStressCompressionIfNecessary(F_compression, damage_parameters, predictive_stress_vector_compression, rValues); - - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - if (is_damaging_tension || is_damaging_compression) { // Perturbations - this->CalculateTangentTensor(rValues); - } else { // Secant matrix - this->CalculateSecantTensor(rValues, r_tangent_tensor); - } - } - this->CalculateIntegratedStressVector(integrated_stress_vector, damage_parameters, rValues); - } - KRATOS_CATCH("") -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainDplusDminusDamage:: - IntegrateStressTensionIfNecessary( - const double F_tension, - DamageParameters& rParameters, - array_1d& rIntegratedStressVectorTension, - ConstitutiveLaw::Parameters& rValues) -{ - bool is_damaging = false; - const Flags& r_constitutive_law_options = rValues.GetOptions(); - if (F_tension <= tolerance) { // Elastic case - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - this->SetNonConvTensionDamage(rParameters.DamageTension); - this->SetNonConvTensionThreshold(rParameters.ThresholdTension); - } - rIntegratedStressVectorTension *= (1.0 - rParameters.DamageTension); - } else { // Increasing damage... - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); - - // This routine updates the IntegratedStressVectorTension to verify the yield surf - TConstLawIntegratorTensionType::IntegrateStressVector( - rIntegratedStressVectorTension, - rParameters.UniaxialTensionStress, - rParameters.DamageTension, - rParameters.ThresholdTension, - rValues, characteristic_length); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - this->SetNonConvTensionDamage(rParameters.DamageTension); - this->SetNonConvTensionThreshold(rParameters.UniaxialTensionStress); - } - is_damaging = true; - } - - // Just for plotting... - double uniaxial_stress_tension = 0.0; - TConstLawIntegratorTensionType::YieldSurfaceType::CalculateEquivalentStress(rIntegratedStressVectorTension, rValues.GetStrainVector(), - uniaxial_stress_tension, rValues); - uniaxial_stress_tension /= TConstLawIntegratorTensionType::YieldSurfaceType::GetScaleFactorTension(rValues.GetMaterialProperties()); - this->SetTensionStress(uniaxial_stress_tension); - - return is_damaging; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainDplusDminusDamage:: - IntegrateStressCompressionIfNecessary( - const double F_compression, - DamageParameters& rParameters, - array_1d& rIntegratedStressVectorCompression, - ConstitutiveLaw::Parameters& rValues) -{ - bool is_damaging = false; - const Flags& r_constitutive_law_options = rValues.GetOptions(); - if (F_compression <= tolerance) { // Elastic case - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - this->SetNonConvCompressionDamage(rParameters.DamageCompression); - this->SetNonConvCompressionThreshold(rParameters.ThresholdCompression); - } - rIntegratedStressVectorCompression *= (1.0 - rParameters.DamageCompression); - } else { // Increasing damage... - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); - - // This routine updates the IntegratedStressVectorCompression to verify the yield surf - TConstLawIntegratorCompressionType::IntegrateStressVector( - rIntegratedStressVectorCompression, - rParameters.UniaxialCompressionStress, - rParameters.DamageCompression, - rParameters.ThresholdCompression, - rValues, characteristic_length); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { - this->SetNonConvCompressionDamage(rParameters.DamageCompression); - this->SetNonConvCompressionThreshold(rParameters.UniaxialCompressionStress); - } - - is_damaging = true; - } - - // Just for plotting... - double uniaxial_stress_compression = 0.0; - TConstLawIntegratorCompressionType::YieldSurfaceType::CalculateEquivalentStress(rIntegratedStressVectorCompression, rValues.GetStrainVector(), - uniaxial_stress_compression, rValues); - this->SetCompressionStress(uniaxial_stress_compression); - - return is_damaging; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - CalculateIntegratedStressVector( - Vector& rIntegratedStressVector, - const DamageParameters& rParameters, - ConstitutiveLaw::Parameters& rValues) -{ - rIntegratedStressVector = (1.0 - rParameters.DamageTension) * rParameters.TensionStressVector + - (1.0 - rParameters.DamageCompression) * rParameters.CompressionStressVector; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - CalculateTangentTensor(ConstitutiveLaw::Parameters& rValues) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - - const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; - const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; - - if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { - KRATOS_ERROR << "Analytic solution not available" << std::endl; - } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (first order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); - } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (second order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - CalculateSecantTensor(ConstitutiveLaw::Parameters& rValues, Matrix& rSecantTensor) -{ - // TODO improve this - this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, rSecantTensor); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - InitializeMaterial( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const Vector& rShapeFunctionsValues) -{ - // We construct the CL parameters - ProcessInfo dummy_process_info; - ConstitutiveLaw::Parameters aux_param(rElementGeometry, rMaterialProperties, dummy_process_info); - - // We call the integrators - double initial_threshold_tension, initial_threshold_compression; - TConstLawIntegratorTensionType::GetInitialUniaxialThreshold(aux_param, initial_threshold_tension); - this->SetTensionThreshold(initial_threshold_tension); - - TConstLawIntegratorCompressionType::GetInitialUniaxialThreshold(aux_param, initial_threshold_compression); - this->SetCompressionThreshold(initial_threshold_compression); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - FinalizeSolutionStep( - const Properties& rMaterialProperties, - const GeometryType &rElementGeometry, - const Vector& rShapeFunctionsValues, - const ProcessInfo& rCurrentProcessInfo - ) -{ - this->SetTensionDamage(this->GetNonConvTensionDamage()); - this->SetTensionThreshold(this->GetNonConvTensionThreshold()); - - this->SetCompressionDamage(this->GetNonConvCompressionDamage()); - this->SetCompressionThreshold(this->GetNonConvCompressionThreshold()); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainDplusDminusDamage:: - Has(const Variable& rThisVariable) -{ - if (rThisVariable == DAMAGE_TENSION) { - return true; - } else if (rThisVariable == THRESHOLD_TENSION) { - return true; - } else if (rThisVariable == DAMAGE_COMPRESSION) { - return true; - } else if (rThisVariable == THRESHOLD_COMPRESSION) { - return true; - } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { - return true; - } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { - return true; - } else { - return BaseType::Has(rThisVariable); - } - return false; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainDplusDminusDamage:: - Has(const Variable& rThisVariable) -{ - return BaseType::Has(rThisVariable); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainDplusDminusDamage:: - Has(const Variable& rThisVariable) -{ - return BaseType::Has(rThisVariable); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainDplusDminusDamage:: - SetValue( - const Variable& rThisVariable, - const double& rValue, - const ProcessInfo& rCurrentProcessInfo - ) -{ - if (rThisVariable == DAMAGE_TENSION) { - mTensionDamage = rValue; - } else if (rThisVariable == THRESHOLD_TENSION) { - mTensionThreshold = rValue; - } else if (rThisVariable == DAMAGE_COMPRESSION) { - mCompressionDamage = rValue; - } else if (rThisVariable == THRESHOLD_COMPRESSION) { - mCompressionThreshold = rValue; - } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { - mCompressionUniaxialStress = rValue; - } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { - mTensionUniaxialStress = rValue; - } else { - return BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -double& GenericSmallStrainDplusDminusDamage:: - GetValue( - const Variable& rThisVariable, - double& rValue - ) -{ - if (rThisVariable == DAMAGE_TENSION) { - rValue = mTensionDamage; - } else if (rThisVariable == THRESHOLD_TENSION) { - rValue = mTensionThreshold; - } else if (rThisVariable == DAMAGE_COMPRESSION) { - rValue = mCompressionDamage; - } else if (rThisVariable == THRESHOLD_COMPRESSION) { - rValue = mCompressionThreshold; - } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { - rValue = mCompressionUniaxialStress; - } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { - rValue = mTensionUniaxialStress; - } else { - return BaseType::GetValue(rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Vector& GenericSmallStrainDplusDminusDamage:: - GetValue( - const Variable& rThisVariable, - Vector& rValue - ) -{ - return BaseType::GetValue(rThisVariable, rValue); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Matrix& GenericSmallStrainDplusDminusDamage:: - GetValue( - const Variable& rThisVariable, - Matrix& rValue - ) -{ - return BaseType::GetValue(rThisVariable, rValue); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -double& GenericSmallStrainDplusDminusDamage:: - CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue - ) -{ - return this->GetValue(rThisVariable, rValue); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Vector& GenericSmallStrainDplusDminusDamage:: - CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) -{ - if (rThisVariable == TENSION_STRESS_VECTOR) { - Flags& r_flags = rParameterValues.GetOptions(); - // Previous flags saved - const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); - const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); - - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); - - // We compute the stress - this->CalculateMaterialResponseCauchy(rParameterValues); - const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); - array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; - AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, - predictive_stress_vector_tension, - predictive_stress_vector_compression); - rValue = predictive_stress_vector_tension; - // Previous flags restored - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - return rValue; - - } else if (rThisVariable == COMPRESSION_STRESS_VECTOR) { - Flags& r_flags = rParameterValues.GetOptions(); - // Previous flags saved - const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); - const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); - - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); - - // We compute the stress - this->CalculateMaterialResponseCauchy(rParameterValues); - const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); - array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; - AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, - predictive_stress_vector_tension, - predictive_stress_vector_compression); - rValue = predictive_stress_vector_compression; - // Previous flags restored - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); - return rValue; - - } else if (rThisVariable == EFFECTIVE_COMPRESSION_STRESS_VECTOR) { - Flags& r_flags = rParameterValues.GetOptions(); - // Previous flags saved - const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); - const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); - - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); - - // We compute the stress - this->CalculateMaterialResponseCauchy(rParameterValues); - const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); - array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; - AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, - predictive_stress_vector_tension, - predictive_stress_vector_compression); - rValue = predictive_stress_vector_compression / (1.0 - mCompressionDamage); - // Previous flags restored - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); - return rValue; - - } else if (rThisVariable == EFFECTIVE_TENSION_STRESS_VECTOR) { - Flags& r_flags = rParameterValues.GetOptions(); - // Previous flags saved - const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); - const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); - - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); - - // We compute the stress - this->CalculateMaterialResponseCauchy(rParameterValues); - const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); - array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; - AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, - predictive_stress_vector_tension, - predictive_stress_vector_compression); - rValue = predictive_stress_vector_tension / (1.0 - mTensionDamage); - // Previous flags restored - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); - return rValue; - } else if (this->Has(rThisVariable)) { - return this->GetValue(rThisVariable, rValue); - } else { - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Matrix& GenericSmallStrainDplusDminusDamage:: - CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) -{ - if (rThisVariable == TENSION_STRESS_TENSOR) { - - Flags& r_flags = rParameterValues.GetOptions(); - // Previous flags saved - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); - - // We compute the stress - this->CalculateMaterialResponseCauchy(rParameterValues); - const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); - array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; - AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, - predictive_stress_vector_tension, - predictive_stress_vector_compression); - rValue = MathUtils::StressVectorToTensor(predictive_stress_vector_tension); - // Previous flags restored - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); - return rValue; - - } else if (rThisVariable == COMPRESSION_STRESS_TENSOR) { - Flags& r_flags = rParameterValues.GetOptions(); - // Previous flags saved - const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); - const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); - - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); - - // We compute the stress - this->CalculateMaterialResponseCauchy(rParameterValues); - const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); - array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; - AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, - predictive_stress_vector_tension, - predictive_stress_vector_compression); - - rValue = MathUtils::StressVectorToTensor(predictive_stress_vector_compression); - // Previous flags restored - r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); - r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); - return rValue; - - } else if (this->Has(rThisVariable)) { - return this->GetValue(rThisVariable, rValue); - } else { - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -int GenericSmallStrainDplusDminusDamage:: - Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const -{ - const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); - const int check_integrator_tension = TConstLawIntegratorTensionType::Check(rMaterialProperties); - const int check_integrator_compression = TConstLawIntegratorCompressionType::Check(rMaterialProperties); - KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; - if ((check_base + check_integrator_tension + check_integrator_compression) > 0) return 1; - return 0; -} - - -/***********************************************************************************/ -/***********************************************************************************/ - -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; - -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; -} // Namespace Kratos +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Alejandro Cornejo +// +// + +// System includes + +// External includes + +// Project includes +#include "custom_utilities/tangent_operator_calculator_utility.h" +#include "constitutive_laws_application_variables.h" +#include "generic_small_strain_d_plus_d_minus_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_compression_cl_integrator.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_tension_cl_integrator.h" + +// Yield surfaces +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" + +// Plastic potentials +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" + +namespace Kratos +{ + +template +void GenericSmallStrainDplusDminusDamage:: + CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ + this->CalculateMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) +{ + this->CalculateMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) +{ + this->CalculateMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) +{ + KRATOS_TRY + + // Integrate Stress Damage + Vector& integrated_stress_vector = rValues.GetStressVector(); + array_1d auxiliar_integrated_stress_vector = integrated_stress_vector; + Matrix& r_tangent_tensor = rValues.GetConstitutiveMatrix(); // todo modify after integration + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + + //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN + if( r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { + this->CalculateValue(rValues, STRAIN, r_strain_vector); + } + + // Elastic Matrix + if( r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); + } + + // We compute the stress + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS)) { + // Elastic Matrix + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); + + DamageParameters damage_parameters; + damage_parameters.ThresholdTension = this->GetTensionThreshold(); + damage_parameters.DamageTension = this->GetTensionDamage(); + damage_parameters.ThresholdCompression = this->GetCompressionThreshold(); + damage_parameters.DamageCompression = this->GetCompressionDamage(); + + // S0 = C0:E + array_1d predictive_stress_vector = prod(r_constitutive_matrix, r_strain_vector); + + // Perform the separation of the Stress in tension and compression + array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; + AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, predictive_stress_vector_tension, predictive_stress_vector_compression); + + damage_parameters.TensionStressVector = predictive_stress_vector_tension; + damage_parameters.CompressionStressVector = predictive_stress_vector_compression; + + TConstLawIntegratorTensionType::YieldSurfaceType::CalculateEquivalentStress(predictive_stress_vector_tension, r_strain_vector, + damage_parameters.UniaxialTensionStress, rValues); + TConstLawIntegratorCompressionType::YieldSurfaceType::CalculateEquivalentStress(predictive_stress_vector_compression, r_strain_vector, + damage_parameters.UniaxialCompressionStress, rValues); + + const double F_tension = damage_parameters.UniaxialTensionStress - damage_parameters.ThresholdTension; + const double F_compression = damage_parameters.UniaxialCompressionStress - damage_parameters.ThresholdCompression; + + const bool is_damaging_tension = this->IntegrateStressTensionIfNecessary(F_tension, damage_parameters, predictive_stress_vector_tension, rValues); + const bool is_damaging_compression = this->IntegrateStressCompressionIfNecessary(F_compression, damage_parameters, predictive_stress_vector_compression, rValues); + + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + if (is_damaging_tension || is_damaging_compression) { // Perturbations + this->CalculateTangentTensor(rValues); + } else { // Secant matrix + this->CalculateSecantTensor(rValues, r_tangent_tensor); + } + } + this->CalculateIntegratedStressVector(integrated_stress_vector, damage_parameters, rValues); + } + KRATOS_CATCH("") +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainDplusDminusDamage:: + IntegrateStressTensionIfNecessary( + const double F_tension, + DamageParameters& rParameters, + array_1d& rIntegratedStressVectorTension, + ConstitutiveLaw::Parameters& rValues) +{ + bool is_damaging = false; + const Flags& r_constitutive_law_options = rValues.GetOptions(); + if (F_tension <= tolerance) { // Elastic case + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + this->SetNonConvTensionDamage(rParameters.DamageTension); + this->SetNonConvTensionThreshold(rParameters.ThresholdTension); + } + rIntegratedStressVectorTension *= (1.0 - rParameters.DamageTension); + } else { // Increasing damage... + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); + + // This routine updates the IntegratedStressVectorTension to verify the yield surf + TConstLawIntegratorTensionType::IntegrateStressVector( + rIntegratedStressVectorTension, + rParameters.UniaxialTensionStress, + rParameters.DamageTension, + rParameters.ThresholdTension, + rValues, characteristic_length); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + this->SetNonConvTensionDamage(rParameters.DamageTension); + this->SetNonConvTensionThreshold(rParameters.UniaxialTensionStress); + } + is_damaging = true; + } + + // Just for plotting... + double uniaxial_stress_tension = 0.0; + TConstLawIntegratorTensionType::YieldSurfaceType::CalculateEquivalentStress(rIntegratedStressVectorTension, rValues.GetStrainVector(), + uniaxial_stress_tension, rValues); + uniaxial_stress_tension /= TConstLawIntegratorTensionType::YieldSurfaceType::GetScaleFactorTension(rValues.GetMaterialProperties()); + this->SetTensionStress(uniaxial_stress_tension); + + return is_damaging; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainDplusDminusDamage:: + IntegrateStressCompressionIfNecessary( + const double F_compression, + DamageParameters& rParameters, + array_1d& rIntegratedStressVectorCompression, + ConstitutiveLaw::Parameters& rValues) +{ + bool is_damaging = false; + const Flags& r_constitutive_law_options = rValues.GetOptions(); + if (F_compression <= tolerance) { // Elastic case + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + this->SetNonConvCompressionDamage(rParameters.DamageCompression); + this->SetNonConvCompressionThreshold(rParameters.ThresholdCompression); + } + rIntegratedStressVectorCompression *= (1.0 - rParameters.DamageCompression); + } else { // Increasing damage... + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); + + // This routine updates the IntegratedStressVectorCompression to verify the yield surf + TConstLawIntegratorCompressionType::IntegrateStressVector( + rIntegratedStressVectorCompression, + rParameters.UniaxialCompressionStress, + rParameters.DamageCompression, + rParameters.ThresholdCompression, + rValues, characteristic_length); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + this->SetNonConvCompressionDamage(rParameters.DamageCompression); + this->SetNonConvCompressionThreshold(rParameters.UniaxialCompressionStress); + } + + is_damaging = true; + } + + // Just for plotting... + double uniaxial_stress_compression = 0.0; + TConstLawIntegratorCompressionType::YieldSurfaceType::CalculateEquivalentStress(rIntegratedStressVectorCompression, rValues.GetStrainVector(), + uniaxial_stress_compression, rValues); + this->SetCompressionStress(uniaxial_stress_compression); + + return is_damaging; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + CalculateIntegratedStressVector( + Vector& rIntegratedStressVector, + const DamageParameters& rParameters, + ConstitutiveLaw::Parameters& rValues) +{ + rIntegratedStressVector = (1.0 - rParameters.DamageTension) * rParameters.TensionStressVector + + (1.0 - rParameters.DamageCompression) * rParameters.CompressionStressVector; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + CalculateTangentTensor(ConstitutiveLaw::Parameters& rValues) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + + const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; + const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; + + if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { + KRATOS_ERROR << "Analytic solution not available" << std::endl; + } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (first order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); + } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (second order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + CalculateSecantTensor(ConstitutiveLaw::Parameters& rValues, Matrix& rSecantTensor) +{ + // TODO improve this + this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, rSecantTensor); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + InitializeMaterial( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const Vector& rShapeFunctionsValues) +{ + // We construct the CL parameters + ProcessInfo dummy_process_info; + ConstitutiveLaw::Parameters aux_param(rElementGeometry, rMaterialProperties, dummy_process_info); + + // We call the integrators + double initial_threshold_tension, initial_threshold_compression; + TConstLawIntegratorTensionType::GetInitialUniaxialThreshold(aux_param, initial_threshold_tension); + this->SetTensionThreshold(initial_threshold_tension); + + TConstLawIntegratorCompressionType::GetInitialUniaxialThreshold(aux_param, initial_threshold_compression); + this->SetCompressionThreshold(initial_threshold_compression); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + FinalizeSolutionStep( + const Properties& rMaterialProperties, + const GeometryType &rElementGeometry, + const Vector& rShapeFunctionsValues, + const ProcessInfo& rCurrentProcessInfo + ) +{ + this->SetTensionDamage(this->GetNonConvTensionDamage()); + this->SetTensionThreshold(this->GetNonConvTensionThreshold()); + + this->SetCompressionDamage(this->GetNonConvCompressionDamage()); + this->SetCompressionThreshold(this->GetNonConvCompressionThreshold()); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainDplusDminusDamage:: + Has(const Variable& rThisVariable) +{ + if (rThisVariable == DAMAGE_TENSION) { + return true; + } else if (rThisVariable == THRESHOLD_TENSION) { + return true; + } else if (rThisVariable == DAMAGE_COMPRESSION) { + return true; + } else if (rThisVariable == THRESHOLD_COMPRESSION) { + return true; + } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { + return true; + } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { + return true; + } else { + return BaseType::Has(rThisVariable); + } + return false; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainDplusDminusDamage:: + Has(const Variable& rThisVariable) +{ + return BaseType::Has(rThisVariable); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainDplusDminusDamage:: + Has(const Variable& rThisVariable) +{ + return BaseType::Has(rThisVariable); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainDplusDminusDamage:: + SetValue( + const Variable& rThisVariable, + const double& rValue, + const ProcessInfo& rCurrentProcessInfo + ) +{ + if (rThisVariable == DAMAGE_TENSION) { + mTensionDamage = rValue; + } else if (rThisVariable == THRESHOLD_TENSION) { + mTensionThreshold = rValue; + } else if (rThisVariable == DAMAGE_COMPRESSION) { + mCompressionDamage = rValue; + } else if (rThisVariable == THRESHOLD_COMPRESSION) { + mCompressionThreshold = rValue; + } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { + mCompressionUniaxialStress = rValue; + } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { + mTensionUniaxialStress = rValue; + } else { + return BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +double& GenericSmallStrainDplusDminusDamage:: + GetValue( + const Variable& rThisVariable, + double& rValue + ) +{ + if (rThisVariable == DAMAGE_TENSION) { + rValue = mTensionDamage; + } else if (rThisVariable == THRESHOLD_TENSION) { + rValue = mTensionThreshold; + } else if (rThisVariable == DAMAGE_COMPRESSION) { + rValue = mCompressionDamage; + } else if (rThisVariable == THRESHOLD_COMPRESSION) { + rValue = mCompressionThreshold; + } else if (rThisVariable == UNIAXIAL_STRESS_COMPRESSION) { + rValue = mCompressionUniaxialStress; + } else if (rThisVariable == UNIAXIAL_STRESS_TENSION) { + rValue = mTensionUniaxialStress; + } else { + return BaseType::GetValue(rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Vector& GenericSmallStrainDplusDminusDamage:: + GetValue( + const Variable& rThisVariable, + Vector& rValue + ) +{ + return BaseType::GetValue(rThisVariable, rValue); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Matrix& GenericSmallStrainDplusDminusDamage:: + GetValue( + const Variable& rThisVariable, + Matrix& rValue + ) +{ + return BaseType::GetValue(rThisVariable, rValue); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +double& GenericSmallStrainDplusDminusDamage:: + CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue + ) +{ + return this->GetValue(rThisVariable, rValue); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Vector& GenericSmallStrainDplusDminusDamage:: + CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) +{ + if (rThisVariable == TENSION_STRESS_VECTOR) { + Flags& r_flags = rParameterValues.GetOptions(); + // Previous flags saved + const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); + const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); + + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); + + // We compute the stress + this->CalculateMaterialResponseCauchy(rParameterValues); + const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); + array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; + AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, + predictive_stress_vector_tension, + predictive_stress_vector_compression); + rValue = predictive_stress_vector_tension; + // Previous flags restored + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + return rValue; + + } else if (rThisVariable == COMPRESSION_STRESS_VECTOR) { + Flags& r_flags = rParameterValues.GetOptions(); + // Previous flags saved + const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); + const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); + + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); + + // We compute the stress + this->CalculateMaterialResponseCauchy(rParameterValues); + const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); + array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; + AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, + predictive_stress_vector_tension, + predictive_stress_vector_compression); + rValue = predictive_stress_vector_compression; + // Previous flags restored + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + return rValue; + + } else if (rThisVariable == EFFECTIVE_COMPRESSION_STRESS_VECTOR) { + Flags& r_flags = rParameterValues.GetOptions(); + // Previous flags saved + const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); + const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); + + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); + + // We compute the stress + this->CalculateMaterialResponseCauchy(rParameterValues); + const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); + array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; + AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, + predictive_stress_vector_tension, + predictive_stress_vector_compression); + rValue = predictive_stress_vector_compression / (1.0 - mCompressionDamage); + // Previous flags restored + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + return rValue; + + } else if (rThisVariable == EFFECTIVE_TENSION_STRESS_VECTOR) { + Flags& r_flags = rParameterValues.GetOptions(); + // Previous flags saved + const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); + const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); + + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); + + // We compute the stress + this->CalculateMaterialResponseCauchy(rParameterValues); + const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); + array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; + AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, + predictive_stress_vector_tension, + predictive_stress_vector_compression); + rValue = predictive_stress_vector_tension / (1.0 - mTensionDamage); + // Previous flags restored + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + return rValue; + } else if (this->Has(rThisVariable)) { + return this->GetValue(rThisVariable, rValue); + } else { + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Matrix& GenericSmallStrainDplusDminusDamage:: + CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (rThisVariable == TENSION_STRESS_TENSOR) { + + Flags& r_flags = rParameterValues.GetOptions(); + // Previous flags saved + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); + + // We compute the stress + this->CalculateMaterialResponseCauchy(rParameterValues); + const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); + array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; + AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, + predictive_stress_vector_tension, + predictive_stress_vector_compression); + rValue = MathUtils::StressVectorToTensor(predictive_stress_vector_tension); + // Previous flags restored + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + return rValue; + + } else if (rThisVariable == COMPRESSION_STRESS_TENSOR) { + Flags& r_flags = rParameterValues.GetOptions(); + // Previous flags saved + const bool flag_const_tensor = r_flags.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); + const bool flag_stress = r_flags.Is(ConstitutiveLaw::COMPUTE_STRESS); + + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, true); + + // We compute the stress + this->CalculateMaterialResponseCauchy(rParameterValues); + const array_1d& predictive_stress_vector = rParameterValues.GetStressVector(); + array_1d predictive_stress_vector_tension, predictive_stress_vector_compression; + AdvancedConstitutiveLawUtilities::SpectralDecomposition(predictive_stress_vector, + predictive_stress_vector_tension, + predictive_stress_vector_compression); + + rValue = MathUtils::StressVectorToTensor(predictive_stress_vector_compression); + // Previous flags restored + r_flags.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor); + r_flags.Set(ConstitutiveLaw::COMPUTE_STRESS, flag_stress); + return rValue; + + } else if (this->Has(rThisVariable)) { + return this->GetValue(rThisVariable, rValue); + } else { + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +int GenericSmallStrainDplusDminusDamage:: + Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const +{ + const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); + const int check_integrator_tension = TConstLawIntegratorTensionType::Check(rMaterialProperties); + const int check_integrator_compression = TConstLawIntegratorCompressionType::Check(rMaterialProperties); + KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; + if ((check_base + check_integrator_tension + check_integrator_compression) > 0) return 1; + return 0; +} + + +/***********************************************************************************/ +/***********************************************************************************/ + +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; + +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +template class GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>; +} // Namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_d_plus_d_minus_damage.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_d_plus_d_minus_damage.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_d_plus_d_minus_damage.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_d_plus_d_minus_damage.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_damage.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.cpp similarity index 61% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_damage.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.cpp index 1b75e4ad1ffa..6ac63774b666 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_damage.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.cpp @@ -19,26 +19,26 @@ // Project includes #include "custom_utilities/tangent_operator_calculator_utility.h" #include "constitutive_laws_application_variables.h" -#include "custom_constitutive/generic_small_strain_isotropic_damage.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" +#include "generic_small_strain_isotropic_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" namespace Kratos { @@ -82,24 +82,24 @@ void GenericSmallStrainIsotropicDamage::CalculateMateri Vector& r_strain_vector = rValues.GetStrainVector(); //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN - if( r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { - this->CalculateValue(rValues, STRAIN, r_strain_vector); + if (r_constitutive_law_options.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { + BaseType::CalculateCauchyGreenStrain(rValues, r_strain_vector); } // Elastic Matrix - if( r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ) ) { + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); } // We compute the stress - if(r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS)) { + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS)) { // Elastic Matrix Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); if (r_constitutive_law_options.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); + BaseType::CalculateCauchyGreenStrain(rValues, r_strain_vector); } this->template AddInitialStrainVectorContribution(r_strain_vector); @@ -128,11 +128,7 @@ void GenericSmallStrainIsotropicDamage::CalculateMateri } else { // Damage case const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); // This routine updates the PredictiveStress to verify the yield surf - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, - uniaxial_stress, damage, - threshold, rValues, - characteristic_length); + TConstLawIntegratorType::IntegrateStressVector(predictive_stress_vector, uniaxial_stress, damage, threshold, rValues, characteristic_length); // Updated Values noalias(auxiliar_integrated_stress_vector) = predictive_stress_vector; @@ -192,20 +188,6 @@ void GenericSmallStrainIsotropicDamage::InitializeMater /***********************************************************************************/ /***********************************************************************************/ -template -void GenericSmallStrainIsotropicDamage::FinalizeSolutionStep( - const Properties& rMaterialProperties, - const GeometryType &rElementGeometry, - const Vector& rShapeFunctionsValues, - const ProcessInfo& rCurrentProcessInfo - ) -{ - // Deprecated -} - -/***********************************************************************************/ -/***********************************************************************************/ - template void GenericSmallStrainIsotropicDamage::FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) { @@ -247,7 +229,7 @@ void GenericSmallStrainIsotropicDamage::FinalizeMateria //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - this->CalculateValue(rValues, STRAIN, r_strain_vector); + BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); } // We compute the stress @@ -279,11 +261,7 @@ void GenericSmallStrainIsotropicDamage::FinalizeMateria if (F >= threshold_tolerance) { // Plastic case const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); // This routine updates the PredictiveStress to verify the yield surf - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, - uniaxial_stress, damage, - threshold, rValues, - characteristic_length); + TConstLawIntegratorType::IntegrateStressVector(predictive_stress_vector, uniaxial_stress, damage, threshold, rValues, characteristic_length); mDamage = damage; mThreshold = uniaxial_stress; @@ -491,71 +469,19 @@ int GenericSmallStrainIsotropicDamage::Check( /***********************************************************************************/ /***********************************************************************************/ -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; - -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; -template class GenericSmallStrainIsotropicDamage>>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; + +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; +template class GenericSmallStrainIsotropicDamage >>>; } // namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_damage.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.h similarity index 94% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_damage.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.h index b4c64bab852f..39b18a072844 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_damage.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.h @@ -12,8 +12,8 @@ // Collaborator: Vicente Mataix Ferrandiz // -#if !defined(KRATOS_GENERIC_SMALL_STRAIN_ISOTROPIC_DAMAGE_3D_H_INCLUDED) -#define KRATOS_GENERIC_SMALL_STRAIN_ISOTROPIC_DAMAGE_3D_H_INCLUDED +#if !defined(KRATOS_GENERIC_SMALL_STRAIN_ISOTROPIC_DAMAGE_H_INCLUDED) +#define KRATOS_GENERIC_SMALL_STRAIN_ISOTROPIC_DAMAGE_H_INCLUDED // System includes @@ -164,21 +164,6 @@ class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericSmallStrainIsotropicDamag const Vector& rShapeFunctionsValues ) override; - /** - * @brief To be called at the end of each solution step - * @details (e.g. from Element::FinalizeSolutionStep) - * @param rMaterialProperties the Properties instance of the current element - * @param rElementGeometry the geometry of the current element - * @param rShapeFunctionsValues the shape functions values in the current integration point - * @param rCurrentProcessInfo the current ProcessInfo instance - */ - void FinalizeSolutionStep( - const Properties &rMaterialProperties, - const GeometryType &rElementGeometry, - const Vector& rShapeFunctionsValues, - const ProcessInfo& rCurrentProcessInfo - ) override; - /** * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses * @see Parameters diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage_plane_stress.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage_plane_stress.cpp new file mode 100644 index 000000000000..70de57812586 --- /dev/null +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage_plane_stress.cpp @@ -0,0 +1,74 @@ +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main author: Alejandro Cornejo +// +// + +// System includes + +// External includes + +// Project includes +#include "generic_small_strain_isotropic_damage_plane_stress.h" +#include "custom_utilities/constitutive_law_utilities.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" + +// Yield surfaces +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" + +// Plastic potentials +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" + +namespace Kratos +{ +/***********************************************************************************/ +/***********************************************************************************/ + +template +Matrix& GenericSmallStrainIsotropicDamagePlaneStress::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (rThisVariable == CONSTITUTIVE_MATRIX || rThisVariable == CONSTITUTIVE_MATRIX_PK2 || rThisVariable == CONSTITUTIVE_MATRIX_KIRCHHOFF) { + ConstitutiveLawUtilities<3>::CalculateElasticMatrixPlaneStress(rValue, rParameterValues); + return rValue; + } else { + BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template class GenericSmallStrainIsotropicDamagePlaneStress >>>; +template class GenericSmallStrainIsotropicDamagePlaneStress >>>; +template class GenericSmallStrainIsotropicDamagePlaneStress >>>; +template class GenericSmallStrainIsotropicDamagePlaneStress >>>; +template class GenericSmallStrainIsotropicDamagePlaneStress >>>; +template class GenericSmallStrainIsotropicDamagePlaneStress >>>; +template class GenericSmallStrainIsotropicDamagePlaneStress >>>; + +} // namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage_plane_stress.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage_plane_stress.h new file mode 100644 index 000000000000..a39096497d49 --- /dev/null +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage_plane_stress.h @@ -0,0 +1,207 @@ +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main author: Alejandro Cornejo +// +// + +#pragma once + +// System includes + +// External includes + +// Project includes +#include "generic_small_strain_isotropic_damage.h" + +namespace Kratos +{ +///@name Kratos Globals +///@{ + +///@} +///@name Type Definitions +///@{ + + // The size type definition + typedef std::size_t SizeType; + +///@} +///@name Enum's +///@{ + +///@} +///@name Functions +///@{ + +///@}GenericSmallStrainIsotropicDamagePlaneStress +///@name Kratos Classes +///@{ +/** + * @class GenericSmallStrainIsotropicDamagePlaneStress + * @ingroup StructuralMechanicsApplication + * @brief This class is the base class which define all the constitutive laws for damage in plane stress small deformation + * @details This class considers a constitutive law integrator as an intermediate utility to compute the damage + * @tparam TConstLawIntegratorType The constitutive law integrator considered + * @author Alejandro Cornejo + */ +template +class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericSmallStrainIsotropicDamagePlaneStress + : public GenericSmallStrainIsotropicDamage +{ +public: + ///@name Type Definitions + ///@{ + + /// Definition of the base class + typedef GenericSmallStrainIsotropicDamage BaseType; + + ///@} + ///@name Life Cycle + ///@{ + /// Counted pointer of GenericYieldSurface + KRATOS_CLASS_POINTER_DEFINITION(GenericSmallStrainIsotropicDamagePlaneStress); + /** + * Default constructor. + */ + GenericSmallStrainIsotropicDamagePlaneStress() + { + } + + /** + * Clone. + */ + ConstitutiveLaw::Pointer Clone() const override + { + return Kratos::make_shared>(*this); + } + + /** + * Copy constructor. + */ + GenericSmallStrainIsotropicDamagePlaneStress(const GenericSmallStrainIsotropicDamagePlaneStress &rOther) + : BaseType(rOther) + { + } + + /** + * Destructor. + */ + ~GenericSmallStrainIsotropicDamagePlaneStress() override + { + } + + ///@} + ///@name Operators + ///@{ + + Matrix& CalculateValue( + ConstitutiveLaw::Parameters &rParameterValues, + const Variable &rThisVariable, + Matrix &rValue) override; + + ///@} + ///@name Operations + ///@{ + + ///@} + ///@name Access + ///@{ + + ///@} + ///@name Inquiry + ///@{ + + ///@} + ///@name Input and output + ///@{ + + ///@} + ///@name Friends + ///@{ + + ///@} + +protected: + ///@name Protected static Member Variables + ///@{ + + ///@} + ///@name Protected member Variables + ///@{ + + ///@} + ///@name Protected Operators + ///@{ + + ///@} + ///@name Protected Operations + ///@{ + + ///@} + ///@name Protected Access + ///@{ + + ///@} + ///@name Protected Inquiry + ///@{ + + ///@} + ///@name Protected LifeCycle + ///@{ + + ///@} +private: + ///@name Static Member Variables + ///@{ + + ///@} + ///@name Member Variables + ///@{ + + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + + ///@} + ///@name Private Access + ///@{ + + ///@} + ///@name Private Inquiry + ///@{ + + ///@} + ///@name Un accessible methods + ///@{ + + // Serialization + + friend class Serializer; + + void save(Serializer &rSerializer) const override + { + KRATOS_SERIALIZE_SAVE_BASE_CLASS(rSerializer, ConstitutiveLaw) + } + + void load(Serializer &rSerializer) override + { + KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, ConstitutiveLaw) + } + + ///@} + +}; + +} // namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_orthotropic_damage.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_orthotropic_damage.cpp similarity index 96% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_orthotropic_damage.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_orthotropic_damage.cpp index 4ea3b6a3877e..77971ba5d49c 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_orthotropic_damage.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_orthotropic_damage.cpp @@ -19,26 +19,26 @@ // Project includes #include "custom_utilities/tangent_operator_calculator_utility.h" #include "constitutive_laws_application_variables.h" -#include "custom_constitutive/generic_small_strain_orthotropic_damage.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" +#include "generic_small_strain_orthotropic_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_orthotropic_damage.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_orthotropic_damage.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_orthotropic_damage.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/generic_small_strain_orthotropic_damage.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/plane_stress_d_plus_d_minus_damage_masonry_2d.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/plane_stress_d_plus_d_minus_damage_masonry_2d.cpp index 198e09f56fc6..cab0b073af3a 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/plane_stress_d_plus_d_minus_damage_masonry_2d.cpp @@ -19,7 +19,7 @@ // External includes // Project includes -#include "custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.h" +#include "plane_stress_d_plus_d_minus_damage_masonry_2d.h" #include "includes/model_part.h" #include "constitutive_laws_application_variables.h" #include "custom_utilities/advanced_constitutive_law_utilities.h" @@ -1024,7 +1024,7 @@ void DamageDPlusDMinusMasonry2DLaw::CalculateTangentTensor( Vector StrainVector, Vector PredictiveStressVector, CalculationData& data, - Properties props) + const Properties& props) { // prepare constitutive matrix Matrix& constitutive_matrix = rValues.GetConstitutiveMatrix(); diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/plane_stress_d_plus_d_minus_damage_masonry_2d.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/plane_stress_d_plus_d_minus_damage_masonry_2d.h index 259ec3dc038e..6ee8a0fe550b 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/plane_stress_d_plus_d_minus_damage_masonry_2d.h @@ -663,7 +663,7 @@ class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) DamageDPlusDMinusMasonry2DLaw Vector strain_vector, Vector stress_vector, CalculationData& data, - const Properties props); + const Properties& props); /** * @brief This method computes the secant tensor diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_3d.cpp similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_3d.cpp diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_3d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_3d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_factory.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_factory.cpp similarity index 88% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_factory.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_factory.cpp index 4ff91cdcb189..412b1d2e0459 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_factory.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_factory.cpp @@ -17,8 +17,8 @@ // External includes // Project includes -#include "custom_constitutive/small_strain_isotropic_damage_factory.h" -#include "custom_constitutive/generic_small_strain_isotropic_damage.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_factory.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_factory.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_factory.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_factory.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_factory.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_implex_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_implex_3d.cpp similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_implex_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_implex_3d.cpp diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_implex_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_implex_3d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_implex_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_implex_3d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_plane_strain_2d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_plane_strain_2d.cpp similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_plane_strain_2d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_plane_strain_2d.cpp diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_plane_strain_2d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_plane_strain_2d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_plane_strain_2d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_plane_strain_2d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_traction_only_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_3d.cpp similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_traction_only_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_3d.cpp diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_traction_only_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_3d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_traction_only_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_3d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_traction_only_implex_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_implex_3d.cpp similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_traction_only_implex_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_implex_3d.cpp diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_traction_only_implex_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_implex_3d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_damage_traction_only_implex_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_implex_3d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_high_cycle_fatigue_law.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/fatigue/generic_small_strain_high_cycle_fatigue_law.cpp similarity index 84% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_high_cycle_fatigue_law.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/fatigue/generic_small_strain_high_cycle_fatigue_law.cpp index d6e598892d57..9d2efd69f4d3 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_high_cycle_fatigue_law.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/fatigue/generic_small_strain_high_cycle_fatigue_law.cpp @@ -20,25 +20,27 @@ #include "custom_utilities/tangent_operator_calculator_utility.h" #include "constitutive_laws_application_variables.h" #include "constitutive_laws_application_variables.h" -#include "custom_constitutive/generic_small_strain_high_cycle_fatigue_law.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" -#include "custom_constitutive/constitutive_laws_integrators/high_cycle_fatigue_law_integrator.h" +#include "generic_small_strain_high_cycle_fatigue_law.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/high_cycle_fatigue_law_integrator.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" namespace Kratos { @@ -219,7 +221,7 @@ void GenericSmallStrainHighCycleFatigueLaw::CalculateMa //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - BaseType::CalculateValue(rValues, STRAIN, r_strain_vector); + BaseType::CalculateCauchyGreenStrain(rValues, r_strain_vector); } // Elastic Matrix @@ -323,7 +325,7 @@ void GenericSmallStrainHighCycleFatigueLaw::FinalizeMat //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - BaseType::CalculateValue(rValues, STRAIN, r_strain_vector); + BaseType::CalculateCauchyGreenStrain(rValues, r_strain_vector); } // Elastic Matrix @@ -626,29 +628,13 @@ Matrix& GenericSmallStrainHighCycleFatigueLaw::Calculat /***********************************************************************************/ /***********************************************************************************/ -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; -template class GenericSmallStrainHighCycleFatigueLaw>>>; + +template class GenericSmallStrainHighCycleFatigueLaw >>>; +template class GenericSmallStrainHighCycleFatigueLaw >>>; +template class GenericSmallStrainHighCycleFatigueLaw >>>; +template class GenericSmallStrainHighCycleFatigueLaw >>>; +template class GenericSmallStrainHighCycleFatigueLaw >>>; +template class GenericSmallStrainHighCycleFatigueLaw >>>; +template class GenericSmallStrainHighCycleFatigueLaw >>>; } // namespace Kratos \ No newline at end of file diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_high_cycle_fatigue_law.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/fatigue/generic_small_strain_high_cycle_fatigue_law.h similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_high_cycle_fatigue_law.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/fatigue/generic_small_strain_high_cycle_fatigue_law.h index 9a8c20017070..639e41833ef2 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_high_cycle_fatigue_law.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/fatigue/generic_small_strain_high_cycle_fatigue_law.h @@ -19,7 +19,7 @@ // External includes // Project includes -#include "custom_constitutive/generic_small_strain_isotropic_damage.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.h" namespace Kratos { @@ -408,7 +408,7 @@ class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericSmallStrainHighCycleFatig ///@name Access ///@{ Vector GetStressVector() {return mStressVector;} - void SetStressVector(const Vector toStressVector) {mStressVector = toStressVector;} + void SetStressVector(const Vector& toStressVector) {mStressVector = toStressVector;} ///@} ///@name Member Variables ///@{ diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/elastic_isotropic_plane_stress_uncoupled_shear.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/elastic_isotropic_plane_stress_uncoupled_shear.cpp similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/elastic_isotropic_plane_stress_uncoupled_shear.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/elastic_isotropic_plane_stress_uncoupled_shear.cpp index c3afeea9e3d6..b96cfa25c7e7 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/elastic_isotropic_plane_stress_uncoupled_shear.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/elastic_isotropic_plane_stress_uncoupled_shear.cpp @@ -16,7 +16,7 @@ // External includes // Project includes -#include "custom_constitutive/elastic_isotropic_plane_stress_uncoupled_shear.h" +#include "elastic_isotropic_plane_stress_uncoupled_shear.h" #include "includes/checks.h" #include "constitutive_laws_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/elastic_isotropic_plane_stress_uncoupled_shear.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/elastic_isotropic_plane_stress_uncoupled_shear.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/elastic_isotropic_plane_stress_uncoupled_shear.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/elastic_isotropic_plane_stress_uncoupled_shear.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/linear_elastic_orthotropic_2D_law.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/linear_elastic_orthotropic_2D_law.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/linear_elastic_orthotropic_2D_law.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/linear_elastic_orthotropic_2D_law.cpp index 590da8a6fa77..b879f253b906 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/linear_elastic_orthotropic_2D_law.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/linear_elastic_orthotropic_2D_law.cpp @@ -20,7 +20,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/linear_elastic_orthotropic_2D_law.h" +#include "linear_elastic_orthotropic_2D_law.h" #include "structural_mechanics_application_variables.h" #include "constitutive_laws_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/linear_elastic_orthotropic_2D_law.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/linear_elastic_orthotropic_2D_law.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/linear_elastic_orthotropic_2D_law.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/linear_elastic_orthotropic_2D_law.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_elastic_1d_law.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_elastic_1d_law.cpp similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_elastic_1d_law.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_elastic_1d_law.cpp index b6d1980b4f49..5939a9e76813 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_elastic_1d_law.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_elastic_1d_law.cpp @@ -17,7 +17,7 @@ // Project includes #include "includes/checks.h" #include "includes/properties.h" -#include "custom_constitutive/multi_linear_elastic_1d_law.h" +#include "multi_linear_elastic_1d_law.h" #include "constitutive_laws_application_variables.h" #include "structural_mechanics_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_elastic_1d_law.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_elastic_1d_law.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_elastic_1d_law.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_elastic_1d_law.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_isotropic_plane_stress_2d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_isotropic_plane_stress_2d.cpp similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_isotropic_plane_stress_2d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_isotropic_plane_stress_2d.cpp index 9f9c56b240f4..c3247b26c001 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_isotropic_plane_stress_2d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_isotropic_plane_stress_2d.cpp @@ -18,7 +18,7 @@ // Project includes #include "includes/checks.h" #include "includes/properties.h" -#include "custom_constitutive/multi_linear_isotropic_plane_stress_2d.h" +#include "multi_linear_isotropic_plane_stress_2d.h" #include "constitutive_laws_application_variables.h" #include "structural_mechanics_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_isotropic_plane_stress_2d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_isotropic_plane_stress_2d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/multi_linear_isotropic_plane_stress_2d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/multi_linear_isotropic_plane_stress_2d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/wrinkling_linear_2d_law.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/wrinkling_linear_2d_law.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/wrinkling_linear_2d_law.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/wrinkling_linear_2d_law.cpp index 182983759c7f..14f5397440c3 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/wrinkling_linear_2d_law.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/wrinkling_linear_2d_law.cpp @@ -17,7 +17,7 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/wrinkling_linear_2d_law.h" +#include "wrinkling_linear_2d_law.h" #include "constitutive_laws_application_variables.h" #include "structural_mechanics_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/wrinkling_linear_2d_law.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/wrinkling_linear_2d_law.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/wrinkling_linear_2d_law.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/linear/wrinkling_linear_2d_law.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/associative_plastic_damage_model.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/associative_plastic_damage_model.cpp similarity index 98% rename from applications/ConstitutiveLawsApplication/custom_constitutive/associative_plastic_damage_model.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/associative_plastic_damage_model.cpp index 6ef2fdd91e5e..28da308530be 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/associative_plastic_damage_model.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/associative_plastic_damage_model.cpp @@ -20,26 +20,26 @@ // Project includes #include "includes/checks.h" -#include "custom_constitutive/associative_plastic_damage_model.h" +#include "associative_plastic_damage_model.h" #include "constitutive_laws_application_variables.h" #include "custom_utilities/tangent_operator_calculator_utility.h" // Plasticity Integrator includes -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/rankine_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/rankine_plastic_potential.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/associative_plastic_damage_model.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/associative_plastic_damage_model.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/associative_plastic_damage_model.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/associative_plastic_damage_model.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_plastic_damage_model.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/generic_small_strain_plastic_damage_model.cpp similarity index 96% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_plastic_damage_model.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/generic_small_strain_plastic_damage_model.cpp index 116425da0561..1ac5809f44ed 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_plastic_damage_model.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/generic_small_strain_plastic_damage_model.cpp @@ -18,27 +18,27 @@ #include "utilities/math_utils.h" #include "constitutive_laws_application_variables.h" #include "custom_utilities/tangent_operator_calculator_utility.h" -#include "custom_constitutive/generic_small_strain_plastic_damage_model.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" +#include "generic_small_strain_plastic_damage_model.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_plastic_damage_model.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/generic_small_strain_plastic_damage_model.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_plastic_damage_model.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plastic_damage/generic_small_strain_plastic_damage_model.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_plasticity.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.cpp similarity index 94% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_plasticity.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.cpp index a3effa7de4bd..08ad430a5095 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_plasticity.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.cpp @@ -1,638 +1,638 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Alejandro Cornejo & Lucia Barbu -// Collaborator: Vicente Mataix Ferrandiz -// - -// System includes - -// Project includes -#include "utilities/math_utils.h" -#include "constitutive_laws_application_variables.h" -#include "custom_utilities/tangent_operator_calculator_utility.h" -#include "custom_constitutive/generic_small_strain_isotropic_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h" - -// Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" - -// Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" - -namespace Kratos -{ -template -void GenericSmallStrainIsotropicPlasticity::CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ - this->CalculateMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) -{ - this->CalculateMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) -{ - this->CalculateMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) -{ - // Auxiliar values - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - - // We get the constitutive tensor - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - - // We check the current step and NL iteration - const ProcessInfo& r_current_process_info = rValues.GetProcessInfo(); - const bool first_computation = (r_current_process_info[NL_ITERATION_NUMBER] == 1 && r_current_process_info[STEP] == 1) ? true : false; - - //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN - if (first_computation) { // First computation always pure elastic for elemements not providing the strain - if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ) ) { - BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); - } - this->template AddInitialStrainVectorContribution(r_strain_vector); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || - r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - Vector& r_stress_vector = rValues.GetStressVector(); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - noalias(r_stress_vector) = prod( r_constitutive_matrix, r_strain_vector); - this->template AddInitialStressVectorContribution(r_stress_vector); - } else { - BaseType::CalculatePK2Stress( r_strain_vector, r_stress_vector, rValues); - this->template AddInitialStressVectorContribution(r_stress_vector); - } - } - } else { // We check for plasticity - // Integrate Stress plasticity - Vector& r_integrated_stress_vector = rValues.GetStressVector(); - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); - - if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); - } - - this->template AddInitialStrainVectorContribution(r_strain_vector); - - // We compute the stress or the constitutive matrix - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || - r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - - // We get some variables - double threshold = this->GetThreshold(); - double plastic_dissipation = this->GetPlasticDissipation(); - Vector plastic_strain = this->GetPlasticStrain(); - - BoundedArrayType predictive_stress_vector; - if (r_constitutive_law_options.Is( ConstitutiveLaw::U_P_LAW)) { - noalias(predictive_stress_vector) = rValues.GetStressVector(); - } else { - // S0 = Elastic stress with strain (E-Ep) + S0 - Vector aux_stress = ZeroVector(VoigtSize); - BaseType::CalculatePK2Stress(r_strain_vector - plastic_strain, aux_stress, rValues); - this->template AddInitialStressVectorContribution(aux_stress); - noalias(predictive_stress_vector) = aux_stress; - } - - // Initialize Plastic Parameters - double uniaxial_stress = 0.0, plastic_denominator = 0.0; - BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS - BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS - BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); - - // Elastic Matrix - this->CalculateElasticMatrix(r_constitutive_matrix, rValues); - - // Compute the plastic parameters - const double F = TConstLawIntegratorType::CalculatePlasticParameters( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, rValues, characteristic_length, - plastic_strain); - - if (F <= std::abs(1.0e-4 * threshold)) { // Elastic case - noalias(r_integrated_stress_vector) = predictive_stress_vector; - } else { // Plastic case - // While loop backward euler - /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, plastic_strain, rValues, - characteristic_length); - noalias(r_integrated_stress_vector) = predictive_stress_vector; - - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - this->CalculateTangentTensor(rValues); // this modifies the ConstitutiveMatrix - } else { - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - } - } - } - } -} // End CalculateMaterialResponseCauchy - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::CalculateTangentTensor(ConstitutiveLaw::Parameters& rValues) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - - const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; - const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; - - if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { - // Already stored in rValues.GetConstitutiveMatrix()... - } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (first order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); - } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (second order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); - } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbationV2) { - // Calculates the Tangent Constitutive Tensor by perturbation (second order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 4); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::InitializeMaterial( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const Vector& rShapeFunctionsValues - ) -{ - // We construct the CL parameters - ProcessInfo dummy_process_info; - ConstitutiveLaw::Parameters aux_param(rElementGeometry, rMaterialProperties, dummy_process_info); - - // We call the integrator - double initial_threshold; - TConstLawIntegratorType::GetInitialUniaxialThreshold(aux_param, initial_threshold); - this->SetThreshold(initial_threshold); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::InitializeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) -{ - // Small deformation so we can call the Cauchy method - InitializeMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::InitializeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ - // Small deformation so we can call the Cauchy method - InitializeMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::InitializeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) -{ - // Small deformation so we can call the Cauchy method - InitializeMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::InitializeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) -{ -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) -{ - // Small deformation so we can call the Cauchy method - FinalizeMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) -{ - // Small deformation so we can call the Cauchy method - FinalizeMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) -{ - // Small deformation so we can call the Cauchy method - FinalizeMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) -{ - // Auxiliar values - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - - // We get the constitutive tensor - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - - // Integrate Stress plasticity - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); - - if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); - } - - this->template AddInitialStrainVectorContribution(r_strain_vector); - - // We compute the stress - // Elastic Matrix - this->CalculateElasticMatrix(r_constitutive_matrix, rValues); - - // We get some variables - double threshold = this->GetThreshold(); - double plastic_dissipation = this->GetPlasticDissipation(); - Vector plastic_strain = this->GetPlasticStrain(); - - BoundedArrayType predictive_stress_vector; - if (r_constitutive_law_options.Is( ConstitutiveLaw::U_P_LAW)) { - noalias(predictive_stress_vector) = rValues.GetStressVector(); - } else { - // Spred = r_constitutive_matrix:(E-Ep) + S0 - noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); - this->template AddInitialStressVectorContribution(predictive_stress_vector); - } - - // Initialize Plastic Parameters - double uniaxial_stress = 0.0, plastic_denominator = 0.0; - BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS - BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS - BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); - - const double F = TConstLawIntegratorType::CalculatePlasticParameters( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, rValues, characteristic_length, - plastic_strain); - - if (F > std::abs(1.0e-4 * threshold)) { // Plastic case - // While loop backward euler - /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, plastic_strain, rValues, - characteristic_length); - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - } - - mPlasticDissipation = plastic_dissipation; - mPlasticStrain = plastic_strain; - mThreshold = threshold; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainIsotropicPlasticity::Has(const Variable& rThisVariable) -{ - if (rThisVariable == PLASTIC_DISSIPATION) { - return true; - } else { - return BaseType::Has(rThisVariable); - } - - return false; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainIsotropicPlasticity::Has(const Variable& rThisVariable) -{ - if (rThisVariable == INTERNAL_VARIABLES) { - return true; - } - if (rThisVariable == PLASTIC_STRAIN_VECTOR) { - return true; - } - return BaseType::Has(rThisVariable); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainIsotropicPlasticity::Has(const Variable& rThisVariable) -{ - return BaseType::Has(rThisVariable); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::SetValue( - const Variable& rThisVariable, - const double& rValue, - const ProcessInfo& rCurrentProcessInfo) -{ - if (rThisVariable == PLASTIC_DISSIPATION) { - mPlasticDissipation = rValue; - } else { - BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainIsotropicPlasticity::SetValue( - const Variable& rThisVariable, - const Vector& rValue, - const ProcessInfo& rCurrentProcessInfo - ) -{ - if (rThisVariable == INTERNAL_VARIABLES) { - mPlasticDissipation = rValue[0]; - for (std::size_t i=0; i < VoigtSize; ++i) - mPlasticStrain[i] = rValue[i + 1]; - return; - } - if (rThisVariable == PLASTIC_STRAIN_VECTOR) { - mPlasticStrain = rValue; - } else { - BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -double& GenericSmallStrainIsotropicPlasticity::GetValue( - const Variable& rThisVariable, - double& rValue - ) -{ - if (rThisVariable == PLASTIC_DISSIPATION) { - rValue = mPlasticDissipation; - } else { - BaseType::GetValue(rThisVariable, rValue); - } - - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Vector& GenericSmallStrainIsotropicPlasticity::GetValue( - const Variable& rThisVariable, - Vector& rValue - ) -{ - if (rThisVariable == INTERNAL_VARIABLES) { - rValue.resize(1 + VoigtSize); - rValue[0] = mPlasticDissipation; - for (std::size_t i=0; i < VoigtSize; ++i) - rValue[i + 1] = mPlasticStrain[i]; - return rValue; - } - if (rThisVariable == PLASTIC_STRAIN_VECTOR) { - rValue = mPlasticStrain; - } else { - return BaseType::GetValue(rThisVariable, rValue); - } - - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Matrix& GenericSmallStrainIsotropicPlasticity::GetValue( - const Variable& rThisVariable, - Matrix& rValue - ) -{ - if (rThisVariable == PLASTIC_STRAIN_TENSOR) { - rValue = MathUtils::StrainVectorToTensor(mPlasticStrain); - } else { - return BaseType::GetValue(rThisVariable, rValue); - } - - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -double& GenericSmallStrainIsotropicPlasticity::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue - ) -{ - if (rThisVariable == UNIAXIAL_STRESS) { - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); - - // Calculate the stress vector - CalculateMaterialResponseCauchy(rParameterValues); - const Vector& r_stress_vector = rParameterValues.GetStressVector(); - const Vector& r_strain_vector = rParameterValues.GetStrainVector(); - - BoundedArrayType aux_stress_vector = r_stress_vector; - TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress( aux_stress_vector, r_strain_vector, rValue, rParameterValues); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } else if (rThisVariable == EQUIVALENT_PLASTIC_STRAIN) { - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); - - // Calculate the stress vector - CalculateMaterialResponseCauchy(rParameterValues); - const Vector& r_stress_vector = rParameterValues.GetStressVector(); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - - // Compute the equivalent plastic strain - double uniaxial_stress; - this->CalculateValue(rParameterValues, UNIAXIAL_STRESS, uniaxial_stress); - TConstLawIntegratorType::CalculateEquivalentPlasticStrain(r_stress_vector, uniaxial_stress, mPlasticStrain, 0.0, rParameterValues, rValue); - return rValue; - } else { - return this->GetValue(rThisVariable, rValue); - } - - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Vector& GenericSmallStrainIsotropicPlasticity::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) -{ - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Matrix& GenericSmallStrainIsotropicPlasticity::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) -{ - if (this->Has(rThisVariable)) { - return this->GetValue(rThisVariable, rValue); - } else { - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -int GenericSmallStrainIsotropicPlasticity::Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const -{ - const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); - const int check_integrator = TConstLawIntegratorType::Check(rMaterialProperties); - KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; - if ((check_base + check_integrator) > 0) return 1; - return 0; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; -template class GenericSmallStrainIsotropicPlasticity>>>; - -} // namespace Kratos +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Alejandro Cornejo & Lucia Barbu +// Collaborator: Vicente Mataix Ferrandiz +// + +// System includes + +// Project includes +#include "utilities/math_utils.h" +#include "constitutive_laws_application_variables.h" +#include "custom_utilities/tangent_operator_calculator_utility.h" +#include "generic_small_strain_isotropic_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h" + +// Yield surfaces +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" + +// Plastic potentials +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" + +namespace Kratos +{ +template +void GenericSmallStrainIsotropicPlasticity::CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ + this->CalculateMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) +{ + this->CalculateMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) +{ + this->CalculateMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) +{ + // Auxiliar values + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + + // We get the constitutive tensor + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + + // We check the current step and NL iteration + const ProcessInfo& r_current_process_info = rValues.GetProcessInfo(); + const bool first_computation = (r_current_process_info[NL_ITERATION_NUMBER] == 1 && r_current_process_info[STEP] == 1) ? true : false; + + //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN + if (first_computation) { // First computation always pure elastic for elemements not providing the strain + if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ) ) { + BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); + } + this->template AddInitialStrainVectorContribution(r_strain_vector); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || + r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + Vector& r_stress_vector = rValues.GetStressVector(); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + noalias(r_stress_vector) = prod( r_constitutive_matrix, r_strain_vector); + this->template AddInitialStressVectorContribution(r_stress_vector); + } else { + BaseType::CalculatePK2Stress( r_strain_vector, r_stress_vector, rValues); + this->template AddInitialStressVectorContribution(r_stress_vector); + } + } + } else { // We check for plasticity + // Integrate Stress plasticity + Vector& r_integrated_stress_vector = rValues.GetStressVector(); + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); + + if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { + BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); + } + + this->template AddInitialStrainVectorContribution(r_strain_vector); + + // We compute the stress or the constitutive matrix + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || + r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + + // We get some variables + double threshold = this->GetThreshold(); + double plastic_dissipation = this->GetPlasticDissipation(); + Vector plastic_strain = this->GetPlasticStrain(); + + BoundedArrayType predictive_stress_vector; + if (r_constitutive_law_options.Is( ConstitutiveLaw::U_P_LAW)) { + noalias(predictive_stress_vector) = rValues.GetStressVector(); + } else { + // S0 = Elastic stress with strain (E-Ep) + S0 + Vector aux_stress = ZeroVector(VoigtSize); + BaseType::CalculatePK2Stress(r_strain_vector - plastic_strain, aux_stress, rValues); + this->template AddInitialStressVectorContribution(aux_stress); + noalias(predictive_stress_vector) = aux_stress; + } + + // Initialize Plastic Parameters + double uniaxial_stress = 0.0, plastic_denominator = 0.0; + BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS + BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS + BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); + + // Elastic Matrix + this->CalculateElasticMatrix(r_constitutive_matrix, rValues); + + // Compute the plastic parameters + const double F = TConstLawIntegratorType::CalculatePlasticParameters( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, rValues, characteristic_length, + plastic_strain); + + if (F <= std::abs(1.0e-4 * threshold)) { // Elastic case + noalias(r_integrated_stress_vector) = predictive_stress_vector; + } else { // Plastic case + // While loop backward euler + /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ + TConstLawIntegratorType::IntegrateStressVector( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, plastic_strain, rValues, + characteristic_length); + noalias(r_integrated_stress_vector) = predictive_stress_vector; + + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + this->CalculateTangentTensor(rValues); // this modifies the ConstitutiveMatrix + } else { + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + } + } + } + } +} // End CalculateMaterialResponseCauchy + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::CalculateTangentTensor(ConstitutiveLaw::Parameters& rValues) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + + const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; + const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; + + if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { + // Already stored in rValues.GetConstitutiveMatrix()... + } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (first order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); + } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (second order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); + } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbationV2) { + // Calculates the Tangent Constitutive Tensor by perturbation (second order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 4); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::InitializeMaterial( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const Vector& rShapeFunctionsValues + ) +{ + // We construct the CL parameters + ProcessInfo dummy_process_info; + ConstitutiveLaw::Parameters aux_param(rElementGeometry, rMaterialProperties, dummy_process_info); + + // We call the integrator + double initial_threshold; + TConstLawIntegratorType::GetInitialUniaxialThreshold(aux_param, initial_threshold); + this->SetThreshold(initial_threshold); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::InitializeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) +{ + // Small deformation so we can call the Cauchy method + InitializeMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::InitializeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ + // Small deformation so we can call the Cauchy method + InitializeMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::InitializeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) +{ + // Small deformation so we can call the Cauchy method + InitializeMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::InitializeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) +{ +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters& rValues) +{ + // Small deformation so we can call the Cauchy method + FinalizeMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters& rValues) +{ + // Small deformation so we can call the Cauchy method + FinalizeMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters& rValues) +{ + // Small deformation so we can call the Cauchy method + FinalizeMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters& rValues) +{ + // Auxiliar values + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + + // We get the constitutive tensor + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + + // Integrate Stress plasticity + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); + + if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { + BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); + } + + this->template AddInitialStrainVectorContribution(r_strain_vector); + + // We compute the stress + // Elastic Matrix + this->CalculateElasticMatrix(r_constitutive_matrix, rValues); + + // We get some variables + double threshold = this->GetThreshold(); + double plastic_dissipation = this->GetPlasticDissipation(); + Vector plastic_strain = this->GetPlasticStrain(); + + BoundedArrayType predictive_stress_vector; + if (r_constitutive_law_options.Is( ConstitutiveLaw::U_P_LAW)) { + noalias(predictive_stress_vector) = rValues.GetStressVector(); + } else { + // Spred = r_constitutive_matrix:(E-Ep) + S0 + noalias(predictive_stress_vector) = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); + this->template AddInitialStressVectorContribution(predictive_stress_vector); + } + + // Initialize Plastic Parameters + double uniaxial_stress = 0.0, plastic_denominator = 0.0; + BoundedArrayType f_flux = ZeroVector(VoigtSize); // DF/DS + BoundedArrayType g_flux = ZeroVector(VoigtSize); // DG/DS + BoundedArrayType plastic_strain_increment = ZeroVector(VoigtSize); + + const double F = TConstLawIntegratorType::CalculatePlasticParameters( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, rValues, characteristic_length, + plastic_strain); + + if (F > std::abs(1.0e-4 * threshold)) { // Plastic case + // While loop backward euler + /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ + TConstLawIntegratorType::IntegrateStressVector( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, plastic_strain, rValues, + characteristic_length); + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + } + + mPlasticDissipation = plastic_dissipation; + mPlasticStrain = plastic_strain; + mThreshold = threshold; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainIsotropicPlasticity::Has(const Variable& rThisVariable) +{ + if (rThisVariable == PLASTIC_DISSIPATION) { + return true; + } else { + return BaseType::Has(rThisVariable); + } + + return false; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainIsotropicPlasticity::Has(const Variable& rThisVariable) +{ + if (rThisVariable == INTERNAL_VARIABLES) { + return true; + } + if (rThisVariable == PLASTIC_STRAIN_VECTOR) { + return true; + } + return BaseType::Has(rThisVariable); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainIsotropicPlasticity::Has(const Variable& rThisVariable) +{ + return BaseType::Has(rThisVariable); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::SetValue( + const Variable& rThisVariable, + const double& rValue, + const ProcessInfo& rCurrentProcessInfo) +{ + if (rThisVariable == PLASTIC_DISSIPATION) { + mPlasticDissipation = rValue; + } else { + BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainIsotropicPlasticity::SetValue( + const Variable& rThisVariable, + const Vector& rValue, + const ProcessInfo& rCurrentProcessInfo + ) +{ + if (rThisVariable == INTERNAL_VARIABLES) { + mPlasticDissipation = rValue[0]; + for (std::size_t i=0; i < VoigtSize; ++i) + mPlasticStrain[i] = rValue[i + 1]; + return; + } + if (rThisVariable == PLASTIC_STRAIN_VECTOR) { + mPlasticStrain = rValue; + } else { + BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +double& GenericSmallStrainIsotropicPlasticity::GetValue( + const Variable& rThisVariable, + double& rValue + ) +{ + if (rThisVariable == PLASTIC_DISSIPATION) { + rValue = mPlasticDissipation; + } else { + BaseType::GetValue(rThisVariable, rValue); + } + + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Vector& GenericSmallStrainIsotropicPlasticity::GetValue( + const Variable& rThisVariable, + Vector& rValue + ) +{ + if (rThisVariable == INTERNAL_VARIABLES) { + rValue.resize(1 + VoigtSize); + rValue[0] = mPlasticDissipation; + for (std::size_t i=0; i < VoigtSize; ++i) + rValue[i + 1] = mPlasticStrain[i]; + return rValue; + } + if (rThisVariable == PLASTIC_STRAIN_VECTOR) { + rValue = mPlasticStrain; + } else { + return BaseType::GetValue(rThisVariable, rValue); + } + + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Matrix& GenericSmallStrainIsotropicPlasticity::GetValue( + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (rThisVariable == PLASTIC_STRAIN_TENSOR) { + rValue = MathUtils::StrainVectorToTensor(mPlasticStrain); + } else { + return BaseType::GetValue(rThisVariable, rValue); + } + + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +double& GenericSmallStrainIsotropicPlasticity::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue + ) +{ + if (rThisVariable == UNIAXIAL_STRESS) { + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); + + // Calculate the stress vector + CalculateMaterialResponseCauchy(rParameterValues); + const Vector& r_stress_vector = rParameterValues.GetStressVector(); + const Vector& r_strain_vector = rParameterValues.GetStrainVector(); + + BoundedArrayType aux_stress_vector = r_stress_vector; + TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress( aux_stress_vector, r_strain_vector, rValue, rParameterValues); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } else if (rThisVariable == EQUIVALENT_PLASTIC_STRAIN) { + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); + + // Calculate the stress vector + CalculateMaterialResponseCauchy(rParameterValues); + const Vector& r_stress_vector = rParameterValues.GetStressVector(); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + + // Compute the equivalent plastic strain + double uniaxial_stress; + this->CalculateValue(rParameterValues, UNIAXIAL_STRESS, uniaxial_stress); + TConstLawIntegratorType::CalculateEquivalentPlasticStrain(r_stress_vector, uniaxial_stress, mPlasticStrain, 0.0, rParameterValues, rValue); + return rValue; + } else { + return this->GetValue(rThisVariable, rValue); + } + + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Vector& GenericSmallStrainIsotropicPlasticity::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) +{ + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Matrix& GenericSmallStrainIsotropicPlasticity::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (this->Has(rThisVariable)) { + return this->GetValue(rThisVariable, rValue); + } else { + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +int GenericSmallStrainIsotropicPlasticity::Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const +{ + const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); + const int check_integrator = TConstLawIntegratorType::Check(rMaterialProperties); + KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; + if ((check_base + check_integrator) > 0) return 1; + return 0; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; +template class GenericSmallStrainIsotropicPlasticity>>>; + +} // namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.h similarity index 96% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_plasticity.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.h index 589f366f332d..df89c05fd080 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_isotropic_plasticity.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.h @@ -1,484 +1,484 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Alejandro Cornejo & Lucia Barbu -// Collaborator: Vicente Mataix Ferrandiz -// - -#if !defined(KRATOS_GENERIC_SMALL_STRAIN_ISOTROPIC_PLASTICITY_3D_H_INCLUDED) -#define KRATOS_GENERIC_SMALL_STRAIN_ISOTROPIC_PLASTICITY_3D_H_INCLUDED - -// System includes - -// External includes - -// Project includes -#include "custom_constitutive/elastic_isotropic_3d.h" -#include "custom_constitutive/linear_plane_strain.h" - -namespace Kratos -{ -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - - // The size type definition - typedef std::size_t SizeType; - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/** - * @class GenericSmallStrainIsotropicPlasticity - * @ingroup StructuralMechanicsApplication - * @brief This class is the base class which define all the constitutive laws for plasticity in small deformation - * @details This class considers a constitutive law integrator as an intermediate utility to compute the plasticity - * @tparam TConstLawIntegratorType The constitutive law integrator considered - * @author Alejandro Cornejo & Lucia Barbu - */ -template -class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericSmallStrainIsotropicPlasticity - : public std::conditional::type -{ -public: - ///@name Type Definitions - ///@{ - - /// The define the working dimension size, already defined in the integrator - static constexpr SizeType Dimension = TConstLawIntegratorType::Dimension; - - /// The define the Voigt size, already defined in the integrator - static constexpr SizeType VoigtSize = TConstLawIntegratorType::VoigtSize; - - /// Definition of the base class - typedef typename std::conditional::type BaseType; - - /// The definition of the Voigt array type - typedef array_1d BoundedArrayType; - - /// The definition of the bounded matrix type - typedef BoundedMatrix BoundedMatrixType; - - /// Counted pointer of GenericSmallStrainIsotropicPlasticity - KRATOS_CLASS_POINTER_DEFINITION(GenericSmallStrainIsotropicPlasticity); - - /// The node definition - typedef Node<3> NodeType; - - /// The geometry definition - typedef Geometry GeometryType; - - ///@} - ///@name Life Cycle - ///@{ - - /** - * Default constructor. - */ - GenericSmallStrainIsotropicPlasticity() - { - } - - /** - * Clone. - */ - ConstitutiveLaw::Pointer Clone() const override - { - return Kratos::make_shared>(*this); - } - - /** - * Copy constructor. - */ - GenericSmallStrainIsotropicPlasticity(const GenericSmallStrainIsotropicPlasticity &rOther) - : BaseType(rOther), - mPlasticDissipation(rOther.mPlasticDissipation), - mThreshold(rOther.mThreshold), - mPlasticStrain(rOther.mPlasticStrain) - { - } - - /** - * Destructor. - */ - ~GenericSmallStrainIsotropicPlasticity() override - { - } - - ///@} - ///@name Operators - ///@{ - - ///@} - ///@name Operations - ///@{ - - /** - * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief This is to be called at the very beginning of the calculation (e.g. from InitializeElement) in order to initialize all relevant attributes of the constitutive law - * @param rMaterialProperties the Properties instance of the current element - * @param rElementGeometry the geometry of the current element - * @param rShapeFunctionsValues the shape functions values in the current integration point - */ - void InitializeMaterial( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const Vector& rShapeFunctionsValues - ) override; - - /** - * @brief Initialize the material response in terms of 1st Piola-Kirchhoff stresses - * @see Parameters - */ - void InitializeMaterialResponsePK1 (ConstitutiveLaw::Parameters& rValues) override; - - /** - * @brief Initialize the material response in terms of 2nd Piola-Kirchhoff stresses - * @see Parameters - */ - void InitializeMaterialResponsePK2 (ConstitutiveLaw::Parameters& rValues) override; - - /** - * @brief Initialize the material response in terms of Kirchhoff stresses - * @see Parameters - */ - void InitializeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters& rValues) override; - - /** - * @brief Initialize the material response in terms of Cauchy stresses - * @see Parameters - */ - void InitializeMaterialResponseCauchy (ConstitutiveLaw::Parameters& rValues) override; - - /** - * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - /** - * Finalize the material response in terms of Cauchy stresses - * @see Parameters - */ - void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Returns whether this constitutive Law has specified variable (double) - * @param rThisVariable the variable to be checked for - * @return true if the variable is defined in the constitutive law - */ - bool Has(const Variable &rThisVariable) override; - - /** - * @brief Returns whether this constitutive Law has specified variable (Vector) - * @param rThisVariable the variable to be checked for - * @return true if the variable is defined in the constitutive law - */ - bool Has(const Variable &rThisVariable) override; - - /** - * @brief Returns whether this constitutive Law has specified variable (Matrix) - * @param rThisVariable the variable to be checked for - * @return true if the variable is defined in the constitutive law - */ - bool Has(const Variable &rThisVariable) override; - - /** - * @brief Sets the value of a specified variable (double) - * @param rVariable the variable to be returned - * @param rValue new value of the specified variable - * @param rCurrentProcessInfo the process info - */ - void SetValue( - const Variable &rThisVariable, - const double& rValue, - const ProcessInfo& rCurrentProcessInfo - ) override; - - /** - * @brief Sets the value of a specified variable (Vector) - * @param rThisVariable the variable to be returned - * @param rValue new value of the specified variable - * @param rCurrentProcessInfo the process info - */ - void SetValue( - const Variable &rThisVariable, - const Vector& rValue, - const ProcessInfo& rCurrentProcessInfo - ) override; - - /** - * @brief Returns the value of a specified variable (double) - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @return rValue output: the value of the specified variable - */ - double& GetValue( - const Variable &rThisVariable, - double& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (Vector) - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @return rValue output: the value of the specified variable - */ - Vector& GetValue( - const Variable &rThisVariable, - Vector& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (matrix) - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @return rValue output: the value of the specified variable - */ - Matrix& GetValue( - const Variable& rThisVariable, - Matrix& rValue - ) override; - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresInitializeMaterialResponse() override - { - return false; - } - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresFinalizeMaterialResponse() override - { - return true; - } - - /** - * @brief Returns the value of a specified variable (double) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - double& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue) override; - - /** - * @brief Returns the value of a specified variable (vector) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Vector& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (matrix) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Matrix& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) override; - - /** - * @brief This function provides the place to perform checks on the completeness of the input. - * @details It is designed to be called only once (or anyway, not often) typically at the beginning - * of the calculations, so to verify that nothing is missing from the input or that no common error is found. - * @param rMaterialProperties The properties of the material - * @param rElementGeometry The geometry of the element - * @param rCurrentProcessInfo The current process info instance - * @return 0 if OK, 1 otherwise - */ - int Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const override; - - ///@} - ///@name Access - ///@{ - - ///@} - ///@name Inquiry - ///@{ - - ///@} - ///@name Input and output - ///@{ - - ///@} - ///@name Friends - ///@{ - - ///@} - -protected: - ///@name Protected static Member Variables - ///@{ - - ///@} - ///@name Protected member Variables - ///@{ - - ///@} - ///@name Protected Operators - ///@{ - - double& GetThreshold() { return mThreshold; } - double& GetPlasticDissipation() { return mPlasticDissipation; } - Vector& GetPlasticStrain() { return mPlasticStrain; } - - void SetThreshold(const double Threshold) { mThreshold = Threshold; } - void SetPlasticDissipation(const double PlasticDissipation) { mPlasticDissipation = PlasticDissipation; } - void SetPlasticStrain(const array_1d& rPlasticStrain) { mPlasticStrain = rPlasticStrain; } - - ///@} - ///@name Protected Operations - ///@{ - - ///@} - ///@name Protected Access - ///@{ - - ///@} - ///@name Protected Inquiry - ///@{ - - ///@} - ///@name Protected LifeCycle - ///@{ - - ///@} - private: - ///@name Static Member Variables - ///@{ - - ///@} - ///@name Member Variables - ///@{ - - // Converged values - double mPlasticDissipation = 0.0; - double mThreshold = 0.0; - Vector mPlasticStrain = ZeroVector(VoigtSize); - - ///@} - ///@name Private Operators - ///@{ - - ///@} - ///@name Private Operations - ///@{ - - /** - * @brief This method computes the tangent tensor - * @param rValues The constitutive law parameters and flags - */ - void CalculateTangentTensor(ConstitutiveLaw::Parameters &rValues); - - ///@} - ///@name Private Access - ///@{ - - ///@} - ///@name Private Inquiry - ///@{ - - ///@} - ///@name Un accessible methods - ///@{ - - // Serialization - - friend class Serializer; - - void save(Serializer &rSerializer) const override - { - KRATOS_SERIALIZE_SAVE_BASE_CLASS(rSerializer, ConstitutiveLaw) - rSerializer.save("PlasticDissipation", mPlasticDissipation); - rSerializer.save("Threshold", mThreshold); - rSerializer.save("PlasticStrain", mPlasticStrain); - } - - void load(Serializer &rSerializer) override - { - KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, ConstitutiveLaw) - rSerializer.load("PlasticDissipation", mPlasticDissipation); - rSerializer.load("Threshold", mThreshold); - rSerializer.load("PlasticStrain", mPlasticStrain); - } - - ///@} - -}; // Class GenericYieldSurface - -} // namespace Kratos -#endif +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Alejandro Cornejo & Lucia Barbu +// Collaborator: Vicente Mataix Ferrandiz +// + +#if !defined(KRATOS_GENERIC_SMALL_STRAIN_ISOTROPIC_PLASTICITY_3D_H_INCLUDED) +#define KRATOS_GENERIC_SMALL_STRAIN_ISOTROPIC_PLASTICITY_3D_H_INCLUDED + +// System includes + +// External includes + +// Project includes +#include "custom_constitutive/elastic_isotropic_3d.h" +#include "custom_constitutive/linear_plane_strain.h" + +namespace Kratos +{ +///@name Kratos Globals +///@{ + +///@} +///@name Type Definitions +///@{ + + // The size type definition + typedef std::size_t SizeType; + +///@} +///@name Enum's +///@{ + +///@} +///@name Functions +///@{ + +///@} +///@name Kratos Classes +///@{ + +/** + * @class GenericSmallStrainIsotropicPlasticity + * @ingroup StructuralMechanicsApplication + * @brief This class is the base class which define all the constitutive laws for plasticity in small deformation + * @details This class considers a constitutive law integrator as an intermediate utility to compute the plasticity + * @tparam TConstLawIntegratorType The constitutive law integrator considered + * @author Alejandro Cornejo & Lucia Barbu + */ +template +class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericSmallStrainIsotropicPlasticity + : public std::conditional::type +{ +public: + ///@name Type Definitions + ///@{ + + /// The define the working dimension size, already defined in the integrator + static constexpr SizeType Dimension = TConstLawIntegratorType::Dimension; + + /// The define the Voigt size, already defined in the integrator + static constexpr SizeType VoigtSize = TConstLawIntegratorType::VoigtSize; + + /// Definition of the base class + typedef typename std::conditional::type BaseType; + + /// The definition of the Voigt array type + typedef array_1d BoundedArrayType; + + /// The definition of the bounded matrix type + typedef BoundedMatrix BoundedMatrixType; + + /// Counted pointer of GenericSmallStrainIsotropicPlasticity + KRATOS_CLASS_POINTER_DEFINITION(GenericSmallStrainIsotropicPlasticity); + + /// The node definition + typedef Node<3> NodeType; + + /// The geometry definition + typedef Geometry GeometryType; + + ///@} + ///@name Life Cycle + ///@{ + + /** + * Default constructor. + */ + GenericSmallStrainIsotropicPlasticity() + { + } + + /** + * Clone. + */ + ConstitutiveLaw::Pointer Clone() const override + { + return Kratos::make_shared>(*this); + } + + /** + * Copy constructor. + */ + GenericSmallStrainIsotropicPlasticity(const GenericSmallStrainIsotropicPlasticity &rOther) + : BaseType(rOther), + mPlasticDissipation(rOther.mPlasticDissipation), + mThreshold(rOther.mThreshold), + mPlasticStrain(rOther.mPlasticStrain) + { + } + + /** + * Destructor. + */ + ~GenericSmallStrainIsotropicPlasticity() override + { + } + + ///@} + ///@name Operators + ///@{ + + ///@} + ///@name Operations + ///@{ + + /** + * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief This is to be called at the very beginning of the calculation (e.g. from InitializeElement) in order to initialize all relevant attributes of the constitutive law + * @param rMaterialProperties the Properties instance of the current element + * @param rElementGeometry the geometry of the current element + * @param rShapeFunctionsValues the shape functions values in the current integration point + */ + void InitializeMaterial( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const Vector& rShapeFunctionsValues + ) override; + + /** + * @brief Initialize the material response in terms of 1st Piola-Kirchhoff stresses + * @see Parameters + */ + void InitializeMaterialResponsePK1 (ConstitutiveLaw::Parameters& rValues) override; + + /** + * @brief Initialize the material response in terms of 2nd Piola-Kirchhoff stresses + * @see Parameters + */ + void InitializeMaterialResponsePK2 (ConstitutiveLaw::Parameters& rValues) override; + + /** + * @brief Initialize the material response in terms of Kirchhoff stresses + * @see Parameters + */ + void InitializeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters& rValues) override; + + /** + * @brief Initialize the material response in terms of Cauchy stresses + * @see Parameters + */ + void InitializeMaterialResponseCauchy (ConstitutiveLaw::Parameters& rValues) override; + + /** + * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + /** + * Finalize the material response in terms of Cauchy stresses + * @see Parameters + */ + void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Returns whether this constitutive Law has specified variable (double) + * @param rThisVariable the variable to be checked for + * @return true if the variable is defined in the constitutive law + */ + bool Has(const Variable &rThisVariable) override; + + /** + * @brief Returns whether this constitutive Law has specified variable (Vector) + * @param rThisVariable the variable to be checked for + * @return true if the variable is defined in the constitutive law + */ + bool Has(const Variable &rThisVariable) override; + + /** + * @brief Returns whether this constitutive Law has specified variable (Matrix) + * @param rThisVariable the variable to be checked for + * @return true if the variable is defined in the constitutive law + */ + bool Has(const Variable &rThisVariable) override; + + /** + * @brief Sets the value of a specified variable (double) + * @param rVariable the variable to be returned + * @param rValue new value of the specified variable + * @param rCurrentProcessInfo the process info + */ + void SetValue( + const Variable &rThisVariable, + const double& rValue, + const ProcessInfo& rCurrentProcessInfo + ) override; + + /** + * @brief Sets the value of a specified variable (Vector) + * @param rThisVariable the variable to be returned + * @param rValue new value of the specified variable + * @param rCurrentProcessInfo the process info + */ + void SetValue( + const Variable &rThisVariable, + const Vector& rValue, + const ProcessInfo& rCurrentProcessInfo + ) override; + + /** + * @brief Returns the value of a specified variable (double) + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @return rValue output: the value of the specified variable + */ + double& GetValue( + const Variable &rThisVariable, + double& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (Vector) + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @return rValue output: the value of the specified variable + */ + Vector& GetValue( + const Variable &rThisVariable, + Vector& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (matrix) + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @return rValue output: the value of the specified variable + */ + Matrix& GetValue( + const Variable& rThisVariable, + Matrix& rValue + ) override; + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresInitializeMaterialResponse() override + { + return false; + } + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresFinalizeMaterialResponse() override + { + return true; + } + + /** + * @brief Returns the value of a specified variable (double) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + double& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue) override; + + /** + * @brief Returns the value of a specified variable (vector) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Vector& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (matrix) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Matrix& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) override; + + /** + * @brief This function provides the place to perform checks on the completeness of the input. + * @details It is designed to be called only once (or anyway, not often) typically at the beginning + * of the calculations, so to verify that nothing is missing from the input or that no common error is found. + * @param rMaterialProperties The properties of the material + * @param rElementGeometry The geometry of the element + * @param rCurrentProcessInfo The current process info instance + * @return 0 if OK, 1 otherwise + */ + int Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const override; + + ///@} + ///@name Access + ///@{ + + ///@} + ///@name Inquiry + ///@{ + + ///@} + ///@name Input and output + ///@{ + + ///@} + ///@name Friends + ///@{ + + ///@} + +protected: + ///@name Protected static Member Variables + ///@{ + + ///@} + ///@name Protected member Variables + ///@{ + + ///@} + ///@name Protected Operators + ///@{ + + double& GetThreshold() { return mThreshold; } + double& GetPlasticDissipation() { return mPlasticDissipation; } + Vector& GetPlasticStrain() { return mPlasticStrain; } + + void SetThreshold(const double Threshold) { mThreshold = Threshold; } + void SetPlasticDissipation(const double PlasticDissipation) { mPlasticDissipation = PlasticDissipation; } + void SetPlasticStrain(const array_1d& rPlasticStrain) { mPlasticStrain = rPlasticStrain; } + + ///@} + ///@name Protected Operations + ///@{ + + ///@} + ///@name Protected Access + ///@{ + + ///@} + ///@name Protected Inquiry + ///@{ + + ///@} + ///@name Protected LifeCycle + ///@{ + + ///@} + private: + ///@name Static Member Variables + ///@{ + + ///@} + ///@name Member Variables + ///@{ + + // Converged values + double mPlasticDissipation = 0.0; + double mThreshold = 0.0; + Vector mPlasticStrain = ZeroVector(VoigtSize); + + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + + /** + * @brief This method computes the tangent tensor + * @param rValues The constitutive law parameters and flags + */ + void CalculateTangentTensor(ConstitutiveLaw::Parameters &rValues); + + ///@} + ///@name Private Access + ///@{ + + ///@} + ///@name Private Inquiry + ///@{ + + ///@} + ///@name Un accessible methods + ///@{ + + // Serialization + + friend class Serializer; + + void save(Serializer &rSerializer) const override + { + KRATOS_SERIALIZE_SAVE_BASE_CLASS(rSerializer, ConstitutiveLaw) + rSerializer.save("PlasticDissipation", mPlasticDissipation); + rSerializer.save("Threshold", mThreshold); + rSerializer.save("PlasticStrain", mPlasticStrain); + } + + void load(Serializer &rSerializer) override + { + KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, ConstitutiveLaw) + rSerializer.load("PlasticDissipation", mPlasticDissipation); + rSerializer.load("Threshold", mThreshold); + rSerializer.load("PlasticStrain", mPlasticStrain); + } + + ///@} + +}; // Class GenericYieldSurface + +} // namespace Kratos +#endif diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_kinematic_plasticity.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.cpp similarity index 94% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_kinematic_plasticity.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.cpp index dc437a7f056f..ad06372cc7fd 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_kinematic_plasticity.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.cpp @@ -1,630 +1,630 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Alejandro Cornejo -// Collaborator: -// - -// System includes - -// Project includes -#include "utilities/math_utils.h" -#include "constitutive_laws_application_variables.h" -#include "custom_utilities/tangent_operator_calculator_utility.h" -#include "custom_constitutive/generic_small_strain_kinematic_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_kinematic_plasticity.h" - -// Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" - -// Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" - -namespace Kratos -{ -template -void GenericSmallStrainKinematicPlasticity::CalculateMaterialResponsePK2( - ConstitutiveLaw::Parameters& rValues - ) -{ - this->CalculateMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::CalculateMaterialResponseKirchhoff( - ConstitutiveLaw::Parameters& rValues - ) -{ - this->CalculateMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::CalculateMaterialResponsePK1( - ConstitutiveLaw::Parameters& rValues - ) -{ - this->CalculateMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::CalculateMaterialResponseCauchy( - ConstitutiveLaw::Parameters& rValues - ) -{ - // Auxiliar values - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - - // We get the constitutive tensor - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - - // We check the current step and NL iteration - const ProcessInfo& r_current_process_info = rValues.GetProcessInfo(); - const bool first_computation = (r_current_process_info[NL_ITERATION_NUMBER] == 1 && r_current_process_info[STEP] == 1) ? true : false; - - //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN - if (first_computation) { // First computation always pure elastic for elemements not providing the strain - if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ) ) { - BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); - } - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || - r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - Vector& r_stress_vector = rValues.GetStressVector(); - if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); - noalias(r_stress_vector) = prod( r_constitutive_matrix, r_strain_vector); - } else { - BaseType::CalculatePK2Stress( r_strain_vector, r_stress_vector, rValues); - } - } - } else { // We check for plasticity - // Integrate Stress plasticity - Vector& r_integrated_stress_vector = rValues.GetStressVector(); - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); - - //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN - if ( r_constitutive_law_options.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - this->CalculateValue(rValues, STRAIN, r_strain_vector); - } - - // Elastic Matrix - if ( r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); - } - - // We compute the stress - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS)) { - // Elastic Matrix - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - this->CalculateElasticMatrix(r_constitutive_matrix, rValues); - - // We get some variables - double threshold = this->GetThreshold(); - double plastic_dissipation = this->GetPlasticDissipation(); - Vector plastic_strain = this->GetPlasticStrain(); - Vector back_stress_vector = this->GetBackStressVector(); - const Vector previous_stress_vector = this->GetPreviousStressVector(); - - array_1d predictive_stress_vector, kin_hard_stress_vector; - if (r_constitutive_law_options.Is(ConstitutiveLaw::U_P_LAW)) { - predictive_stress_vector = rValues.GetStressVector(); - } else { - // S0 = r_constitutive_matrix:(E-Ep) - predictive_stress_vector = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); - } - - // Initialize Plastic Parameters - double uniaxial_stress = 0.0, plastic_denominator = 0.0; - array_1d f_flux = ZeroVector(VoigtSize); // DF/DS - array_1d g_flux = ZeroVector(VoigtSize); // DG/DS - array_1d plastic_strain_increment = ZeroVector(VoigtSize); - - // Kinematic back stress substracted - noalias(kin_hard_stress_vector) = predictive_stress_vector - back_stress_vector; - - const double F = TConstLawIntegratorType::CalculatePlasticParameters( - kin_hard_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, rValues, characteristic_length, - plastic_strain, back_stress_vector); - - if (F <= std::abs(1.0e-4 * threshold)) { // Elastic case - noalias(r_integrated_stress_vector) = predictive_stress_vector; - } else { // Plastic case - // While loop backward euler - /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, plastic_strain, rValues, - characteristic_length, back_stress_vector, - previous_stress_vector); - - noalias(r_integrated_stress_vector) = predictive_stress_vector; - - if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { - this->CalculateTangentTensor(rValues); // this modifies the ConstitutiveMatrix - } - } - } - } -} // End CalculateMaterialResponseCauchy - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::CalculateTangentTensor( - ConstitutiveLaw::Parameters& rValues - ) -{ - const Properties& r_material_properties = rValues.GetMaterialProperties(); - - const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; - const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; - - if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { - // Already stored in rValues.GetConstitutiveMatrix()... - } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (first order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); - } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { - // Calculates the Tangent Constitutive Tensor by perturbation (second order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); - } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbationV2) { - // Calculates the Tangent Constitutive Tensor by perturbation (second order) - TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 4); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::InitializeMaterial( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const Vector& rShapeFunctionsValues - ) -{ - // We construct the CL parameters - ProcessInfo dummy_process_info; - ConstitutiveLaw::Parameters aux_param(rElementGeometry, rMaterialProperties, dummy_process_info); - - // We call the integrator - double initial_threshold; - TConstLawIntegratorType::GetInitialUniaxialThreshold(aux_param, initial_threshold); - this->SetThreshold(initial_threshold); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::FinalizeMaterialResponsePK1( - ConstitutiveLaw::Parameters& rValues - ) -{ - // Small deformation so we can call the Cauchy method - FinalizeMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::FinalizeMaterialResponsePK2( - ConstitutiveLaw::Parameters& rValues - ) -{ - // Small deformation so we can call the Cauchy method - FinalizeMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::FinalizeMaterialResponseKirchhoff( - ConstitutiveLaw::Parameters& rValues - ) -{ - // Small deformation so we can call the Cauchy method - FinalizeMaterialResponseCauchy(rValues); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::FinalizeMaterialResponseCauchy( - ConstitutiveLaw::Parameters& rValues - ) -{ - const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); - const Flags& r_constitutive_law_options = rValues.GetOptions(); - - // We get the strain vector - Vector& r_strain_vector = rValues.GetStrainVector(); - Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); - this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); - - //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN - if ( r_constitutive_law_options.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { - this->CalculateValue(rValues, STRAIN, r_strain_vector); - } - - // We get some variables - double threshold = this->GetThreshold(); - double plastic_dissipation = this->GetPlasticDissipation(); - Vector plastic_strain = this->GetPlasticStrain(); - Vector back_stress_vector = this->GetBackStressVector(); - const Vector previous_stress_vector = this->GetPreviousStressVector(); - - array_1d predictive_stress_vector, kin_hard_stress_vector; - if (r_constitutive_law_options.Is(ConstitutiveLaw::U_P_LAW)) { - predictive_stress_vector = rValues.GetStressVector(); - } else { - // S0 = r_constitutive_matrix:(E-Ep) - predictive_stress_vector = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); - } - - // Initialize Plastic Parameters - double uniaxial_stress = 0.0, plastic_denominator = 0.0; - array_1d f_flux = ZeroVector(VoigtSize); // DF/DS - array_1d g_flux = ZeroVector(VoigtSize); // DG/DS - array_1d plastic_strain_increment = ZeroVector(VoigtSize); - - // Kinematic back stress substracted - noalias(kin_hard_stress_vector) = predictive_stress_vector - back_stress_vector; - - const double threshold_indicator = TConstLawIntegratorType::CalculatePlasticParameters( - kin_hard_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, rValues, characteristic_length, - plastic_strain, back_stress_vector); - - if (threshold_indicator > std::abs(1.0e-4 * threshold)) { - // while loop backward euler - /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ - TConstLawIntegratorType::IntegrateStressVector( - predictive_stress_vector, r_strain_vector, uniaxial_stress, - threshold, plastic_denominator, f_flux, g_flux, - plastic_dissipation, plastic_strain_increment, - r_constitutive_matrix, plastic_strain, rValues, - characteristic_length, back_stress_vector, - previous_stress_vector); - } - - TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress(predictive_stress_vector, r_strain_vector, uniaxial_stress, rValues); - - mPlasticDissipation = plastic_dissipation; - mThreshold = threshold; - - noalias(mPlasticStrain) = plastic_strain; - noalias(mPreviousStressVector) = predictive_stress_vector; - noalias(mBackStressVector) = back_stress_vector; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainKinematicPlasticity::Has(const Variable& rThisVariable) -{ - if (rThisVariable == PLASTIC_DISSIPATION) { - return true; - } - return BaseType::Has(rThisVariable); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainKinematicPlasticity::Has(const Variable& rThisVariable) -{ - if (rThisVariable == INTERNAL_VARIABLES) { - return true; - } - if (rThisVariable == PLASTIC_STRAIN_VECTOR) { - return true; - } - return BaseType::Has(rThisVariable); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -bool GenericSmallStrainKinematicPlasticity::Has(const Variable& rThisVariable) -{ - if (rThisVariable == PLASTIC_STRAIN_TENSOR) { - return true; - } else if (rThisVariable == INTEGRATED_STRESS_TENSOR) { - return true; - } else { - return BaseType::Has(rThisVariable); - } - return false; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::SetValue( - const Variable& rThisVariable, - const double& rValue, - const ProcessInfo& rCurrentProcessInfo) -{ - if (rThisVariable == PLASTIC_DISSIPATION) { - mPlasticDissipation = rValue; - } else { - BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); - } -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -void GenericSmallStrainKinematicPlasticity::SetValue( - const Variable& rThisVariable, - const Vector& rValue, - const ProcessInfo& rCurrentProcessInfo - ) -{ - if (rThisVariable == INTERNAL_VARIABLES) { - mPlasticDissipation = rValue[0]; - for (std::size_t i=0; i < VoigtSize; ++i) - mPlasticStrain[i] = rValue[i + 1]; - return; - } - if (rThisVariable == PLASTIC_STRAIN_VECTOR) { - mPlasticStrain = rValue; - return; - } - BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -double& GenericSmallStrainKinematicPlasticity::GetValue( - const Variable& rThisVariable, - double& rValue - ) -{ - if (rThisVariable == PLASTIC_DISSIPATION) { - rValue = mPlasticDissipation; - } else { - BaseType::GetValue(rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Vector& GenericSmallStrainKinematicPlasticity::GetValue( - const Variable& rThisVariable, - Vector& rValue - ) -{ - if (rThisVariable == INTERNAL_VARIABLES) { - rValue.resize(1 + VoigtSize); - rValue[0] = mPlasticDissipation; - for (std::size_t i=0; i < VoigtSize; ++i) - rValue[i + 1] = mPlasticStrain[i]; - return rValue; - } - if (rThisVariable == PLASTIC_STRAIN_VECTOR) { - rValue = mPlasticStrain; - return rValue; - } - return BaseType::GetValue(rThisVariable, rValue); -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Matrix& GenericSmallStrainKinematicPlasticity::GetValue( - const Variable& rThisVariable, - Matrix& rValue - ) -{ - if (rThisVariable == PLASTIC_STRAIN_TENSOR) { - rValue = MathUtils::StrainVectorToTensor(mPlasticStrain); - } else if (rThisVariable == INTEGRATED_STRESS_TENSOR) { - rValue = MathUtils::StressVectorToTensor(mPreviousStressVector); - } else { - return BaseType::GetValue(rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -double& GenericSmallStrainKinematicPlasticity::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue - ) -{ - if (rThisVariable == UNIAXIAL_STRESS) { - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); - - // Calculate the stress vector - CalculateMaterialResponseCauchy(rParameterValues); - const Vector& r_stress_vector = rParameterValues.GetStressVector(); - const Vector& r_strain_vector = rParameterValues.GetStrainVector(); - - BoundedArrayType aux_stress_vector = r_stress_vector; - TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress( aux_stress_vector, r_strain_vector, rValue, rParameterValues); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - } else if (rThisVariable == EQUIVALENT_PLASTIC_STRAIN) { - // Get Values to compute the constitutive law: - Flags& r_flags = rParameterValues.GetOptions(); - - // Previous flags saved - const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); - const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); - - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); - - // Calculate the stress vector - CalculateMaterialResponseCauchy(rParameterValues); - const Vector& r_stress_vector = rParameterValues.GetStressVector(); - - // Previous flags restored - r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); - r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); - - // Compute the equivalent plastic strain - double uniaxial_stress; - this->CalculateValue(rParameterValues, UNIAXIAL_STRESS, uniaxial_stress); - TConstLawIntegratorType::CalculateEquivalentPlasticStrain(r_stress_vector, uniaxial_stress, mPlasticStrain, 0.0, rParameterValues, rValue); - return rValue; - } else { - return this->GetValue(rThisVariable, rValue); - } - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Vector& GenericSmallStrainKinematicPlasticity::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) -{ - if (rThisVariable == BACK_STRESS_VECTOR) { - rValue = mBackStressVector; - } else { - BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -Matrix& GenericSmallStrainKinematicPlasticity::CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) -{ - if (rThisVariable == BACK_STRESS_TENSOR) { - Vector aux_value(VoigtSize); - this->CalculateValue(rParameterValues, BACK_STRESS_VECTOR, aux_value); - rValue = MathUtils::StressVectorToTensor(aux_value); - } else { - return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); - } - - return rValue; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template -int GenericSmallStrainKinematicPlasticity::Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const -{ - const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); - const int check_integrator = TConstLawIntegratorType::Check(rMaterialProperties); - KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; - if ((check_base + check_integrator) > 0) return 1; - return 0; -} - -/***********************************************************************************/ -/***********************************************************************************/ - -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; -template class GenericSmallStrainKinematicPlasticity>>>; - -} // namespace Kratos +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Alejandro Cornejo +// Collaborator: +// + +// System includes + +// Project includes +#include "utilities/math_utils.h" +#include "constitutive_laws_application_variables.h" +#include "custom_utilities/tangent_operator_calculator_utility.h" +#include "generic_small_strain_kinematic_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h" + +// Yield surfaces +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" + +// Plastic potentials +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" + +namespace Kratos +{ +template +void GenericSmallStrainKinematicPlasticity::CalculateMaterialResponsePK2( + ConstitutiveLaw::Parameters& rValues + ) +{ + this->CalculateMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::CalculateMaterialResponseKirchhoff( + ConstitutiveLaw::Parameters& rValues + ) +{ + this->CalculateMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::CalculateMaterialResponsePK1( + ConstitutiveLaw::Parameters& rValues + ) +{ + this->CalculateMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::CalculateMaterialResponseCauchy( + ConstitutiveLaw::Parameters& rValues + ) +{ + // Auxiliar values + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + + // We get the constitutive tensor + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + + // We check the current step and NL iteration + const ProcessInfo& r_current_process_info = rValues.GetProcessInfo(); + const bool first_computation = (r_current_process_info[NL_ITERATION_NUMBER] == 1 && r_current_process_info[STEP] == 1) ? true : false; + + //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN + if (first_computation) { // First computation always pure elastic for elemements not providing the strain + if (r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN ) ) { + BaseType::CalculateCauchyGreenStrain( rValues, r_strain_vector); + } + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS) || + r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + Vector& r_stress_vector = rValues.GetStressVector(); + if (r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + BaseType::CalculateElasticMatrix( r_constitutive_matrix, rValues); + noalias(r_stress_vector) = prod( r_constitutive_matrix, r_strain_vector); + } else { + BaseType::CalculatePK2Stress( r_strain_vector, r_stress_vector, rValues); + } + } + } else { // We check for plasticity + // Integrate Stress plasticity + Vector& r_integrated_stress_vector = rValues.GetStressVector(); + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); + + //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN + if ( r_constitutive_law_options.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { + this->CalculateValue(rValues, STRAIN, r_strain_vector); + } + + // Elastic Matrix + if ( r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); + } + + // We compute the stress + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS)) { + // Elastic Matrix + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + this->CalculateElasticMatrix(r_constitutive_matrix, rValues); + + // We get some variables + double threshold = this->GetThreshold(); + double plastic_dissipation = this->GetPlasticDissipation(); + Vector plastic_strain = this->GetPlasticStrain(); + Vector back_stress_vector = this->GetBackStressVector(); + const Vector previous_stress_vector = this->GetPreviousStressVector(); + + array_1d predictive_stress_vector, kin_hard_stress_vector; + if (r_constitutive_law_options.Is(ConstitutiveLaw::U_P_LAW)) { + predictive_stress_vector = rValues.GetStressVector(); + } else { + // S0 = r_constitutive_matrix:(E-Ep) + predictive_stress_vector = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); + } + + // Initialize Plastic Parameters + double uniaxial_stress = 0.0, plastic_denominator = 0.0; + array_1d f_flux = ZeroVector(VoigtSize); // DF/DS + array_1d g_flux = ZeroVector(VoigtSize); // DG/DS + array_1d plastic_strain_increment = ZeroVector(VoigtSize); + + // Kinematic back stress substracted + noalias(kin_hard_stress_vector) = predictive_stress_vector - back_stress_vector; + + const double F = TConstLawIntegratorType::CalculatePlasticParameters( + kin_hard_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, rValues, characteristic_length, + plastic_strain, back_stress_vector); + + if (F <= std::abs(1.0e-4 * threshold)) { // Elastic case + noalias(r_integrated_stress_vector) = predictive_stress_vector; + } else { // Plastic case + // While loop backward euler + /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ + TConstLawIntegratorType::IntegrateStressVector( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, plastic_strain, rValues, + characteristic_length, back_stress_vector, + previous_stress_vector); + + noalias(r_integrated_stress_vector) = predictive_stress_vector; + + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + this->CalculateTangentTensor(rValues); // this modifies the ConstitutiveMatrix + } + } + } + } +} // End CalculateMaterialResponseCauchy + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::CalculateTangentTensor( + ConstitutiveLaw::Parameters& rValues + ) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + + const bool consider_perturbation_threshold = r_material_properties.Has(CONSIDER_PERTURBATION_THRESHOLD) ? r_material_properties[CONSIDER_PERTURBATION_THRESHOLD] : true; + const TangentOperatorEstimation tangent_operator_estimation = r_material_properties.Has(TANGENT_OPERATOR_ESTIMATION) ? static_cast(r_material_properties[TANGENT_OPERATOR_ESTIMATION]) : TangentOperatorEstimation::SecondOrderPerturbation; + + if (tangent_operator_estimation == TangentOperatorEstimation::Analytic) { + // Already stored in rValues.GetConstitutiveMatrix()... + } else if (tangent_operator_estimation == TangentOperatorEstimation::FirstOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (first order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 1); + } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbation) { + // Calculates the Tangent Constitutive Tensor by perturbation (second order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 2); + } else if (tangent_operator_estimation == TangentOperatorEstimation::SecondOrderPerturbationV2) { + // Calculates the Tangent Constitutive Tensor by perturbation (second order) + TangentOperatorCalculatorUtility::CalculateTangentTensor(rValues, this, ConstitutiveLaw::StressMeasure_Cauchy, consider_perturbation_threshold, 4); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::InitializeMaterial( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const Vector& rShapeFunctionsValues + ) +{ + // We construct the CL parameters + ProcessInfo dummy_process_info; + ConstitutiveLaw::Parameters aux_param(rElementGeometry, rMaterialProperties, dummy_process_info); + + // We call the integrator + double initial_threshold; + TConstLawIntegratorType::GetInitialUniaxialThreshold(aux_param, initial_threshold); + this->SetThreshold(initial_threshold); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::FinalizeMaterialResponsePK1( + ConstitutiveLaw::Parameters& rValues + ) +{ + // Small deformation so we can call the Cauchy method + FinalizeMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::FinalizeMaterialResponsePK2( + ConstitutiveLaw::Parameters& rValues + ) +{ + // Small deformation so we can call the Cauchy method + FinalizeMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::FinalizeMaterialResponseKirchhoff( + ConstitutiveLaw::Parameters& rValues + ) +{ + // Small deformation so we can call the Cauchy method + FinalizeMaterialResponseCauchy(rValues); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::FinalizeMaterialResponseCauchy( + ConstitutiveLaw::Parameters& rValues + ) +{ + const double characteristic_length = AdvancedConstitutiveLawUtilities::CalculateCharacteristicLength(rValues.GetElementGeometry()); + const Flags& r_constitutive_law_options = rValues.GetOptions(); + + // We get the strain vector + Vector& r_strain_vector = rValues.GetStrainVector(); + Matrix& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + this->CalculateValue(rValues, CONSTITUTIVE_MATRIX, r_constitutive_matrix); + + //NOTE: SINCE THE ELEMENT IS IN SMALL STRAINS WE CAN USE ANY STRAIN MEASURE. HERE EMPLOYING THE CAUCHY_GREEN + if ( r_constitutive_law_options.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { + this->CalculateValue(rValues, STRAIN, r_strain_vector); + } + + // We get some variables + double threshold = this->GetThreshold(); + double plastic_dissipation = this->GetPlasticDissipation(); + Vector plastic_strain = this->GetPlasticStrain(); + Vector back_stress_vector = this->GetBackStressVector(); + const Vector previous_stress_vector = this->GetPreviousStressVector(); + + array_1d predictive_stress_vector, kin_hard_stress_vector; + if (r_constitutive_law_options.Is(ConstitutiveLaw::U_P_LAW)) { + predictive_stress_vector = rValues.GetStressVector(); + } else { + // S0 = r_constitutive_matrix:(E-Ep) + predictive_stress_vector = prod(r_constitutive_matrix, r_strain_vector - plastic_strain); + } + + // Initialize Plastic Parameters + double uniaxial_stress = 0.0, plastic_denominator = 0.0; + array_1d f_flux = ZeroVector(VoigtSize); // DF/DS + array_1d g_flux = ZeroVector(VoigtSize); // DG/DS + array_1d plastic_strain_increment = ZeroVector(VoigtSize); + + // Kinematic back stress substracted + noalias(kin_hard_stress_vector) = predictive_stress_vector - back_stress_vector; + + const double threshold_indicator = TConstLawIntegratorType::CalculatePlasticParameters( + kin_hard_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, rValues, characteristic_length, + plastic_strain, back_stress_vector); + + if (threshold_indicator > std::abs(1.0e-4 * threshold)) { + // while loop backward euler + /* Inside "IntegrateStressVector" the predictive_stress_vector is updated to verify the yield criterion */ + TConstLawIntegratorType::IntegrateStressVector( + predictive_stress_vector, r_strain_vector, uniaxial_stress, + threshold, plastic_denominator, f_flux, g_flux, + plastic_dissipation, plastic_strain_increment, + r_constitutive_matrix, plastic_strain, rValues, + characteristic_length, back_stress_vector, + previous_stress_vector); + } + + TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress(predictive_stress_vector, r_strain_vector, uniaxial_stress, rValues); + + mPlasticDissipation = plastic_dissipation; + mThreshold = threshold; + + noalias(mPlasticStrain) = plastic_strain; + noalias(mPreviousStressVector) = predictive_stress_vector; + noalias(mBackStressVector) = back_stress_vector; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainKinematicPlasticity::Has(const Variable& rThisVariable) +{ + if (rThisVariable == PLASTIC_DISSIPATION) { + return true; + } + return BaseType::Has(rThisVariable); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainKinematicPlasticity::Has(const Variable& rThisVariable) +{ + if (rThisVariable == INTERNAL_VARIABLES) { + return true; + } + if (rThisVariable == PLASTIC_STRAIN_VECTOR) { + return true; + } + return BaseType::Has(rThisVariable); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +bool GenericSmallStrainKinematicPlasticity::Has(const Variable& rThisVariable) +{ + if (rThisVariable == PLASTIC_STRAIN_TENSOR) { + return true; + } else if (rThisVariable == INTEGRATED_STRESS_TENSOR) { + return true; + } else { + return BaseType::Has(rThisVariable); + } + return false; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::SetValue( + const Variable& rThisVariable, + const double& rValue, + const ProcessInfo& rCurrentProcessInfo) +{ + if (rThisVariable == PLASTIC_DISSIPATION) { + mPlasticDissipation = rValue; + } else { + BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +void GenericSmallStrainKinematicPlasticity::SetValue( + const Variable& rThisVariable, + const Vector& rValue, + const ProcessInfo& rCurrentProcessInfo + ) +{ + if (rThisVariable == INTERNAL_VARIABLES) { + mPlasticDissipation = rValue[0]; + for (std::size_t i=0; i < VoigtSize; ++i) + mPlasticStrain[i] = rValue[i + 1]; + return; + } + if (rThisVariable == PLASTIC_STRAIN_VECTOR) { + mPlasticStrain = rValue; + return; + } + BaseType::SetValue(rThisVariable, rValue, rCurrentProcessInfo); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +double& GenericSmallStrainKinematicPlasticity::GetValue( + const Variable& rThisVariable, + double& rValue + ) +{ + if (rThisVariable == PLASTIC_DISSIPATION) { + rValue = mPlasticDissipation; + } else { + BaseType::GetValue(rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Vector& GenericSmallStrainKinematicPlasticity::GetValue( + const Variable& rThisVariable, + Vector& rValue + ) +{ + if (rThisVariable == INTERNAL_VARIABLES) { + rValue.resize(1 + VoigtSize); + rValue[0] = mPlasticDissipation; + for (std::size_t i=0; i < VoigtSize; ++i) + rValue[i + 1] = mPlasticStrain[i]; + return rValue; + } + if (rThisVariable == PLASTIC_STRAIN_VECTOR) { + rValue = mPlasticStrain; + return rValue; + } + return BaseType::GetValue(rThisVariable, rValue); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Matrix& GenericSmallStrainKinematicPlasticity::GetValue( + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (rThisVariable == PLASTIC_STRAIN_TENSOR) { + rValue = MathUtils::StrainVectorToTensor(mPlasticStrain); + } else if (rThisVariable == INTEGRATED_STRESS_TENSOR) { + rValue = MathUtils::StressVectorToTensor(mPreviousStressVector); + } else { + return BaseType::GetValue(rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +double& GenericSmallStrainKinematicPlasticity::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue + ) +{ + if (rThisVariable == UNIAXIAL_STRESS) { + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); + + // Calculate the stress vector + CalculateMaterialResponseCauchy(rParameterValues); + const Vector& r_stress_vector = rParameterValues.GetStressVector(); + const Vector& r_strain_vector = rParameterValues.GetStrainVector(); + + BoundedArrayType aux_stress_vector = r_stress_vector; + TConstLawIntegratorType::YieldSurfaceType::CalculateEquivalentStress( aux_stress_vector, r_strain_vector, rValue, rParameterValues); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + } else if (rThisVariable == EQUIVALENT_PLASTIC_STRAIN) { + // Get Values to compute the constitutive law: + Flags& r_flags = rParameterValues.GetOptions(); + + // Previous flags saved + const bool flag_const_tensor = r_flags.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR ); + const bool flag_stress = r_flags.Is( ConstitutiveLaw::COMPUTE_STRESS ); + + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, true ); + + // Calculate the stress vector + CalculateMaterialResponseCauchy(rParameterValues); + const Vector& r_stress_vector = rParameterValues.GetStressVector(); + + // Previous flags restored + r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); + r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + + // Compute the equivalent plastic strain + double uniaxial_stress; + this->CalculateValue(rParameterValues, UNIAXIAL_STRESS, uniaxial_stress); + TConstLawIntegratorType::CalculateEquivalentPlasticStrain(r_stress_vector, uniaxial_stress, mPlasticStrain, 0.0, rParameterValues, rValue); + return rValue; + } else { + return this->GetValue(rThisVariable, rValue); + } + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Vector& GenericSmallStrainKinematicPlasticity::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) +{ + if (rThisVariable == BACK_STRESS_VECTOR) { + rValue = mBackStressVector; + } else { + BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +Matrix& GenericSmallStrainKinematicPlasticity::CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) +{ + if (rThisVariable == BACK_STRESS_TENSOR) { + Vector aux_value(VoigtSize); + this->CalculateValue(rParameterValues, BACK_STRESS_VECTOR, aux_value); + rValue = MathUtils::StressVectorToTensor(aux_value); + } else { + return BaseType::CalculateValue(rParameterValues, rThisVariable, rValue); + } + + return rValue; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template +int GenericSmallStrainKinematicPlasticity::Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const +{ + const int check_base = BaseType::Check(rMaterialProperties, rElementGeometry, rCurrentProcessInfo); + const int check_integrator = TConstLawIntegratorType::Check(rMaterialProperties); + KRATOS_ERROR_IF_NOT(VoigtSize == this->GetStrainSize()) << "You are combining not compatible constitutive laws" << std::endl; + if ((check_base + check_integrator) > 0) return 1; + return 0; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; +template class GenericSmallStrainKinematicPlasticity>>>; + +} // namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_kinematic_plasticity.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.h similarity index 96% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_kinematic_plasticity.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.h index 65750496d790..09d390c20767 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_kinematic_plasticity.h +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.h @@ -1,477 +1,477 @@ -// KRATOS ___ _ _ _ _ _ __ _ -// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ -// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | -// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | -// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ -// |_| |_| -// -// License: BSD License -// license: structural_mechanics_application/license.txt -// -// Main authors: Alejandro Cornejo -// Collaborator: -// - -#if !defined(KRATOS_GENERIC_SMALL_STRAIN_KINEMATIC_PLASTICITY_H_INCLUDED) -#define KRATOS_GENERIC_SMALL_STRAIN_KINEMATIC_PLASTICITY_H_INCLUDED - -// System includes - -// External includes - -// Project includes -#include "custom_constitutive/elastic_isotropic_3d.h" -#include "custom_constitutive/linear_plane_strain.h" - -namespace Kratos -{ -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - - // The size type definition - typedef std::size_t SizeType; - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/** - * @class GenericSmallStrainKinematicPlasticity - * @ingroup StructuralMechanicsApplication - * @brief This class is the base class which define all the constitutive laws for kinematic plasticity in small deformation - * @details This class considers a constitutive law integrator as an intermediate utility to compute the plasticity - * @tparam TConstLawIntegratorType The constitutive law integrator considered - * @author Alejandro Cornejo - */ -template -class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericSmallStrainKinematicPlasticity - : public std::conditional::type -{ -public: - ///@name Type Definitions - ///@{ - - /// The define the working dimension size, already defined in the integrator - static constexpr SizeType Dimension = TConstLawIntegratorType::Dimension; - - /// The define the Voigt size, already defined in the integrator - static constexpr SizeType VoigtSize = TConstLawIntegratorType::VoigtSize; - - /// Definition of the base class - typedef typename std::conditional::type BaseType; - - /// The definition of the Voigt array type - typedef array_1d BoundedArrayType; - - /// The definition of the bounded matrix type - typedef BoundedMatrix BoundedMatrixType; - - /// Counted pointer of GenericSmallStrainKinematicPlasticity - KRATOS_CLASS_POINTER_DEFINITION(GenericSmallStrainKinematicPlasticity); - - /// The node definition - typedef Node<3> NodeType; - - /// The geometry definition - typedef Geometry GeometryType; - - ///@} - ///@name Life Cycle - ///@{ - - /** - * Default constructor. - */ - GenericSmallStrainKinematicPlasticity() - { - } - - /** - * Clone. - */ - ConstitutiveLaw::Pointer Clone() const override - { - return Kratos::make_shared>(*this); - } - - /** - * Copy constructor. - */ - GenericSmallStrainKinematicPlasticity(const GenericSmallStrainKinematicPlasticity &rOther) - : BaseType(rOther), - mPlasticDissipation(rOther.mPlasticDissipation), - mThreshold(rOther.mThreshold), - mPlasticStrain(rOther.mPlasticStrain), - mPreviousStressVector(rOther.mPreviousStressVector), - mBackStressVector(rOther.mBackStressVector) - { - } - - /** - * Destructor. - */ - ~GenericSmallStrainKinematicPlasticity() override - { - } - - ///@} - ///@name Operators - ///@{ - - ///@} - ///@name Operations - ///@{ - - /** - * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor - * @see Parameters - */ - void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief This is to be called at the very beginning of the calculation - * @details (e.g. from InitializeElement) in order to initialize all relevant attributes of the constitutive law - * @param rMaterialProperties the Properties instance of the current element - * @param rElementGeometry the geometry of the current element - * @param rShapeFunctionsValues the shape functions values in the current integration point - */ - void InitializeMaterial( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const Vector& rShapeFunctionsValues - ) override; - - /** - * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Finalize the material response in terms of Kirchhoff stresses - * @see Parameters - */ - void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; - /** - * Finalize the material response in terms of Cauchy stresses - * @see Parameters - */ - void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; - - /** - * @brief Returns whether this constitutive Law has specified variable (double) - * @param rThisVariable the variable to be checked for - * @return true if the variable is defined in the constitutive law - */ - bool Has(const Variable &rThisVariable) override; - - /** - * @brief Returns whether this constitutive Law has specified variable (Vector) - * @param rThisVariable the variable to be checked for - * @return true if the variable is defined in the constitutive law - */ - bool Has(const Variable &rThisVariable) override; - - /** - * @brief Returns whether this constitutive Law has specified variable (Matrix) - * @param rThisVariable the variable to be checked for - * @return true if the variable is defined in the constitutive law - */ - bool Has(const Variable &rThisVariable) override; - - /** - * @brief Sets the value of a specified variable (double) - * @param rVariable the variable to be returned - * @param rValue new value of the specified variable - * @param rCurrentProcessInfo the process info - */ - void SetValue( - const Variable &rThisVariable, - const double& rValue, - const ProcessInfo& rCurrentProcessInfo - ) override; - - /** - * @brief Sets the value of a specified variable (Vector) - * @param rThisVariable the variable to be returned - * @param rValue new value of the specified variable - * @param rCurrentProcessInfo the process info - */ - void SetValue( - const Variable &rThisVariable, - const Vector& rValue, - const ProcessInfo& rCurrentProcessInfo - ) override; - - /** - * @brief Returns the value of a specified variable (double) - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @return rValue output: the value of the specified variable - */ - double& GetValue( - const Variable &rThisVariable, - double& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (Vector) - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @return rValue output: the value of the specified variable - */ - Vector& GetValue( - const Variable &rThisVariable, - Vector& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (matrix) - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @return rValue output: the value of the specified variable - */ - Matrix& GetValue( - const Variable& rThisVariable, - Matrix& rValue - ) override; - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresFinalizeMaterialResponse() override - { - return true; - } - - /** - * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. - */ - bool RequiresInitializeMaterialResponse() override - { - return false; - } - - /** - * @brief Returns the value of a specified variable (double) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - double& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - double& rValue) override; - - /** - * @brief Returns the value of a specified variable (vector) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Vector& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Vector& rValue - ) override; - - /** - * @brief Returns the value of a specified variable (matrix) - * @param rParameterValues the needed parameters for the CL calculation - * @param rThisVariable the variable to be returned - * @param rValue a reference to the returned value - * @param rValue output: the value of the specified variable - */ - Matrix& CalculateValue( - ConstitutiveLaw::Parameters& rParameterValues, - const Variable& rThisVariable, - Matrix& rValue - ) override; - - /** - * @brief This function provides the place to perform checks on the completeness of the input. - * @details It is designed to be called only once (or anyway, not often) typically at the beginning - * of the calculations, so to verify that nothing is missing from the input or that no common error is found. - * @param rMaterialProperties The properties of the material - * @param rElementGeometry The geometry of the element - * @param rCurrentProcessInfo The current process info instance - * @return 0 if OK, 1 otherwise - */ - int Check( - const Properties& rMaterialProperties, - const GeometryType& rElementGeometry, - const ProcessInfo& rCurrentProcessInfo - ) const override; - - ///@} - ///@name Access - ///@{ - - ///@} - ///@name Inquiry - ///@{ - - ///@} - ///@name Input and output - ///@{ - - ///@} - ///@name Friends - ///@{ - - ///@} - -protected: - ///@name Protected static Member Variables - ///@{ - - ///@} - ///@name Protected member Variables - ///@{ - - ///@} - ///@name Protected Operators - ///@{ - - double& GetThreshold() { return mThreshold; } - double& GetPlasticDissipation() { return mPlasticDissipation; } - Vector& GetPlasticStrain() { return mPlasticStrain; } - - void SetThreshold(const double Threshold) { mThreshold = Threshold; } - void SetPlasticDissipation(const double PlasticDissipation) { mPlasticDissipation = PlasticDissipation; } - void SetPlasticStrain(const array_1d& rPlasticStrain) { mPlasticStrain = rPlasticStrain; } - - void SetPreviousStressVector(const Vector& toBS) {mPreviousStressVector = toBS; } - Vector& GetPreviousStressVector() { return mPreviousStressVector;} - - void SetBackStressVector(const Vector& toBS) {mBackStressVector = toBS; } - Vector& GetBackStressVector() { return mBackStressVector;} - - ///@} - ///@name Protected Operations - ///@{ - - ///@} - ///@name Protected Access - ///@{ - - ///@} - ///@name Protected Inquiry - ///@{ - - ///@} - ///@name Protected LifeCycle - ///@{ - - ///@} - private: - ///@name Static Member Variables - ///@{ - - ///@} - ///@name Member Variables - ///@{ - - // Converged values - double mPlasticDissipation = 0.0; - double mThreshold = 0.0; - Vector mPlasticStrain = ZeroVector(VoigtSize); - - // Kinematic variables - Vector mPreviousStressVector = ZeroVector(VoigtSize); - Vector mBackStressVector = ZeroVector(VoigtSize); - - ///@} - ///@name Private Operators - ///@{ - - ///@} - ///@name Private Operations - ///@{ - - /** - * @brief This method computes the tangent tensor - * @param rValues The constitutive law parameters and flags - */ - void CalculateTangentTensor(ConstitutiveLaw::Parameters &rValues); - - ///@} - ///@name Private Access - ///@{ - - ///@} - ///@name Private Inquiry - ///@{ - - ///@} - ///@name Un accessible methods - ///@{ - - // Serialization - - friend class Serializer; - - void save(Serializer &rSerializer) const override - { - KRATOS_SERIALIZE_SAVE_BASE_CLASS(rSerializer, ConstitutiveLaw) - rSerializer.save("PlasticDissipation", mPlasticDissipation); - rSerializer.save("Threshold", mThreshold); - rSerializer.save("PlasticStrain", mPlasticStrain); - rSerializer.save("PreviousStressVector", mPreviousStressVector); - rSerializer.save("BackStressVector", mBackStressVector); - } - - void load(Serializer &rSerializer) override - { - KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, ConstitutiveLaw) - rSerializer.load("PlasticDissipation", mPlasticDissipation); - rSerializer.load("Threshold", mThreshold); - rSerializer.load("PlasticStrain", mPlasticStrain); - rSerializer.load("PreviousStressVector", mPreviousStressVector); - rSerializer.load("BackStressVector", mBackStressVector); - } - - ///@} - -}; // Class GenericYieldSurface - -} // namespace Kratos -#endif +// KRATOS ___ _ _ _ _ _ __ _ +// / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __ +// / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ | +// / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) | +// \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/ +// |_| |_| +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Alejandro Cornejo +// Collaborator: +// + +#if !defined(KRATOS_GENERIC_SMALL_STRAIN_KINEMATIC_PLASTICITY_H_INCLUDED) +#define KRATOS_GENERIC_SMALL_STRAIN_KINEMATIC_PLASTICITY_H_INCLUDED + +// System includes + +// External includes + +// Project includes +#include "custom_constitutive/elastic_isotropic_3d.h" +#include "custom_constitutive/linear_plane_strain.h" + +namespace Kratos +{ +///@name Kratos Globals +///@{ + +///@} +///@name Type Definitions +///@{ + + // The size type definition + typedef std::size_t SizeType; + +///@} +///@name Enum's +///@{ + +///@} +///@name Functions +///@{ + +///@} +///@name Kratos Classes +///@{ + +/** + * @class GenericSmallStrainKinematicPlasticity + * @ingroup StructuralMechanicsApplication + * @brief This class is the base class which define all the constitutive laws for kinematic plasticity in small deformation + * @details This class considers a constitutive law integrator as an intermediate utility to compute the plasticity + * @tparam TConstLawIntegratorType The constitutive law integrator considered + * @author Alejandro Cornejo + */ +template +class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) GenericSmallStrainKinematicPlasticity + : public std::conditional::type +{ +public: + ///@name Type Definitions + ///@{ + + /// The define the working dimension size, already defined in the integrator + static constexpr SizeType Dimension = TConstLawIntegratorType::Dimension; + + /// The define the Voigt size, already defined in the integrator + static constexpr SizeType VoigtSize = TConstLawIntegratorType::VoigtSize; + + /// Definition of the base class + typedef typename std::conditional::type BaseType; + + /// The definition of the Voigt array type + typedef array_1d BoundedArrayType; + + /// The definition of the bounded matrix type + typedef BoundedMatrix BoundedMatrixType; + + /// Counted pointer of GenericSmallStrainKinematicPlasticity + KRATOS_CLASS_POINTER_DEFINITION(GenericSmallStrainKinematicPlasticity); + + /// The node definition + typedef Node<3> NodeType; + + /// The geometry definition + typedef Geometry GeometryType; + + ///@} + ///@name Life Cycle + ///@{ + + /** + * Default constructor. + */ + GenericSmallStrainKinematicPlasticity() + { + } + + /** + * Clone. + */ + ConstitutiveLaw::Pointer Clone() const override + { + return Kratos::make_shared>(*this); + } + + /** + * Copy constructor. + */ + GenericSmallStrainKinematicPlasticity(const GenericSmallStrainKinematicPlasticity &rOther) + : BaseType(rOther), + mPlasticDissipation(rOther.mPlasticDissipation), + mThreshold(rOther.mThreshold), + mPlasticStrain(rOther.mPlasticStrain), + mPreviousStressVector(rOther.mPreviousStressVector), + mBackStressVector(rOther.mBackStressVector) + { + } + + /** + * Destructor. + */ + ~GenericSmallStrainKinematicPlasticity() override + { + } + + ///@} + ///@name Operators + ///@{ + + ///@} + ///@name Operations + ///@{ + + /** + * @brief Computes the material response in terms of 1st Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of 2nd Piola-Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Kirchhoff stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Computes the material response in terms of Cauchy stresses and constitutive tensor + * @see Parameters + */ + void CalculateMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief This is to be called at the very beginning of the calculation + * @details (e.g. from InitializeElement) in order to initialize all relevant attributes of the constitutive law + * @param rMaterialProperties the Properties instance of the current element + * @param rElementGeometry the geometry of the current element + * @param rShapeFunctionsValues the shape functions values in the current integration point + */ + void InitializeMaterial( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const Vector& rShapeFunctionsValues + ) override; + + /** + * @brief Finalize the material response in terms of 1st Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK1(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of 2nd Piola-Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponsePK2(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Finalize the material response in terms of Kirchhoff stresses + * @see Parameters + */ + void FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Parameters &rValues) override; + /** + * Finalize the material response in terms of Cauchy stresses + * @see Parameters + */ + void FinalizeMaterialResponseCauchy(ConstitutiveLaw::Parameters &rValues) override; + + /** + * @brief Returns whether this constitutive Law has specified variable (double) + * @param rThisVariable the variable to be checked for + * @return true if the variable is defined in the constitutive law + */ + bool Has(const Variable &rThisVariable) override; + + /** + * @brief Returns whether this constitutive Law has specified variable (Vector) + * @param rThisVariable the variable to be checked for + * @return true if the variable is defined in the constitutive law + */ + bool Has(const Variable &rThisVariable) override; + + /** + * @brief Returns whether this constitutive Law has specified variable (Matrix) + * @param rThisVariable the variable to be checked for + * @return true if the variable is defined in the constitutive law + */ + bool Has(const Variable &rThisVariable) override; + + /** + * @brief Sets the value of a specified variable (double) + * @param rVariable the variable to be returned + * @param rValue new value of the specified variable + * @param rCurrentProcessInfo the process info + */ + void SetValue( + const Variable &rThisVariable, + const double& rValue, + const ProcessInfo& rCurrentProcessInfo + ) override; + + /** + * @brief Sets the value of a specified variable (Vector) + * @param rThisVariable the variable to be returned + * @param rValue new value of the specified variable + * @param rCurrentProcessInfo the process info + */ + void SetValue( + const Variable &rThisVariable, + const Vector& rValue, + const ProcessInfo& rCurrentProcessInfo + ) override; + + /** + * @brief Returns the value of a specified variable (double) + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @return rValue output: the value of the specified variable + */ + double& GetValue( + const Variable &rThisVariable, + double& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (Vector) + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @return rValue output: the value of the specified variable + */ + Vector& GetValue( + const Variable &rThisVariable, + Vector& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (matrix) + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @return rValue output: the value of the specified variable + */ + Matrix& GetValue( + const Variable& rThisVariable, + Matrix& rValue + ) override; + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresFinalizeMaterialResponse() override + { + return true; + } + + /** + * @brief If the CL requires to initialize the material response, called by the element in InitializeSolutionStep. + */ + bool RequiresInitializeMaterialResponse() override + { + return false; + } + + /** + * @brief Returns the value of a specified variable (double) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + double& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + double& rValue) override; + + /** + * @brief Returns the value of a specified variable (vector) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Vector& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Vector& rValue + ) override; + + /** + * @brief Returns the value of a specified variable (matrix) + * @param rParameterValues the needed parameters for the CL calculation + * @param rThisVariable the variable to be returned + * @param rValue a reference to the returned value + * @param rValue output: the value of the specified variable + */ + Matrix& CalculateValue( + ConstitutiveLaw::Parameters& rParameterValues, + const Variable& rThisVariable, + Matrix& rValue + ) override; + + /** + * @brief This function provides the place to perform checks on the completeness of the input. + * @details It is designed to be called only once (or anyway, not often) typically at the beginning + * of the calculations, so to verify that nothing is missing from the input or that no common error is found. + * @param rMaterialProperties The properties of the material + * @param rElementGeometry The geometry of the element + * @param rCurrentProcessInfo The current process info instance + * @return 0 if OK, 1 otherwise + */ + int Check( + const Properties& rMaterialProperties, + const GeometryType& rElementGeometry, + const ProcessInfo& rCurrentProcessInfo + ) const override; + + ///@} + ///@name Access + ///@{ + + ///@} + ///@name Inquiry + ///@{ + + ///@} + ///@name Input and output + ///@{ + + ///@} + ///@name Friends + ///@{ + + ///@} + +protected: + ///@name Protected static Member Variables + ///@{ + + ///@} + ///@name Protected member Variables + ///@{ + + ///@} + ///@name Protected Operators + ///@{ + + double& GetThreshold() { return mThreshold; } + double& GetPlasticDissipation() { return mPlasticDissipation; } + Vector& GetPlasticStrain() { return mPlasticStrain; } + + void SetThreshold(const double Threshold) { mThreshold = Threshold; } + void SetPlasticDissipation(const double PlasticDissipation) { mPlasticDissipation = PlasticDissipation; } + void SetPlasticStrain(const array_1d& rPlasticStrain) { mPlasticStrain = rPlasticStrain; } + + void SetPreviousStressVector(const Vector& toBS) {mPreviousStressVector = toBS; } + Vector& GetPreviousStressVector() { return mPreviousStressVector;} + + void SetBackStressVector(const Vector& toBS) {mBackStressVector = toBS; } + Vector& GetBackStressVector() { return mBackStressVector;} + + ///@} + ///@name Protected Operations + ///@{ + + ///@} + ///@name Protected Access + ///@{ + + ///@} + ///@name Protected Inquiry + ///@{ + + ///@} + ///@name Protected LifeCycle + ///@{ + + ///@} + private: + ///@name Static Member Variables + ///@{ + + ///@} + ///@name Member Variables + ///@{ + + // Converged values + double mPlasticDissipation = 0.0; + double mThreshold = 0.0; + Vector mPlasticStrain = ZeroVector(VoigtSize); + + // Kinematic variables + Vector mPreviousStressVector = ZeroVector(VoigtSize); + Vector mBackStressVector = ZeroVector(VoigtSize); + + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + + /** + * @brief This method computes the tangent tensor + * @param rValues The constitutive law parameters and flags + */ + void CalculateTangentTensor(ConstitutiveLaw::Parameters &rValues); + + ///@} + ///@name Private Access + ///@{ + + ///@} + ///@name Private Inquiry + ///@{ + + ///@} + ///@name Un accessible methods + ///@{ + + // Serialization + + friend class Serializer; + + void save(Serializer &rSerializer) const override + { + KRATOS_SERIALIZE_SAVE_BASE_CLASS(rSerializer, ConstitutiveLaw) + rSerializer.save("PlasticDissipation", mPlasticDissipation); + rSerializer.save("Threshold", mThreshold); + rSerializer.save("PlasticStrain", mPlasticStrain); + rSerializer.save("PreviousStressVector", mPreviousStressVector); + rSerializer.save("BackStressVector", mBackStressVector); + } + + void load(Serializer &rSerializer) override + { + KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, ConstitutiveLaw) + rSerializer.load("PlasticDissipation", mPlasticDissipation); + rSerializer.load("Threshold", mThreshold); + rSerializer.load("PlasticStrain", mPlasticStrain); + rSerializer.load("PreviousStressVector", mPreviousStressVector); + rSerializer.load("BackStressVector", mBackStressVector); + } + + ///@} + +}; // Class GenericYieldSurface + +} // namespace Kratos +#endif diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plasticity_isotropic_kinematic_j2.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/plasticity_isotropic_kinematic_j2.cpp similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plasticity_isotropic_kinematic_j2.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/plasticity_isotropic_kinematic_j2.cpp diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/plasticity_isotropic_kinematic_j2.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/plasticity_isotropic_kinematic_j2.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/plasticity_isotropic_kinematic_j2.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/plasticity_isotropic_kinematic_j2.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_plasticity_factory.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_isotropic_plasticity_factory.cpp similarity index 89% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_plasticity_factory.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_isotropic_plasticity_factory.cpp index 9da917419225..22f47c86e5a7 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_plasticity_factory.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_isotropic_plasticity_factory.cpp @@ -17,8 +17,8 @@ // External includes // Project includes -#include "custom_constitutive/small_strain_isotropic_plasticity_factory.h" -#include "custom_constitutive/generic_small_strain_isotropic_plasticity.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_isotropic_plasticity_factory.h" +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_plasticity_factory.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_isotropic_plasticity_factory.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_isotropic_plasticity_factory.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_isotropic_plasticity_factory.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_j2_plasticity_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_3d.cpp similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_j2_plasticity_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_3d.cpp diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_j2_plasticity_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_3d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_j2_plasticity_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_3d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_j2_plasticity_plane_strain_2d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_plane_strain_2d.cpp similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_j2_plasticity_plane_strain_2d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_plane_strain_2d.cpp diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_j2_plasticity_plane_strain_2d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_plane_strain_2d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_j2_plasticity_plane_strain_2d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_plane_strain_2d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_kinematic_plasticity_factory.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_kinematic_plasticity_factory.cpp similarity index 89% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_kinematic_plasticity_factory.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_kinematic_plasticity_factory.cpp index 46c9fe75bfe9..8c99f559f6c1 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_kinematic_plasticity_factory.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_kinematic_plasticity_factory.cpp @@ -17,8 +17,8 @@ // External includes // Project includes -#include "custom_constitutive/small_strain_kinematic_plasticity_factory.h" -#include "custom_constitutive/generic_small_strain_kinematic_plasticity.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_kinematic_plasticity_factory.h" +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_kinematic_plasticity_factory.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_kinematic_plasticity_factory.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/small_strain_kinematic_plasticity_factory.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/small_strain_kinematic_plasticity_factory.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/truss_plasticity_constitutive_law.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/truss_plasticity_constitutive_law.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/truss_plasticity_constitutive_law.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/truss_plasticity_constitutive_law.cpp index 856da6e1c4e8..c27f7b2c8233 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/truss_plasticity_constitutive_law.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/truss_plasticity_constitutive_law.cpp @@ -16,7 +16,7 @@ // Project includes #include "includes/properties.h" -#include "custom_constitutive/truss_plasticity_constitutive_law.h" +#include "truss_plasticity_constitutive_law.h" #include "constitutive_laws_application_variables.h" #include "structural_mechanics_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/truss_plasticity_constitutive_law.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/truss_plasticity_constitutive_law.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/truss_plasticity_constitutive_law.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/plasticity/truss_plasticity_constitutive_law.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_viscoplasticity_3d.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscoplasticity/generic_small_strain_viscoplasticity_3d.cpp similarity index 97% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_viscoplasticity_3d.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscoplasticity/generic_small_strain_viscoplasticity_3d.cpp index b1c167fd0d20..6d5c8dc51b63 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_viscoplasticity_3d.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscoplasticity/generic_small_strain_viscoplasticity_3d.cpp @@ -19,8 +19,8 @@ // Project includes #include "utilities/math_utils.h" #include "constitutive_laws_application_variables.h" -#include "custom_constitutive/small_strain_isotropic_plasticity_factory.h" -#include "custom_constitutive/viscous_generalized_maxwell.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_isotropic_plasticity_factory.h" +#include "custom_constitutive/small_strains/viscous/viscous_generalized_maxwell.h" #include "generic_small_strain_viscoplasticity_3d.h" namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_viscoplasticity_3d.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscoplasticity/generic_small_strain_viscoplasticity_3d.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/generic_small_strain_viscoplasticity_3d.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscoplasticity/generic_small_strain_viscoplasticity_3d.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_kelvin.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_kelvin.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_kelvin.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_kelvin.cpp index 27d47ee41385..8737d123b7eb 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_kelvin.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_kelvin.cpp @@ -15,7 +15,7 @@ // System includes // Project includes -#include "custom_constitutive/viscous_generalized_kelvin.h" +#include "viscous_generalized_kelvin.h" #include "constitutive_laws_application_variables.h" namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_kelvin.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_kelvin.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_kelvin.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_kelvin.h diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_maxwell.cpp b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_maxwell.cpp similarity index 99% rename from applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_maxwell.cpp rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_maxwell.cpp index 12b58dc7303a..0e0fab575fa1 100644 --- a/applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_maxwell.cpp +++ b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_maxwell.cpp @@ -20,7 +20,7 @@ #include "includes/checks.h" #include "utilities/math_utils.h" #include "constitutive_laws_application_variables.h" -#include "custom_constitutive/viscous_generalized_maxwell.h" +#include "viscous_generalized_maxwell.h" namespace Kratos { diff --git a/applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_maxwell.h b/applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_maxwell.h similarity index 100% rename from applications/ConstitutiveLawsApplication/custom_constitutive/viscous_generalized_maxwell.h rename to applications/ConstitutiveLawsApplication/custom_constitutive/small_strains/viscous/viscous_generalized_maxwell.h diff --git a/applications/ConstitutiveLawsApplication/custom_python/add_custom_constitutive_laws_to_python.cpp b/applications/ConstitutiveLawsApplication/custom_python/add_custom_constitutive_laws_to_python.cpp index 16e3bcb54fd8..d9df1a6f13fa 100644 --- a/applications/ConstitutiveLawsApplication/custom_python/add_custom_constitutive_laws_to_python.cpp +++ b/applications/ConstitutiveLawsApplication/custom_python/add_custom_constitutive_laws_to_python.cpp @@ -20,80 +20,81 @@ #include "custom_python/add_custom_constitutive_laws_to_python.h" // Elastic laws -#include "custom_constitutive/hyper_elastic_isotropic_ogden_1d.h" -#include "custom_constitutive/hyper_elastic_isotropic_henky_1d.h" -#include "custom_constitutive/truss_plasticity_constitutive_law.h" -#include "custom_constitutive/elastic_isotropic_plane_stress_uncoupled_shear.h" -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h" -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h" -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h" -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.h" -#include "custom_constitutive/hyper_elastic_isotropic_quasi_incompressible_isochoric_neo_hookean_3d.h" -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h" -#include "custom_constitutive/linear_elastic_orthotropic_2D_law.h" -#include "custom_constitutive/small_strain_j2_plasticity_3d.h" -#include "custom_constitutive/small_strain_j2_plasticity_plane_strain_2d.h" -#include "custom_constitutive/small_strain_isotropic_damage_3d.h" -#include "custom_constitutive/small_strain_isotropic_damage_implex_3d.h" -#include "custom_constitutive/small_strain_isotropic_damage_traction_only_3d.h" -#include "custom_constitutive/small_strain_isotropic_damage_traction_only_implex_3d.h" -#include "custom_constitutive/wrinkling_linear_2d_law.h" -#include "custom_constitutive/multi_linear_elastic_1d_law.h" -#include "custom_constitutive/multi_linear_isotropic_plane_stress_2d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_ogden_1d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_henky_1d.h" +#include "custom_constitutive/small_strains/plasticity/truss_plasticity_constitutive_law.h" +#include "custom_constitutive/small_strains/linear/elastic_isotropic_plane_stress_uncoupled_shear.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_stress_2d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_plane_strain_2d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_q_incomp_isoch_neo_hook_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h" +#include "custom_constitutive/small_strains/linear/linear_elastic_orthotropic_2D_law.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_3d.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_j2_plasticity_plane_strain_2d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_implex_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_implex_3d.h" +#include "custom_constitutive/small_strains/linear/wrinkling_linear_2d_law.h" +#include "custom_constitutive/small_strains/linear/multi_linear_elastic_1d_law.h" +#include "custom_constitutive/small_strains/linear/multi_linear_isotropic_plane_stress_2d.h" // Plastic, damage laws and viscosities -#include "custom_constitutive/small_strain_isotropic_damage_plane_strain_2d.h" -#include "custom_constitutive/small_strain_isotropic_plasticity_factory.h" -#include "custom_constitutive/small_strain_kinematic_plasticity_factory.h" -#include "custom_constitutive/finite_strain_isotropic_plasticity_factory.h" -#include "custom_constitutive/small_strain_isotropic_damage_factory.h" -#include "custom_constitutive/viscous_generalized_maxwell.h" -#include "custom_constitutive/viscous_generalized_kelvin.h" -#include "custom_constitutive/generic_small_strain_viscoplasticity_3d.h" -#include "custom_constitutive/generic_small_strain_isotropic_plasticity.h" -#include "custom_constitutive/generic_finite_strain_isotropic_plasticity.h" -#include "custom_constitutive/generic_finite_strain_kinematic_plasticity.h" -#include "custom_constitutive/generic_small_strain_isotropic_damage.h" -#include "custom_constitutive/generic_small_strain_d_plus_d_minus_damage.h" -#include "custom_constitutive/generic_small_strain_kinematic_plasticity.h" -#include "custom_constitutive/generic_small_strain_high_cycle_fatigue_law.h" -#include "custom_constitutive/plasticity_isotropic_kinematic_j2.h" -#include "custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.h" -#include "custom_constitutive/d_plus_d_minus_damage_masonry_3d.h" -#include "custom_constitutive/generic_small_strain_plastic_damage_model.h" -#include "custom_constitutive/generic_small_strain_orthotropic_damage.h" -#include "custom_constitutive/serial_parallel_rule_of_mixtures_law.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage_plane_stress.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_plane_strain_2d.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_isotropic_plasticity_factory.h" +#include "custom_constitutive/small_strains/plasticity/small_strain_kinematic_plasticity_factory.h" +#include "custom_constitutive/finite_strains/plasticity/finite_strain_isotropic_plasticity_factory.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_factory.h" +#include "custom_constitutive/small_strains/viscous/viscous_generalized_maxwell.h" +#include "custom_constitutive/small_strains/viscous/viscous_generalized_kelvin.h" +#include "custom_constitutive/small_strains/viscoplasticity/generic_small_strain_viscoplasticity_3d.h" +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.h" +#include "custom_constitutive/finite_strains/plasticity/generic_finite_strain_isotropic_plasticity.h" +#include "custom_constitutive/finite_strains/plasticity/generic_finite_strain_kinematic_plasticity.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_d_plus_d_minus_damage.h" +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.h" +#include "custom_constitutive/small_strains/fatigue/generic_small_strain_high_cycle_fatigue_law.h" +#include "custom_constitutive/small_strains/plasticity/plasticity_isotropic_kinematic_j2.h" +#include "custom_constitutive/small_strains/damage/plane_stress_d_plus_d_minus_damage_masonry_2d.h" +#include "custom_constitutive/small_strains/damage/d_plus_d_minus_damage_masonry_3d.h" +#include "custom_constitutive/small_strains/plastic_damage/generic_small_strain_plastic_damage_model.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_orthotropic_damage.h" +#include "custom_constitutive/composites/serial_parallel_rule_of_mixtures_law.h" // Integrators -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_kinematic_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_compression_constitutive_law_integrator.h" -#include "custom_constitutive/constitutive_laws_integrators/d+d-constitutive_law_integrators/generic_tension_constitutive_law_integrator.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_compression_cl_integrator.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/d+d-cl_integrators/generic_tension_cl_integrator.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/rankine_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/rankine_plastic_potential.h" // Rules of mixtures -#include "custom_constitutive/rule_of_mixtures_law.h" +#include "custom_constitutive/composites/rule_of_mixtures_law.h" -#include "custom_constitutive/associative_plastic_damage_model.h" +#include "custom_constitutive/small_strains/plastic_damage/associative_plastic_damage_model.h" namespace Kratos { namespace Python { @@ -303,7 +304,7 @@ void AddCustomConstitutiveLawsToPython(pybind11::module& m) ConstitutiveLaw > (m,"SmallStrainIsotropicPlasticity3DVonMisesMohrCoulomb").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicPlasticity >>>, + py::class_< GenericSmallStrainIsotropicPlasticity >>>, typename GenericSmallStrainIsotropicPlasticity >>>::Pointer, ConstitutiveLaw > (m,"SmallStrainIsotropicPlasticity3DMohrCoulombVonMises").def(py::init<>()); @@ -430,130 +431,39 @@ void AddCustomConstitutiveLawsToPython(pybind11::module& m) // HCF py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawVonMisesVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawVonMisesModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawVonMisesDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawVonMisesTresca").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawModifiedMohrCoulombVonMises").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainHighCycleFatigue3DLawVonMises").def(py::init<>()); py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawModifiedMohrCoulombModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawModifiedMohrCoulombDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawModifiedMohrCoulombTresca").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawTrescaVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawTrescaModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawTrescaDruckerPrager").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainHighCycleFatigue3DLawModifiedMohrCoulomb").def(py::init<>()); py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawTrescaTresca").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawDruckerPragerVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawDruckerPragerModifiedMohrCoulomb").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainHighCycleFatigue3DLawTresca").def(py::init<>()); py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawDruckerPragerDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawDruckerPragerTresca").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawRankineVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawRankineModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawRankineDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawRankineTresca").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainHighCycleFatigue3DLawDruckerPrager").def(py::init<>()); py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawSimoJuVonMises").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainHighCycleFatigue3DLawSimoJu").def(py::init<>()); - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawSimoJuModifiedMohrCoulomb").def(py::init<>()); + py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, + typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainHighCycleFatigue3DLawMohrCoulomb").def(py::init<>()); - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawSimoJuDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, - typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainHighCycleFatigue3DLawSimoJuTresca").def(py::init<>()); + py::class_< GenericSmallStrainHighCycleFatigueLaw >>>, + typename GenericSmallStrainHighCycleFatigueLaw >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainHighCycleFatigue3DLawRankine").def(py::init<>()); + // kinematic plasticity py::class_< GenericSmallStrainKinematicPlasticity >>>, typename GenericSmallStrainKinematicPlasticity >>>::Pointer, ConstitutiveLaw > (m,"SmallStrainKinematicPlasticity3DVonMisesMohrCoulomb").def(py::init<>()); - py::class_< GenericSmallStrainKinematicPlasticity >>>, + py::class_< GenericSmallStrainKinematicPlasticity >>>, typename GenericSmallStrainKinematicPlasticity >>>::Pointer, ConstitutiveLaw > (m,"SmallStrainKinematicPlasticity3DMohrCoulombVonMises").def(py::init<>()); @@ -748,294 +658,96 @@ void AddCustomConstitutiveLawsToPython(pybind11::module& m) (m,"FiniteStrainKinematicPlasticity3DDruckerPragerTresca").def(py::init<>()); - - // Damage /* Small strain */ + + // damage 3D py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DVonMisesVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DVonMisesModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DVonMisesDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DVonMisesTresca").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DModifiedMohrCoulombVonMises").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamage3DVonMises").def(py::init<>()); py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DModifiedMohrCoulombModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DModifiedMohrCoulombDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DModifiedMohrCoulombTresca").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DTrescaVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DTrescaModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DTrescaDruckerPrager").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamage3DModifiedMohrCoulomb").def(py::init<>()); py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DTrescaTresca").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DDruckerPragerVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DDruckerPragerModifiedMohrCoulomb").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamage3DTresca").def(py::init<>()); py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DDruckerPragerDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DDruckerPragerTresca").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DRankineVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DRankineModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DRankineDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DRankineTresca").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamage3DDruckerPrager").def(py::init<>()); py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DSimoJuVonMises").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamage3DSimoJu").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DSimoJuModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DSimoJuDruckerPrager").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamage >>>, + typename GenericSmallStrainIsotropicDamage >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamage3DMohrCoulomb").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DSimoJuTresca").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamage >>>, + typename GenericSmallStrainIsotropicDamage >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamage3DRankine").def(py::init<>()); + // damage plane strain py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DVonMisesVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DVonMisesModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DVonMisesDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DVonMisesTresca").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DModifiedMohrCoulombVonMises").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStrainVonMises").def(py::init<>()); py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DModifiedMohrCoulombModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DModifiedMohrCoulombDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DModifiedMohrCoulombTresca").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DTrescaVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DTrescaModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DTrescaDruckerPrager").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStrainModifiedMohrCoulomb").def(py::init<>()); py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DTrescaTresca").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DDruckerPragerVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DDruckerPragerModifiedMohrCoulomb").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStrainTresca").def(py::init<>()); py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DDruckerPragerDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DDruckerPragerTresca").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DRankineVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DRankineModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DRankineDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DRankineTresca").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStrainDruckerPrager").def(py::init<>()); py::class_< GenericSmallStrainIsotropicDamage >>>, typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DSimoJuVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DSimoJuModifiedMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DSimoJuDruckerPrager").def(py::init<>()); + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStrainSimoJu").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DSimoJuTresca").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamage >>>, + typename GenericSmallStrainIsotropicDamage >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStrainMohrCoulomb").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DVonMisesMohrCoulomb").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamage >>>, + typename GenericSmallStrainIsotropicDamage >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStrainRankine").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DMohrCoulombVonMises").def(py::init<>()); + // damage plane stress + py::class_< GenericSmallStrainIsotropicDamagePlaneStress >>>, + typename GenericSmallStrainIsotropicDamagePlaneStress >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStressVonMises").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DMohrCoulombMohrCoulomb").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamagePlaneStress >>>, + typename GenericSmallStrainIsotropicDamagePlaneStress >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStressModifiedMohrCoulomb").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DMohrCoulombDruckerPrager").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamagePlaneStress >>>, + typename GenericSmallStrainIsotropicDamagePlaneStress >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStressTresca").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DMohrCoulombTresca").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamagePlaneStress >>>, + typename GenericSmallStrainIsotropicDamagePlaneStress >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStressDruckerPrager").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DTrescaMohrCoulomb").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamagePlaneStress >>>, + typename GenericSmallStrainIsotropicDamagePlaneStress >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStressSimoJu").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DDruckerPragerMohrCoulomb").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamagePlaneStress >>>, + typename GenericSmallStrainIsotropicDamagePlaneStress >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStressMohrCoulomb").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DRankineMohrCoulomb").def(py::init<>()); + py::class_< GenericSmallStrainIsotropicDamagePlaneStress >>>, + typename GenericSmallStrainIsotropicDamagePlaneStress >>>::Pointer, + ConstitutiveLaw > (m,"SmallStrainIsotropicDamagePlaneStressRankine").def(py::init<>()); - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage2DSimoJuMohrCoulomb").def(py::init<>()); py::class_< GenericSmallStrainViscoplasticity3D, typename GenericSmallStrainViscoplasticity3D::Pointer, ConstitutiveLaw > (m,"GenericSmallStrainViscoplasticity3D").def(py::init<>()) @@ -1221,51 +933,6 @@ void AddCustomConstitutiveLawsToPython(pybind11::module& m) ConstitutiveLaw>(m, "SmallStrainDplusDminusDamageDruckerPragerDruckerPrager3D").def(py::init<>()) ; - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DVonMisesMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DMohrCoulombVonMises").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DMohrCoulombMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DMohrCoulombDruckerPrager").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DMohrCoulombTresca").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DTrescaMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DDruckerPragerMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DRankineMohrCoulomb").def(py::init<>()); - - py::class_< GenericSmallStrainIsotropicDamage >>>, - typename GenericSmallStrainIsotropicDamage >>>::Pointer, - ConstitutiveLaw > - (m,"SmallStrainIsotropicDamage3DSimoJuMohrCoulomb").def(py::init<>()); - py::class_< GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>, typename GenericSmallStrainDplusDminusDamage>>, GenericCompressionConstitutiveLawIntegratorDplusDminusDamage>>>::Pointer, ConstitutiveLaw>(m, "SmallStrainDplusDminusDamageMohrCoulombMohrCoulomb3D").def(py::init<>()) diff --git a/applications/ConstitutiveLawsApplication/custom_python/constitutive_laws_python_application.cpp b/applications/ConstitutiveLawsApplication/custom_python/constitutive_laws_python_application.cpp index 886edb7e8b61..5451d5d64747 100644 --- a/applications/ConstitutiveLawsApplication/custom_python/constitutive_laws_python_application.cpp +++ b/applications/ConstitutiveLawsApplication/custom_python/constitutive_laws_python_application.cpp @@ -112,9 +112,13 @@ PYBIND11_MODULE(KratosConstitutiveLawsApplication,m) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, EFFECTIVE_TENSION_STRESS_VECTOR) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, EFFECTIVE_COMPRESSION_STRESS_VECTOR) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, CAUCHY_STRESS_TENSOR_FIBER) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, CAUCHY_STRESS_VECTOR_FIBER) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, CAUCHY_STRESS_TENSOR_MATRIX) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, CAUCHY_STRESS_VECTOR_MATRIX) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, GREEN_LAGRANGE_STRAIN_TENSOR_MATRIX) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, GREEN_LAGRANGE_STRAIN_VECTOR_MATRIX) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, GREEN_LAGRANGE_STRAIN_TENSOR_FIBER) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, GREEN_LAGRANGE_STRAIN_VECTOR_FIBER) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, EXPONENTIAL_SATURATION_YIELD_STRESS) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, ACCUMULATED_PLASTIC_STRAIN) KRATOS_REGISTER_IN_PYTHON_3D_VARIABLE_WITH_COMPONENTS(m, EULER_ANGLES) diff --git a/applications/ConstitutiveLawsApplication/tests/AnisotropyCube/anisotropy_test_materials.json b/applications/ConstitutiveLawsApplication/tests/AnisotropyCube/anisotropy_test_materials.json index 533ba5980d88..d1a26c55af68 100644 --- a/applications/ConstitutiveLawsApplication/tests/AnisotropyCube/anisotropy_test_materials.json +++ b/applications/ConstitutiveLawsApplication/tests/AnisotropyCube/anisotropy_test_materials.json @@ -17,7 +17,7 @@ "properties_id" : 10, "Material" : { "constitutive_law" : { - "name" : "SmallStrainIsotropicDamage3DVonMisesVonMises" + "name" : "SmallStrainIsotropicDamage3DVonMises" }, "Variables" : { "DENSITY" : 2400.0, diff --git a/applications/ConstitutiveLawsApplication/tests/HighCycleFatigue/high_cycle_fatigue_test_materials.json b/applications/ConstitutiveLawsApplication/tests/HighCycleFatigue/high_cycle_fatigue_test_materials.json index 498f4e3b69f5..4c23cf394cd8 100644 --- a/applications/ConstitutiveLawsApplication/tests/HighCycleFatigue/high_cycle_fatigue_test_materials.json +++ b/applications/ConstitutiveLawsApplication/tests/HighCycleFatigue/high_cycle_fatigue_test_materials.json @@ -4,7 +4,7 @@ "properties_id" : 1, "Material" : { "constitutive_law" : { - "name" : "SmallStrainHighCycleFatigue3DLawVonMisesVonMises", + "name" : "SmallStrainHighCycleFatigue3DLawVonMises", "yield_surface" : "VonMises", "plastic_potential" : "VonMises" }, diff --git a/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state2_test_parameters.json b/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state2_test_parameters.json index e261f132dd7f..673060b910fa 100644 --- a/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state2_test_parameters.json +++ b/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state2_test_parameters.json @@ -63,7 +63,7 @@ "Parameters" : { "mesh_id" : 0, "model_part_name" : "Structure", - "dimension" : 2, + "dimension" : 3, "imposed_strain" : [0.1,0,0,0,0,0], "imposed_stress" : [0,0,0,0,0,10000], "imposed_deformation_gradient" : [[1,0,0],[0,1,0],[0,0,1]], diff --git a/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state3_test_materials.json b/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state3_test_materials.json index 38bf6cb77744..a1ceb19af7d2 100644 --- a/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state3_test_materials.json +++ b/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state3_test_materials.json @@ -4,7 +4,7 @@ "properties_id" : 1, "Material" : { "constitutive_law" : { - "name" : "SmallStrainIsotropicDamage3DVonMisesVonMises" + "name" : "SmallStrainIsotropicDamage3DVonMises" }, "Variables" : { "DENSITY" : 2400.0, diff --git a/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state3_test_parameters.json b/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state3_test_parameters.json index fcc02ac0a2a9..bd49ed67b3b9 100644 --- a/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state3_test_parameters.json +++ b/applications/ConstitutiveLawsApplication/tests/InitialStateInelasticity/initial_state3_test_parameters.json @@ -63,7 +63,7 @@ "Parameters" : { "mesh_id" : 0, "model_part_name" : "Structure", - "dimension" : 2, + "dimension" : 3, "imposed_strain" : [0.1,0,0,0,0,0], "imposed_stress" : [0,0,0,0,0,10000], "imposed_deformation_gradient" : [[1,0,0],[0,1,0],[0,0,1]], diff --git a/applications/ConstitutiveLawsApplication/tests/SerialParallelRuleOfMixturesCube/serial_parallel_damage_test_materials.json b/applications/ConstitutiveLawsApplication/tests/SerialParallelRuleOfMixturesCube/serial_parallel_damage_test_materials.json index 4c217d48752c..4a38a5aa90c3 100644 --- a/applications/ConstitutiveLawsApplication/tests/SerialParallelRuleOfMixturesCube/serial_parallel_damage_test_materials.json +++ b/applications/ConstitutiveLawsApplication/tests/SerialParallelRuleOfMixturesCube/serial_parallel_damage_test_materials.json @@ -16,7 +16,7 @@ "properties_id" : 11, "Material" : { "constitutive_law" : { - "name" : "SmallStrainIsotropicDamage3DVonMisesVonMises" + "name" : "SmallStrainIsotropicDamage3DVonMises" }, "Variables" : { "DENSITY" : 7850.0, diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_d+d-damage_law_masonry_2d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_d+d-damage_law_masonry_2d.cpp index ab07db76d350..295fa1b07e1f 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_d+d-damage_law_masonry_2d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_d+d-damage_law_masonry_2d.cpp @@ -25,7 +25,7 @@ #include "constitutive_laws_application_variables.h" // Constitutive law -#include "custom_constitutive/plane_stress_d_plus_d_minus_damage_masonry_2d.h" +#include "custom_constitutive/small_strains/damage/plane_stress_d_plus_d_minus_damage_masonry_2d.h" #include "includes/model_part.h" #include "geometries/triangle_2d_3.h" #include "constitutive_laws_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_d+d-damage_law_masonry_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_d+d-damage_law_masonry_3d.cpp index adfea5d79a73..0dcb84407afe 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_d+d-damage_law_masonry_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_d+d-damage_law_masonry_3d.cpp @@ -24,7 +24,7 @@ // Application includes // Constitutive law -#include "custom_constitutive/d_plus_d_minus_damage_masonry_3d.h" +#include "custom_constitutive/small_strains/damage/d_plus_d_minus_damage_masonry_3d.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" #include "constitutive_laws_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_damage_constitutive_laws_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_damage_constitutive_laws_3d.cpp index 726799e20e2f..795285f3a5e7 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_damage_constitutive_laws_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_damage_constitutive_laws_3d.cpp @@ -24,26 +24,26 @@ #include "constitutive_laws_application_variables.h" // Integrator -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" // Constitutive law -#include "custom_constitutive/generic_small_strain_isotropic_damage.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_isotropic_damage.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" @@ -89,11 +89,11 @@ KRATOS_TEST_CASE_IN_SUITE(ConstitutiveLawIntegrateStressDamageInternalVariables, KRATOS_TEST_CASE_IN_SUITE(ConstitutiveLawIntegrateStressDamageLinear, KratosConstitutiveLawsFastSuite) { typedef GenericSmallStrainIsotropicDamage>>> MC; - typedef GenericSmallStrainIsotropicDamage>>> VM; - typedef GenericSmallStrainIsotropicDamage>>> DP; - typedef GenericSmallStrainIsotropicDamage>>> T; - typedef GenericSmallStrainIsotropicDamage>>> SJ; - typedef GenericSmallStrainIsotropicDamage>>> R; + typedef GenericSmallStrainIsotropicDamage>>> VM; + typedef GenericSmallStrainIsotropicDamage>>> DP; + typedef GenericSmallStrainIsotropicDamage>>> T; + typedef GenericSmallStrainIsotropicDamage>>> SJ; + typedef GenericSmallStrainIsotropicDamage>>> R; ConstitutiveLaw::Parameters cl_parameters; Properties material_properties; @@ -198,11 +198,11 @@ KRATOS_TEST_CASE_IN_SUITE(ConstitutiveLawIntegrateStressDamageLinear, KratosCons KRATOS_TEST_CASE_IN_SUITE(ConstitutiveLawIntegrateStressDamageExponential, KratosConstitutiveLawsFastSuite) { typedef GenericSmallStrainIsotropicDamage>>> MC; - typedef GenericSmallStrainIsotropicDamage>>> VM; - typedef GenericSmallStrainIsotropicDamage>>> DP; - typedef GenericSmallStrainIsotropicDamage>>> T; - typedef GenericSmallStrainIsotropicDamage>>> SJ; - typedef GenericSmallStrainIsotropicDamage>>> R; + typedef GenericSmallStrainIsotropicDamage>>> VM; + typedef GenericSmallStrainIsotropicDamage>>> DP; + typedef GenericSmallStrainIsotropicDamage>>> T; + typedef GenericSmallStrainIsotropicDamage>>> SJ; + typedef GenericSmallStrainIsotropicDamage>>> R; ConstitutiveLaw::Parameters cl_parameters; Properties material_properties; diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_high_cycle_fatigue_constitutive_law_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_high_cycle_fatigue_constitutive_law_3d.cpp index 4bfa319ff90a..f6a307f749da 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_high_cycle_fatigue_constitutive_law_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_high_cycle_fatigue_constitutive_law_3d.cpp @@ -21,13 +21,12 @@ // Application includes // Integrator -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -// Plastic potentials -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" // Constitutive law -#include "custom_constitutive/generic_small_strain_high_cycle_fatigue_law.h" +#include "custom_constitutive/small_strains/fatigue/generic_small_strain_high_cycle_fatigue_law.h" #include "geometries/tetrahedra_3d_4.h" namespace Kratos @@ -36,7 +35,7 @@ namespace Testing { // We test the associated damage Constitutive laws... typedef Node<3> NodeType; -typedef GenericSmallStrainHighCycleFatigueLaw>>> FatigueLawType; +typedef GenericSmallStrainHighCycleFatigueLaw>>> FatigueLawType; /** * Check the correct calculation of the integrated stress with the CL's diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_hyper_elastic_constitutive_laws.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_hyper_elastic_constitutive_laws.cpp index a0428aa0463d..27cf34058e6b 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_hyper_elastic_constitutive_laws.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_hyper_elastic_constitutive_laws.cpp @@ -24,10 +24,10 @@ // Application includes #include "constitutive_laws_application_variables.h" -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.h" -#include "custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_3d.h" -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h" -#include "custom_constitutive/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_plane_strain_2d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_simo_taylor_neo_hookean_plane_strain_2d.h" #include "custom_utilities/constitutive_law_utilities.h" namespace Kratos diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_kelvin_constitutive_law.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_kelvin_constitutive_law.cpp index 52c287e72748..928ea67db8ba 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_kelvin_constitutive_law.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_kelvin_constitutive_law.cpp @@ -23,7 +23,7 @@ // Application includes // Constitutive law -#include "custom_constitutive/viscous_generalized_kelvin.h" +#include "custom_constitutive/small_strains/viscous/viscous_generalized_kelvin.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" #include "constitutive_laws_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_kinematic_plasticity_constitutive_laws_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_kinematic_plasticity_constitutive_laws_3d.cpp index 676e865b728d..18810706f881 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_kinematic_plasticity_constitutive_laws_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_kinematic_plasticity_constitutive_laws_3d.cpp @@ -24,20 +24,20 @@ #include "constitutive_laws_application_variables.h" // Integrator -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_kinematic_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_kinematic_plasticity.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" // Constitutive law -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h" -#include "custom_constitutive/generic_small_strain_kinematic_plasticity.h" -#include "custom_constitutive/generic_finite_strain_kinematic_plasticity.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.h" +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_kinematic_plasticity.h" +#include "custom_constitutive/finite_strains/plasticity/generic_finite_strain_kinematic_plasticity.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_maxwell_constitutive_law.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_maxwell_constitutive_law.cpp index 4eabb6e678c9..5d4ec45cbde9 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_maxwell_constitutive_law.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_maxwell_constitutive_law.cpp @@ -22,7 +22,7 @@ // Application includes // Constitutive law -#include "custom_constitutive/viscous_generalized_maxwell.h" +#include "custom_constitutive/small_strains/viscous/viscous_generalized_maxwell.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" #include "constitutive_laws_application_variables.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_orthotropic_damage_constitutive_laws_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_orthotropic_damage_constitutive_laws_3d.cpp index 0dd5a0d0a3c2..c8ef0269f7c3 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_orthotropic_damage_constitutive_laws_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_orthotropic_damage_constitutive_laws_3d.cpp @@ -24,26 +24,26 @@ #include "constitutive_laws_application_variables.h" // Integrator -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" // Constitutive law -#include "custom_constitutive/generic_small_strain_orthotropic_damage.h" +#include "custom_constitutive/small_strains/damage/generic_small_strain_orthotropic_damage.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_plastic_damage_constitutive_law_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_plastic_damage_constitutive_law_3d.cpp index e63fa15b24b6..7294c626e358 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_plastic_damage_constitutive_law_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_plastic_damage_constitutive_law_3d.cpp @@ -24,27 +24,27 @@ #include "constitutive_laws_application_variables.h" // Integrator -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h" -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_damage.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_damage.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" // Constitutive law -#include "custom_constitutive/generic_small_strain_plastic_damage_model.h" +#include "custom_constitutive/small_strains/plastic_damage/generic_small_strain_plastic_damage_model.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_plasticity_constitutive_laws_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_plasticity_constitutive_laws_3d.cpp index e1752775efa1..1f5f74beb575 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_plasticity_constitutive_laws_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_plasticity_constitutive_laws_3d.cpp @@ -23,31 +23,31 @@ // Application includes // Hyperelastic behaviours -#include "custom_constitutive/hyper_elastic_isotropic_kirchhoff_3d.h" -#include "custom_constitutive/hyper_elastic_isotropic_neo_hookean_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_kirchhoff_3d.h" +#include "custom_constitutive/finite_strains/hyperelasticity/hyper_elastic_isotropic_neo_hookean_3d.h" // Integrator -#include "custom_constitutive/constitutive_laws_integrators/generic_constitutive_law_integrator_plasticity.h" +#include "custom_constitutive/auxiliar_files/cl_integrators/generic_cl_integrator_plasticity.h" // Yield surfaces -#include "custom_constitutive/yield_surfaces/generic_yield_surface.h" -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/generic_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic potentials -#include "custom_constitutive/plastic_potentials/generic_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/von_mises_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/tresca_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" -#include "custom_constitutive/plastic_potentials/drucker_prager_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/generic_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/von_mises_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/tresca_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/drucker_prager_plastic_potential.h" // Constitutive law -#include "custom_constitutive/generic_small_strain_isotropic_plasticity.h" -#include "custom_constitutive/generic_finite_strain_isotropic_plasticity.h" +#include "custom_constitutive/small_strains/plasticity/generic_small_strain_isotropic_plasticity.h" +#include "custom_constitutive/finite_strains/plasticity/generic_finite_strain_isotropic_plasticity.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_rule_of_mixtures_law.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_rule_of_mixtures_law.cpp index 2e83d60df0ee..19cb1d15be72 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_rule_of_mixtures_law.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_rule_of_mixtures_law.cpp @@ -22,7 +22,7 @@ #include "containers/model.h" // #include "includes/gid_io.h" #include "utilities/read_materials_utility.h" -#include "custom_constitutive/rule_of_mixtures_law.h" +#include "custom_constitutive/composites/rule_of_mixtures_law.h" #include "includes/mat_variables.h" namespace Kratos @@ -159,7 +159,7 @@ Parameters GetThreeLayersParameters() return three_layers; } -void Create3DGeometryHexahedraRuleOfMixtures(ModelPart& rThisModelPart, std::size_t NumberOfLayers = 2, const std::string ElementName = "SmallDisplacementElement3D8N") +void Create3DGeometryHexahedraRuleOfMixtures(ModelPart& rThisModelPart, std::size_t NumberOfLayers = 2, const std::string& ElementName = "SmallDisplacementElement3D8N") { rThisModelPart.AddNodalSolutionStepVariable(DISPLACEMENT); @@ -199,7 +199,7 @@ void Create3DGeometryHexahedraRuleOfMixtures(ModelPart& rThisModelPart, std::siz } } -void Create3DGeometryTetrahedraRuleOfMixtures(ModelPart& rThisModelPart, std::size_t NumberOfLayers = 2, const std::string ElementName = "SmallDisplacementElement3D4N") +void Create3DGeometryTetrahedraRuleOfMixtures(ModelPart& rThisModelPart, std::size_t NumberOfLayers = 2, const std::string& ElementName = "SmallDisplacementElement3D4N") { rThisModelPart.AddNodalSolutionStepVariable(DISPLACEMENT); diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_3d.cpp index 8a41f6d2dd46..bf0f1ba133d2 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_3d.cpp @@ -26,7 +26,7 @@ #include "constitutive_laws_application_variables.h" // Constitutive law -#include "custom_constitutive/small_strain_isotropic_damage_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_3d.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_implex_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_implex_3d.cpp index e41841405c2c..dc9fe9a0ebad 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_implex_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_implex_3d.cpp @@ -25,7 +25,7 @@ #include "constitutive_laws_application_variables.h" // Constitutive law -#include "custom_constitutive/small_strain_isotropic_damage_implex_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_implex_3d.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_traction_only_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_traction_only_3d.cpp index 88bd38dd2a65..3c2d98512acd 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_traction_only_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_traction_only_3d.cpp @@ -26,8 +26,8 @@ #include "constitutive_laws_application_variables.h" // Constitutive law -#include "custom_constitutive/small_strain_isotropic_damage_3d.h" -#include "custom_constitutive/small_strain_isotropic_damage_traction_only_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_3d.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_traction_only_implex_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_traction_only_implex_3d.cpp index d2aeea9c3e74..16b403cf2868 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_traction_only_implex_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_small_strain_isotropic_damage_traction_only_implex_3d.cpp @@ -25,7 +25,7 @@ #include "constitutive_laws_application_variables.h" // Constitutive law -#include "custom_constitutive/small_strain_isotropic_damage_traction_only_implex_3d.h" +#include "custom_constitutive/small_strains/damage/small_strain_isotropic_damage_traction_only_implex_3d.h" #include "includes/model_part.h" #include "geometries/tetrahedra_3d_4.h" diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_tangent_tensor_numerical_derivation_utility.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_tangent_tensor_numerical_derivation_utility.cpp index c0e64f92f806..d3a6909f0d3b 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_tangent_tensor_numerical_derivation_utility.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_tangent_tensor_numerical_derivation_utility.cpp @@ -107,7 +107,7 @@ void SettingBasicCase( */ void Create3DGeometryHexahedra( ModelPart& rThisModelPart, - const std::string ElementName = "SmallDisplacementElement3D8N" + const std::string& ElementName = "SmallDisplacementElement3D8N" ) { auto& process_info = rThisModelPart.GetProcessInfo(); @@ -144,7 +144,7 @@ void Create3DGeometryHexahedra( */ void Create3DGeometryTetrahedra( ModelPart& rThisModelPart, - const std::string ElementName = "SmallDisplacementElement3D4N" + const std::string& ElementName = "SmallDisplacementElement3D4N" ) { rThisModelPart.GetProcessInfo()[STEP] = 2; diff --git a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_yield_surfaces_3d.cpp b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_yield_surfaces_3d.cpp index fc72c45c5c20..6c8ac36dc5c7 100644 --- a/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_yield_surfaces_3d.cpp +++ b/applications/ConstitutiveLawsApplication/tests/cpp_tests/test_yield_surfaces_3d.cpp @@ -22,14 +22,14 @@ // Application includes // Yields -#include "custom_constitutive/yield_surfaces/von_mises_yield_surface.h" -#include "custom_constitutive/yield_surfaces/modified_mohr_coulomb_yield_surface.h" -#include "custom_constitutive/yield_surfaces/rankine_yield_surface.h" -#include "custom_constitutive/yield_surfaces/simo_ju_yield_surface.h" -#include "custom_constitutive/yield_surfaces/drucker_prager_yield_surface.h" -#include "custom_constitutive/yield_surfaces/tresca_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/von_mises_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/modified_mohr_coulomb_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/rankine_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/simo_ju_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/drucker_prager_yield_surface.h" +#include "custom_constitutive/auxiliar_files/yield_surfaces/tresca_yield_surface.h" // Plastic Potentials -#include "custom_constitutive/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" +#include "custom_constitutive/auxiliar_files/plastic_potentials/modified_mohr_coulomb_plastic_potential.h" namespace Kratos { diff --git a/applications/ContactStructuralMechanicsApplication/custom_conditions/ALM_frictional_mortar_contact_condition.cpp b/applications/ContactStructuralMechanicsApplication/custom_conditions/ALM_frictional_mortar_contact_condition.cpp index 18041be32faf..958956da024b 100644 --- a/applications/ContactStructuralMechanicsApplication/custom_conditions/ALM_frictional_mortar_contact_condition.cpp +++ b/applications/ContactStructuralMechanicsApplication/custom_conditions/ALM_frictional_mortar_contact_condition.cpp @@ -170672,7 +170672,7 @@ void AugmentedLagrangianMethodFrictionalMortarContactCondition::Calculat const bool bad_shape = (TDim == 2) ? MortarUtilities::LengthCheck(decomp_geom, r_slave_geometry.Length() * 1.0e-6) : MortarUtilities::HeronCheck(decomp_geom); if (bad_shape == false) { - const GeometryType::IntegrationPointsArrayType integration_points_slave = decomp_geom.IntegrationPoints( ThisIntegrationMethod ); + const GeometryType::IntegrationPointsArrayType& integration_points_slave = decomp_geom.IntegrationPoints( ThisIntegrationMethod ); // Integrating the mortar operators for ( IndexType point_number = 0; point_number < integration_points_slave.size(); ++point_number ) { @@ -6229,7 +6229,7 @@ void MeshTyingMortarCondition::Equation const NodeType& r_master_node = r_current_master[i_master]; rResult[index++] = r_master_node.GetDof( r_var_x ).EquationId( ); rResult[index++] = r_master_node.GetDof( r_var_y ).EquationId( ); - if (TDim == 3) rResult[index++] = r_master_node.GetDof( r_var_z ).EquationId( ); + if constexpr (TDim == 3) rResult[index++] = r_master_node.GetDof( r_var_z ).EquationId( ); } } @@ -6248,7 +6248,7 @@ void MeshTyingMortarCondition::Equation const NodeType& r_slave_node = r_current_slave[i_slave]; rResult[index++] = r_slave_node.GetDof( r_var_x ).EquationId( ); rResult[index++] = r_slave_node.GetDof( r_var_y ).EquationId( ); - if (TDim == 3) rResult[index++] = r_slave_node.GetDof( r_var_z ).EquationId( ); + if constexpr (TDim == 3) rResult[index++] = r_slave_node.GetDof( r_var_z ).EquationId( ); } } @@ -6263,7 +6263,7 @@ void MeshTyingMortarCondition::Equation const NodeType& r_slave_node = r_current_slave[i_slave]; rResult[index++] = r_slave_node.GetDof( VECTOR_LAGRANGE_MULTIPLIER_X ).EquationId( ); rResult[index++] = r_slave_node.GetDof( VECTOR_LAGRANGE_MULTIPLIER_Y ).EquationId( ); - if (TDim == 3) rResult[index++] = r_slave_node.GetDof( VECTOR_LAGRANGE_MULTIPLIER_Z ).EquationId( ); + if constexpr (TDim == 3) rResult[index++] = r_slave_node.GetDof( VECTOR_LAGRANGE_MULTIPLIER_Z ).EquationId( ); } } @@ -6307,7 +6307,7 @@ void MeshTyingMortarCondition::GetDofL const NodeType& r_master_node = r_current_master[i_master]; rConditionalDofList[index++] = r_master_node.pGetDof( r_var_x ); rConditionalDofList[index++] = r_master_node.pGetDof( r_var_y ); - if (TDim == 3) rConditionalDofList[index++] = r_master_node.pGetDof( r_var_z ); + if constexpr (TDim == 3) rConditionalDofList[index++] = r_master_node.pGetDof( r_var_z ); } } @@ -6326,7 +6326,7 @@ void MeshTyingMortarCondition::GetDofL const NodeType& r_slave_node = r_current_slave[i_slave]; rConditionalDofList[index++] = r_slave_node.pGetDof( r_var_x ); rConditionalDofList[index++] = r_slave_node.pGetDof( r_var_y ); - if (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( r_var_z ); + if constexpr (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( r_var_z ); } } @@ -6341,7 +6341,7 @@ void MeshTyingMortarCondition::GetDofL const NodeType& r_slave_node = r_current_slave[i_slave]; rConditionalDofList[index++] = r_slave_node.pGetDof( VECTOR_LAGRANGE_MULTIPLIER_X ); rConditionalDofList[index++] = r_slave_node.pGetDof( VECTOR_LAGRANGE_MULTIPLIER_Y ); - if (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( VECTOR_LAGRANGE_MULTIPLIER_Z ); + if constexpr (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( VECTOR_LAGRANGE_MULTIPLIER_Z ); } } diff --git a/applications/ContactStructuralMechanicsApplication/custom_conditions/mesh_tying_mortar_condition.h b/applications/ContactStructuralMechanicsApplication/custom_conditions/mesh_tying_mortar_condition.h index 331f859badd0..089489ad73bd 100644 --- a/applications/ContactStructuralMechanicsApplication/custom_conditions/mesh_tying_mortar_condition.h +++ b/applications/ContactStructuralMechanicsApplication/custom_conditions/mesh_tying_mortar_condition.h @@ -419,7 +419,7 @@ class KRATOS_API(CONTACT_STRUCTURAL_MECHANICS_APPLICATION) MeshTyingMortarCondit ) { /* DoF */ - if (TTensor == 1) { + if constexpr (TTensor == 1) { for (IndexType i_node = 0; i_node < NumNodesMaster; ++i_node) { u2(i_node, 0) = rGeometryInput[i_node].FastGetSolutionStepValue(*rpDoubleVariables[0]); } @@ -513,7 +513,7 @@ class KRATOS_API(CONTACT_STRUCTURAL_MECHANICS_APPLICATION) MeshTyingMortarCondit // Slave element info rDofData.Initialize(GetParentGeometry()); - if (TTensor == ScalarValue) { + if constexpr (TTensor == ScalarValue) { for (IndexType i_node = 0; i_node < NumNodes; i_node++) { const double value = GetParentGeometry()[i_node].FastGetSolutionStepValue(*mpDoubleVariables[0]); const double lm = GetParentGeometry()[i_node].FastGetSolutionStepValue(SCALAR_LAGRANGE_MULTIPLIER); diff --git a/applications/ContactStructuralMechanicsApplication/custom_conditions/mortar_contact_condition.cpp b/applications/ContactStructuralMechanicsApplication/custom_conditions/mortar_contact_condition.cpp index 1e0e0a299cd9..44b7906ea808 100644 --- a/applications/ContactStructuralMechanicsApplication/custom_conditions/mortar_contact_condition.cpp +++ b/applications/ContactStructuralMechanicsApplication/custom_conditions/mortar_contact_condition.cpp @@ -312,7 +312,7 @@ void MortarContactCondition(rCurrentProcessInfo[CONSIDER_NORMAL_VARIATION]); // We compute the normal derivatives - if (TNormalVariation) DerivativesUtilitiesType::CalculateDeltaNormalSlave(derivative_data.DeltaNormalSlave, GetParentGeometry()); + if constexpr (TNormalVariation) DerivativesUtilitiesType::CalculateDeltaNormalSlave(derivative_data.DeltaNormalSlave, GetParentGeometry()); // Create the mortar operators MortarConditionMatrices mortar_operators; @@ -349,7 +349,7 @@ void MortarContactCondition::EquationIdVector const NodeType& r_master_node = r_master_geometry[i_master]; rResult[index++] = r_master_node.GetDof( DISPLACEMENT_X ).EquationId( ); rResult[index++] = r_master_node.GetDof( DISPLACEMENT_Y ).EquationId( ); - if (TDim == 3) rResult[index++] = r_master_node.GetDof( DISPLACEMENT_Z ).EquationId( ); + if constexpr (TDim == 3) rResult[index++] = r_master_node.GetDof( DISPLACEMENT_Z ).EquationId( ); } // Slave Nodes Displacement Equation IDs @@ -280,7 +280,7 @@ void MPCMortarContactCondition::EquationIdVector const NodeType& r_slave_node = r_slave_geometry[ i_slave ]; rResult[index++] = r_slave_node.GetDof( DISPLACEMENT_X ).EquationId( ); rResult[index++] = r_slave_node.GetDof( DISPLACEMENT_Y ).EquationId( ); - if (TDim == 3) rResult[index++] = r_slave_node.GetDof( DISPLACEMENT_Z ).EquationId( ); + if constexpr (TDim == 3) rResult[index++] = r_slave_node.GetDof( DISPLACEMENT_Z ).EquationId( ); } KRATOS_CATCH("") @@ -311,7 +311,7 @@ void MPCMortarContactCondition::GetDofList( const NodeType& r_master_node = r_master_geometry[i_master]; rConditionalDofList[index++] = r_master_node.pGetDof( DISPLACEMENT_X ); rConditionalDofList[index++] = r_master_node.pGetDof( DISPLACEMENT_Y ); - if (TDim == 3) rConditionalDofList[index++] = r_master_node.pGetDof( DISPLACEMENT_Z ); + if constexpr (TDim == 3) rConditionalDofList[index++] = r_master_node.pGetDof( DISPLACEMENT_Z ); } // Slave Nodes Displacement Equation IDs @@ -319,7 +319,7 @@ void MPCMortarContactCondition::GetDofList( const NodeType& r_slave_node = r_slave_geometry[ i_slave ]; rConditionalDofList[index++] = r_slave_node.pGetDof( DISPLACEMENT_X ); rConditionalDofList[index++] = r_slave_node.pGetDof( DISPLACEMENT_Y ); - if (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( DISPLACEMENT_Z ); + if constexpr (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( DISPLACEMENT_Z ); } KRATOS_CATCH("") @@ -532,7 +532,7 @@ void MPCMortarContactCondition::ConstraintDofDat for (auto& r_node_master : r_master_geometry) { auxiliar_master_dof_vector.push_back(r_node_master.pGetDof(DISPLACEMENT_X)); auxiliar_master_dof_vector.push_back(r_node_master.pGetDof(DISPLACEMENT_Y)); - if (TDim == 3) auxiliar_master_dof_vector.push_back(r_node_master.pGetDof(DISPLACEMENT_Z)); + if constexpr (TDim == 3) auxiliar_master_dof_vector.push_back(r_node_master.pGetDof(DISPLACEMENT_Z)); } master_dof_vector.resize(0); @@ -544,12 +544,12 @@ void MPCMortarContactCondition::ConstraintDofDat for (auto& r_node_master : r_master_geometry) { master_dof_vector.push_back(r_node_master.pGetDof(DISPLACEMENT_X)); master_dof_vector.push_back(r_node_master.pGetDof(DISPLACEMENT_Y)); - if (TDim == 3) master_dof_vector.push_back(r_node_master.pGetDof(DISPLACEMENT_Z)); + if constexpr (TDim == 3) master_dof_vector.push_back(r_node_master.pGetDof(DISPLACEMENT_Z)); } // for (auto& r_node_slave : r_slave_geometry) { // master_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_X)); // master_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_Y)); -// if (TDim == 3) master_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_Z)); +// if constexpr (TDim == 3) master_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_Z)); // } } @@ -563,7 +563,7 @@ void MPCMortarContactCondition::ConstraintDofDat for (auto& r_node_slave : r_slave_geometry) { auxiliar_slave_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_X)); auxiliar_slave_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_Y)); - if (TDim == 3) auxiliar_slave_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_Z)); + if constexpr (TDim == 3) auxiliar_slave_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_Z)); } slave_dof_vector.resize(0); @@ -578,7 +578,7 @@ void MPCMortarContactCondition::ConstraintDofDat for (auto& r_node_slave : r_slave_geometry) { slave_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_X)); slave_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_Y)); - if (TDim == 3) slave_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_Z)); + if constexpr (TDim == 3) slave_dof_vector.push_back(r_node_slave.pGetDof(DISPLACEMENT_Z)); } } diff --git a/applications/ContactStructuralMechanicsApplication/custom_conditions/penalty_frictional_mortar_contact_condition.cpp b/applications/ContactStructuralMechanicsApplication/custom_conditions/penalty_frictional_mortar_contact_condition.cpp index 123453420156..f144ebf5d1fb 100644 --- a/applications/ContactStructuralMechanicsApplication/custom_conditions/penalty_frictional_mortar_contact_condition.cpp +++ b/applications/ContactStructuralMechanicsApplication/custom_conditions/penalty_frictional_mortar_contact_condition.cpp @@ -93670,7 +93670,7 @@ void PenaltyMethodFrictionalMortarContactCondition::SearchUsingOcTr // If not active we check if can be potentially in contact if (mCheckGap == CheckGap::MappingCheck) { for (auto p_leaf : leaves) { - for (auto p_cond_master : *(p_leaf->pGetObjects())) { + for (const auto& p_cond_master : *(p_leaf->pGetObjects())) { if (p_cond_master->Is(SELECTED)) { const CheckResult condition_checked_right = CheckGeometricalObject(p_indexes_pairs, (*it_cond.base()), p_cond_master, this->Is(BaseContactSearchProcess::INVERTED_SEARCH)); @@ -764,7 +764,7 @@ void BaseContactSearchProcess::SearchUsingOcTr const array_1d& r_normal_slave = it_cond->GetValue(NORMAL); for (auto p_leaf : leaves) { - for (auto p_cond_master : *(p_leaf->pGetObjects())) { + for (const auto& p_cond_master : *(p_leaf->pGetObjects())) { if (p_cond_master->Is(SELECTED)) { const array_1d& r_normal_master = (p_cond_master->GetGeometry()).UnitNormal(zero_array); AddPotentialPairing(rSubComputingContactModelPart, condition_id, (*it_cond.base()), r_normal_slave, p_cond_master, r_normal_master, p_indexes_pairs, p_prop, active_check_factor, frictional_problem); diff --git a/applications/ContactStructuralMechanicsApplication/custom_processes/contact_spr_error_process.cpp b/applications/ContactStructuralMechanicsApplication/custom_processes/contact_spr_error_process.cpp index b4a8fee0110d..eed365745287 100644 --- a/applications/ContactStructuralMechanicsApplication/custom_processes/contact_spr_error_process.cpp +++ b/applications/ContactStructuralMechanicsApplication/custom_processes/contact_spr_error_process.cpp @@ -93,7 +93,7 @@ void ContactSPRErrorProcess::CalculatePatch( p_k(j, j * (TDim+1) + 0) = 1.0; p_k(j, j * (TDim+1) + 1) = coordinates_vector[0][0] - r_coordinates_patch_node[0]; p_k(j, j * (TDim+1) + 2) = coordinates_vector[0][1] - r_coordinates_patch_node[1]; - if(TDim == 3) + if constexpr (TDim == 3) p_k(j, j * (TDim+1) + 3) = coordinates_vector[0][2] - r_coordinates_patch_node[2]; } @@ -108,7 +108,7 @@ void ContactSPRErrorProcess::CalculatePatch( for (IndexType j = 0; j < SigmaSize; ++j){ p_k(j,j * (TDim + 1) + 1)= r_coordinates[0] - r_coordinates_patch_node[0]; p_k(j,j * (TDim + 1) + 2)= r_coordinates[1] - r_coordinates_patch_node[1]; - if(TDim == 3) + if constexpr (TDim == 3) p_k(j,j * (TDim + 1) + 3)= r_coordinates[2] - r_coordinates_patch_node[2]; } @@ -138,7 +138,7 @@ void ContactSPRErrorProcess::CalculatePatch( // Patch center node: const double patch_contact_pressure = itNode->Has(AUGMENTED_NORMAL_CONTACT_PRESSURE) ? itPatchNode->GetValue(AUGMENTED_NORMAL_CONTACT_PRESSURE) : itPatchNode->GetValue(CONTACT_PRESSURE); if (std::abs(patch_contact_pressure) > tolerance) { - if (TDim == 2) { + if constexpr (TDim == 2) { p_k(0,1)=0.0; p_k(0,2)=0.0; p_k(1,4)=0.0; @@ -197,7 +197,7 @@ void ContactSPRErrorProcess::CalculatePatch( for( auto& r_neighbour_node : itPatchNode->GetValue(NEIGHBOUR_NODES)) { const double neighbour_node_contact_pressure = r_neighbour_node.Has(AUGMENTED_NORMAL_CONTACT_PRESSURE) ? r_neighbour_node.GetValue(AUGMENTED_NORMAL_CONTACT_PRESSURE) : r_neighbour_node.GetValue(CONTACT_PRESSURE); if (std::abs(neighbour_node_contact_pressure) > tolerance) { - if (TDim == 2) { + if constexpr (TDim == 2) { const double x_patch_minus_x_neigh = r_coordinates_patch_node[0] - r_neighbour_node.X(); const double y_patch_minus_y_neigh = r_coordinates_patch_node[1] - r_neighbour_node.Y(); p_k(0,1)= x_patch_minus_x_neigh; @@ -263,7 +263,7 @@ void ContactSPRErrorProcess::CalculatePatch( for (IndexType j = 0; j < SigmaSize;++j){ p_k(j,j*(TDim + 1) + 1) = r_coordinates[0] - r_coordinates_patch_node[0]; p_k(j,j*(TDim + 1) + 2) = r_coordinates[1] - r_coordinates_patch_node[1]; - if (TDim == 3) + if constexpr (TDim == 3) p_k(j,j*(TDim + 1) + 3) = r_coordinates[2] - r_coordinates_patch_node[2]; } diff --git a/applications/ContactStructuralMechanicsApplication/custom_processes/find_intersected_geometrical_objects_with_obb_for_contact_search_process.cpp b/applications/ContactStructuralMechanicsApplication/custom_processes/find_intersected_geometrical_objects_with_obb_for_contact_search_process.cpp index fefb6f0e3677..8abc6c43aace 100644 --- a/applications/ContactStructuralMechanicsApplication/custom_processes/find_intersected_geometrical_objects_with_obb_for_contact_search_process.cpp +++ b/applications/ContactStructuralMechanicsApplication/custom_processes/find_intersected_geometrical_objects_with_obb_for_contact_search_process.cpp @@ -167,14 +167,14 @@ void FindIntersectedGeometricalObjectsWithOBBContactSearchProcess::MarkIfInterse for (auto p_leaf : rLeaves) { auto& r_leaf = *(p_leaf->pGetObjects()); // We clear previously assign flags - for (auto p_condition_2 : r_leaf) { + for (const auto& p_condition_2 : r_leaf) { if (p_condition_2->IsNot(VISITED)) { p_condition_2->Reset(SELECTED); } } // We iterate again and check intersection - for (auto p_condition_2 : r_leaf) { + for (const auto& p_condition_2 : r_leaf) { if (p_condition_2->IsNot(VISITED)) { if (HasIntersection(rIntersectedGeometricalObject.GetGeometry(), p_condition_2->GetGeometry())) { rIntersectedGeometricalObject.Set(SELECTED); @@ -187,7 +187,7 @@ void FindIntersectedGeometricalObjectsWithOBBContactSearchProcess::MarkIfInterse // Reset VISITED flag for (auto p_leaf : rLeaves) { auto& r_leaf = *(p_leaf->pGetObjects()); - for (auto p_condition_2 : r_leaf) { + for (const auto& p_condition_2 : r_leaf) { p_condition_2->Reset(VISITED); } } diff --git a/applications/ContactStructuralMechanicsApplication/custom_utilities/contact_utilities.h b/applications/ContactStructuralMechanicsApplication/custom_utilities/contact_utilities.h index 4a0a295b5411..77e42c0e8f12 100644 --- a/applications/ContactStructuralMechanicsApplication/custom_utilities/contact_utilities.h +++ b/applications/ContactStructuralMechanicsApplication/custom_utilities/contact_utilities.h @@ -230,7 +230,7 @@ class KRATOS_API(CONTACT_STRUCTURAL_MECHANICS_APPLICATION) ContactUtilities const array_1d& r_normal = rGeometry[i_node].FastGetSolutionStepValue(NORMAL); array_1d tangent_xi, tangent_eta; MathUtils::OrthonormalBasis(r_normal, tangent_xi, tangent_eta); - if (TDim == 3) { + if constexpr (TDim == 3) { for (std::size_t i_dof = 0; i_dof < 3; ++i_dof) tangent_matrix(i_node, i_dof) = tangent_xi[i_dof]; } else { diff --git a/applications/ContactStructuralMechanicsApplication/custom_utilities/derivatives_utilities.cpp b/applications/ContactStructuralMechanicsApplication/custom_utilities/derivatives_utilities.cpp index ea180ab97a9f..1f4a5f0dd1b0 100755 --- a/applications/ContactStructuralMechanicsApplication/custom_utilities/derivatives_utilities.cpp +++ b/applications/ContactStructuralMechanicsApplication/custom_utilities/derivatives_utilities.cpp @@ -31,7 +31,7 @@ void DerivativesUtilities, TDim * TNumNodes> DerivativesUtilities j0 = ZeroVector(3), j1 = ZeroVector(3); // Using the Jacobian tangent directions - if (TDim == 2) { + if constexpr (TDim == 2) { j1[2] = 1.0; for (IndexType i_dim = 0; i_dim < 2; ++i_dim) j0[i_dim] = rJacobian(i_dim, 0); @@ -112,7 +112,7 @@ inline array_1d, TDim * TNumNodes> DerivativesUtilities::CrossProduct(aux_delta_normal0, j0, delta_j1); @@ -144,7 +144,7 @@ inline array_1d, TDim * TNumNodesMaster> DerivativesUtilitie array_1d j0 = ZeroVector(3), j1 = ZeroVector(3); // Using the Jacobian tangent directions - if (TDim == 2) { + if constexpr (TDim == 2) { j1[2] = 1.0; for (IndexType i_dim = 0; i_dim < 2; ++i_dim) j0[i_dim] = rJacobian(i_dim, 0); @@ -175,7 +175,7 @@ inline array_1d, TDim * TNumNodesMaster> DerivativesUtilitie noalias(delta_j1) = zero_array; delta_j0[i_dim] += rDNDe(i_node, 0); - if (TDim == 3) + if constexpr (TDim == 3) delta_j1[i_dim] += rDNDe(i_node, 1); MathUtils::CrossProduct(aux_delta_normal0, j0, delta_j1); @@ -543,7 +543,7 @@ inline void DerivativesUtilities rSlaveNormal, + const array_1d& rSlaveNormal, const DecompositionType& rDecompGeom, const PointType& rLocalPointDecomp, const PointType& rLocalPointParent, @@ -568,7 +568,7 @@ inline void DerivativesUtilities delta_normal, aux_RHS1, aux_delta_node; array_1d aux_delta_coords1; for ( IndexType i_node = 0; i_node < (TNumNodesMaster + TNumNodes); ++i_node) { @@ -641,7 +641,7 @@ void DerivativesUtilities projected_in_slave, projected_in_master; for (IndexType i_mortar_node = 0; i_mortar_node < TNumNodes; ++i_mortar_node) { @@ -940,7 +940,7 @@ bool DerivativesUtilities gp_normal; @@ -979,7 +979,7 @@ bool DerivativesUtilities DerivativesUtilities tangent_xi = ZeroVector(3), tangent_eta = ZeroVector(3); // Using the Jacobian tangent directions - if (TDim == 2) { + if constexpr (TDim == 2) { tangent_eta[2] = 1.0; for (IndexType i_dim = 0; i_dim < TDim; i_dim++) tangent_xi[i_dim] = previous_jacobian(i_dim, 0); diff --git a/applications/ContactStructuralMechanicsApplication/custom_utilities/derivatives_utilities.h b/applications/ContactStructuralMechanicsApplication/custom_utilities/derivatives_utilities.h index ff0d6616cac9..44c16a431b11 100755 --- a/applications/ContactStructuralMechanicsApplication/custom_utilities/derivatives_utilities.h +++ b/applications/ContactStructuralMechanicsApplication/custom_utilities/derivatives_utilities.h @@ -256,7 +256,7 @@ class KRATOS_API(CONTACT_STRUCTURAL_MECHANICS_APPLICATION) DerivativesUtilities DerivativeDataType& rDerivativeData, const GeometryType& rSlaveGeometry, const GeometryType& rMasterGeometry, - const array_1d rSlaveNormal, + const array_1d& rSlaveNormal, const DecompositionType& rDecompGeom, const PointType& rLocalPointDecomp, const PointType& rLocalPointParent, diff --git a/applications/ContactStructuralMechanicsApplication/python_scripts/contact_structural_mechanics_implicit_dynamic_solver.py b/applications/ContactStructuralMechanicsApplication/python_scripts/contact_structural_mechanics_implicit_dynamic_solver.py index eb08811163a3..5a5a700f1a0c 100644 --- a/applications/ContactStructuralMechanicsApplication/python_scripts/contact_structural_mechanics_implicit_dynamic_solver.py +++ b/applications/ContactStructuralMechanicsApplication/python_scripts/contact_structural_mechanics_implicit_dynamic_solver.py @@ -156,11 +156,18 @@ def _CreateSolutionStrategy(self): if self.contact_settings["mortar_type"].GetString() != "": if self.settings["analysis_type"].GetString() == "linear": mechanical_solution_strategy = self._create_linear_strategy() - else: - if(self.settings["line_search"].GetBool()): - mechanical_solution_strategy = self._create_contact_line_search_strategy() - else: + elif self.settings["analysis_type"].GetString() == "non_linear": + # Create strategy + if self.settings["solving_strategy_settings"]["type"].GetString() == "newton_raphson": mechanical_solution_strategy = self._create_contact_newton_raphson_strategy() + elif self.settings["solving_strategy_settings"]["type"].GetString() == "line_search": + mechanical_solution_strategy = self._create_contact_line_search_strategy() + elif self.settings["solving_strategy_settings"]["type"].GetString() == "arc_length": + mechanical_solution_strategy = self._create_arc_length_strategy() + else: + err_msg = "The requested analysis type \"" + analysis_type + "\" is not available!\n" + err_msg += "Available options are: \"linear\", \"non_linear\"" + raise Exception(err_msg) else: mechanical_solution_strategy = super()._CreateSolutionStrategy() diff --git a/applications/ContactStructuralMechanicsApplication/python_scripts/contact_structural_mechanics_static_solver.py b/applications/ContactStructuralMechanicsApplication/python_scripts/contact_structural_mechanics_static_solver.py index 493e92395745..fabb05e075c6 100644 --- a/applications/ContactStructuralMechanicsApplication/python_scripts/contact_structural_mechanics_static_solver.py +++ b/applications/ContactStructuralMechanicsApplication/python_scripts/contact_structural_mechanics_static_solver.py @@ -157,15 +157,23 @@ def _CreateSolutionStrategy(self): if self.contact_settings["mortar_type"].GetString() != "": if self.settings["analysis_type"].GetString() == "linear": mechanical_solution_strategy = self._create_linear_strategy() - else: - if self.settings["line_search"].GetBool(): - mechanical_solution_strategy = self._create_contact_line_search_strategy() - else: + elif self.settings["analysis_type"].GetString() == "non_linear": + # Create strategy + if self.settings["solving_strategy_settings"]["type"].GetString() == "newton_raphson": mechanical_solution_strategy = self._create_contact_newton_raphson_strategy() + elif self.settings["solving_strategy_settings"]["type"].GetString() == "line_search": + mechanical_solution_strategy = self._create_contact_line_search_strategy() + elif self.settings["solving_strategy_settings"]["type"].GetString() == "arc_length": + mechanical_solution_strategy = self._create_arc_length_strategy() + else: + err_msg = "The requested analysis type \"" + analysis_type + "\" is not available!\n" + err_msg += "Available options are: \"linear\", \"non_linear\"" + raise Exception(err_msg) else: mechanical_solution_strategy = super()._CreateSolutionStrategy() return mechanical_solution_strategy + def _create_contact_line_search_strategy(self): computing_model_part = self.GetComputingModelPart() self.mechanical_scheme = self._GetScheme() diff --git a/applications/ContactStructuralMechanicsApplication/python_scripts/search_base_process.py b/applications/ContactStructuralMechanicsApplication/python_scripts/search_base_process.py index b7706c7bd154..bb03ccb526c2 100644 --- a/applications/ContactStructuralMechanicsApplication/python_scripts/search_base_process.py +++ b/applications/ContactStructuralMechanicsApplication/python_scripts/search_base_process.py @@ -487,11 +487,7 @@ def _get_properties_pair(self, key = "0"): sub_search_model_part = self._get_process_model_part().CreateSubModelPart(sub_search_model_part_name) KM.AuxiliarModelPartUtilities(sub_search_model_part).RecursiveEnsureModelPartOwnsProperties(True) if sub_search_model_part.RecursivelyHasProperties(100 + int(key)): - if sub_search_model_part.HasProperties(100 + int(key)): - return sub_search_model_part.GetProperties(100 + int(key)) - else: - for prop in sub_search_model_part.GetRootModelPart().Properties: - if prop.Id == 100 + int(key): return prop + return sub_search_model_part.GetProperties(100 + int(key)) else: return sub_search_model_part.CreateNewProperties(100 + int(key)) @@ -690,7 +686,7 @@ def __generate_search_model_part_from_input_list(self, param, key = "0"): id_prop = self.settings["search_property_ids"][key].GetInt() if id_prop != 0: - sub_search_model_part.SetProperties(self.main_model_part.GetProperties(id_prop)) + sub_search_model_part.AddProperties(self.main_model_part.GetProperties(id_prop)) else: sub_prop = self._get_properties_pair(key) if partial_model_part.NumberOfConditions() == 0: diff --git a/applications/ContactStructuralMechanicsApplication/symbolic_generation/ALM_frictional_mortar_condition/ALM_frictional_mortar_contact_condition_template.cpp b/applications/ContactStructuralMechanicsApplication/symbolic_generation/ALM_frictional_mortar_condition/ALM_frictional_mortar_contact_condition_template.cpp index 99566c211810..7e7546a3d47b 100644 --- a/applications/ContactStructuralMechanicsApplication/symbolic_generation/ALM_frictional_mortar_condition/ALM_frictional_mortar_contact_condition_template.cpp +++ b/applications/ContactStructuralMechanicsApplication/symbolic_generation/ALM_frictional_mortar_condition/ALM_frictional_mortar_contact_condition_template.cpp @@ -192,7 +192,7 @@ void AugmentedLagrangianMethodFrictionalMortarContactConditionGetParentGeometry()[ i_slave ]; rResult[index++] = slave_node.GetDof( DISPLACEMENT_X ).EquationId( ); rResult[index++] = slave_node.GetDof( DISPLACEMENT_Y ).EquationId( ); - if (TDim == 3) rResult[index++] = slave_node.GetDof( DISPLACEMENT_Z ).EquationId( ); + if constexpr (TDim == 3) rResult[index++] = slave_node.GetDof( DISPLACEMENT_Z ).EquationId( ); } // Slave Nodes Lambda Equation IDs @@ -205,7 +205,7 @@ void DoubleAugmentedLagrangianMethodFrictionlessMortarContactConditionGetParentGeometry()[ i_slave ]; rConditionalDofList[index++] = slave_node.pGetDof( DISPLACEMENT_X ); rConditionalDofList[index++] = slave_node.pGetDof( DISPLACEMENT_Y ); - if (TDim == 3) rConditionalDofList[index++] = slave_node.pGetDof( DISPLACEMENT_Z ); + if constexpr (TDim == 3) rConditionalDofList[index++] = slave_node.pGetDof( DISPLACEMENT_Z ); } // Slave Nodes Lambda Equation IDs diff --git a/applications/ContactStructuralMechanicsApplication/symbolic_generation/mesh_tying_mortar_condition/mesh_tying_mortar_condition_template.cpp b/applications/ContactStructuralMechanicsApplication/symbolic_generation/mesh_tying_mortar_condition/mesh_tying_mortar_condition_template.cpp index d663848ba98a..a03304e876a1 100644 --- a/applications/ContactStructuralMechanicsApplication/symbolic_generation/mesh_tying_mortar_condition/mesh_tying_mortar_condition_template.cpp +++ b/applications/ContactStructuralMechanicsApplication/symbolic_generation/mesh_tying_mortar_condition/mesh_tying_mortar_condition_template.cpp @@ -436,7 +436,7 @@ bool MeshTyingMortarCondition::Calculat const bool bad_shape = (TDim == 2) ? MortarUtilities::LengthCheck(decomp_geom, r_slave_geometry.Length() * 1.0e-6) : MortarUtilities::HeronCheck(decomp_geom); if (bad_shape == false) { - const GeometryType::IntegrationPointsArrayType integration_points_slave = decomp_geom.IntegrationPoints( ThisIntegrationMethod ); + const GeometryType::IntegrationPointsArrayType& integration_points_slave = decomp_geom.IntegrationPoints( ThisIntegrationMethod ); // Integrating the mortar operators for ( IndexType point_number = 0; point_number < integration_points_slave.size(); ++point_number ) { @@ -572,7 +572,7 @@ void MeshTyingMortarCondition::Equation const NodeType& r_master_node = r_current_master[i_master]; rResult[index++] = r_master_node.GetDof( r_var_x ).EquationId( ); rResult[index++] = r_master_node.GetDof( r_var_y ).EquationId( ); - if (TDim == 3) rResult[index++] = r_master_node.GetDof( r_var_z ).EquationId( ); + if constexpr (TDim == 3) rResult[index++] = r_master_node.GetDof( r_var_z ).EquationId( ); } } @@ -591,7 +591,7 @@ void MeshTyingMortarCondition::Equation const NodeType& r_slave_node = r_current_slave[i_slave]; rResult[index++] = r_slave_node.GetDof( r_var_x ).EquationId( ); rResult[index++] = r_slave_node.GetDof( r_var_y ).EquationId( ); - if (TDim == 3) rResult[index++] = r_slave_node.GetDof( r_var_z ).EquationId( ); + if constexpr (TDim == 3) rResult[index++] = r_slave_node.GetDof( r_var_z ).EquationId( ); } } @@ -606,7 +606,7 @@ void MeshTyingMortarCondition::Equation const NodeType& r_slave_node = r_current_slave[i_slave]; rResult[index++] = r_slave_node.GetDof( VECTOR_LAGRANGE_MULTIPLIER_X ).EquationId( ); rResult[index++] = r_slave_node.GetDof( VECTOR_LAGRANGE_MULTIPLIER_Y ).EquationId( ); - if (TDim == 3) rResult[index++] = r_slave_node.GetDof( VECTOR_LAGRANGE_MULTIPLIER_Z ).EquationId( ); + if constexpr (TDim == 3) rResult[index++] = r_slave_node.GetDof( VECTOR_LAGRANGE_MULTIPLIER_Z ).EquationId( ); } } @@ -650,7 +650,7 @@ void MeshTyingMortarCondition::GetDofL const NodeType& r_master_node = r_current_master[i_master]; rConditionalDofList[index++] = r_master_node.pGetDof( r_var_x ); rConditionalDofList[index++] = r_master_node.pGetDof( r_var_y ); - if (TDim == 3) rConditionalDofList[index++] = r_master_node.pGetDof( r_var_z ); + if constexpr (TDim == 3) rConditionalDofList[index++] = r_master_node.pGetDof( r_var_z ); } } @@ -669,7 +669,7 @@ void MeshTyingMortarCondition::GetDofL const NodeType& r_slave_node = r_current_slave[i_slave]; rConditionalDofList[index++] = r_slave_node.pGetDof( r_var_x ); rConditionalDofList[index++] = r_slave_node.pGetDof( r_var_y ); - if (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( r_var_z ); + if constexpr (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( r_var_z ); } } @@ -684,7 +684,7 @@ void MeshTyingMortarCondition::GetDofL const NodeType& r_slave_node = r_current_slave[i_slave]; rConditionalDofList[index++] = r_slave_node.pGetDof( VECTOR_LAGRANGE_MULTIPLIER_X ); rConditionalDofList[index++] = r_slave_node.pGetDof( VECTOR_LAGRANGE_MULTIPLIER_Y ); - if (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( VECTOR_LAGRANGE_MULTIPLIER_Z ); + if constexpr (TDim == 3) rConditionalDofList[index++] = r_slave_node.pGetDof( VECTOR_LAGRANGE_MULTIPLIER_Z ); } } diff --git a/applications/ContactStructuralMechanicsApplication/symbolic_generation/penalty_frictional_mortar_condition/penalty_frictional_mortar_contact_condition_template.cpp b/applications/ContactStructuralMechanicsApplication/symbolic_generation/penalty_frictional_mortar_condition/penalty_frictional_mortar_contact_condition_template.cpp index 8808225bfd7c..b3aec437b3a2 100644 --- a/applications/ContactStructuralMechanicsApplication/symbolic_generation/penalty_frictional_mortar_condition/penalty_frictional_mortar_contact_condition_template.cpp +++ b/applications/ContactStructuralMechanicsApplication/symbolic_generation/penalty_frictional_mortar_condition/penalty_frictional_mortar_contact_condition_template.cpp @@ -256,7 +256,7 @@ void PenaltyMethodFrictionalMortarContactConditionX(), rModelPart.pGetNode(1)->Y(), rModelPart.pGetNode(1)->Z()); rModelPart.CreateNewNode(6, rModelPart.pGetNode(2)->X(), rModelPart.pGetNode(2)->Y(), rModelPart.pGetNode(2)->Z()); @@ -508,7 +508,7 @@ namespace Kratos } TestDerivatives<2, 2>( rModelPart, p_cond0_0, p_cond0_1, p_cond_0, p_cond_1, rNodesPerturbation, IndexPerturbation, rCoefficients, NumberIterations, Derivative, Check); - } else if (TDim == 3 && TNumNodes == 3) { + } else if constexpr (TDim == 3 && TNumNodes == 3) { rModelPart.CreateNewNode(7, rModelPart.pGetNode(1)->X(), rModelPart.pGetNode(1)->Y(), rModelPart.pGetNode(1)->Z()); rModelPart.CreateNewNode(8, rModelPart.pGetNode(2)->X(), rModelPart.pGetNode(2)->Y(), rModelPart.pGetNode(2)->Z()); rModelPart.CreateNewNode(9, rModelPart.pGetNode(3)->X(), rModelPart.pGetNode(3)->Y(), rModelPart.pGetNode(3)->Z()); @@ -547,7 +547,7 @@ namespace Kratos } TestDerivatives<3, 3>( rModelPart, p_cond0_0, p_cond0_1, p_cond_0, p_cond_1, rNodesPerturbation, IndexPerturbation, rCoefficients, NumberIterations, Derivative, Check); - } else if (TDim == 3 && TNumNodes == 4) { + } else if constexpr (TDim == 3 && TNumNodes == 4) { rModelPart.CreateNewNode(9, rModelPart.pGetNode(1)->X(), rModelPart.pGetNode(1)->Y(), rModelPart.pGetNode(1)->Z()); rModelPart.CreateNewNode(10, rModelPart.pGetNode(2)->X(), rModelPart.pGetNode(2)->Y(), rModelPart.pGetNode(2)->Z()); rModelPart.CreateNewNode(11, rModelPart.pGetNode(3)->X(), rModelPart.pGetNode(3)->Y(), rModelPart.pGetNode(3)->Z()); @@ -604,7 +604,7 @@ namespace Kratos const std::size_t PairIndex ) { - if (TDim == 2 && TNumNodes == 2) { + if constexpr (TDim == 2 && TNumNodes == 2) { if (PairIndex == 1) { rModelPart.CreateNewNode(1, -1.0,0.0,0.0); rModelPart.CreateNewNode(2, 1.0,0.0,0.0); @@ -632,7 +632,7 @@ namespace Kratos } else { KRATOS_ERROR << "NOT IMPLEMENTED YET" << std::endl; } - } else if (TDim == 3 && TNumNodes == 3) { + } else if constexpr (TDim == 3 && TNumNodes == 3) { if (PairIndex == 1) { rModelPart.CreateNewNode(1, 0.0,0.0,0.0); rModelPart.CreateNewNode(2, 1.0,0.0,0.0); @@ -684,7 +684,7 @@ namespace Kratos } else { KRATOS_ERROR << "NOT IMPLEMENTED YET" << std::endl; } - } else if (TDim == 3 && TNumNodes == 4) { + } else if constexpr (TDim == 3 && TNumNodes == 4) { if (PairIndex == 1) { rModelPart.CreateNewNode(1, 0.0,0.2,1.0e-3); rModelPart.CreateNewNode(2, 1.0,0.2,1.0e-3); diff --git a/applications/ContactStructuralMechanicsApplication/tests/cpp_tests/test_weighted_gap.cpp b/applications/ContactStructuralMechanicsApplication/tests/cpp_tests/test_weighted_gap.cpp index 971001972b53..6b7a9bf98e9e 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/cpp_tests/test_weighted_gap.cpp +++ b/applications/ContactStructuralMechanicsApplication/tests/cpp_tests/test_weighted_gap.cpp @@ -140,8 +140,8 @@ namespace Kratos // We set the database ModelPart& r_computing_contact_model_part = rModelPart.GetSubModelPart("ComputingContact"); - for (auto p_slave_cond : slave_conds) { - for (auto p_master_cond : master_conds) { + for (const auto& p_slave_cond : slave_conds) { + for (const auto& p_master_cond : master_conds) { id_cond++; const PairedCondition& r_reference_condition = dynamic_cast(KratosComponents::Get("ALMFrictionalMortarContactCondition2D2N")); Condition::Pointer p_auxiliar_condition = r_reference_condition.Create(id_cond, p_slave_cond->pGetGeometry(), p_cond_prop, p_master_cond->pGetGeometry()); @@ -296,8 +296,8 @@ namespace Kratos // We set the database ModelPart& r_computing_contact_model_part = rModelPart.GetSubModelPart("ComputingContact"); - for (auto p_slave_cond : slave_conds) { - for (auto p_master_cond : master_conds) { + for (const auto& p_slave_cond : slave_conds) { + for (const auto& p_master_cond : master_conds) { id_cond++; const PairedCondition& r_reference_condition = dynamic_cast(KratosComponents::Get("ALMFrictionalMortarContactCondition3D4N")); Condition::Pointer p_auxiliar_condition = r_reference_condition.Create(id_cond, p_slave_cond->pGetGeometry(), p_cond_prop_0, p_master_cond->pGetGeometry()); @@ -520,8 +520,8 @@ namespace Kratos // We set the database ModelPart& r_computing_contact_model_part = rModelPart.GetSubModelPart("ComputingContact"); - for (auto p_slave_cond : slave_conds) { - for (auto p_master_cond : master_conds) { + for (const auto& p_slave_cond : slave_conds) { + for (const auto& p_master_cond : master_conds) { id_cond++; const PairedCondition& r_reference_condition = dynamic_cast(KratosComponents::Get("ALMFrictionalMortarContactCondition3D4N")); Condition::Pointer p_auxiliar_condition = r_reference_condition.Create(id_cond, p_slave_cond->pGetGeometry(), p_cond_prop_0, p_master_cond->pGetGeometry()); @@ -711,8 +711,8 @@ namespace Kratos // We set the database const auto& r_process_info = rModelPart.GetProcessInfo(); ModelPart& r_computing_contact_model_part = rModelPart.GetSubModelPart("ComputingContact"); - for (auto p_slave_cond : slave_conds) { - for (auto p_master_cond : master_conds) { + for (const auto& p_slave_cond : slave_conds) { + for (const auto& p_master_cond : master_conds) { id_cond++; const PairedCondition& r_reference_condition = dynamic_cast(KratosComponents::Get("ALMFrictionalMortarContactCondition3D4N")); Condition::Pointer p_auxiliar_condition = r_reference_condition.Create(id_cond, p_slave_cond->pGetGeometry(), p_cond_prop_0, p_master_cond->pGetGeometry()); diff --git a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_patch_test_large_disp_hexa_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_patch_test_large_disp_hexa_parameters.json index d04d7b575d9a..37bed44353e1 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_patch_test_large_disp_hexa_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_patch_test_large_disp_hexa_parameters.json @@ -26,7 +26,6 @@ "time_stepping" : { "time_step" : 0.05 }, - "line_search" : false, "convergence_criterion" : "contact_mixed_criterion", "displacement_relative_tolerance" : 0.0001, "displacement_absolute_tolerance" : 1e-9, diff --git a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_quadtri_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_quadtri_test_parameters.json index fd0e46bb8f70..c0c900ecedd1 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_quadtri_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_quadtri_test_parameters.json @@ -26,7 +26,6 @@ "time_stepping" : { "time_step" : 1.1 }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "convergence_criterion" : "contact_residual_criterion", diff --git a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_test_parameters.json index 183d72741f59..070d53d4ee9d 100755 --- a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_test_parameters.json @@ -26,7 +26,6 @@ "time_stepping" : { "time_step" : 1.1 }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "convergence_criterion" : "contact_residual_criterion", diff --git a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_triquad_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_triquad_test_parameters.json index d7bc5eb6380c..fad317fc72f9 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_triquad_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/3D_contact_simplest_patch_matching_triquad_test_parameters.json @@ -26,7 +26,6 @@ "time_stepping" : { "time_step" : 1.1 }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "convergence_criterion" : "contact_residual_criterion", diff --git a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/hyper_simple_slope_patch_test_2D_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/hyper_simple_slope_patch_test_2D_parameters.json index 69d76ac88bc7..4b28db02ccd8 100755 --- a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/hyper_simple_slope_patch_test_2D_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/hyper_simple_slope_patch_test_2D_parameters.json @@ -27,7 +27,6 @@ "time_step" : 1.1 }, "clear_storage" : true, - "line_search" : false, "compute_reactions" : false, "convergence_criterion" : "contact_residual_criterion", "displacement_relative_tolerance" : 0.001, diff --git a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/simple_patch_test_2D_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/simple_patch_test_2D_parameters.json index aa3400279590..c5a1b93bde83 100755 --- a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/simple_patch_test_2D_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/simple_patch_test_2D_parameters.json @@ -27,7 +27,6 @@ "time_step" : 1.1 }, "clear_storage" : true, - "line_search" : false, "compute_reactions" : false, "convergence_criterion" : "contact_residual_criterion", "displacement_relative_tolerance" : 0.001, diff --git a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/simple_patch_test_3D_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/simple_patch_test_3D_parameters.json index 1d1b618816a6..3225481f6318 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/simple_patch_test_3D_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mesh_tying_test/simple_patch_test_3D_parameters.json @@ -26,7 +26,6 @@ "time_stepping" : { "time_step" : 1.1 }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "convergence_criterion" : "contact_residual_criterion", diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/2D_contact_simplest_patch_matching_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/2D_contact_simplest_patch_matching_test_parameters.json index 8cbd1f298723..3a17a07a2ee1 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/2D_contact_simplest_patch_matching_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/2D_contact_simplest_patch_matching_test_parameters.json @@ -22,7 +22,6 @@ "material_import_settings" :{ "materials_filename": "mpc_contact_tests/2D_contact_simplest_patch_matching_test_materials.json" }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "convergence_criterion" : "residual_criterion", diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/2D_contact_simplest_with_friction_patch_matching_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/2D_contact_simplest_with_friction_patch_matching_test_parameters.json index 5b4e9347c8e1..8f378d175bcb 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/2D_contact_simplest_with_friction_patch_matching_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/2D_contact_simplest_with_friction_patch_matching_test_parameters.json @@ -22,7 +22,6 @@ "material_import_settings" :{ "materials_filename": "mpc_contact_tests/2D_contact_simplest_patch_matching_test_materials.json" }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "mpc_contact_settings" : diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_patch_matching_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_patch_matching_test_parameters.json index 381591f69057..cd7dcad0b0da 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_patch_matching_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_patch_matching_test_parameters.json @@ -22,7 +22,6 @@ "material_import_settings" :{ "materials_filename": "mpc_contact_tests/3D_contact_patch_matching_test_materials.json" }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "convergence_criterion" : "residual_criterion", diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_patch_matching_slope_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_patch_matching_slope_test_parameters.json index 5a2b02e890f3..5db29f58d58c 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_patch_matching_slope_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_patch_matching_slope_test_parameters.json @@ -22,7 +22,6 @@ "material_import_settings" :{ "materials_filename": "mpc_contact_tests/3D_contact_simplest_patch_matching_slope_test_materials.json" }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "convergence_criterion" : "residual_criterion", diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_patch_matching_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_patch_matching_test_parameters.json index 564030ec16e9..87b87d519105 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_patch_matching_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_patch_matching_test_parameters.json @@ -22,7 +22,6 @@ "material_import_settings" :{ "materials_filename": "mpc_contact_tests/3D_contact_simplest_patch_matching_test_materials.json" }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "convergence_criterion" : "residual_criterion", diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_with_friction_patch_matching_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_with_friction_patch_matching_test_parameters.json index 27e649db8bc9..d8abf6e67856 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_with_friction_patch_matching_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/3D_contact_simplest_with_friction_patch_matching_test_parameters.json @@ -22,7 +22,6 @@ "material_import_settings" :{ "materials_filename": "mpc_contact_tests/3D_contact_simplest_patch_matching_test_materials.json" }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "mpc_contact_settings" : diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_test_parameters.json index 978784f84db6..e2589b377e78 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_test_parameters.json @@ -22,7 +22,6 @@ "time_stepping" : { "time_step" : 0.01 }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "mpc_contact_settings" : diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_with_friction_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_with_friction_test_parameters.json index 6b1813f8c9da..ad1b8ffc5f45 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_with_friction_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_with_friction_test_parameters.json @@ -22,7 +22,6 @@ "time_stepping" : { "time_step" : 0.01 }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "mpc_contact_settings" : diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_with_tying_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_with_tying_test_parameters.json index df79b3c1481d..f4151d95ba76 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_with_tying_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/beam_contact_static_with_tying_test_parameters.json @@ -22,7 +22,6 @@ "time_stepping" : { "time_step" : 0.01 }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "mpc_contact_settings" : diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_hexa_simple_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_hexa_simple_test_parameters.json index 75f25ac45d76..28bf9afbe8a1 100755 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_hexa_simple_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_hexa_simple_test_parameters.json @@ -22,7 +22,6 @@ "time_stepping" : { "time_step" : 0.2 }, - "line_search" : false, "convergence_criterion" : "residual_criterion", "displacement_relative_tolerance" : 0.0001, "displacement_absolute_tolerance" : 1e-9, diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_hexa_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_hexa_test_parameters.json index e75a38ad9bbf..e6fc4eee3993 100755 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_hexa_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_hexa_test_parameters.json @@ -22,7 +22,6 @@ "time_stepping" : { "time_step" : 0.2 }, - "line_search" : false, "convergence_criterion" : "residual_criterion", "displacement_relative_tolerance" : 0.0001, "displacement_absolute_tolerance" : 1e-9, diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_test_parameters.json index 54beab365748..e05c6a721f30 100755 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/contact_beams_axil_test_parameters.json @@ -22,7 +22,6 @@ "time_stepping" : { "time_step" : 0.2 }, - "line_search" : false, "convergence_criterion" : "residual_criterion", "displacement_relative_tolerance" : 0.0001, "displacement_absolute_tolerance" : 1e-9, diff --git a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/plate_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/plate_test_parameters.json index 70926e1fee3e..f4959f339e88 100755 --- a/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/plate_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/mpc_contact_tests/plate_test_parameters.json @@ -22,7 +22,6 @@ "time_stepping" : { "time_step" : 1.1 }, - "line_search" : false, "convergence_criterion" : "residual_criterion", "displacement_relative_tolerance" : 0.0001, "displacement_absolute_tolerance" : 1e-9, diff --git a/applications/ContactStructuralMechanicsApplication/tests/penalty_frictionless_contact_test_3D/3D_contact_simplest_patch_matching_test_parameters.json b/applications/ContactStructuralMechanicsApplication/tests/penalty_frictionless_contact_test_3D/3D_contact_simplest_patch_matching_test_parameters.json index eaf7a129a8a4..f87b489108c7 100644 --- a/applications/ContactStructuralMechanicsApplication/tests/penalty_frictionless_contact_test_3D/3D_contact_simplest_patch_matching_test_parameters.json +++ b/applications/ContactStructuralMechanicsApplication/tests/penalty_frictionless_contact_test_3D/3D_contact_simplest_patch_matching_test_parameters.json @@ -26,7 +26,6 @@ "time_stepping" : { "time_step" : 1.0 }, - "line_search" : false, "clear_storage" : true, "reform_dofs_at_each_step" : true, "convergence_criterion" : "contact_residual_criterion", diff --git a/applications/ConvectionDiffusionApplication/custom_elements/mixed_laplacian_element.cpp b/applications/ConvectionDiffusionApplication/custom_elements/mixed_laplacian_element.cpp index fa34f1ba6f2f..d65b666e90b9 100644 --- a/applications/ConvectionDiffusionApplication/custom_elements/mixed_laplacian_element.cpp +++ b/applications/ConvectionDiffusionApplication/custom_elements/mixed_laplacian_element.cpp @@ -256,7 +256,7 @@ void MixedLaplacianElement::EquationIdVector( rResult[local_index++] = r_geom[i_node].GetDof(r_unknown_var, unknown_pos).EquationId(); rResult[local_index++] = r_geom[i_node].GetDof(r_gradient_var_x, gradient_x_pos).EquationId(); rResult[local_index++] = r_geom[i_node].GetDof(r_gradient_var_y, gradient_x_pos + 1).EquationId(); - if (TDim == 3) { + if constexpr (TDim == 3) { rResult[local_index++] = r_geom[i_node].GetDof(r_gradient_var_z, gradient_x_pos + 2).EquationId(); } } @@ -288,7 +288,7 @@ void MixedLaplacianElement::GetDofList( rElementalDofList[local_index++] = r_geom[i_node].pGetDof(r_unknown_var, unknown_pos); rElementalDofList[local_index++] = r_geom[i_node].pGetDof(r_gradient_var_x, gradient_x_pos); rElementalDofList[local_index++] = r_geom[i_node].pGetDof(r_gradient_var_y, gradient_x_pos + 1); - if (TDim == 3) { + if constexpr (TDim == 3) { rElementalDofList[local_index++] = r_geom[i_node].pGetDof(r_gradient_var_z, gradient_x_pos + 2); } } @@ -324,7 +324,7 @@ int MixedLaplacianElement::Check(const ProcessInfo& rCurrentPro KRATOS_CHECK_DOF_IN_NODE(r_unknown_var, r_node); KRATOS_CHECK_DOF_IN_NODE(KratosComponents::Get(r_gradient_var.Name()+"_X"), r_node); KRATOS_CHECK_DOF_IN_NODE(KratosComponents::Get(r_gradient_var.Name()+"_Y"), r_node); - if (TDim == 3) { + if constexpr (TDim == 3) { KRATOS_CHECK_DOF_IN_NODE(KratosComponents::Get(r_gradient_var.Name()+"_Z"), r_node); } } diff --git a/applications/ConvectionDiffusionApplication/custom_utilities/move_particle_utility.h b/applications/ConvectionDiffusionApplication/custom_utilities/move_particle_utility.h index 4eb0dea20c29..bab224bd2294 100644 --- a/applications/ConvectionDiffusionApplication/custom_utilities/move_particle_utility.h +++ b/applications/ConvectionDiffusionApplication/custom_utilities/move_particle_utility.h @@ -885,7 +885,7 @@ namespace Kratos //now we invert the matrix BoundedMatrix inverse_mass_matrix=ZeroMatrix(TDim+1 , TDim+1); - if(TDim==3) + if constexpr (TDim==3) InvertMatrix( mass_matrix, inverse_mass_matrix); else InvertMatrix3x3( mass_matrix, inverse_mass_matrix); diff --git a/applications/ConvectionDiffusionApplication/python_scripts/coupled_structural_thermal_solver.py b/applications/ConvectionDiffusionApplication/python_scripts/coupled_structural_thermal_solver.py index 3e19e3664f01..21aa07cd3a20 100644 --- a/applications/ConvectionDiffusionApplication/python_scripts/coupled_structural_thermal_solver.py +++ b/applications/ConvectionDiffusionApplication/python_scripts/coupled_structural_thermal_solver.py @@ -78,6 +78,9 @@ def ImportModelPart(self): # Call the structural solver to import the model part from the mdpa self.structural_solver.ImportModelPart() + def PrepareModelPart(self): + self.structural_solver.PrepareModelPart() + # Save the convection diffusion settings convection_diffusion_settings = self.thermal_solver.main_model_part.ProcessInfo.GetValue(KratosMultiphysics.CONVECTION_DIFFUSION_SETTINGS) @@ -97,8 +100,6 @@ def ImportModelPart(self): # Set the saved convection diffusion settings to the new thermal model part self.thermal_solver.main_model_part.ProcessInfo.SetValue(KratosMultiphysics.CONVECTION_DIFFUSION_SETTINGS, convection_diffusion_settings) - def PrepareModelPart(self): - self.structural_solver.PrepareModelPart() self.thermal_solver.PrepareModelPart() def AddDofs(self): diff --git a/applications/ConvectionDiffusionApplication/python_scripts/move_particle_utility_process.py b/applications/ConvectionDiffusionApplication/python_scripts/move_particle_utility_process.py index f3e03d10e211..a07e223d0aa2 100644 --- a/applications/ConvectionDiffusionApplication/python_scripts/move_particle_utility_process.py +++ b/applications/ConvectionDiffusionApplication/python_scripts/move_particle_utility_process.py @@ -42,12 +42,10 @@ def Check(self): def ExecuteBeforeSolutionLoop(self): dimension = self.model_part.ProcessInfo[KM.DOMAIN_SIZE] - num_of_avg_elems = 10 - num_of_avg_nodes = 10 neighbor_search = KM.FindNodalNeighboursProcess(self.model_part) neighbor_search.Execute() neighbor_elements_search = KM.GenericFindElementalNeighboursProcess(self.model_part) - neighbor_elements_search.ExecuteInitialize() + neighbor_elements_search.Execute() settings = self.model_part.ProcessInfo[KM.CONVECTION_DIFFUSION_SETTINGS] self.unknown_var = settings.GetUnknownVariable() diff --git a/applications/DEMApplication/DEM_application.cpp b/applications/DEMApplication/DEM_application.cpp index 1a168aeef8cd..e18fc91b12b2 100644 --- a/applications/DEMApplication/DEM_application.cpp +++ b/applications/DEMApplication/DEM_application.cpp @@ -313,6 +313,7 @@ KRATOS_CREATE_VARIABLE(double, PARTICLE_ROTATIONAL_KINEMATIC_ENERGY) KRATOS_CREATE_VARIABLE(double, PARTICLE_GRAVITATIONAL_ENERGY) KRATOS_CREATE_VARIABLE(double, PARTICLE_INELASTIC_VISCODAMPING_ENERGY) KRATOS_CREATE_VARIABLE(double, PARTICLE_INELASTIC_FRICTIONAL_ENERGY) +KRATOS_CREATE_VARIABLE(double, PARTICLE_INELASTIC_ROLLING_RESISTANCE_ENERGY) KRATOS_CREATE_VARIABLE(int, COMPUTE_ENERGY_OPTION) KRATOS_CREATE_VARIABLE(double, GLOBAL_DAMPING) KRATOS_CREATE_VARIABLE(double, NORMAL_IMPACT_VELOCITY) @@ -763,6 +764,7 @@ void KratosDEMApplication::Register() { KRATOS_REGISTER_VARIABLE(PARTICLE_GRAVITATIONAL_ENERGY) KRATOS_REGISTER_VARIABLE(PARTICLE_INELASTIC_VISCODAMPING_ENERGY) KRATOS_REGISTER_VARIABLE(PARTICLE_INELASTIC_FRICTIONAL_ENERGY) + KRATOS_REGISTER_VARIABLE(PARTICLE_INELASTIC_ROLLING_RESISTANCE_ENERGY) KRATOS_REGISTER_VARIABLE(COMPUTE_ENERGY_OPTION) KRATOS_REGISTER_VARIABLE(GLOBAL_DAMPING) KRATOS_REGISTER_VARIABLE(NORMAL_IMPACT_VELOCITY) diff --git a/applications/DEMApplication/DEM_application_variables.h b/applications/DEMApplication/DEM_application_variables.h index dc66ed0472c4..6f4e5156cb8f 100644 --- a/applications/DEMApplication/DEM_application_variables.h +++ b/applications/DEMApplication/DEM_application_variables.h @@ -296,6 +296,7 @@ namespace Kratos KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, PARTICLE_GRAVITATIONAL_ENERGY) KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, PARTICLE_INELASTIC_VISCODAMPING_ENERGY) KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, PARTICLE_INELASTIC_FRICTIONAL_ENERGY) + KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, PARTICLE_INELASTIC_ROLLING_RESISTANCE_ENERGY) KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, int, COMPUTE_ENERGY_OPTION) KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, GLOBAL_DAMPING) KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, NORMAL_IMPACT_VELOCITY) diff --git a/applications/DEMApplication/custom_elements/analytic_rigid_body_element.cpp b/applications/DEMApplication/custom_elements/analytic_rigid_body_element.cpp index 49fc4ffdcb3c..9057e21d8f6d 100644 --- a/applications/DEMApplication/custom_elements/analytic_rigid_body_element.cpp +++ b/applications/DEMApplication/custom_elements/analytic_rigid_body_element.cpp @@ -3,7 +3,7 @@ // System includes #include #include -#include +#include // External includes diff --git a/applications/DEMApplication/custom_elements/analytic_spheric_particle.cpp b/applications/DEMApplication/custom_elements/analytic_spheric_particle.cpp index e54a0c0be649..8072bae1f012 100644 --- a/applications/DEMApplication/custom_elements/analytic_spheric_particle.cpp +++ b/applications/DEMApplication/custom_elements/analytic_spheric_particle.cpp @@ -210,7 +210,6 @@ void AnalyticSphericParticle::EvaluateBallToBallForcesForPositiveIndentiations(S void AnalyticSphericParticle::ComputeBallToRigidFaceContactForce(SphericParticle::ParticleDataBuffer & data_buffer, array_1d& r_elastic_force, array_1d& r_contact_force, - double& RollingResistance, array_1d& rigid_element_force, const ProcessInfo& r_process_info) @@ -219,7 +218,6 @@ void AnalyticSphericParticle::ComputeBallToRigidFaceContactForce(SphericParticle SphericParticle::ComputeBallToRigidFaceContactForce(data_buffer, r_elastic_force, r_contact_force, - RollingResistance, rigid_element_force, r_process_info); diff --git a/applications/DEMApplication/custom_elements/analytic_spheric_particle.h b/applications/DEMApplication/custom_elements/analytic_spheric_particle.h index 76b0d9083e89..6d44622697a6 100644 --- a/applications/DEMApplication/custom_elements/analytic_spheric_particle.h +++ b/applications/DEMApplication/custom_elements/analytic_spheric_particle.h @@ -170,7 +170,6 @@ void EvaluateBallToBallForcesForPositiveIndentiations(SphericParticle::ParticleD void ComputeBallToRigidFaceContactForce(SphericParticle::ParticleDataBuffer & data_buffer, array_1d& r_elastic_force, array_1d& r_contact_force, - double& RollingResistance, array_1d& rigid_element_force, const ProcessInfo& r_process_info) override; diff --git a/applications/DEMApplication/custom_elements/beam_particle.cpp b/applications/DEMApplication/custom_elements/beam_particle.cpp index f04fba5c6eb7..62577238f899 100644 --- a/applications/DEMApplication/custom_elements/beam_particle.cpp +++ b/applications/DEMApplication/custom_elements/beam_particle.cpp @@ -141,8 +141,7 @@ namespace Kratos { void BeamParticle::ComputeBallToBallContactForce(SphericParticle::ParticleDataBuffer & data_buffer, const ProcessInfo& r_process_info, array_1d& rElasticForce, - array_1d& rContactForce, - double& RollingResistance) + array_1d& rContactForce) { KRATOS_TRY @@ -364,7 +363,7 @@ namespace Kratos { ComputeMoments(LocalContactForce[2], TotalGlobalElasticContactForce, - RollingResistance, + data_buffer.mRollingResistance, data_buffer.mLocalCoordSystem[2], data_buffer.mpOtherParticle, indentation, diff --git a/applications/DEMApplication/custom_elements/beam_particle.h b/applications/DEMApplication/custom_elements/beam_particle.h index 177dbf0d3644..6cdb17014386 100644 --- a/applications/DEMApplication/custom_elements/beam_particle.h +++ b/applications/DEMApplication/custom_elements/beam_particle.h @@ -63,8 +63,7 @@ namespace Kratos { virtual void ComputeBallToBallContactForce(SphericParticle::ParticleDataBuffer &, const ProcessInfo& r_process_info, array_1d& rElasticForce, - array_1d& rContactForce, - double& RollingResistance) override; + array_1d& rContactForce) override; void Move(const double delta_t, const bool rotation_option, const double force_reduction_factor, const int StepFlag) override; diff --git a/applications/DEMApplication/custom_elements/cluster3D.cpp b/applications/DEMApplication/custom_elements/cluster3D.cpp index 8e398825c13f..6652cff3b14e 100644 --- a/applications/DEMApplication/custom_elements/cluster3D.cpp +++ b/applications/DEMApplication/custom_elements/cluster3D.cpp @@ -3,7 +3,7 @@ // System includes #include #include -#include +#include // Project includes #include "cluster3D.h" diff --git a/applications/DEMApplication/custom_elements/rigid_body_element.cpp b/applications/DEMApplication/custom_elements/rigid_body_element.cpp index 7b5d0fec5d64..f5468e6206da 100644 --- a/applications/DEMApplication/custom_elements/rigid_body_element.cpp +++ b/applications/DEMApplication/custom_elements/rigid_body_element.cpp @@ -3,7 +3,7 @@ // System includes #include #include -#include +#include // Project includes #include "rigid_body_element.h" diff --git a/applications/DEMApplication/custom_elements/ship_element.cpp b/applications/DEMApplication/custom_elements/ship_element.cpp index 9f0811006e06..8d61aa5b569d 100644 --- a/applications/DEMApplication/custom_elements/ship_element.cpp +++ b/applications/DEMApplication/custom_elements/ship_element.cpp @@ -3,7 +3,7 @@ // System includes #include #include -#include +#include // Project includes #include "ship_element.h" diff --git a/applications/DEMApplication/custom_elements/spheric_continuum_particle.cpp b/applications/DEMApplication/custom_elements/spheric_continuum_particle.cpp index 19b4218ef7e9..74b9e49318ea 100644 --- a/applications/DEMApplication/custom_elements/spheric_continuum_particle.cpp +++ b/applications/DEMApplication/custom_elements/spheric_continuum_particle.cpp @@ -207,8 +207,7 @@ namespace Kratos { void SphericContinuumParticle::ComputeBallToBallContactForce(SphericParticle::ParticleDataBuffer& data_buffer, const ProcessInfo& r_process_info, array_1d& rElasticForce, - array_1d& rContactForce, - double& RollingResistance) + array_1d& rContactForce) { KRATOS_TRY @@ -373,7 +372,7 @@ namespace Kratos { GlobalElasticContactForce, GlobalElasticExtraContactForce, TotalGlobalElasticContactForce, ViscoDampingLocalContactForce, 0.0, other_ball_to_ball_forces, rElasticForce, rContactForce, i, r_process_info); //TODO: replace the 0.0 with an actual cohesive force for discontinuum neighbours if (this->Is(DEMFlags::HAS_ROTATION)) { - ComputeMoments(LocalContactForce[2], TotalGlobalElasticContactForce, RollingResistance, data_buffer.mLocalCoordSystem[2], data_buffer.mpOtherParticle, indentation, i); + ComputeMoments(LocalContactForce[2], TotalGlobalElasticContactForce, data_buffer.mRollingResistance, data_buffer.mLocalCoordSystem[2], data_buffer.mpOtherParticle, indentation, i); if (i < (int)mContinuumInitialNeighborsSize && mIniNeighbourFailureId[i] == 0) { mContinuumConstitutiveLawArray[i]->ComputeParticleRotationalMoments(this, neighbour_iterator, equiv_young, data_buffer.mDistance, calculation_area, data_buffer.mLocalCoordSystem, ElasticLocalRotationalMoment, ViscoLocalRotationalMoment, equiv_poisson, indentation); diff --git a/applications/DEMApplication/custom_elements/spheric_continuum_particle.h b/applications/DEMApplication/custom_elements/spheric_continuum_particle.h index d8ce7f00db74..19564ac08e19 100644 --- a/applications/DEMApplication/custom_elements/spheric_continuum_particle.h +++ b/applications/DEMApplication/custom_elements/spheric_continuum_particle.h @@ -154,8 +154,7 @@ namespace Kratos virtual void ComputeBallToBallContactForce(SphericParticle::ParticleDataBuffer &, const ProcessInfo& r_process_info, array_1d& rElasticForce, - array_1d& rContactForce, - double& RollingResistance) override; + array_1d& rContactForce) override; virtual void ComputeRollingResistance(double& RollingResistance, const double& NormalLocalContactForce, diff --git a/applications/DEMApplication/custom_elements/spheric_particle.cpp b/applications/DEMApplication/custom_elements/spheric_particle.cpp index ff460b8e2529..11ff9c44c3d2 100644 --- a/applications/DEMApplication/custom_elements/spheric_particle.cpp +++ b/applications/DEMApplication/custom_elements/spheric_particle.cpp @@ -118,6 +118,7 @@ SphericParticle& SphericParticle::operator=(const SphericParticle& rOther) { mElasticEnergy = rOther.mElasticEnergy; mInelasticFrictionalEnergy = rOther.mInelasticFrictionalEnergy; mInelasticViscodampingEnergy = rOther.mInelasticViscodampingEnergy; + mInelasticRollResistEnergy = rOther.mInelasticRollResistEnergy; mNeighbourElements = rOther.mNeighbourElements; mContactingNeighbourIds = rOther.mContactingNeighbourIds; mContactingFaceNeighbourIds = rOther.mContactingFaceNeighbourIds; @@ -239,6 +240,8 @@ void SphericParticle::Initialize(const ProcessInfo& r_process_info) inelastic_frictional_energy = 0.0; double& inelastic_viscodamping_energy = this->GetInelasticViscodampingEnergy(); inelastic_viscodamping_energy = 0.0; + double& inelastic_rollresist_energy = this->GetInelasticRollResistEnergy(); + inelastic_rollresist_energy = 0.0; DEMIntegrationScheme::Pointer& translational_integration_scheme = GetProperties()[DEM_TRANSLATIONAL_INTEGRATION_SCHEME_POINTER]; DEMIntegrationScheme::Pointer& rotational_integration_scheme = GetProperties()[DEM_ROTATIONAL_INTEGRATION_SCHEME_POINTER]; @@ -270,6 +273,7 @@ void SphericParticle::CalculateRightHandSide(const ProcessInfo& r_process_info, data_buffer.mDt = dt; data_buffer.mMultiStageRHS = false; + data_buffer.mRollingResistance = 0.0; array_1d additional_forces = ZeroVector(3); array_1d additionally_applied_moment = ZeroVector(3); @@ -284,11 +288,9 @@ void SphericParticle::CalculateRightHandSide(const ProcessInfo& r_process_info, InitializeForceComputation(r_process_info); - double RollingResistance = 0.0; + ComputeBallToBallContactForce(data_buffer, r_process_info, elastic_force, contact_force); - ComputeBallToBallContactForce(data_buffer, r_process_info, elastic_force, contact_force, RollingResistance); - - ComputeBallToRigidFaceContactForce(data_buffer, elastic_force, contact_force, RollingResistance, rigid_element_force, r_process_info); + ComputeBallToRigidFaceContactForce(data_buffer, elastic_force, contact_force, rigid_element_force, r_process_info); if (this->IsNot(DEMFlags::BELONGS_TO_A_CLUSTER)){ ComputeAdditionalForces(additional_forces, additionally_applied_moment, r_process_info, gravity); @@ -304,7 +306,7 @@ void SphericParticle::CalculateRightHandSide(const ProcessInfo& r_process_info, array_1d& rolling_resistance_moment = this_node.FastGetSolutionStepValue(ROLLING_RESISTANCE_MOMENT); rolling_resistance_moment.clear(); - ComputeRollingFriction(rolling_resistance_moment, RollingResistance, data_buffer.mDt); + ComputeRollingFriction(rolling_resistance_moment, data_buffer.mRollingResistance, data_buffer.mDt); } } @@ -820,6 +822,7 @@ void SphericParticle::ComputeRollingFriction(array_1d& rolling_resist const double coeff_acc = central_node.FastGetSolutionStepValue(PARTICLE_MOMENT_OF_INERTIA) / dt; const array_1d& ang_velocity = central_node.FastGetSolutionStepValue(ANGULAR_VELOCITY); const array_1d initial_rotation_moment = coeff_acc * ang_velocity; // the moment needed to stop the spin in one time step + double& inelastic_rollresist_energy = this->GetInelasticRollResistEnergy(); const double MaxRotaMoment[3] = {initial_rotation_moment[0] + mContactMoment[0], initial_rotation_moment[1] + mContactMoment[1], initial_rotation_moment[2] + mContactMoment[2]}; double CoordSystemMoment[3] = {0.0}; @@ -840,18 +843,21 @@ void SphericParticle::ComputeRollingFriction(array_1d& rolling_resist rolling_resistance_moment[0] -= CoordSystemMoment[0] * RollingResistance; rolling_resistance_moment[1] -= CoordSystemMoment[1] * RollingResistance; rolling_resistance_moment[2] -= CoordSystemMoment[2] * RollingResistance; + + inelastic_rollresist_energy += fabs(DEM_INNER_PRODUCT_3(rolling_resistance_moment, central_node.FastGetSolutionStepValue(DELTA_ROTATION))); } else { rolling_resistance_moment = - mContactMoment; mContactMoment = - initial_rotation_moment; + + inelastic_rollresist_energy += fabs(DEM_INNER_PRODUCT_3(MaxRotaMoment, central_node.FastGetSolutionStepValue(DELTA_ROTATION))); } } void SphericParticle::ComputeBallToBallContactForce(SphericParticle::ParticleDataBuffer & data_buffer, const ProcessInfo& r_process_info, array_1d& r_elastic_force, - array_1d& r_contact_force, - double& RollingResistance) + array_1d& r_contact_force) { KRATOS_TRY @@ -917,7 +923,7 @@ void SphericParticle::ComputeBallToBallContactForce(SphericParticle::ParticleDat // ROTATION FORCES if (this->Is(DEMFlags::HAS_ROTATION) && !data_buffer.mMultiStageRHS) { - ComputeMoments(LocalContactForce[2], GlobalContactForce, RollingResistance, data_buffer.mLocalCoordSystem[2], data_buffer.mpOtherParticle, data_buffer.mIndentation, i); + ComputeMoments(LocalContactForce[2], GlobalContactForce, data_buffer.mRollingResistance, data_buffer.mLocalCoordSystem[2], data_buffer.mpOtherParticle, data_buffer.mIndentation, i); } if (this->Is(DEMFlags::HAS_STRESS_TENSOR)) { @@ -932,7 +938,7 @@ void SphericParticle::ComputeBallToBallContactForce(SphericParticle::ParticleDat } // Store contact information needed for later processes - StoreBallToBallContactInfo(r_process_info, data_buffer, data_buffer.mpOtherParticle, GlobalContactForce, sliding); + StoreBallToBallContactInfo(r_process_info, data_buffer, GlobalContactForce, LocalContactForce, ViscoDampingLocalContactForce, sliding); DEM_SET_COMPONENTS_TO_ZERO_3(DeltDisp) DEM_SET_COMPONENTS_TO_ZERO_3(LocalDeltDisp) @@ -985,7 +991,6 @@ void SphericParticle::EvaluateBallToBallForcesForPositiveIndentiations(SphericPa void SphericParticle::ComputeBallToRigidFaceContactForce(SphericParticle::ParticleDataBuffer & data_buffer, array_1d& r_elastic_force, array_1d& r_contact_force, - double& RollingResistance, array_1d& rigid_element_force, const ProcessInfo& r_process_info) { @@ -1000,7 +1005,11 @@ void SphericParticle::ComputeBallToRigidFaceContactForce(SphericParticle::Partic for (unsigned int i = 0; i < rNeighbours.size(); i++) { DEMWall* wall = rNeighbours[i]; - if(wall == NULL) continue; + if (wall == NULL) + continue; + else + data_buffer.mpOtherRigidFace = wall; + if(this->Is(DEMFlags::STICKY)) { DEMIntegrationScheme& dem_scheme = this->GetTranslationalIntegrationScheme(); GluedToWallScheme* p_glued_scheme = dynamic_cast(&dem_scheme); @@ -1112,7 +1121,7 @@ void SphericParticle::ComputeBallToRigidFaceContactForce(SphericParticle::Partic rigid_element_force[2] -= GlobalContactForce[2]; if (this->Is(DEMFlags::HAS_ROTATION)) { - ComputeMomentsWithWalls(LocalContactForce[2], GlobalContactForce, RollingResistance, data_buffer.mLocalCoordSystem[2], wall, indentation, i); //WARNING: sending itself as the neighbor!! + ComputeMomentsWithWalls(LocalContactForce[2], GlobalContactForce, data_buffer.mRollingResistance, data_buffer.mLocalCoordSystem[2], wall, indentation, i); //WARNING: sending itself as the neighbor!! } //WEAR @@ -1132,7 +1141,7 @@ void SphericParticle::ComputeBallToRigidFaceContactForce(SphericParticle::Partic } // Store contact information needed for later processes - StoreBallToRigidFaceContactInfo(r_process_info, data_buffer, wall, GlobalContactForce, sliding); + StoreBallToRigidFaceContactInfo(r_process_info, data_buffer, GlobalContactForce, LocalContactForce, ViscoDampingLocalContactForce, sliding); } //ContactType if } //rNeighbours.size loop @@ -1270,7 +1279,7 @@ void SphericParticle::ComputeBallToRigidFaceContactForce(SphericParticle::Partic wall->SetValue(EXTERNAL_FORCES_VECTOR, GlobalContactForceVector); if (this->Is(DEMFlags::HAS_ROTATION)) { - ComputeMomentsWithWalls(LocalContactForce[2], GlobalContactForce, RollingResistance, data_buffer.mLocalCoordSystem[2], wall, indentation, i); //WARNING: sending itself as the neighbor!! + ComputeMomentsWithWalls(LocalContactForce[2], GlobalContactForce, data_buffer.mRollingResistance, data_buffer.mLocalCoordSystem[2], wall, indentation, i); //WARNING: sending itself as the neighbor!! } if (this->Is(DEMFlags::HAS_STRESS_TENSOR)) { @@ -1931,9 +1940,9 @@ std::unique_ptr SphericParticle::pCloneDiscontin void SphericParticle::ComputeOtherBallToBallForces(array_1d& other_ball_to_ball_forces) {} -void SphericParticle::StoreBallToBallContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, SphericParticle* other_element, double GlobalContactForce[3], bool sliding) {} +void SphericParticle::StoreBallToBallContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, double GlobalContactForceTotal[3], double LocalContactForceTotal[3], double LocalContactForceDamping[3], bool sliding) {} -void SphericParticle::StoreBallToRigidFaceContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, DEMWall* other_element, double GlobalContactForce[3], bool sliding) {} +void SphericParticle::StoreBallToRigidFaceContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, double GlobalContactForceTotal[3], double LocalContactForceTotal[3], double LocalContactForceDamping[3], bool sliding) {} double SphericParticle::GetInitialDeltaWithFEM(int index) {//only available in continuum_particle return 0.0; @@ -1962,6 +1971,15 @@ void SphericParticle::Calculate(const Variable& rVariable, double& Outpu return; } + if (rVariable == PARTICLE_GRAVITATIONAL_ENERGY) { + + // Energy relative to the distance from particle to plane containing the origin and whose normal vector is gravity + const double coord[3] = { this->GetGeometry()[0][0], this->GetGeometry()[0][1], this->GetGeometry()[0][2] }; + Output = - this->GetMass() * DEM_INNER_PRODUCT_3(r_process_info[GRAVITY], coord); + + return; + } + if (rVariable == PARTICLE_ELASTIC_ENERGY) { Output = GetElasticEnergy(); @@ -1980,6 +1998,12 @@ void SphericParticle::Calculate(const Variable& rVariable, double& Outpu } + if (rVariable == PARTICLE_INELASTIC_ROLLING_RESISTANCE_ENERGY) { + + Output = GetInelasticRollResistEnergy(); + + } + AdditionalCalculate(rVariable, Output, r_process_info); KRATOS_CATCH("") @@ -2204,6 +2228,7 @@ array_1d& SphericParticle::GetForce() double& SphericParticle::GetElasticEnergy() { return mElasticEnergy; } double& SphericParticle::GetInelasticFrictionalEnergy() { return mInelasticFrictionalEnergy; } double& SphericParticle::GetInelasticViscodampingEnergy() { return mInelasticViscodampingEnergy; } +double& SphericParticle::GetInelasticRollResistEnergy() { return mInelasticRollResistEnergy; } void SphericParticle::SetYoungFromProperties(double* young) { GetFastProperties()->SetYoungFromProperties( young); } void SphericParticle::SetPoissonFromProperties(double* poisson) { GetFastProperties()->SetPoissonFromProperties( poisson); } diff --git a/applications/DEMApplication/custom_elements/spheric_particle.h b/applications/DEMApplication/custom_elements/spheric_particle.h index aab2d0e29a5e..cf28cf6cf8e6 100644 --- a/applications/DEMApplication/custom_elements/spheric_particle.h +++ b/applications/DEMApplication/custom_elements/spheric_particle.h @@ -96,6 +96,7 @@ double mRadiusSum; double mDt; double mOtherRadius; double mIndentation; +double mRollingResistance; double mMyCoors[3]; double mOtherCoors[3]; double mLocalRelVel[3]; @@ -105,6 +106,7 @@ array_1d mDomainMax; SphericParticle* mpThisParticle; SphericParticle* mpOtherParticle; Node<3>* mpOtherParticleNode; +DEMWall* mpOtherRigidFace; double mLocalCoordSystem[3][3]; double mOldLocalCoordSystem[3][3]; @@ -211,6 +213,7 @@ array_1d& GetForce(); virtual double& GetElasticEnergy(); virtual double& GetInelasticFrictionalEnergy(); virtual double& GetInelasticViscodampingEnergy(); +virtual double& GetInelasticRollResistEnergy(); PropertiesProxy* GetFastProperties(); void SetFastProperties(PropertiesProxy* pProps); @@ -238,6 +241,7 @@ virtual void PrintInfo(std::ostream& rOStream) const override {rOStream << "Sphe double mElasticEnergy; double mInelasticFrictionalEnergy; double mInelasticViscodampingEnergy; +double mInelasticRollResistEnergy; double mPartialRepresentativeVolume; std::vector mBondElements; @@ -278,7 +282,6 @@ std::unique_ptr pCloneDiscontinuumConstitutiveLa virtual void ComputeBallToRigidFaceContactForce(ParticleDataBuffer & data_buffer, array_1d& rElasticForce, array_1d& rContactForce, - double& RollingResistance, array_1d& rigid_element_force, const ProcessInfo& r_process_info) ; @@ -289,8 +292,7 @@ virtual void CalculateLocalAngularMomentum(array_1d& rAngularMomentum virtual void ComputeBallToBallContactForce(ParticleDataBuffer & data_buffer, const ProcessInfo& r_process_info, array_1d& rElasticForce, - array_1d& rContactForce, - double& RollingResistance); + array_1d& rContactForce); virtual void EvaluateDeltaDisplacement(ParticleDataBuffer & data_buffer, double DeltDisp[3], @@ -359,9 +361,9 @@ virtual double GetInitialDeltaWithFEM(int index); virtual void ComputeOtherBallToBallForces(array_1d& other_ball_to_ball_forces); -virtual void StoreBallToBallContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, SphericParticle* other_element, double GlobalContactForce[3], bool sliding); +virtual void StoreBallToBallContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, double GlobalContactForceTotal[3], double LocalContactForceTotal[3], double LocalContactForceDamping[3], bool sliding); -virtual void StoreBallToRigidFaceContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, DEMWall* other_element, double GlobalContactForce[3], bool sliding); +virtual void StoreBallToRigidFaceContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, double GlobalContactForceTotal[3], double LocalContactForceTotal[3], double LocalContactForceDamping[3], bool sliding); virtual void EvaluateBallToBallForcesForPositiveIndentiations(SphericParticle::ParticleDataBuffer & data_buffer, const ProcessInfo& r_process_info, @@ -461,6 +463,7 @@ virtual void save(Serializer& rSerializer) const override rSerializer.save("mElasticEnergy", mElasticEnergy); rSerializer.save("mInelasticFrictionalEnergy", mInelasticFrictionalEnergy); rSerializer.save("mInelasticViscodampingEnergy", mInelasticViscodampingEnergy); + rSerializer.save("mInelasticRollResistEnergy", mInelasticRollResistEnergy); rSerializer.save("mPartialRepresentativeVolume", mPartialRepresentativeVolume); rSerializer.save("mBondElements", mBondElements); rSerializer.save("mNeighbourElements", mNeighbourElements); @@ -503,6 +506,7 @@ virtual void load(Serializer& rSerializer) override rSerializer.load("mElasticEnergy", mElasticEnergy); rSerializer.load("mInelasticFrictionalEnergy", mInelasticFrictionalEnergy); rSerializer.load("mInelasticViscodampingEnergy", mInelasticViscodampingEnergy); + rSerializer.load("mInelasticRollResistEnergy", mInelasticRollResistEnergy); rSerializer.load("mPartialRepresentativeVolume", mPartialRepresentativeVolume); rSerializer.load("mBondElements", mBondElements); rSerializer.load("mNeighbourElements", mNeighbourElements); diff --git a/applications/DEMApplication/custom_python/DEM_python_application.cpp b/applications/DEMApplication/custom_python/DEM_python_application.cpp index 048b23bccb47..ebaf77cc7ced 100755 --- a/applications/DEMApplication/custom_python/DEM_python_application.cpp +++ b/applications/DEMApplication/custom_python/DEM_python_application.cpp @@ -290,6 +290,7 @@ PYBIND11_MODULE(KratosDEMApplication,m) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, PARTICLE_GRAVITATIONAL_ENERGY) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, PARTICLE_INELASTIC_VISCODAMPING_ENERGY) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, PARTICLE_INELASTIC_FRICTIONAL_ENERGY) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, PARTICLE_INELASTIC_ROLLING_RESISTANCE_ENERGY) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, COMPUTE_ENERGY_OPTION) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, GLOBAL_DAMPING) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, NORMAL_IMPACT_VELOCITY) diff --git a/applications/DEMApplication/custom_strategies/strategies/explicit_solver_strategy.cpp b/applications/DEMApplication/custom_strategies/strategies/explicit_solver_strategy.cpp index 47145920edf8..05819dd45fef 100644 --- a/applications/DEMApplication/custom_strategies/strategies/explicit_solver_strategy.cpp +++ b/applications/DEMApplication/custom_strategies/strategies/explicit_solver_strategy.cpp @@ -1801,6 +1801,8 @@ namespace Kratos { total_inelastic_frictional_energy = 0.0; double& total_inelastic_viscodamping_energy = r_process_info[PARTICLE_INELASTIC_VISCODAMPING_ENERGY]; total_inelastic_viscodamping_energy = 0.0; + double& total_inelastic_rollresist_energy = r_process_info[PARTICLE_INELASTIC_ROLLING_RESISTANCE_ENERGY]; + total_inelastic_rollresist_energy = 0.0; KRATOS_CATCH("") } diff --git a/applications/DEMApplication/custom_utilities/particle_data.h b/applications/DEMApplication/custom_utilities/particle_data.h index 05ab09972c53..bcb733b1de12 100755 --- a/applications/DEMApplication/custom_utilities/particle_data.h +++ b/applications/DEMApplication/custom_utilities/particle_data.h @@ -11,7 +11,7 @@ // System includes #include #include -#include +#include // External includes diff --git a/applications/DEMApplication/custom_utilities/pre_utilities.h b/applications/DEMApplication/custom_utilities/pre_utilities.h index addc0d5ee6e2..20335edb8aa3 100644 --- a/applications/DEMApplication/custom_utilities/pre_utilities.h +++ b/applications/DEMApplication/custom_utilities/pre_utilities.h @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include diff --git a/applications/DEMApplication/python_scripts/DEM_procedures.py b/applications/DEMApplication/python_scripts/DEM_procedures.py index bbe390f96e24..48840bb98a3c 100644 --- a/applications/DEMApplication/python_scripts/DEM_procedures.py +++ b/applications/DEMApplication/python_scripts/DEM_procedures.py @@ -1653,7 +1653,7 @@ def InitializeResults(self, spheres_model_part, rigid_face_model_part, cluster_m if self.contact_mesh_option: #We overwrite the Id of the properties 0 not to overlap with other entities that use layer 0 for PRINTING - contact_model_part.GetProperties(0)[0].Id = 9184 + contact_model_part.GetProperties(0).Id = 9184 self.gid_io.WriteMesh(contact_model_part.GetCommunicator().LocalMesh()) self.gid_io.WriteMesh(rigid_face_model_part.GetCommunicator().LocalMesh()) diff --git a/applications/DamApplication/custom_elements/small_displacement_interface_element.cpp b/applications/DamApplication/custom_elements/small_displacement_interface_element.cpp index 69a2ae8f2fa8..36063d2bd65e 100644 --- a/applications/DamApplication/custom_elements/small_displacement_interface_element.cpp +++ b/applications/DamApplication/custom_elements/small_displacement_interface_element.cpp @@ -144,7 +144,7 @@ void SmallDisplacementInterfaceElement::GetDofList(DofsVectorTyp { rElementalDofList[index++] = GetGeometry()[i].pGetDof(DISPLACEMENT_X); rElementalDofList[index++] = GetGeometry()[i].pGetDof(DISPLACEMENT_Y); - if(TDim>2) + if constexpr (TDim>2) rElementalDofList[index++] = GetGeometry()[i].pGetDof(DISPLACEMENT_Z); } @@ -1031,35 +1031,13 @@ void SmallDisplacementInterfaceElement<2,4>::CalculateRotationMatrix(BoundedMatr rRotationMatrix(0,0) = Vx[0]; rRotationMatrix(0,1) = Vx[1]; - // We need to determine the unitary vector in local y direction pointing towards the TOP face of the joint + // NOTE. Assuming that the nodes in quadrilateral_interface_2d_4 are + // ordered clockwise (GiD does so), the rotation matrix is build like follows: + rRotationMatrix(1,0) = Vx[1]; + rRotationMatrix(1,1) = -Vx[0]; - // Unitary vector in local x direction (3D) - array_1d Vx3D; - Vx3D[0] = Vx[0]; - Vx3D[1] = Vx[1]; - Vx3D[2] = 0.0; - - // Unitary vector in local y direction (first option) - array_1d Vy3D; - Vy3D[0] = -Vx[1]; - Vy3D[1] = Vx[0]; - Vy3D[2] = 0.0; - - // Vector in global z direction (first option) - array_1d Vz; - MathUtils::CrossProduct(Vz, Vx3D, Vy3D); - - // Vz must have the same sign as vector (0,0,1) - if(Vz[2] > 0.0) - { - rRotationMatrix(1,0) = -Vx[1]; - rRotationMatrix(1,1) = Vx[0]; - } - else - { - rRotationMatrix(1,0) = Vx[1]; - rRotationMatrix(1,1) = -Vx[0]; - } + // NOTE. In zero-thickness quadrilateral_interface_2d_4 elements we are not able to know + // whether the nodes are ordered clockwise or counter-clockwise. KRATOS_CATCH( "" ) } diff --git a/applications/DelaunayMeshingApplication/DelaunayMeshingApplication.json b/applications/DelaunayMeshingApplication/DelaunayMeshingApplication.json index 3335bb34b0d0..5648c781f6c9 100644 --- a/applications/DelaunayMeshingApplication/DelaunayMeshingApplication.json +++ b/applications/DelaunayMeshingApplication/DelaunayMeshingApplication.json @@ -7,5 +7,6 @@ "author": "Kratos Team", "author_email": "kratos@listas.cimne.upc.edu", "description": "KRATOS Multiphysics (\"Kratos\") is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.", - "readme": "applications/DelaunayMeshingApplication/README.md" + "readme": "applications/DelaunayMeshingApplication/README.md", + "licence": "OSI Approved :: GNU Affero General Public License v3" } diff --git a/applications/DropletDynamicsApplication/custom_elements/droplet_dynamics_element.cpp b/applications/DropletDynamicsApplication/custom_elements/droplet_dynamics_element.cpp index 1a151b7597c2..171bb2af0c66 100644 --- a/applications/DropletDynamicsApplication/custom_elements/droplet_dynamics_element.cpp +++ b/applications/DropletDynamicsApplication/custom_elements/droplet_dynamics_element.cpp @@ -79,7 +79,7 @@ void DropletDynamicsElement::CalculateLocalSystem( noalias(rLeftHandSideMatrix) = ZeroMatrix(LocalSize, LocalSize); noalias(rRightHandSideVector) = ZeroVector(LocalSize); - if (TElementData::ElementManagesTimeIntegration){ + if constexpr (TElementData::ElementManagesTimeIntegration){ TElementData data; data.Initialize(*this, rCurrentProcessInfo); diff --git a/applications/DropletDynamicsApplication/symbolic_generation/droplet_dynamics_template.cpp b/applications/DropletDynamicsApplication/symbolic_generation/droplet_dynamics_template.cpp index 1c126011e756..d6db7f234b68 100644 --- a/applications/DropletDynamicsApplication/symbolic_generation/droplet_dynamics_template.cpp +++ b/applications/DropletDynamicsApplication/symbolic_generation/droplet_dynamics_template.cpp @@ -78,7 +78,7 @@ void DropletDynamicsElement::CalculateLocalSystem( noalias(rLeftHandSideMatrix) = ZeroMatrix(LocalSize, LocalSize); noalias(rRightHandSideVector) = ZeroVector(LocalSize); - if (TElementData::ElementManagesTimeIntegration){ + if constexpr (TElementData::ElementManagesTimeIntegration){ TElementData data; data.Initialize(*this, rCurrentProcessInfo); diff --git a/applications/FSIApplication/custom_utilities/partitioned_fsi_utilities.hpp b/applications/FSIApplication/custom_utilities/partitioned_fsi_utilities.hpp index ff8e2efa52a5..230488a6fc66 100644 --- a/applications/FSIApplication/custom_utilities/partitioned_fsi_utilities.hpp +++ b/applications/FSIApplication/custom_utilities/partitioned_fsi_utilities.hpp @@ -700,7 +700,7 @@ class PartitionedFSIUtilities std::string GetSkinElementName() { std::string element_name; - if (TDim == 2) { + if constexpr (TDim == 2) { element_name = "Element2D2N"; } else { element_name = "Element3D3N"; @@ -716,7 +716,7 @@ class PartitionedFSIUtilities */ std::string GetSkinConditionName() { - if (TDim == 2) { + if constexpr (TDim == 2) { return "LineCondition2D2N"; } else { return "SurfaceCondition3D3N"; diff --git a/applications/FemToDemApplication/custom_processes/extend_pressure_condition_process.cpp b/applications/FemToDemApplication/custom_processes/extend_pressure_condition_process.cpp index 1c6474ce41ea..6f40c0f43adf 100644 --- a/applications/FemToDemApplication/custom_processes/extend_pressure_condition_process.cpp +++ b/applications/FemToDemApplication/custom_processes/extend_pressure_condition_process.cpp @@ -311,7 +311,7 @@ void ExtendPressureConditionProcess::Execute() { // We search the neighbours for the generation of line loads auto find_neigh = GenericFindElementalNeighboursProcess(mrModelPart); - find_neigh.ExecuteInitialize(); + find_neigh.Execute(); auto& r_process_info = mrModelPart.GetProcessInfo(); // Remove previous line loads-> Only the 1st iteration diff --git a/applications/FemToDemApplication/custom_processes/regenerate_pfem_pressure_conditions_process.cpp b/applications/FemToDemApplication/custom_processes/regenerate_pfem_pressure_conditions_process.cpp index 17e1edff432e..cbb96622c6e6 100644 --- a/applications/FemToDemApplication/custom_processes/regenerate_pfem_pressure_conditions_process.cpp +++ b/applications/FemToDemApplication/custom_processes/regenerate_pfem_pressure_conditions_process.cpp @@ -205,7 +205,7 @@ void RegeneratePfemPressureConditionsProcess::Execute() { // We search the neighbours for the generation of line loads auto find_neigh = GenericFindElementalNeighboursProcess(mrModelPart); - find_neigh.ExecuteInitialize(); + find_neigh.Execute(); if (!mrModelPart.HasSubModelPart("PFEMPressureConditions")) { mrModelPart.CreateSubModelPart("PFEMPressureConditions"); diff --git a/applications/FemToDemApplication/custom_strategies/residualbased_DEM_coupled_newton_raphson_strategy.h b/applications/FemToDemApplication/custom_strategies/residualbased_DEM_coupled_newton_raphson_strategy.h index d8dab50d9c3b..184094ff0db8 100644 --- a/applications/FemToDemApplication/custom_strategies/residualbased_DEM_coupled_newton_raphson_strategy.h +++ b/applications/FemToDemApplication/custom_strategies/residualbased_DEM_coupled_newton_raphson_strategy.h @@ -356,10 +356,8 @@ class ResidualBasedDEMCoupledNewtonRaphsonStrategy BaseType::Initialize(); //initialize solution step - if (this->mSolutionStepIsInitialized == false) { - BaseType::InitializeSolutionStep(); - mpDEMStrategy->InitializeSolutionStep(); - } + BaseType::InitializeSolutionStep(); + mpDEMStrategy->InitializeSolutionStep(); TSystemMatrixType& rA = *this->mpA; TSystemVectorType& rDx = *this->mpDx; diff --git a/applications/FemToDemApplication/python_scripts/MainCouplingFemDem.py b/applications/FemToDemApplication/python_scripts/MainCouplingFemDem.py index 4a9d12c1c520..696a11d60e19 100644 --- a/applications/FemToDemApplication/python_scripts/MainCouplingFemDem.py +++ b/applications/FemToDemApplication/python_scripts/MainCouplingFemDem.py @@ -355,7 +355,7 @@ def FindNeighboursIfNecessary(self): self.nodal_neighbour_finder.Execute() else: # 2D neighbour_elemental_finder = KratosMultiphysics.GenericFindElementalNeighboursProcess(self.FEM_Solution.main_model_part) - neighbour_elemental_finder.ExecuteInitialize() + neighbour_elemental_finder.Execute() #PerformRemeshingIfNecessary============================================================================================================================ def PerformRemeshingIfNecessary(self): @@ -396,7 +396,7 @@ def PerformRemeshingIfNecessary(self): else: # 2D self.InitializeSolutionAfterRemeshing() neighbour_elemental_finder = KratosMultiphysics.GenericFindElementalNeighboursProcess(self.FEM_Solution.main_model_part) - neighbour_elemental_finder.ExecuteInitialize() + neighbour_elemental_finder.Execute() #RefineMappedVariables============================================================================================================================ def RefineMappedVariables(self): diff --git a/applications/FemToDemApplication/python_scripts/MainFEM_for_coupling.py b/applications/FemToDemApplication/python_scripts/MainFEM_for_coupling.py index 5d814c2c32b5..f8fb543c15c2 100644 --- a/applications/FemToDemApplication/python_scripts/MainFEM_for_coupling.py +++ b/applications/FemToDemApplication/python_scripts/MainFEM_for_coupling.py @@ -77,7 +77,7 @@ def Initialize(self): if (self.ProjectParameters["solver_settings"]["strategy_type"].GetString() == "arc_length"): neighbour_elemental_finder = KratosMultiphysics.GenericFindElementalNeighboursProcess(self.main_model_part) - neighbour_elemental_finder.ExecuteInitialize() + neighbour_elemental_finder.Execute() self.InitializeIntegrationPointsVariables() self.model_processes.ExecuteBeforeSolutionLoop() self.model_processes.ExecuteInitializeSolutionStep() diff --git a/applications/FluidDynamicsApplication/CMakeLists.txt b/applications/FluidDynamicsApplication/CMakeLists.txt index bdb4e5edff59..43f87253bf7e 100644 --- a/applications/FluidDynamicsApplication/CMakeLists.txt +++ b/applications/FluidDynamicsApplication/CMakeLists.txt @@ -94,6 +94,7 @@ set( KRATOS_FLUID_DYNAMICS_APPLICATION_CORE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/custom_processes/two_fluids_inlet_process.cpp ${CMAKE_CURRENT_SOURCE_DIR}/custom_processes/shock_capturing_entropy_viscosity_process.cpp ${CMAKE_CURRENT_SOURCE_DIR}/custom_processes/shock_capturing_physics_based_process.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/custom_processes/compute_y_plus_process.cpp ) ## define python interface sources diff --git a/applications/FluidDynamicsApplication/custom_elements/compressible_navier_stokes_explicit.h b/applications/FluidDynamicsApplication/custom_elements/compressible_navier_stokes_explicit.h index 7b9da75ea8eb..6fa07c5251b6 100644 --- a/applications/FluidDynamicsApplication/custom_elements/compressible_navier_stokes_explicit.h +++ b/applications/FluidDynamicsApplication/custom_elements/compressible_navier_stokes_explicit.h @@ -541,7 +541,7 @@ int CompressibleNavierStokesExplicit::Check(const ProcessInfo & // Activate as soon as we start using the explicit DOF based strategy KRATOS_ERROR_IF_NOT(this->GetGeometry()[i].HasDofFor(DENSITY)) << "Missing DENSITY DOF in node ", this->GetGeometry()[i].Id(); KRATOS_ERROR_IF_NOT(this->GetGeometry()[i].HasDofFor(MOMENTUM_X) || this->GetGeometry()[i].HasDofFor(MOMENTUM_Y)) << "Missing MOMENTUM component DOF in node ", this->GetGeometry()[i].Id(); - if (TDim == 3) { + if constexpr (TDim == 3) { KRATOS_ERROR_IF_NOT(this->GetGeometry()[i].HasDofFor(MOMENTUM_Z)) << "Missing MOMENTUM component DOF in node ", this->GetGeometry()[i].Id(); } KRATOS_ERROR_IF_NOT(this->GetGeometry()[i].HasDofFor(TOTAL_ENERGY)) << "Missing TOTAL_ENERGY DOF in node ", this->GetGeometry()[i].Id(); @@ -1035,7 +1035,7 @@ const Parameters CompressibleNavierStokesExplicit::GetSpecifica "This element implements a compressible Navier-Stokes formulation written in conservative variables. A Variational MultiScales (VMS) stabilization technique, both with Algebraic SubGrid Scales (ASGS) and Orthogonal Subgrid Scales (OSS), is used. This element is compatible with both entropy-based and physics-based shock capturing techniques." })"); - if (TDim == 2) { + if constexpr (TDim == 2) { std::vector dofs_2d({"DENSITY","MOMENTUM_X","MOMENTUM_Y","TOTAL_ENERGY"}); specifications["required_dofs"].SetStringArray(dofs_2d); } else { diff --git a/applications/FluidDynamicsApplication/custom_elements/dpg_vms.h b/applications/FluidDynamicsApplication/custom_elements/dpg_vms.h index 87930aa048b7..ec73646480d2 100644 --- a/applications/FluidDynamicsApplication/custom_elements/dpg_vms.h +++ b/applications/FluidDynamicsApplication/custom_elements/dpg_vms.h @@ -1255,7 +1255,7 @@ class DPGVMS : public VMS const array_1d& rShapeFunc, const BoundedMatrix& rShapeDeriv, const double Weight, - const Matrix gauss_enriched_gradients) + const Matrix& gauss_enriched_gradients) { const unsigned int BlockSize = TDim + 1; diff --git a/applications/FluidDynamicsApplication/custom_elements/dynamic_vms.cpp b/applications/FluidDynamicsApplication/custom_elements/dynamic_vms.cpp index bcd67f89da52..4313c48bec9d 100644 --- a/applications/FluidDynamicsApplication/custom_elements/dynamic_vms.cpp +++ b/applications/FluidDynamicsApplication/custom_elements/dynamic_vms.cpp @@ -534,7 +534,7 @@ void DynamicVMS::SetValuesOnIntegrationPoints(const Variable &rVar // for (unsigned int g = 0; g < NumGauss; g++) // mExtraTerm[g][1] = rValues[g]; // } -// else if (TDim == 2 && rVariable == SUBSCALE_VELOCITY_Z) +// else if constexpr (TDim == 2 && rVariable == SUBSCALE_VELOCITY_Z) // { // for (unsigned int g = 0; g < NumGauss; g++) // mExtraTerm[g][2] = rValues[g]; diff --git a/applications/FluidDynamicsApplication/custom_elements/embedded_ausas_navier_stokes.h b/applications/FluidDynamicsApplication/custom_elements/embedded_ausas_navier_stokes.h index 46f90e97c7bd..843d5ec6ccc7 100644 --- a/applications/FluidDynamicsApplication/custom_elements/embedded_ausas_navier_stokes.h +++ b/applications/FluidDynamicsApplication/custom_elements/embedded_ausas_navier_stokes.h @@ -518,7 +518,7 @@ class EmbeddedAusasNavierStokes : public Element // Construct the modified shape fucntions utility ModifiedShapeFunctions::Pointer p_ausas_modified_sh_func = nullptr; - if (TNumNodes == 4) { + if constexpr (TNumNodes == 4) { p_ausas_modified_sh_func = Kratos::make_shared(p_geom, distances); } else { p_ausas_modified_sh_func = Kratos::make_shared(p_geom, distances); @@ -1238,7 +1238,7 @@ class EmbeddedAusasNavierStokes : public Element rVoigtNormProjMatrix.clear(); - if (TDim == 3) { + if constexpr (TDim == 3) { rVoigtNormProjMatrix(0,0) = rUnitNormal(0); rVoigtNormProjMatrix(0,3) = rUnitNormal(1); rVoigtNormProjMatrix(0,5) = rUnitNormal(2); diff --git a/applications/FluidDynamicsApplication/custom_elements/embedded_navier_stokes.h b/applications/FluidDynamicsApplication/custom_elements/embedded_navier_stokes.h index c3cb5f68e6bb..0417f2c37f15 100644 --- a/applications/FluidDynamicsApplication/custom_elements/embedded_navier_stokes.h +++ b/applications/FluidDynamicsApplication/custom_elements/embedded_navier_stokes.h @@ -190,7 +190,7 @@ class EmbeddedNavierStokes : public NavierStokes // Construct the modified shape fucntions utility ModifiedShapeFunctions::Pointer p_modified_sh_func = nullptr; - if (TNumNodes == 4) { + if constexpr (TNumNodes == 4) { p_modified_sh_func = Kratos::make_shared(p_geom, distances); } else { p_modified_sh_func = Kratos::make_shared(p_geom, distances); @@ -1235,7 +1235,7 @@ class EmbeddedNavierStokes : public NavierStokes constexpr unsigned int BlockSize = TDim+1; rB_matrix.clear(); - if (TDim == 3) { + if constexpr (TDim == 3) { for (unsigned int i=0; i rNormProjMatrix.clear(); // Fill the normal projection matrix (nxn) - if (TDim == 3) { + if constexpr (TDim == 3) { noalias(rNormProjMatrix) = outer_prod(rUnitNormal, rUnitNormal); } else { rNormProjMatrix(0,0) = rUnitNormal(0)*rUnitNormal(0); @@ -1291,7 +1291,7 @@ class EmbeddedNavierStokes : public NavierStokes rTangProjMatrix.clear(); // Fill the tangential projection matrix (I - nxn) - if (TDim == 3) { + if constexpr (TDim == 3) { #ifdef KRATOS_USE_AMATRIX BoundedMatrix id_matrix = IdentityMatrix(TDim); #else @@ -1317,7 +1317,7 @@ class EmbeddedNavierStokes : public NavierStokes rVoigtNormProjMatrix.clear(); - if (TDim == 3) { + if constexpr (TDim == 3) { rVoigtNormProjMatrix(0,0) = rUnitNormal(0); rVoigtNormProjMatrix(0,3) = rUnitNormal(1); rVoigtNormProjMatrix(0,5) = rUnitNormal(2); diff --git a/applications/FluidDynamicsApplication/custom_elements/fluid_element.cpp b/applications/FluidDynamicsApplication/custom_elements/fluid_element.cpp index b95700a0833a..59d974c8b4d5 100644 --- a/applications/FluidDynamicsApplication/custom_elements/fluid_element.cpp +++ b/applications/FluidDynamicsApplication/custom_elements/fluid_element.cpp @@ -115,7 +115,7 @@ void FluidElement::CalculateLocalSystem(MatrixType& rLeftHandSideM noalias(rLeftHandSideMatrix) = ZeroMatrix(LocalSize, LocalSize); noalias(rRightHandSideVector) = ZeroVector(LocalSize); - if (TElementData::ElementManagesTimeIntegration) { + if constexpr (TElementData::ElementManagesTimeIntegration) { // Get Shape function data Vector gauss_weights; Matrix shape_functions; @@ -150,7 +150,7 @@ void FluidElement::CalculateLeftHandSide(MatrixType& rLeftHandSide noalias(rLeftHandSideMatrix) = ZeroMatrix(LocalSize, LocalSize); - if (TElementData::ElementManagesTimeIntegration) { + if constexpr (TElementData::ElementManagesTimeIntegration) { // Get Shape function data Vector gauss_weights; Matrix shape_functions; @@ -182,7 +182,7 @@ void FluidElement::CalculateRightHandSide(VectorType& rRightHandSi noalias(rRightHandSideVector) = ZeroVector(LocalSize); - if (TElementData::ElementManagesTimeIntegration) { + if constexpr (TElementData::ElementManagesTimeIntegration) { // Get Shape function data Vector gauss_weights; Matrix shape_functions; diff --git a/applications/FluidDynamicsApplication/custom_elements/fractional_step.cpp b/applications/FluidDynamicsApplication/custom_elements/fractional_step.cpp index c15902559a06..33f7b7994c66 100644 --- a/applications/FluidDynamicsApplication/custom_elements/fractional_step.cpp +++ b/applications/FluidDynamicsApplication/custom_elements/fractional_step.cpp @@ -820,7 +820,7 @@ int FractionalStep::Check(const ProcessInfo &rCurrentProcessInfo) const KRATOS_CHECK_DOF_IN_NODE(VELOCITY_X,rNode); KRATOS_CHECK_DOF_IN_NODE(VELOCITY_Y,rNode); - if (TDim == 3) KRATOS_CHECK_DOF_IN_NODE(VELOCITY_Z,rNode); + if constexpr (TDim == 3) KRATOS_CHECK_DOF_IN_NODE(VELOCITY_Z,rNode); KRATOS_CHECK_DOF_IN_NODE(PRESSURE,rNode); } @@ -862,7 +862,7 @@ const Parameters FractionalStep::GetSpecifications() const "documentation" : "This implements a fractional-step Navier-Stokes formulation with quasi-static Variational MultiScales (VMS) stabilization." })"); - if (TDim == 2) { + if constexpr (TDim == 2) { std::vector dofs_2d({"VELOCITY_X","VELOCITY_Y","PRESSURE"}); specifications["required_dofs"].SetStringArray(dofs_2d); } else { diff --git a/applications/FluidDynamicsApplication/custom_elements/spalart_allmaras.cpp b/applications/FluidDynamicsApplication/custom_elements/spalart_allmaras.cpp index 73b01f812ada..11667b669771 100644 --- a/applications/FluidDynamicsApplication/custom_elements/spalart_allmaras.cpp +++ b/applications/FluidDynamicsApplication/custom_elements/spalart_allmaras.cpp @@ -367,7 +367,7 @@ void SpalartAllmaras::AddConvection(MatrixType &rLHS, void SpalartAllmaras::AddModelTerms(MatrixType &rLHS, const double MolecularViscosity, const double LastEddyViscosity, - const array_1d rLastEddyViscosityGradient, + const array_1d& rLastEddyViscosityGradient, const double Distance, const array_1d &rVelocity, const ShapeFunctionsType &N, diff --git a/applications/FluidDynamicsApplication/custom_elements/spalart_allmaras.h b/applications/FluidDynamicsApplication/custom_elements/spalart_allmaras.h index 80f68d0764b1..50e97db6116c 100644 --- a/applications/FluidDynamicsApplication/custom_elements/spalart_allmaras.h +++ b/applications/FluidDynamicsApplication/custom_elements/spalart_allmaras.h @@ -238,7 +238,7 @@ class SpalartAllmaras : public Element void AddModelTerms(MatrixType& rLHS, const double MolecularViscosity, const double LastEddyViscosity, - const array_1d rLastEddyViscosityGradient, + const array_1d& rLastEddyViscosityGradient, const double Distance, const array_1d& rVelocity, const ShapeFunctionsType& N, diff --git a/applications/FluidDynamicsApplication/custom_elements/stationary_stokes.cpp b/applications/FluidDynamicsApplication/custom_elements/stationary_stokes.cpp index e202fcf71746..6f1e7e0ea2a4 100644 --- a/applications/FluidDynamicsApplication/custom_elements/stationary_stokes.cpp +++ b/applications/FluidDynamicsApplication/custom_elements/stationary_stokes.cpp @@ -169,7 +169,7 @@ void StationaryStokes::GetDofList(DofsVectorType &rElementalDofList, { rElementalDofList[Index++] = rGeom[i].pGetDof(VELOCITY_X); rElementalDofList[Index++] = rGeom[i].pGetDof(VELOCITY_Y); - if(TDim > 2) rElementalDofList[Index++] = rGeom[i].pGetDof(VELOCITY_Z); + if constexpr (TDim > 2) rElementalDofList[Index++] = rGeom[i].pGetDof(VELOCITY_Z); rElementalDofList[Index++] = rGeom[i].pGetDof(PRESSURE); } } @@ -191,7 +191,7 @@ void StationaryStokes::EquationIdVector(Element::EquationIdVectorType &rRe { rResult[Index++] = rGeom[i].GetDof(VELOCITY_X).EquationId(); rResult[Index++] = rGeom[i].GetDof(VELOCITY_Y).EquationId(); - if(TDim > 2) rResult[Index++] = rGeom[i].GetDof(VELOCITY_Z).EquationId(); + if constexpr (TDim > 2) rResult[Index++] = rGeom[i].GetDof(VELOCITY_Z).EquationId(); rResult[Index++] = rGeom[i].GetDof(PRESSURE).EquationId(); } } @@ -213,7 +213,7 @@ void StationaryStokes::GetFirstDerivativesVector(Vector &rValues, int Step { rValues[Index++] = rGeom[i].FastGetSolutionStepValue(VELOCITY_X,Step); rValues[Index++] = rGeom[i].FastGetSolutionStepValue(VELOCITY_Y,Step); - if(TDim > 2) rValues[Index++] = rGeom[i].FastGetSolutionStepValue(VELOCITY_Z,Step); + if constexpr (TDim > 2) rValues[Index++] = rGeom[i].FastGetSolutionStepValue(VELOCITY_Z,Step); rValues[Index++] = rGeom[i].FastGetSolutionStepValue(PRESSURE,Step); } } diff --git a/applications/FluidDynamicsApplication/custom_elements/two_fluid_navier_stokes.cpp b/applications/FluidDynamicsApplication/custom_elements/two_fluid_navier_stokes.cpp index c1033a30cfa3..c2bcf1934c0b 100644 --- a/applications/FluidDynamicsApplication/custom_elements/two_fluid_navier_stokes.cpp +++ b/applications/FluidDynamicsApplication/custom_elements/two_fluid_navier_stokes.cpp @@ -80,7 +80,7 @@ void TwoFluidNavierStokes::CalculateLocalSystem( noalias(rLeftHandSideMatrix) = ZeroMatrix(LocalSize, LocalSize); noalias(rRightHandSideVector) = ZeroVector(LocalSize); - if (TElementData::ElementManagesTimeIntegration){ + if constexpr (TElementData::ElementManagesTimeIntegration){ TElementData data; data.Initialize(*this, rCurrentProcessInfo); diff --git a/applications/FluidDynamicsApplication/custom_elements/two_fluid_navier_stokes_alpha_method.cpp b/applications/FluidDynamicsApplication/custom_elements/two_fluid_navier_stokes_alpha_method.cpp index 76b3e2368aab..8220b648f82b 100644 --- a/applications/FluidDynamicsApplication/custom_elements/two_fluid_navier_stokes_alpha_method.cpp +++ b/applications/FluidDynamicsApplication/custom_elements/two_fluid_navier_stokes_alpha_method.cpp @@ -77,7 +77,7 @@ Element::Pointer TwoFluidNavierStokesAlphaMethod::Create( template <> void TwoFluidNavierStokesAlphaMethod>::CalculateStrainRate(TwoFluidNavierStokesAlphaMethodData<2, 3>& rData) const { - const double alpha_f=1/(1+rData.MaxSprectraRadius); + const double alpha_f = 1/(1+rData.MaxSpectralRadius); const BoundedMatrix velocity_alpha = rData.Velocity_OldStep1+ alpha_f*(rData.Velocity-rData.Velocity_OldStep1); auto& rDNDX = rData.DN_DX; auto& r_strain_rate = rData.StrainRate; @@ -92,7 +92,7 @@ void TwoFluidNavierStokesAlphaMethod>: template <> void TwoFluidNavierStokesAlphaMethod>::CalculateStrainRate(TwoFluidNavierStokesAlphaMethodData<3, 4>& rData) const { - const double alpha_f=1/(1+rData.MaxSprectraRadius); + const double alpha_f = 1/(1+rData.MaxSpectralRadius); const BoundedMatrix velocity_alpha = rData.Velocity_OldStep1+ alpha_f*(rData.Velocity-rData.Velocity_OldStep1); auto& rDNDX = rData.DN_DX; auto& r_strain_rate = rData.StrainRate; @@ -120,12 +120,12 @@ void TwoFluidNavierStokesAlphaMethod>: const double dt = rData.DeltaTime; const double dyn_tau = rData.DynamicTau; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const auto &v = rData.Velocity; const auto &vn = rData.Velocity_OldStep1; const auto &vmesh = rData.MeshVelocity; const auto &vmeshn = rData.MeshVelocityOldStep; - const double alpha_f=1/(1+rData.MaxSprectraRadius); + const double alpha_f = 1/(1+rData.MaxSpectralRadius); const BoundedMatrix vconv =(vn-vmeshn)+ alpha_f*((v-vmesh)-(vn-vmeshn)); // Get constitutive matrix @@ -375,7 +375,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double rho = rData.Density; const double mu = rData.EffectiveViscosity; const double h = rData.ElementSize; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double dt = rData.DeltaTime; const double alpha_f=1/(1+max_spectral_radius); @@ -1041,7 +1041,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double dt = rData.DeltaTime; const auto &acceleration_alpha_method=rData.AccelerationAlphaMethod; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double alpha_f=1/(1+max_spectral_radius); const double dyn_tau = rData.DynamicTau; @@ -1066,7 +1066,7 @@ void TwoFluidNavierStokesAlphaMethod>: constexpr double stab_c2 = 2.0; // Mass correction term - const double volume_error_ratio = rData.VolumeError; + const double volume_error_ratio = rData.VolumeErrorRate; auto &rhs = rData.rhs; @@ -1153,7 +1153,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double h = rData.ElementSize; const auto &acceleration_alpha_method=rData.AccelerationAlphaMethod; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double dt = rData.DeltaTime; const double alpha_f=1/(1+max_spectral_radius); const double dyn_tau = rData.DynamicTau; @@ -1177,7 +1177,7 @@ void TwoFluidNavierStokesAlphaMethod>: constexpr double stab_c2 = 2.0; // Mass correction term - const double volume_error_ratio = rData.VolumeError; + const double volume_error_ratio = rData.VolumeErrorRate; auto &rhs = rData.rhs; @@ -1300,7 +1300,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double h = rData.ElementSize; const auto &acceleration_alpha_method=rData.AccelerationAlphaMethod; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double dt = rData.DeltaTime; const double alpha_f=1/(1+max_spectral_radius); @@ -1327,7 +1327,7 @@ void TwoFluidNavierStokesAlphaMethod>: constexpr double stab_c2 = 2.0; // Mass correction term - const double volume_error_ratio = rData.VolumeError; + const double volume_error_ratio = rData.VolumeErrorRate; auto &V = rData.V; auto &H = rData.H; @@ -1480,7 +1480,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double h = rData.ElementSize; const auto &acceleration_alpha_method=rData.AccelerationAlphaMethod; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double dt = rData.DeltaTime; const double alpha_f=1/(1-max_spectral_radius); @@ -1507,7 +1507,7 @@ void TwoFluidNavierStokesAlphaMethod>: constexpr double stab_c2 = 2.0; // Mass correction term - const double volume_error_ratio = rData.VolumeError; + const double volume_error_ratio = rData.VolumeErrorRate; auto &V = rData.V; auto &H = rData.H; @@ -1826,7 +1826,7 @@ void TwoFluidNavierStokesAlphaMethod::PressureGradientStabilizatio const double dt = rData.DeltaTime; const auto &v=rData.Velocity; const auto &vn = rData.Velocity_OldStep1; - const double alpha_m=0.5*((3-rData.MaxSprectraRadius)/(1+rData.MaxSprectraRadius)); + const double alpha_m = 0.5*((3-rData.MaxSpectralRadius)/(1+rData.MaxSpectralRadius)); const auto vmesh=rData.MeshVelocity; const auto vmeshn=rData.MeshVelocityOldStep; diff --git a/applications/FluidDynamicsApplication/custom_elements/two_fluid_vms.h b/applications/FluidDynamicsApplication/custom_elements/two_fluid_vms.h index 293c80bb812f..70136888c9cb 100644 --- a/applications/FluidDynamicsApplication/custom_elements/two_fluid_vms.h +++ b/applications/FluidDynamicsApplication/custom_elements/two_fluid_vms.h @@ -245,7 +245,7 @@ class TwoFluidVMS : public VMS //estimate a minimal h /*double h=0.0; - if(TDim == 3) h = pow(6.0*Area, 1.0/3.0); + if constexpr (TDim == 3) h = pow(6.0*Area, 1.0/3.0); else h = sqrt(2.0*Area);*/ diff --git a/applications/FluidDynamicsApplication/custom_elements/vms.h b/applications/FluidDynamicsApplication/custom_elements/vms.h index 61c358992c55..82f00407dca6 100644 --- a/applications/FluidDynamicsApplication/custom_elements/vms.h +++ b/applications/FluidDynamicsApplication/custom_elements/vms.h @@ -857,7 +857,7 @@ class VMS : public Element KRATOS_CHECK_DOF_IN_NODE(VELOCITY_X,rNode); KRATOS_CHECK_DOF_IN_NODE(VELOCITY_Y,rNode); - if (TDim == 3) KRATOS_CHECK_DOF_IN_NODE(VELOCITY_Z,rNode); + if constexpr (TDim == 3) KRATOS_CHECK_DOF_IN_NODE(VELOCITY_Z,rNode); KRATOS_CHECK_DOF_IN_NODE(PRESSURE,rNode); } // Not checking OSS related variables NODAL_AREA, ADVPROJ, DIVPROJ, which are only required as SolutionStepData if OSS_SWITCH == 1 diff --git a/applications/FluidDynamicsApplication/custom_processes/compute_y_plus_process.cpp b/applications/FluidDynamicsApplication/custom_processes/compute_y_plus_process.cpp new file mode 100644 index 000000000000..3f73da4d7029 --- /dev/null +++ b/applications/FluidDynamicsApplication/custom_processes/compute_y_plus_process.cpp @@ -0,0 +1,215 @@ +// | / | +// ' / __| _` | __| _ \ __| +// . \ | ( | | ( |\__ ` +// _|\_\_| \__,_|\__|\___/ ____/ +// Multi-Physics +// +// License: BSD License +// Kratos default license: kratos/license.txt +// +// Main authors: Suneth Warnakulasuriya +// + +// System includes +#include + +// External includes + +// Project includes +#include "includes/checks.h" +#include "utilities/normal_calculation_utils.h" +#include "utilities/parallel_utilities.h" +#include "includes/variables.h" + +// Application includes +#include "fluid_dynamics_application_variables.h" + +// Include base h +#include "compute_y_plus_process.h" + +namespace Kratos +{ +const Parameters ComputeYPlusProcess::GetDefaultParameters() const +{ + const auto default_parameters = Parameters(R"( + { + "model_part_name" : "PLEASE_SPECIFY_MAIN_MODEL_PART_NAME", + "output_variable_name" : "Y_PLUS", + "output_to_elements" : false, + "calculate_normals_every_time_step": false, + "echo_level" : 0 + })"); + + return default_parameters; +} + +ComputeYPlusProcess::ComputeYPlusProcess( + Model& rModel, + Parameters rParameters) + : mrModel(rModel) +{ + KRATOS_TRY + + rParameters.ValidateAndAssignDefaults(GetDefaultParameters()); + + mModelPartName = rParameters["model_part_name"].GetString(); + mOutputVariableName = rParameters["output_variable_name"].GetString(); + mIsOutputStoredInElements = rParameters["output_to_elements"].GetBool(); + mIsCalculatedEveryTimeStep = rParameters["calculate_normals_every_time_step"].GetBool(); + mEchoLevel = rParameters["echo_level"].GetInt(); + + mIsNormalsCalculated = false; + + KRATOS_ERROR_IF_NOT(KratosComponents>::Has(mOutputVariableName)) + << mOutputVariableName << " is not found in scalar variables list.\n"; + + KRATOS_CATCH(""); +} + +void ComputeYPlusProcess::ExecuteInitializeSolutionStep() +{ + KRATOS_TRY + + auto& r_model_part = mrModel.GetModelPart(mModelPartName); + + if (!mIsNormalsCalculated || mIsCalculatedEveryTimeStep) { + NormalCalculationUtils().CalculateNormals(r_model_part); + + KRATOS_INFO_IF(this->Info(), !mIsNormalsCalculated || mEchoLevel > 0) + << "Calculated normals in " << r_model_part.FullName() << ".\n"; + } + + mIsNormalsCalculated = true; + + KRATOS_CATCH(""); +} + +void ComputeYPlusProcess::ExecuteFinalizeSolutionStep() +{ + KRATOS_TRY + + auto& r_model_part = mrModel.GetModelPart(mModelPartName); + auto& r_output_variable = KratosComponents>::Get(mOutputVariableName); + + block_for_each(r_model_part.Conditions(), [&](ConditionType& rCondition) { + // calculate condition unit normal + array_1d r_condition_unit_normal = rCondition.GetValue(NORMAL); + r_condition_unit_normal /= norm_2(r_condition_unit_normal); + + // get parent element for which this condition belongs to + const auto& r_parent_element = rCondition.GetValue(NEIGHBOUR_ELEMENTS)[0]; + + // calculate wall height + const auto& r_parent_geometry = r_parent_element.GetGeometry(); + const auto& r_condition_geometry = rCondition.GetGeometry(); + + const auto& parent_center = r_parent_geometry.Center(); + const auto& condition_center = r_condition_geometry.Center(); + + const double y = inner_prod(condition_center - parent_center, r_condition_unit_normal); + + // calculate condition reaction + array_1d reaction{0.0, 0.0, 0.0}; + for (const auto& r_node : r_condition_geometry) { + const double nodal_area = norm_2(r_node.FastGetSolutionStepValue(NORMAL)); + noalias(reaction) += r_node.FastGetSolutionStepValue(REACTION) / nodal_area; + } + const double condition_area = r_condition_geometry.Area(); + reaction *= (condition_area / r_condition_geometry.PointsNumber()); + + + + // get fluid properties from parent element + const auto& r_properties = r_parent_element.GetProperties(); + const double density = r_properties[DENSITY]; + const double kinmeatic_viscosity = r_properties[DYNAMIC_VISCOSITY] / density; + + // calculate y+ + const array_1d& perpendicular_reaction = r_condition_unit_normal * inner_prod(reaction, r_condition_unit_normal); + const array_1d& tangential_reaction = reaction - perpendicular_reaction; + + const double shear_stress = norm_2(tangential_reaction) / condition_area; + const double u_tau = std::sqrt(shear_stress / density); + + rCondition.SetValue(r_output_variable, u_tau * y / kinmeatic_viscosity); + }); + + KRATOS_INFO_IF(this->Info(), mEchoLevel > 0) << "Calculated y_plus and stored under " + << mOutputVariableName << " in conditions of " << r_model_part.FullName() << ".\n"; + + if (mIsOutputStoredInElements) { + block_for_each(r_model_part.Conditions(), [&](ConditionType& rCondition) { + rCondition.GetValue(NEIGHBOUR_ELEMENTS)[0].SetValue(r_output_variable, rCondition.GetValue(r_output_variable)); + }); + + KRATOS_INFO_IF(this->Info(), mEchoLevel > 0)<< "Calculated y_plus and stored under " + << mOutputVariableName << " in parent elements of conditions of " + << r_model_part.FullName() << ".\n"; + } + + KRATOS_CATCH(""); +} + +int ComputeYPlusProcess::Check() +{ + KRATOS_TRY + + auto& r_model_part = mrModel.GetModelPart(mModelPartName); + + KRATOS_ERROR_IF_NOT(r_model_part.HasNodalSolutionStepVariable(REACTION)) + << "REACTION variable is not found in nodal solution step variables list of " + << r_model_part.FullName() << ".\n"; + + KRATOS_ERROR_IF_NOT(r_model_part.HasNodalSolutionStepVariable(NORMAL)) + << "NORMAL variable is not found in nodal solution step variables list of " + << r_model_part.FullName() << ".\n"; + + block_for_each(r_model_part.Conditions(), [](const ConditionType& rCondition) { + KRATOS_ERROR_IF_NOT(rCondition.Has(NEIGHBOUR_ELEMENTS)) + << "NEIGHBOUR_ELEMENTS is not present in condition with id " + << rCondition.Id() << ".\n"; + KRATOS_ERROR_IF_NOT(rCondition.GetValue(NEIGHBOUR_ELEMENTS).size() == 1) + << "NEIGHBOUR_ELEMENTS does not have the unique parent element for condition with id " + << rCondition.Id() << ".\n"; + + const auto& r_parent_element = rCondition.GetValue(NEIGHBOUR_ELEMENTS)[0]; + const auto& r_properties = r_parent_element.GetProperties(); + + KRATOS_ERROR_IF_NOT(r_properties.Has(DENSITY)) + << "DENSITY is not present in the properties of the parent element with id " + << r_parent_element.Id() << " for the condition with id " + << rCondition.Id() << ".\n"; + KRATOS_ERROR_IF_NOT(r_properties[DENSITY] > 0.0) + << "DENSITY is not greater than zero in the properties of the parent element with id " + << r_parent_element.Id() << " for the condition with id " + << rCondition.Id() << ".\n"; + KRATOS_ERROR_IF_NOT(r_properties.Has(DYNAMIC_VISCOSITY)) + << "DYNAMIC_VISCOSITY is not present in the properties of the parent element with id " + << r_parent_element.Id() << " for the condition with id " + << rCondition.Id() << ".\n"; + KRATOS_ERROR_IF_NOT(r_properties[DYNAMIC_VISCOSITY] > 0.0) + << "DYNAMIC_VISCOSITY is not greater than zero in the properties of the parent element with id " + << r_parent_element.Id() << " for the condition with id " + << rCondition.Id() << ".\n"; + }); + + return 0; + + KRATOS_CATCH(""); +} + +std::string ComputeYPlusProcess::Info() const +{ + return std::string("ComputeYPlusProcess"); +} + +void ComputeYPlusProcess::PrintInfo(std::ostream& rOStream) const +{ + rOStream << this->Info(); +} + +void ComputeYPlusProcess::PrintData(std::ostream& rOStream) const +{ +} + +} // namespace Kratos. diff --git a/applications/FluidDynamicsApplication/custom_processes/compute_y_plus_process.h b/applications/FluidDynamicsApplication/custom_processes/compute_y_plus_process.h new file mode 100644 index 000000000000..7bd81d47f1b8 --- /dev/null +++ b/applications/FluidDynamicsApplication/custom_processes/compute_y_plus_process.h @@ -0,0 +1,130 @@ +// | / | +// ' / __| _` | __| _ \ __| +// . \ | ( | | ( |\__ ` +// _|\_\_| \__,_|\__|\___/ ____/ +// Multi-Physics +// +// License: BSD License +// Kratos default license: kratos/license.txt +// +// Main authors: Suneth Warnakulasuriya +// + +#if !defined(KRATOS_COMPUTE_Y_PLUS_PROCESS_H_INCLUDED) +#define KRATOS_COMPUTE_Y_PLUS_PROCESS_H_INCLUDED + +// System includes +#include + +// External includes + +// Project includes +#include "containers/model.h" +#include "includes/model_part.h" +#include "includes/condition.h" +#include "processes/process.h" + +namespace Kratos +{ +///@addtogroup FluidDynamicsApplication +///@{ + +///@name Kratos Classes +///@{ + +class KRATOS_API(FLUID_DYNAMICS_APPLICATION) ComputeYPlusProcess : public Process +{ +public: + ///@name Type Definitions + ///@{ + + using IndexType = std::size_t; + + using NodeType = ModelPart::NodeType; + + using ConditionType = ModelPart::ConditionType; + + using ConditionsContainerType = ModelPart::ConditionsContainerType; + + /// Pointer definition of ComputeYPlusProcess + KRATOS_CLASS_POINTER_DEFINITION(ComputeYPlusProcess); + + ///@} + ///@name Life Cycle + ///@{ + + /// Constructor + ComputeYPlusProcess( + Model& rModel, + Parameters rParameters); + + /// Destructor. + ~ComputeYPlusProcess() override = default; + + /// Assignment operator. + ComputeYPlusProcess& operator=(ComputeYPlusProcess const& rOther) = delete; + + /// Copy constructor. + ComputeYPlusProcess(ComputeYPlusProcess const& rOther) = delete; + + ///@} + ///@name Operations + ///@{ + + int Check() override; + + void ExecuteInitializeSolutionStep() override; + + void ExecuteFinalizeSolutionStep() override; + + const Parameters GetDefaultParameters() const override; + + ///@} + ///@name Input and output + ///@{ + + /// Turn back information as a string. + std::string Info() const override; + + /// Print information about this object. + void PrintInfo(std::ostream& rOStream) const override; + + /// Print object's data. + void PrintData(std::ostream& rOStream) const override; + + ///@} + +private: + ///@name Private Member Variables + ///@{ + + Model& mrModel; + + std::string mModelPartName; + std::string mOutputVariableName; + bool mIsOutputStoredInElements; + bool mIsCalculatedEveryTimeStep; + int mEchoLevel; + + bool mIsNormalsCalculated; + + ///@} + +}; // Class ComputeYPlusProcess + +///@} +///@name Input and output +///@{ + +/// output stream function +inline std::ostream& operator<<( + std::ostream& rOStream, + const ComputeYPlusProcess& rThis); + +///@} + +///@} addtogroup block + +} // namespace Kratos. + +#endif // KRATOS_COMPUTE_Y_PLUS_PROCESS_H_INCLUDED defined diff --git a/applications/FluidDynamicsApplication/custom_processes/mass_conservation_check_process.cpp b/applications/FluidDynamicsApplication/custom_processes/mass_conservation_check_process.cpp index 4ea3d62a9b89..290bcdf466d4 100644 --- a/applications/FluidDynamicsApplication/custom_processes/mass_conservation_check_process.cpp +++ b/applications/FluidDynamicsApplication/custom_processes/mass_conservation_check_process.cpp @@ -35,7 +35,7 @@ MassConservationCheckProcess::MassConservationCheckProcess( const bool PerformCorrections, const int CorrectionFreq, const bool WriteToLogFile, - const std::string LogFileName) + const std::string& LogFileName) : Process(), mrModelPart(rModelPart) { mCorrectionFreq = CorrectionFreq; diff --git a/applications/FluidDynamicsApplication/custom_processes/mass_conservation_check_process.h b/applications/FluidDynamicsApplication/custom_processes/mass_conservation_check_process.h index 365242756148..c1a6dd36b03b 100644 --- a/applications/FluidDynamicsApplication/custom_processes/mass_conservation_check_process.h +++ b/applications/FluidDynamicsApplication/custom_processes/mass_conservation_check_process.h @@ -85,7 +85,7 @@ class KRATOS_API(FLUID_DYNAMICS_APPLICATION) MassConservationCheckProcess : publ const bool PerformCorrections, const int CorrectionFreq, const bool WriteToLogFile, - const std::string LogFileName); + const std::string& LogFileName); /** * @brief Constructor with Kratos parameters diff --git a/applications/FluidDynamicsApplication/custom_python/add_custom_processes_to_python.cpp b/applications/FluidDynamicsApplication/custom_python/add_custom_processes_to_python.cpp index 7247b81f2d7b..61b10da4f747 100644 --- a/applications/FluidDynamicsApplication/custom_python/add_custom_processes_to_python.cpp +++ b/applications/FluidDynamicsApplication/custom_python/add_custom_processes_to_python.cpp @@ -43,6 +43,7 @@ #include "custom_processes/shock_capturing_physics_based_process.h" #include "custom_processes/spalart_allmaras_turbulence_model.h" #include "custom_processes/stokes_initialization_process.h" +#include "custom_processes/compute_y_plus_process.h" #include "spaces/ublas_space.h" @@ -181,6 +182,10 @@ void AddCustomProcessesToPython(pybind11::module& m) py::class_(m, "ComputePressureCoefficientProcess") .def(py::init()) ; + + py::class_(m, "ComputeYPlusProcess") + .def(py::init()) + ; } } // namespace Python. diff --git a/applications/FluidDynamicsApplication/custom_python/fluid_dynamics_python_application.cpp b/applications/FluidDynamicsApplication/custom_python/fluid_dynamics_python_application.cpp index 177ef2e848e8..f58669dab98a 100644 --- a/applications/FluidDynamicsApplication/custom_python/fluid_dynamics_python_application.cpp +++ b/applications/FluidDynamicsApplication/custom_python/fluid_dynamics_python_application.cpp @@ -130,6 +130,8 @@ PYBIND11_MODULE(KratosFluidDynamicsApplication,m) KRATOS_REGISTER_IN_PYTHON_3D_VARIABLE_WITH_COMPONENTS(m, VELOCITY_ROTATIONAL); KRATOS_REGISTER_IN_PYTHON_VARIABLE(m,SMOOTHING_COEFFICIENT); KRATOS_REGISTER_IN_PYTHON_VARIABLE(m,SPECTRAL_RADIUS_LIMIT) + + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, Y_PLUS) } diff --git a/applications/FluidDynamicsApplication/custom_strategies/strategies/compressible_navier_stokes_explicit_solving_strategy_bfecc.h b/applications/FluidDynamicsApplication/custom_strategies/strategies/compressible_navier_stokes_explicit_solving_strategy_bfecc.h index ab456b730332..b3972fac454d 100644 --- a/applications/FluidDynamicsApplication/custom_strategies/strategies/compressible_navier_stokes_explicit_solving_strategy_bfecc.h +++ b/applications/FluidDynamicsApplication/custom_strategies/strategies/compressible_navier_stokes_explicit_solving_strategy_bfecc.h @@ -75,7 +75,7 @@ class CompressibleNavierStokesExplicitSolvingStrategyBFECC // Replace with proper std::optional when upgrading to c++17 #if __cplusplus >= 201703L - using std::optional; + // using std::optional; #else /** Naive implementation of std::optional, used as a replacement for c++11 support. * Use only with simple types. @@ -335,10 +335,17 @@ class CompressibleNavierStokesExplicitSolvingStrategyBFECC ///@name Member Variables ///@{ +#if __cplusplus >= 201703L + struct Stash { + std::optional conductivity = {}; + std::optional dynamic_viscosity = {}; + } mDiffusionStash; +#else struct Stash { optional conductivity = {}; optional dynamic_viscosity = {}; } mDiffusionStash; +#endif ///@} ///@name Private Operators diff --git a/applications/FluidDynamicsApplication/custom_utilities/fluid_calculation_utilities.cpp b/applications/FluidDynamicsApplication/custom_utilities/fluid_calculation_utilities.cpp index 3e6135fbf8cd..dd399204eb8c 100644 --- a/applications/FluidDynamicsApplication/custom_utilities/fluid_calculation_utilities.cpp +++ b/applications/FluidDynamicsApplication/custom_utilities/fluid_calculation_utilities.cpp @@ -20,51 +20,6 @@ namespace Kratos { -template<> -KRATOS_API(FLUID_DYNAMICS_APPLICATION) -void FluidCalculationUtilities::AssignValue( - const array_1d& rInput, - array_1d& rOutput) -{ - rOutput[0] = rInput[0]; - rOutput[1] = rInput[1]; -} - -template -void FluidCalculationUtilities::AssignValue( - const TInputDataType& rInput, - TOutputDataType& rOutput) -{ - rOutput = rInput; -} - -template<> -KRATOS_API(FLUID_DYNAMICS_APPLICATION) -void FluidCalculationUtilities::UpdateValue( - const double& rInput, - double& rOutput) -{ - rOutput += rInput; -} - -template<> -KRATOS_API(FLUID_DYNAMICS_APPLICATION) -void FluidCalculationUtilities::UpdateValue( - const array_1d& rInput, - array_1d& rOutput) -{ - rOutput[0] += rInput[0]; - rOutput[1] += rInput[1]; -} - -template -void FluidCalculationUtilities::UpdateValue( - const TInputDataType& rInput, - TOutputDataType& rOutput) -{ - noalias(rOutput) += rInput; -} - double FluidCalculationUtilities::CalculateLogarithmicYPlusLimit( const double Kappa, const double Beta, @@ -135,14 +90,4 @@ double FluidCalculationUtilities::CalculateLogarithmicYPlus( return y_plus; } -// template instantiations -template KRATOS_API(FLUID_DYNAMICS_APPLICATION) void FluidCalculationUtilities::AssignValue(const double&, double&); -template KRATOS_API(FLUID_DYNAMICS_APPLICATION) void FluidCalculationUtilities::AssignValue>(const array_1d&, array_1d&); -template KRATOS_API(FLUID_DYNAMICS_APPLICATION) void FluidCalculationUtilities::AssignValue(const Vector&, Vector&); -template KRATOS_API(FLUID_DYNAMICS_APPLICATION) void FluidCalculationUtilities::AssignValue(const Matrix&, Matrix&); - -template KRATOS_API(FLUID_DYNAMICS_APPLICATION) void FluidCalculationUtilities::UpdateValue>(const array_1d&, array_1d&); -template KRATOS_API(FLUID_DYNAMICS_APPLICATION) void FluidCalculationUtilities::UpdateValue(const Vector&, Vector&); -template KRATOS_API(FLUID_DYNAMICS_APPLICATION) void FluidCalculationUtilities::UpdateValue(const Matrix&, Matrix&); - } // namespace Kratos diff --git a/applications/FluidDynamicsApplication/custom_utilities/fluid_calculation_utilities.h b/applications/FluidDynamicsApplication/custom_utilities/fluid_calculation_utilities.h index 39674b772e9e..0e880b9b4547 100644 --- a/applications/FluidDynamicsApplication/custom_utilities/fluid_calculation_utilities.h +++ b/applications/FluidDynamicsApplication/custom_utilities/fluid_calculation_utilities.h @@ -44,6 +44,9 @@ class KRATOS_API(FLUID_DYNAMICS_APPLICATION) FluidCalculationUtilities using GeometryType = Geometry; + template + using ComponentDataType = std::tuple; + ///@} ///@name Static Operations ///@{ @@ -80,37 +83,13 @@ class KRATOS_API(FLUID_DYNAMICS_APPLICATION) FluidCalculationUtilities const auto& r_node = rGeometry[0]; const double shape_function_value = rShapeFunction[0]; - int dummy[sizeof...(TRefVariableValuePairArgs)] = {( - AssignValue< - typename std::remove_reference::type>::type, - typename std::remove_reference::type>::type::Type - > - ( - r_node.FastGetSolutionStepValue(std::get<1>(rValueVariablePairs), Step) * shape_function_value, - std::get<0>(rValueVariablePairs) - ), - 0)...}; - - // this can be removed with fold expressions in c++17 - *dummy = 0; + (std::apply([&](auto&&... args) {((std::get<0>(args) = std::get<1>(args) * shape_function_value), ...);}, GetComponentsArray(std::get<0>(rValueVariablePairs), r_node.FastGetSolutionStepValue(std::get<1>(rValueVariablePairs), Step))), ...); for (IndexType c = 1; c < rGeometry.PointsNumber(); ++c) { const auto& r_node = rGeometry[c]; const double shape_function_value = rShapeFunction[c]; - int dummy[sizeof...(TRefVariableValuePairArgs)] = {( - UpdateValue< - typename std::remove_reference::type>::type, - typename std::remove_reference::type>::type::Type - > - ( - r_node.FastGetSolutionStepValue(std::get<1>(rValueVariablePairs), Step) * shape_function_value, - std::get<0>(rValueVariablePairs) - ), - 0)...}; - - // this can be removed with fold expressions in c++17 - *dummy = 0; + (std::apply([&](auto&&... args) {((std::get<0>(args) += std::get<1>(args) * shape_function_value), ...);}, GetComponentsArray(std::get<0>(rValueVariablePairs), r_node.FastGetSolutionStepValue(std::get<1>(rValueVariablePairs), Step))), ...); } KRATOS_CATCH(""); @@ -145,6 +124,190 @@ class KRATOS_API(FLUID_DYNAMICS_APPLICATION) FluidCalculationUtilities rGeometry, rShapeFunction, 0, rValueVariablePairs...); } + /** + * @brief Evaluates given list of non historical variable pairs at gauss point locations + * + * Example: + * double density; + * array_1d velocity + * EvaluateInPoint(rGeometry, rShapeFunction, + * std::tie(density, DENSITY), + * std::tie(velocity, VELOCITY)); + * + * The above evaluation will fill density, and velocity variables with gauss point + * evaluated DENSITY and VELOCITY at gauss point with shape function values rShapeFunction + * in the geometry named rGeometry. + * + * @tparam TRefVariableValuePairArgs + * @param[in] rGeometry Geometry to get nodes + * @param[in] rShapeFunction Shape function values at gauss point + * @param[in/out] rValueVariablePairs std::tuple> list of variables. + */ + template + static void EvaluateNonHistoricalInPoint( + const GeometryType& rGeometry, + const Vector& rShapeFunction, + const TRefVariableValuePairArgs&... rValueVariablePairs) + { + KRATOS_TRY + + const auto& r_node = rGeometry[0]; + const double shape_function_value = rShapeFunction[0]; + + (std::apply([&](auto&&... args) {((std::get<0>(args) = std::get<1>(args) * shape_function_value), ...);}, GetComponentsArray(std::get<0>(rValueVariablePairs), r_node.GetValue(std::get<1>(rValueVariablePairs)))), ...); + + for (IndexType c = 1; c < rGeometry.PointsNumber(); ++c) { + const auto& r_node = rGeometry[c]; + const double shape_function_value = rShapeFunction[c]; + + (std::apply([&](auto&&... args) {((std::get<0>(args) += std::get<1>(args) * shape_function_value), ...);}, GetComponentsArray(std::get<0>(rValueVariablePairs), r_node.GetValue(std::get<1>(rValueVariablePairs)))), ...); + } + + KRATOS_CATCH(""); + } + + /** + * @brief Evaluates gradients of given list of variable pairs at gauss point locations at step + * + * Example: + * array_1d density_gradient; + * BoundedMatrix velocity_gradient + * EvaluateGradientInPoint(rGeometry, rShapeFunctionDerivatives, Step, + * std::tie(density_gradient, DENSITY), + * std::tie(velocity_gradient, VELOCITY)); + * + * The above evaluation will fill density_gradient, and velocity_gradient variables with gauss point + * evaluated gradient of DENSITY and VELOCITY at gauss point with shape function derivative values rShapeFunctionDerivatives + * in the geometry named rGeometry. + * + * The output gradient vectors will be having variable direction components in rows in the case where + * variable is of type scalar + * + * The output gradient matrices will be having variable components in rows, direction components in columns in the case where + * variable is of type vector + * + * @tparam TRefVariableValuePairArgs + * @param[in] rGeometry Geometry to get nodes + * @param[in] rShapeFunctionDerivatives Shape function derivative values at gauss point + * @param[in] Step Step to be evaluated + * @param[in/out] rValueVariablePairs std::tuple> list of variables. + */ + template + static void EvaluateGradientInPoint( + const GeometryType& rGeometry, + const Matrix& rShapeFunctionDerivatives, + const int Step, + const TRefVariableValuePairArgs&... rValueVariablePairs) + { + KRATOS_TRY + + const auto& r_node = rGeometry[0]; + const Vector& shape_function_derivative = row(rShapeFunctionDerivatives, 0); + + for (IndexType i = 0; i < rShapeFunctionDerivatives.size2(); ++i) { + (std::apply([&](auto&&... args) {((std::get<0>(args) = std::get<1>(args) * shape_function_derivative[i]), ...);}, GetComponentsArray(std::get<0>(rValueVariablePairs), r_node.FastGetSolutionStepValue(std::get<1>(rValueVariablePairs), Step), i)), ...); + } + + for (IndexType c = 1; c < rGeometry.PointsNumber(); ++c) { + const auto& r_node = rGeometry[c]; + const Vector& shape_function_derivative = row(rShapeFunctionDerivatives, c); + + for (IndexType i = 0; i < rShapeFunctionDerivatives.size2(); ++i) { + (std::apply([&](auto&&... args) {((std::get<0>(args) += std::get<1>(args) * shape_function_derivative[i]), ...);}, GetComponentsArray(std::get<0>(rValueVariablePairs), r_node.FastGetSolutionStepValue(std::get<1>(rValueVariablePairs), Step), i)), ...); + } + } + + KRATOS_CATCH(""); + } + + /** + * @brief Evaluates gradients of given list of variable pairs at gauss point locations at current step + * + * Example: + * array_1d density_gradient; + * BoundedMatrix velocity_gradient + * EvaluateGradientInPoint(rGeometry, rShapeFunctionDerivatives, Step, + * std::tie(density_gradient, DENSITY), + * std::tie(velocity_gradient, VELOCITY)); + * + * The above evaluation will fill density_gradient, and velocity_gradient variables with gauss point + * evaluated gradient of DENSITY and VELOCITY at gauss point with shape function derivative values rShapeFunctionDerivatives + * in the geometry named rGeometry. + * + * The output gradient vectors will be having variable direction components in rows in the case where + * variable is of type scalar + * + * The output gradient matrices will be having variable components in rows, direction components in columns in the case where + * variable is of type vector + * + * @tparam TRefVariableValuePairArgs + * @param[in] rGeometry Geometry to get nodes + * @param[in] rShapeFunctionDerivatives Shape function derivative values at gauss point + * @param[in] Step Step to be evaluated + * @param[in/out] rValueVariablePairs std::tuple> list of variables. + */ + template + static void inline EvaluateGradientInPoint( + const GeometryType& rGeometry, + const Matrix& rShapeFunctionDerivatives, + const TRefVariableValuePairArgs&... rValueVariablePairs) + { + EvaluateGradientInPoint( + rGeometry, rShapeFunctionDerivatives, 0, rValueVariablePairs...); + } + + /** + * @brief Evaluates non historical gradients of given list of variable pairs at gauss point locations + * + * Example: + * array_1d density_gradient; + * BoundedMatrix velocity_gradient + * EvaluateGradientInPoint(rGeometry, rShapeFunctionDerivatives, Step, + * std::tie(density_gradient, DENSITY), + * std::tie(velocity_gradient, VELOCITY)); + * + * The above evaluation will fill density_gradient, and velocity_gradient variables with gauss point + * evaluated gradient of DENSITY and VELOCITY at gauss point with shape function derivative values rShapeFunctionDerivatives + * in the geometry named rGeometry. + * + * The output gradient vectors will be having variable direction components in rows in the case where + * variable is of type scalar + * + * The output gradient matrices will be having variable components in rows, direction components in columns in the case where + * variable is of type vector + * + * @tparam TRefVariableValuePairArgs + * @param[in] rGeometry Geometry to get nodes + * @param[in] rShapeFunctionDerivatives Shape function derivative values at gauss point + * @param[in/out] rValueVariablePairs std::tuple> list of variables. + */ + template + static void EvaluateNonHistoricalGradientInPoint( + const GeometryType& rGeometry, + const Matrix& rShapeFunctionDerivatives, + const TRefVariableValuePairArgs&... rValueVariablePairs) + { + KRATOS_TRY + + const auto& r_node = rGeometry[0]; + const Vector& shape_function_derivative = row(rShapeFunctionDerivatives, 0); + + for (IndexType i = 0; i < rShapeFunctionDerivatives.size2(); ++i) { + (std::apply([&](auto&&... args) {((std::get<0>(args) = std::get<1>(args) * shape_function_derivative[i]), ...);}, GetComponentsArray(std::get<0>(rValueVariablePairs), r_node.GetValue(std::get<1>(rValueVariablePairs)), i)), ...); + } + + for (IndexType c = 1; c < rGeometry.PointsNumber(); ++c) { + const auto& r_node = rGeometry[c]; + const Vector& shape_function_derivative = row(rShapeFunctionDerivatives, c); + + for (IndexType i = 0; i < rShapeFunctionDerivatives.size2(); ++i) { + (std::apply([&](auto&&... args) {((std::get<0>(args) += std::get<1>(args) * shape_function_derivative[i]), ...);}, GetComponentsArray(std::get<0>(rValueVariablePairs), r_node.GetValue(std::get<1>(rValueVariablePairs)), i)), ...); + } + } + + KRATOS_CATCH(""); + } + /** * @brief Get a sub vector from a vector * @@ -293,15 +456,18 @@ class KRATOS_API(FLUID_DYNAMICS_APPLICATION) FluidCalculationUtilities ///@name Private Operations ///@{ - template - static void AssignValue( - const TInputDataType& rInput, - TOutputDataType& rOutput); - - template - static void UpdateValue( - const TInputDataType& rInput, - TOutputDataType& rOutput); + // gauss point evaluation templates + static auto inline GetComponentsArray(double& rOutput, const double& rInput) { return std::array, 1>{std::tie(rOutput, rInput)};} + static auto inline GetComponentsArray(array_1d& rOutput, const array_1d& rInput) { return std::array, 2>{std::tie(rOutput[0], rInput[0]), std::tie(rOutput[1], rInput[1])};} + static auto inline GetComponentsArray(array_1d& rOutput, const array_1d& rInput) { return std::array, 3>{std::tie(rOutput[0], rInput[0]), std::tie(rOutput[1], rInput[1]), std::tie(rOutput[2], rInput[2])};} + static auto inline GetComponentsArray(Vector& rOutput, const Vector& rInput) { return std::array, 1>{std::tie(rOutput, rInput)};} + static auto inline GetComponentsArray(Matrix& rOutput, const Matrix& rInput) { return std::array, 1>{std::tie(rOutput, rInput)};} + + // gauss point gradient evaluation templates + static auto inline GetComponentsArray(array_1d& rOutput, const double& rInput, const IndexType DerivativeIndex) { return std::array, 1>{std::tie(rOutput[DerivativeIndex], rInput)};} + static auto inline GetComponentsArray(array_1d& rOutput, const double& rInput, const IndexType DerivativeIndex) { return std::array, 1>{std::tie(rOutput[DerivativeIndex], rInput)};} + static auto inline GetComponentsArray(BoundedMatrix& rOutput, const array_1d& rInput, const IndexType DerivativeIndex) { return std::array, 2>{std::tie(rOutput(0, DerivativeIndex), rInput[0]), std::tie(rOutput(1, DerivativeIndex), rInput[1])};} + static auto inline GetComponentsArray(BoundedMatrix& rOutput, const array_1d& rInput, const IndexType DerivativeIndex) { return std::array, 3>{std::tie(rOutput(0, DerivativeIndex), rInput[0]), std::tie(rOutput(1, DerivativeIndex), rInput[1]), std::tie(rOutput(2, DerivativeIndex), rInput[2])};} ///@} }; diff --git a/applications/FluidDynamicsApplication/custom_utilities/periodic_condition_utilities.h b/applications/FluidDynamicsApplication/custom_utilities/periodic_condition_utilities.h index fa3bb93a7c78..e7c4f8ecae8f 100644 --- a/applications/FluidDynamicsApplication/custom_utilities/periodic_condition_utilities.h +++ b/applications/FluidDynamicsApplication/custom_utilities/periodic_condition_utilities.h @@ -53,7 +53,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. #include #include #include -#include +#include // External includes diff --git a/applications/FluidDynamicsApplication/custom_utilities/two_fluid_navier_stokes_alpha_method_data.h b/applications/FluidDynamicsApplication/custom_utilities/two_fluid_navier_stokes_alpha_method_data.h index 1c6fb68efa86..5fed8c1516bf 100644 --- a/applications/FluidDynamicsApplication/custom_utilities/two_fluid_navier_stokes_alpha_method_data.h +++ b/applications/FluidDynamicsApplication/custom_utilities/two_fluid_navier_stokes_alpha_method_data.h @@ -52,7 +52,6 @@ typedef GeometryType::ShapeFunctionsGradientsType ShapeFunctionsGradientsType; NodalVectorData Velocity; NodalVectorData Velocity_OldStep1; NodalScalarData Pressure; -NodalScalarData Pressure_OldStep1; NodalVectorData AccelerationAlphaMethod; NodalVectorData MeshVelocity; @@ -74,8 +73,8 @@ double Density; double DynamicViscosity; double DeltaTime; // Time increment double DynamicTau; // Dynamic tau considered in ASGS stabilization coefficients -double VolumeError; //TODO: RENAME TO VolumeErrorTimeRatio -double MaxSprectraRadius; +double VolumeErrorRate; // Mass loss time rate (m^3/s) to be used as source term in the mass conservation equation +double MaxSpectralRadius; // Auxiliary containers for the symbolically-generated matrices BoundedMatrix lhs; @@ -120,7 +119,6 @@ void Initialize(const Element& rElement, const ProcessInfo& rProcessInfo) overri this->FillFromHistoricalNodalData(Velocity,VELOCITY,r_geometry); this->FillFromHistoricalNodalData(Velocity_OldStep1,VELOCITY,r_geometry,1); this->FillFromHistoricalNodalData(Pressure,PRESSURE,r_geometry); - this->FillFromHistoricalNodalData(Pressure_OldStep1,PRESSURE,r_geometry,1); this->FillFromHistoricalNodalData(Distance, DISTANCE, r_geometry); @@ -137,7 +135,7 @@ void Initialize(const Element& rElement, const ProcessInfo& rProcessInfo) overri this->FillFromNonHistoricalNodalData(AccelerationAlphaMethod,ACCELERATION,r_geometry); this->FillFromProcessInfo(DeltaTime,DELTA_TIME,rProcessInfo); this->FillFromProcessInfo(DynamicTau,DYNAMIC_TAU,rProcessInfo); - this->FillFromProcessInfo(MaxSprectraRadius,SPECTRAL_RADIUS_LIMIT,rProcessInfo); + this->FillFromProcessInfo(MaxSpectralRadius,SPECTRAL_RADIUS_LIMIT,rProcessInfo); noalias(lhs) = ZeroMatrix(TNumNodes*(TDim+1),TNumNodes*(TDim+1)); @@ -161,12 +159,16 @@ void Initialize(const Element& rElement, const ProcessInfo& rProcessInfo) overri // Also note that we do consider time varying time step but a constant theta (we incur in a small error when switching from BE to CN) // Note as well that there is a minus sign (this comes from the divergence sign) if (IsCut()) { + // Get the previous time increment. Note that we check its value in case the previous ProcessInfo is empty (e.g. first step) double previous_dt = rProcessInfo.GetPreviousTimeStepInfo()[DELTA_TIME]; - this->FillFromProcessInfo(VolumeError,VOLUME_ERROR,rProcessInfo); - // double ratio_dt = (1.0-theta)*previous_dt + theta*DeltaTime; - VolumeError /= -previous_dt; + if (previous_dt < 1.0e-12) { + previous_dt = rProcessInfo[DELTA_TIME]; + } + // Get the absolute volume error from the ProcessInfo and calculate the time rate + this->FillFromProcessInfo(VolumeErrorRate,VOLUME_ERROR,rProcessInfo); + VolumeErrorRate /= -previous_dt; } else { - VolumeError = 0.0; + VolumeErrorRate = 0.0; } } @@ -244,7 +246,7 @@ void CalculateAirMaterialResponse() { FluidElementUtilities::GetNewtonianConstitutiveMatrix(mu, c_mat); this->C = c_mat; - if (TDim == 2) + if constexpr (TDim == 2) { const double trace = strain[0] + strain[1]; const double volumetric_part = trace/2.0; // Note: this should be small for an incompressible fluid (it is basically the incompressibility error) @@ -254,7 +256,7 @@ void CalculateAirMaterialResponse() { stress[2] = c2 * strain[2]; } - else if (TDim == 3) + else if constexpr (TDim == 3) { const double trace = strain[0] + strain[1] + strain[2]; const double volumetric_part = trace/3.0; // Note: this should be small for an incompressible fluid (it is basically the incompressibility error) @@ -270,14 +272,14 @@ void CalculateAirMaterialResponse() { void ComputeStrain() { - const double rho_inf=this->MaxSprectraRadius; + const double rho_inf=this->MaxSpectralRadius; const double alpha_f= 1/(rho_inf+1); const BoundedMatrix& v = Velocity_OldStep1+alpha_f*(Velocity-Velocity_OldStep1); const BoundedMatrix& DN = this->DN_DX; // Compute strain (B*v) // 3D strain computation - if (TDim == 3) + if constexpr (TDim == 3) { this->StrainRate[0] = DN(0,0)*v(0,0) + DN(1,0)*v(1,0) + DN(2,0)*v(2,0) + DN(3,0)*v(3,0); this->StrainRate[1] = DN(0,1)*v(0,1) + DN(1,1)*v(1,1) + DN(2,1)*v(2,1) + DN(3,1)*v(3,1); @@ -287,7 +289,7 @@ void ComputeStrain() this->StrainRate[5] = DN(0,0)*v(0,2) + DN(0,2)*v(0,0) + DN(1,0)*v(1,2) + DN(1,2)*v(1,0) + DN(2,0)*v(2,2) + DN(2,2)*v(2,0) + DN(3,0)*v(3,2) + DN(3,2)*v(3,0); } // 2D strain computation - else if (TDim == 2) + else if constexpr (TDim == 2) { this->StrainRate[0] = DN(0,0)*v(0,0) + DN(1,0)*v(1,0) + DN(2,0)*v(2,0); this->StrainRate[1] = DN(0,1)*v(0,1) + DN(1,1)*v(1,1) + DN(2,1)*v(2,1); @@ -299,13 +301,13 @@ double ComputeStrainNorm() { double strain_rate_norm; Vector& S = this->StrainRate; - if (TDim == 3) + if constexpr (TDim == 3) { strain_rate_norm = std::sqrt(2.*S[0] * S[0] + 2.*S[1] * S[1] + 2.*S[2] * S[2] + S[3] * S[3] + S[4] * S[4] + S[5] * S[5]); } - else if (TDim == 2) + else if constexpr (TDim == 2) { strain_rate_norm = std::sqrt(2.*S[0] * S[0] + 2.*S[1] * S[1] + S[2] * S[2]); } diff --git a/applications/FluidDynamicsApplication/custom_utilities/two_fluid_navier_stokes_data.h b/applications/FluidDynamicsApplication/custom_utilities/two_fluid_navier_stokes_data.h index e14fd7608672..42b2caf805b7 100644 --- a/applications/FluidDynamicsApplication/custom_utilities/two_fluid_navier_stokes_data.h +++ b/applications/FluidDynamicsApplication/custom_utilities/two_fluid_navier_stokes_data.h @@ -225,7 +225,7 @@ void CalculateAirMaterialResponse() { FluidElementUtilities::GetNewtonianConstitutiveMatrix(mu, c_mat); this->C = c_mat; - if (TDim == 2) + if constexpr (TDim == 2) { const double trace = strain[0] + strain[1]; const double volumetric_part = trace/2.0; // Note: this should be small for an incompressible fluid (it is basically the incompressibility error) @@ -235,7 +235,7 @@ void CalculateAirMaterialResponse() { stress[2] = c2 * strain[2]; } - else if (TDim == 3) + else if constexpr (TDim == 3) { const double trace = strain[0] + strain[1] + strain[2]; const double volumetric_part = trace/3.0; // Note: this should be small for an incompressible fluid (it is basically the incompressibility error) @@ -256,7 +256,7 @@ void ComputeStrain() // Compute strain (B*v) // 3D strain computation - if (TDim == 3) + if constexpr (TDim == 3) { this->StrainRate[0] = DN(0,0)*v(0,0) + DN(1,0)*v(1,0) + DN(2,0)*v(2,0) + DN(3,0)*v(3,0); this->StrainRate[1] = DN(0,1)*v(0,1) + DN(1,1)*v(1,1) + DN(2,1)*v(2,1) + DN(3,1)*v(3,1); @@ -266,7 +266,7 @@ void ComputeStrain() this->StrainRate[5] = DN(0,0)*v(0,2) + DN(0,2)*v(0,0) + DN(1,0)*v(1,2) + DN(1,2)*v(1,0) + DN(2,0)*v(2,2) + DN(2,2)*v(2,0) + DN(3,0)*v(3,2) + DN(3,2)*v(3,0); } // 2D strain computation - else if (TDim == 2) + else if constexpr (TDim == 2) { this->StrainRate[0] = DN(0,0)*v(0,0) + DN(1,0)*v(1,0) + DN(2,0)*v(2,0); this->StrainRate[1] = DN(0,1)*v(0,1) + DN(1,1)*v(1,1) + DN(2,1)*v(2,1); @@ -278,13 +278,13 @@ double ComputeStrainNorm() { double strain_rate_norm; Vector& S = this->StrainRate; - if (TDim == 3) + if constexpr (TDim == 3) { strain_rate_norm = std::sqrt(2.*S[0] * S[0] + 2.*S[1] * S[1] + 2.*S[2] * S[2] + S[3] * S[3] + S[4] * S[4] + S[5] * S[5]); } - else if (TDim == 2) + else if constexpr (TDim == 2) { strain_rate_norm = std::sqrt(2.*S[0] * S[0] + 2.*S[1] * S[1] + S[2] * S[2]); } diff --git a/applications/FluidDynamicsApplication/fluid_dynamics_application.cpp b/applications/FluidDynamicsApplication/fluid_dynamics_application.cpp index 3e70a1a05d8f..2e221e176e14 100644 --- a/applications/FluidDynamicsApplication/fluid_dynamics_application.cpp +++ b/applications/FluidDynamicsApplication/fluid_dynamics_application.cpp @@ -240,6 +240,8 @@ void KratosFluidDynamicsApplication::Register() { KRATOS_REGISTER_VARIABLE( MOMENTUM_CORRECTION ) KRATOS_REGISTER_VARIABLE( DISTANCE_CORRECTION ) + KRATOS_REGISTER_VARIABLE( Y_PLUS ) + // Register Elements KRATOS_REGISTER_ELEMENT("VMS2D3N",mVMS2D); //this is the name the element should have according to the naming convention KRATOS_REGISTER_ELEMENT("VMS3D4N",mVMS3D); //this is the name the element should have according to the naming convention diff --git a/applications/FluidDynamicsApplication/fluid_dynamics_application_variables.cpp b/applications/FluidDynamicsApplication/fluid_dynamics_application_variables.cpp index 61fb5bcb6a38..31d2ecb6f334 100644 --- a/applications/FluidDynamicsApplication/fluid_dynamics_application_variables.cpp +++ b/applications/FluidDynamicsApplication/fluid_dynamics_application_variables.cpp @@ -111,4 +111,6 @@ KRATOS_CREATE_VARIABLE( double, CURVATURE ) KRATOS_CREATE_VARIABLE( bool, MOMENTUM_CORRECTION ) KRATOS_CREATE_VARIABLE( double, DISTANCE_CORRECTION ) +KRATOS_CREATE_VARIABLE( double, Y_PLUS ) + } diff --git a/applications/FluidDynamicsApplication/fluid_dynamics_application_variables.h b/applications/FluidDynamicsApplication/fluid_dynamics_application_variables.h index 6508d7a3594e..20f323cf1c56 100644 --- a/applications/FluidDynamicsApplication/fluid_dynamics_application_variables.h +++ b/applications/FluidDynamicsApplication/fluid_dynamics_application_variables.h @@ -117,6 +117,8 @@ KRATOS_DEFINE_APPLICATION_VARIABLE( FLUID_DYNAMICS_APPLICATION, double, CURVATUR // Two-phase flow momentum correction KRATOS_DEFINE_APPLICATION_VARIABLE( FLUID_DYNAMICS_APPLICATION, bool, MOMENTUM_CORRECTION ) KRATOS_DEFINE_APPLICATION_VARIABLE( FLUID_DYNAMICS_APPLICATION, double, DISTANCE_CORRECTION ) + +KRATOS_DEFINE_APPLICATION_VARIABLE( FLUID_DYNAMICS_APPLICATION, double, Y_PLUS ) } #endif /* KRATOS_FLUID_DYNAMICS_APPLICATION_VARIABLES_H_INCLUDED */ diff --git a/applications/FluidDynamicsApplication/python_scripts/cfl_output_process.py b/applications/FluidDynamicsApplication/python_scripts/cfl_output_process.py deleted file mode 100755 index ffa285dfcc70..000000000000 --- a/applications/FluidDynamicsApplication/python_scripts/cfl_output_process.py +++ /dev/null @@ -1,186 +0,0 @@ -# Importing the Kratos Library -import KratosMultiphysics -import KratosMultiphysics.FluidDynamicsApplication as KratosCFD -from KratosMultiphysics.kratos_utilities import CheckIfApplicationsAvailable - -# other imports -from KratosMultiphysics.time_based_ascii_file_writer_utility import TimeBasedAsciiFileWriterUtility - -if CheckIfApplicationsAvailable("StatisticsApplication"): - from KratosMultiphysics.StatisticsApplication import SpatialMethods as spatial_methods -else: - msg = "CFLOutputProcess requires StatisticsApplication which is not found." - msg += " Please install/compile it and try again." - raise Exception(msg) - -from math import sqrt - - -def Factory(settings, model): - if(type(settings) != KratosMultiphysics.Parameters): - raise Exception( - "expected input shall be a Parameters object, encapsulating a json string") - - return CFLOutputProcess(model, settings["Parameters"]) - - -class CFLOutputProcess(KratosMultiphysics.Process): - """ - A class responsible for the CFL output, which is an element value in Kratos. - """ - - def __init__(self, model, params): - KratosMultiphysics.Process.__init__(self) - - default_settings = KratosMultiphysics.Parameters(""" - { - "model_part_name" : "", - "interval" : [0.0, 1e30], - "cfl_output_limit" : 2.5, - "print_to_screen" : false, - "print_format" : ".8f", - "write_output_file" : true, - "output_step" : 8, - "output_file_settings": {} - } - """) - - - # Detect "End" as a tag and replace it by a large number - if(params.Has("interval")): - if(params["interval"][1].IsString()): - if(params["interval"][1].GetString() == "End"): - params["interval"][1].SetDouble(1e30) - else: - raise Exception("The second value of interval can be \"End\" or a number, interval currently:" + - params["interval"].PrettyPrintJsonString()) - - params.ValidateAndAssignDefaults(default_settings) - - # getting the ModelPart from the Model - self.model_part_name = params["model_part_name"].GetString() - if self.model_part_name == "": - raise Exception('No "model_part_name" was specified!') - else: - self.model_part = model[self.model_part_name] - - self.interval = params["interval"].GetVector() - - # getting output limit for summarization - self.cfl_output_limit = params["cfl_output_limit"].GetDouble() - - # TODO: Is it ok to do this check? If not, distribution calculation is going to be messy with if conditions for - # case with cfl_output_limit <= 1.0 - if (self.cfl_output_limit <= 1.0): - raise Exception("Please provide cfl_output_limit greater than 1.0") - - self.format = params["print_format"].GetString() - self.output_step = params["output_step"].GetInt() - self.print_to_screen = params["print_to_screen"].GetBool() - self.write_output_file = params["write_output_file"].GetBool() - - if (self.model_part.GetCommunicator().MyPID() == 0): - if (self.write_output_file): - - output_file_name = params["model_part_name"].GetString() + "_cfl.dat" - - file_handler_params = KratosMultiphysics.Parameters( - params["output_file_settings"]) - - if file_handler_params.Has("file_name"): - warn_msg = 'Unexpected user-specified entry found in "output_file_settings": {"file_name": ' - warn_msg += '"' + file_handler_params["file_name"].GetString() + '"}\n' - warn_msg += 'Using this specififed file name instead of the default "' + output_file_name + '"' - KratosMultiphysics.Logger.PrintWarning("CFLOutputProcess", warn_msg) - else: - file_handler_params.AddEmptyValue("file_name") - file_handler_params["file_name"].SetString(output_file_name) - - file_header = self._GetFileHeader() - self.output_file = TimeBasedAsciiFileWriterUtility(self.model_part, - file_handler_params, file_header).file - - self.distribution_params = KratosMultiphysics.Parameters('''{ - "number_of_value_groups" : 1, - "min_value" : "min", - "max_value" : "max" - }''') - self.distribution_params["min_value"].SetDouble(min(self.cfl_output_limit, 1.0)) - self.distribution_params["max_value"].SetDouble(max(self.cfl_output_limit, 1.0)) - - def ExecuteFinalizeSolutionStep(self): - - current_time = self.model_part.ProcessInfo[KratosMultiphysics.TIME] - current_step = self.model_part.ProcessInfo[KratosMultiphysics.STEP] - - if((current_time >= self.interval[0]) and (current_time < self.interval[1])) and (current_step % self.output_step == 0): - self._EvaluateCFL() - output = self._CalculateWithRespectToThreshold() - - if (self.model_part.GetCommunicator().MyPID() == 0): - output_vals = [format(val, self.format) for val in output] - - # not formatting time in order to not lead to problems with time recognition - # in the file writer when restarting - output_vals.insert(0, str(current_time)) - - res_labels = ["time: ", "mean: ", "std: ", "max: ", "cfl" + - "{:.1f}".format(self.cfl_output_limit) + ": ", "cfl1.0: "] - - if (self.print_to_screen): - - result_msg = 'CFL evaluation for model part ' + \ - self.model_part_name + '\n' - result_msg += ', '.join([a+b for a, - b in zip(res_labels, output_vals)]) - self._PrintToScreen(result_msg) - - if (self.write_output_file): - self.output_file.write(' '.join(output_vals) + "\n") - - def ExecuteFinalize(self): - if (self.model_part.GetCommunicator().MyPID() == 0): - self.output_file.close() - - def _GetFileHeader(self): - header = '# CFL for model part ' + self.model_part_name + \ - '| CFL_threshold: ' + str(self.cfl_output_limit) + '\n' - header += '# Time Mean Std Max HowMany>' + \ - "{:.1f}".format(self.cfl_output_limit) + ' [%] HowMany>1.0 [%]\n' - return header - - def _PrintToScreen(self, result_msg): - KratosMultiphysics.Logger.PrintInfo( - "CFLOutputProcess", "CFL VALUE RESULTS:") - KratosMultiphysics.Logger.PrintInfo( - "CFLOutputProcess", "Current time: " + result_msg) - - def _CalculateWithRespectToThreshold(self): - current_container = spatial_methods.NonHistorical.Elements.NormMethods - - _, _, _, group_histogram, group_percentage_distribution, group_means, group_variances = current_container.Distribution( - self.model_part, KratosMultiphysics.CFL_NUMBER, "value", self.distribution_params) - - # % of element with cfl above threshold - how_many = group_percentage_distribution[-1]*100.0 - # % of element with cfl above 1 - how_many1 = (1.0 - group_percentage_distribution[0])*100.0 - - # quantifying the mean and std for values below the threshold - total_elements_in_threshold_range = group_histogram[0] + group_histogram[1] - if (total_elements_in_threshold_range > 0): - y_mean = (group_means[0] * group_histogram[0] + group_means[1] * group_histogram[1]) / total_elements_in_threshold_range - - threshold_sum_squared = (group_variances[0] + pow(group_means[0], 2)) * group_histogram[0] + (group_variances[1] + pow(group_means[1], 2)) * group_histogram[1] - y_std = sqrt((threshold_sum_squared - total_elements_in_threshold_range * pow(y_mean, 2)) / (total_elements_in_threshold_range - 1.0)) - else: - y_mean = 0.0 - y_std = 0.0 - - # qunatifying the global max - # TODO: @Mate, where should we put the id of the element, where max is (second bland output argument is max_id)? - x_max, _ = current_container.Max(self.model_part, KratosMultiphysics.CFL_NUMBER, "value") - return [y_mean, y_std, x_max, how_many, how_many1] - - def _EvaluateCFL(self): - KratosCFD.FluidCharacteristicNumbersUtilities.CalculateLocalCFL(self.model_part) \ No newline at end of file diff --git a/applications/FluidDynamicsApplication/python_scripts/compute_cfl_process.py b/applications/FluidDynamicsApplication/python_scripts/compute_cfl_process.py new file mode 100644 index 000000000000..ba225788a83b --- /dev/null +++ b/applications/FluidDynamicsApplication/python_scripts/compute_cfl_process.py @@ -0,0 +1,32 @@ +# Importing the Kratos Library +import KratosMultiphysics as Kratos +import KratosMultiphysics.FluidDynamicsApplication as KratosCFD + +def Factory(settings, model): + if not isinstance(settings, Kratos.Parameters): + raise Exception("expected input shall be a Parameters object, encapsulating a json string") + if not isinstance(model, Kratos.Model): + raise Exception("expected input shall be a model object") + + return ComputeCFLProcess(model, settings["Parameters"]) + + +class ComputeCFLProcess(Kratos.Process): + def __init__(self, model, params): + Kratos.Process.__init__(self) + default_settings = Kratos.Parameters(""" + { + "model_part_name" : "PLEASE_PROVIDE_A_MODEL_PART_NAME", + "echo_level" : 0 + } + """) + params.ValidateAndAssignDefaults(default_settings) + self.model_part = model[params["model_part_name"].GetString()] + self.echo_level = params["echo_level"].GetInt() + + def Execute(self): + KratosCFD.FluidCharacteristicNumbersUtilities.CalculateLocalCFL(self.model_part) + if self.echo_level > 0: + Kratos.Logger.PrintInfo("CFLUtility", "Calculated CFL numebers of elements in {:s}.".format(self.model_part.FullName())) + + diff --git a/applications/FluidDynamicsApplication/python_scripts/compute_y_plus_process.py b/applications/FluidDynamicsApplication/python_scripts/compute_y_plus_process.py new file mode 100644 index 000000000000..64c9d77225bb --- /dev/null +++ b/applications/FluidDynamicsApplication/python_scripts/compute_y_plus_process.py @@ -0,0 +1,15 @@ +# Importing the Kratos Library +import KratosMultiphysics as Kratos +import KratosMultiphysics.FluidDynamicsApplication as KratosCFD + +def Factory(settings, model): + if not isinstance(settings, Kratos.Parameters): + raise Exception("expected input shall be a Parameters object, encapsulating a json string") + if not isinstance(model, Kratos.Model): + raise Exception("expected input shall be a model object") + + return KratosCFD.ComputeYPlusProcess(model, settings["Parameters"]) + + + + diff --git a/applications/FluidDynamicsApplication/python_scripts/navier_stokes_two_fluids_solver.py b/applications/FluidDynamicsApplication/python_scripts/navier_stokes_two_fluids_solver.py index 2ad7f6ef2621..8c7859dea1c8 100644 --- a/applications/FluidDynamicsApplication/python_scripts/navier_stokes_two_fluids_solver.py +++ b/applications/FluidDynamicsApplication/python_scripts/navier_stokes_two_fluids_solver.py @@ -208,7 +208,7 @@ def Initialize(self): elemental_neighbour_search = KratosMultiphysics.GenericFindElementalNeighboursProcess( computing_model_part) - elemental_neighbour_search.ExecuteInitialize() + elemental_neighbour_search.Execute() # Set and initialize the solution strategy solution_strategy = self._GetSolutionStrategy() diff --git a/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/generate_two_fluid_navier_stokes.py b/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/generate_two_fluid_navier_stokes.py index 0606f1cc4b23..e22fbb8bcaae 100644 --- a/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/generate_two_fluid_navier_stokes.py +++ b/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/generate_two_fluid_navier_stokes.py @@ -65,7 +65,6 @@ vn = DefineMatrix('vn',nnodes,dim) # Previous step velocity vnn = DefineMatrix('vnn',nnodes,dim) # 2 previous step velocity p = DefineVector('p',nnodes) # Pressure - pn = DefineVector('pn',nnodes) # Previous step Pressure penr= DefineVector('penr',nnodes) # Enriched Pressure ## Test functions definition diff --git a/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/two_fluid_navier_stokes_alpha_method_template.cpp b/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/two_fluid_navier_stokes_alpha_method_template.cpp index fa0e17ee2adb..1fe0407ddfc0 100644 --- a/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/two_fluid_navier_stokes_alpha_method_template.cpp +++ b/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/two_fluid_navier_stokes_alpha_method_template.cpp @@ -77,7 +77,7 @@ Element::Pointer TwoFluidNavierStokesAlphaMethod::Create( template <> void TwoFluidNavierStokesAlphaMethod>::CalculateStrainRate(TwoFluidNavierStokesAlphaMethodData<2, 3>& rData) const { - const double alpha_f=1/(1+rData.MaxSprectraRadius); + const double alpha_f = 1/(1+rData.MaxSpectralRadius); const BoundedMatrix velocity_alpha = rData.Velocity_OldStep1+ alpha_f*(rData.Velocity-rData.Velocity_OldStep1); auto& rDNDX = rData.DN_DX; auto& r_strain_rate = rData.StrainRate; @@ -92,7 +92,7 @@ void TwoFluidNavierStokesAlphaMethod>: template <> void TwoFluidNavierStokesAlphaMethod>::CalculateStrainRate(TwoFluidNavierStokesAlphaMethodData<3, 4>& rData) const { - const double alpha_f=1/(1+rData.MaxSprectraRadius); + const double alpha_f = 1/(1+rData.MaxSpectralRadius); const BoundedMatrix velocity_alpha = rData.Velocity_OldStep1+ alpha_f*(rData.Velocity-rData.Velocity_OldStep1); auto& rDNDX = rData.DN_DX; auto& r_strain_rate = rData.StrainRate; @@ -120,12 +120,12 @@ void TwoFluidNavierStokesAlphaMethod>: const double dt = rData.DeltaTime; const double dyn_tau = rData.DynamicTau; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const auto &v = rData.Velocity; const auto &vn = rData.Velocity_OldStep1; const auto &vmesh = rData.MeshVelocity; const auto &vmeshn = rData.MeshVelocityOldStep; - const double alpha_f=1/(1+rData.MaxSprectraRadius); + const double alpha_f = 1/(1+rData.MaxSpectralRadius); const BoundedMatrix vconv =(vn-vmeshn)+ alpha_f*((v-vmesh)-(vn-vmeshn)); // Get constitutive matrix @@ -155,7 +155,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double rho = rData.Density; const double mu = rData.EffectiveViscosity; const double h = rData.ElementSize; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double dt = rData.DeltaTime; const double alpha_f=1/(1+max_spectral_radius); @@ -200,7 +200,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double dt = rData.DeltaTime; const auto &acceleration_alpha_method=rData.AccelerationAlphaMethod; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double alpha_f=1/(1+max_spectral_radius); const double dyn_tau = rData.DynamicTau; @@ -225,7 +225,7 @@ void TwoFluidNavierStokesAlphaMethod>: constexpr double stab_c2 = 2.0; // Mass correction term - const double volume_error_ratio = rData.VolumeError; + const double volume_error_ratio = rData.VolumeErrorRate; auto &rhs = rData.rhs; @@ -244,7 +244,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double h = rData.ElementSize; const auto &acceleration_alpha_method=rData.AccelerationAlphaMethod; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double dt = rData.DeltaTime; const double alpha_f=1/(1+max_spectral_radius); const double dyn_tau = rData.DynamicTau; @@ -268,7 +268,7 @@ void TwoFluidNavierStokesAlphaMethod>: constexpr double stab_c2 = 2.0; // Mass correction term - const double volume_error_ratio = rData.VolumeError; + const double volume_error_ratio = rData.VolumeErrorRate; auto &rhs = rData.rhs; @@ -290,7 +290,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double h = rData.ElementSize; const auto &acceleration_alpha_method=rData.AccelerationAlphaMethod; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double dt = rData.DeltaTime; const double alpha_f=1/(1+max_spectral_radius); @@ -317,7 +317,7 @@ void TwoFluidNavierStokesAlphaMethod>: constexpr double stab_c2 = 2.0; // Mass correction term - const double volume_error_ratio = rData.VolumeError; + const double volume_error_ratio = rData.VolumeErrorRate; auto &V = rData.V; auto &H = rData.H; @@ -354,7 +354,7 @@ void TwoFluidNavierStokesAlphaMethod>: const double h = rData.ElementSize; const auto &acceleration_alpha_method=rData.AccelerationAlphaMethod; - const double max_spectral_radius=rData.MaxSprectraRadius; + const double max_spectral_radius = rData.MaxSpectralRadius; const double dt = rData.DeltaTime; const double alpha_f=1/(1-max_spectral_radius); @@ -381,7 +381,7 @@ void TwoFluidNavierStokesAlphaMethod>: constexpr double stab_c2 = 2.0; // Mass correction term - const double volume_error_ratio = rData.VolumeError; + const double volume_error_ratio = rData.VolumeErrorRate; auto &V = rData.V; auto &H = rData.H; @@ -480,7 +480,7 @@ void TwoFluidNavierStokesAlphaMethod::PressureGradientStabilizatio const double dt = rData.DeltaTime; const auto &v=rData.Velocity; const auto &vn = rData.Velocity_OldStep1; - const double alpha_m=0.5*((3-rData.MaxSprectraRadius)/(1+rData.MaxSprectraRadius)); + const double alpha_m = 0.5*((3-rData.MaxSpectralRadius)/(1+rData.MaxSpectralRadius)); const auto vmesh=rData.MeshVelocity; const auto vmeshn=rData.MeshVelocityOldStep; diff --git a/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/two_fluid_navier_stokes_template.cpp b/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/two_fluid_navier_stokes_template.cpp index 1537e557a860..dd6b07780173 100644 --- a/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/two_fluid_navier_stokes_template.cpp +++ b/applications/FluidDynamicsApplication/symbolic_generation/two_fluid_navier_stokes/two_fluid_navier_stokes_template.cpp @@ -80,7 +80,7 @@ void TwoFluidNavierStokes::CalculateLocalSystem( noalias(rLeftHandSideMatrix) = ZeroMatrix(LocalSize, LocalSize); noalias(rRightHandSideVector) = ZeroVector(LocalSize); - if (TElementData::ElementManagesTimeIntegration){ + if constexpr (TElementData::ElementManagesTimeIntegration){ TElementData data; data.Initialize(*this, rCurrentProcessInfo); diff --git a/applications/FluidDynamicsApplication/tests/Cavity/cfl_output_process_ref.dat b/applications/FluidDynamicsApplication/tests/Cavity/cfl_output_process_ref.dat deleted file mode 100644 index 79d9d7c8a477..000000000000 --- a/applications/FluidDynamicsApplication/tests/Cavity/cfl_output_process_ref.dat +++ /dev/null @@ -1,7 +0,0 @@ -# CFL for model part MainModelPart.Parts_Fluid| CFL_threshold: 2.5 -# Time Mean Std Max HowMany>2.5 [%] HowMany>1.0 [%] -0.2 1.29635531 0.73174549 4.31553514 34.00000000 74.00000000 -0.4 1.24104072 0.68944051 8.62066066 70.00000000 88.00000000 -0.6 1.28464358 0.69341896 12.92457380 80.00000000 94.00000000 -0.7999999999999999 1.38554194 0.68912698 17.23649008 84.00000000 96.00000000 -0.9999999999999999 1.41081684 0.74293974 21.56561048 88.00000000 96.00000000 diff --git a/applications/FluidDynamicsApplication/tests/Cavity/cfl_output_test_parameters.json b/applications/FluidDynamicsApplication/tests/Cavity/cfl_output_test_parameters.json deleted file mode 100644 index 788fe21de021..000000000000 --- a/applications/FluidDynamicsApplication/tests/Cavity/cfl_output_test_parameters.json +++ /dev/null @@ -1,112 +0,0 @@ -{ - "problem_data" : { - "problem_name" : "cavity5", - "parallel_type" : "OpenMP", - "echo_level" : 0, - "start_time" : 0.0, - "end_time" : 1.0 - }, - "restart_options" : { - "SaveRestart" : "False", - "RestartFrequency" : 0, - "LoadRestart" : "False", - "Restart_Step" : 0 - }, - "solver_settings" : { - "solver_type": "Monolithic", - "model_part_name": "MainModelPart", - "domain_size": 2, - "model_import_settings" : { - "input_type" : "mdpa", - "input_filename" : "square5" - }, - "material_import_settings": { - "materials_filename": "cavity_test_materials.json" - }, - "echo_level" : 0, - "compute_reactions" : false, - "maximum_iterations" : 1000, - "formulation" : { - "element_type" : "qsvms", - "use_orthogonal_subscales": false, - "dynamic_tau" : 0.0 - }, - "relative_velocity_tolerance" : 1e-6, - "absolute_velocity_tolerance" : 1e-6, - "relative_pressure_tolerance" : 1e-6, - "absolute_pressure_tolerance" : 1e-6, - "linear_solver_settings" : { - "solver_type" : "amgcl", - "max_iteration" : 200, - "tolerance" : 1e-9, - "provide_coordinates" : false, - "smoother_type" : "ilu0", - "krylov_type" : "gmres", - "coarsening_type" : "aggregation", - "scaling" : false - }, - "volume_model_part_name" : "Parts_Fluid", - "skin_parts" : ["NoSlip2D_left_wall","NoSlip2D_right_wall","NoSlip2D_bottom_wall","NoSlip2D_top_wall"], - "no_skin_parts" : ["Pressure_lower_left_corner"], - "time_stepping" : { - "automatic_time_step" : false, - "time_step" : 0.1 - } - }, - "processes": { - "initial_conditions_process_list" : [], - "boundary_conditions_process_list" : [{ - "python_module" : "assign_vector_variable_process", - "kratos_module" : "KratosMultiphysics", - "help" : "This process fixes the selected components of a given vector variable", - "process_name" : "AssignVectorVariableProcess", - "Parameters" : { - "model_part_name" : "MainModelPart.Parts_Fluid", - "variable_name" : "VELOCITY", - "constrained" : [false,false,false], - "value" : ["5*t*t*x*y-3*t*x","-20*t*x*x", "t*y*30*y"], - "interval" : [0.0,"End"] - } - },{ - "python_module" : "assign_scalar_variable_process", - "kratos_module" : "KratosMultiphysics", - "process_name" : "AssignScalarVariableProcess", - "Parameters" : { - "model_part_name" : "MainModelPart.Parts_Fluid", - "variable_name" : "PRESSURE", - "value" : "t*t+2", - "constrained" : false - } - }], - "gravity" : [], - "auxiliar_process_list" : [{ - "kratos_module" : "KratosMultiphysics.FluidDynamicsApplication", - "python_module" : "cfl_output_process", - "help" : "", - "Parameters" : { - "model_part_name" : "MainModelPart.Parts_Fluid", - "interval" : [0.0, 1e30], - "cfl_output_limit" : 2.5, - "print_to_screen" : false, - "print_format" : ".8f", - "write_output_file" : true, - "output_step" : 2, - "output_file_settings": { - "file_name": "cfl_output_process.dat" - } - } - },{ - "python_module" : "compare_two_files_check_process", - "kratos_module" : "KratosMultiphysics", - "help" : "", - "process_name" : "CompareTwoFilesCheckProcess", - "Parameters" :{ - "output_file_name" : "cfl_output_process.dat", - "reference_file_name" : "cfl_output_process_ref.dat", - "comparison_type" : "deterministic", - "remove_output_file" : true, - "tolerance" : 1e-5 - } - }] - } -} diff --git a/applications/FluidDynamicsApplication/tests/cfl_output_process_test.py b/applications/FluidDynamicsApplication/tests/cfl_output_process_test.py deleted file mode 100644 index 00010e3c40b1..000000000000 --- a/applications/FluidDynamicsApplication/tests/cfl_output_process_test.py +++ /dev/null @@ -1,67 +0,0 @@ -import KratosMultiphysics as km - -from fluid_analysis_without_solution import FluidAnalysisWithoutSolution - -import KratosMultiphysics.KratosUnittest as UnitTest -import KratosMultiphysics.kratos_utilities as kratos_utilities - -class CFLOutputProcessTest(UnitTest.TestCase): - - def setUp(self): - # Set to true to get post-process files for the test - self.print_output = True - - @UnitTest.skipIfApplicationsNotAvailable("StatisticsApplication") - def testCFLOutput(self): - work_folder = "Cavity" - settings_file_name = "cfl_output_test_parameters.json" - - with UnitTest.WorkFolderScope(work_folder, __file__): - self._runTest(settings_file_name) - - kratos_utilities.DeleteFileIfExisting("square5.time") - - def _runTest(self,settings_file_name): - model = km.Model() - with open(settings_file_name,'r') as settings_file: - settings = km.Parameters(settings_file.read()) - - # to check the results: add output settings block if needed - if self.print_output: - settings.AddValue("output_processes", km.Parameters(r'''{ - "gid_output" : [{ - "python_module" : "gid_output_process", - "kratos_module" : "KratosMultiphysics", - "process_name" : "GiDOutputProcess", - "Parameters" : { - "model_part_name" : "MainModelPart.fluid_computational_model_part", - "output_name" : "cavity", - "postprocess_parameters" : { - "result_file_configuration" : { - "gidpost_flags" : { - "GiDPostMode" : "GiD_PostBinary", - "WriteDeformedMeshFlag" : "WriteDeformed", - "WriteConditionsFlag" : "WriteConditions", - "MultiFileFlag" : "SingleFile" - }, - "file_label" : "time", - "output_control_type" : "step", - "output_interval" : 1, - "body_output" : true, - "node_output" : false, - "skin_output" : false, - "plane_output" : [], - "nodal_results" : ["VELOCITY","PRESSURE"], - "gauss_point_results" : [] - }, - "point_data_configuration" : [] - } - } - }] - }''')) - - analysis = FluidAnalysisWithoutSolution(model,settings) - analysis.Run() - -if __name__ == '__main__': - UnitTest.main() diff --git a/applications/FluidDynamicsApplication/tests/cpp_tests/test_fluid_calculation_utilities.cpp b/applications/FluidDynamicsApplication/tests/cpp_tests/test_fluid_calculation_utilities.cpp new file mode 100644 index 000000000000..12caeaf32144 --- /dev/null +++ b/applications/FluidDynamicsApplication/tests/cpp_tests/test_fluid_calculation_utilities.cpp @@ -0,0 +1,301 @@ +// | / | +// ' / __| _` | __| _ \ __| +// . \ | ( | | ( |\__ ` +// _|\_\_| \__,_|\__|\___/ ____/ +// Multi-Physics +// +// License: BSD License +// Kratos default license: kratos/license.txt +// +// Main authors: Suneth Warnakulasuriya +// +// + +// System includes + +// External includes + +// Project includes +#include "testing/testing.h" +#include "containers/model.h" +#include "includes/model_part.h" + +// Application includes +#include "custom_utilities/fluid_calculation_utilities.h" + +namespace Kratos { +namespace Testing { + + Element& GenerateTestModelPart(ModelPart& rModelPart, const unsigned int Dim) { + + // Set buffer size + rModelPart.SetBufferSize(2); + + // Variables addition + rModelPart.AddNodalSolutionStepVariable(DENSITY); + rModelPart.AddNodalSolutionStepVariable(DISPLACEMENT); + + // Process info creation + rModelPart.GetProcessInfo()[DOMAIN_SIZE] = Dim; + auto p_elem_prop = rModelPart.CreateNewProperties(1); + + // Element creation + auto p_node_1 = rModelPart.CreateNewNode(1, 0.0, 0.0, 0.0); + auto p_node_2 = rModelPart.CreateNewNode(2, 1.0, 0.0, 0.0); + auto p_node_3 = rModelPart.CreateNewNode(3, 0.0, 1.0, 0.0); + auto p_node_4 = rModelPart.CreateNewNode(4, 0.0, 1.0, 1.0); + + // set variable values + for (auto& r_node : rModelPart.Nodes()) { + const double node_id = r_node.Id(); + + r_node.FastGetSolutionStepValue(DENSITY) = node_id * 2.1; + r_node.FastGetSolutionStepValue(DISPLACEMENT) = array_1d({node_id * 3.4, node_id * node_id + 3, node_id * 2 + 4 }); + + r_node.FastGetSolutionStepValue(DENSITY, 1) = node_id * 4.9; + r_node.FastGetSolutionStepValue(DISPLACEMENT, 1) = array_1d({node_id * 6.1, node_id * node_id * 5 + 3, node_id * node_id * 2 + 4 }); + + r_node.SetValue(DENSITY, node_id * 5); + r_node.SetValue(DISPLACEMENT, array_1d({node_id, node_id * 6.7, node_id * 4 + 6})); + } + + if (Dim == 2) { + return *rModelPart.CreateNewElement("Element2D3N", 1, {1, 2, 3}, p_elem_prop); + } else { + return *rModelPart.CreateNewElement("Element3D4N", 1, {1, 2, 3, 4}, p_elem_prop); + } + } + + void CalculateGeometryData( + const Element::GeometryType& rGeometry, + Matrix& rNContainer, + Element::GeometryType::ShapeFunctionsGradientsType& rDN_DX) + { + const auto number_of_nodes = rGeometry.PointsNumber(); + const auto integration_method = GeometryData::IntegrationMethod::GI_GAUSS_2; + const IndexType number_of_gauss_points = rGeometry.IntegrationPointsNumber(integration_method); + + Vector DetJ; + rGeometry.ShapeFunctionsIntegrationPointsGradients(rDN_DX, DetJ, integration_method); + + if (rNContainer.size1() != number_of_gauss_points || rNContainer.size2() != number_of_nodes) { + rNContainer.resize(number_of_gauss_points, number_of_nodes, false); + } + + rNContainer = rGeometry.ShapeFunctionsValues(integration_method); + } + + template + void TestEvaluateInPoint(EvaluationMethodType&& rEvaluationMethod, NodalDataRetrievalType&& rNodalDataRetrievalType) + { + // Create a test element inside a modelpart + Model model; + ModelPart& model_part = model.CreateModelPart("Main"); + const auto& r_geometry = GenerateTestModelPart(model_part, TDim).GetGeometry(); + + // calculate gauss point data + Matrix Ns; + Element::GeometryType::ShapeFunctionsGradientsType dNdXs; + CalculateGeometryData(r_geometry, Ns, dNdXs); + + const Vector& N = row(Ns, 0); + + double density; + array_1d displacement; + + rEvaluationMethod(r_geometry, N, density, displacement); + + double check_density{0.0}; + array_1d check_displacement = ZeroVector(TDim); + + for (std::size_t i = 0; i < r_geometry.PointsNumber(); ++i) { + const auto& r_node = r_geometry[i]; + + check_density += rNodalDataRetrievalType(r_node, DENSITY) * N[i]; + + array_1d nodal_displacement; + nodal_displacement[0] = rNodalDataRetrievalType(r_node, DISPLACEMENT_X); + nodal_displacement[1] = rNodalDataRetrievalType(r_node, DISPLACEMENT_Y); + nodal_displacement[2] = rNodalDataRetrievalType(r_node, DISPLACEMENT_Z); + + for (std::size_t dim = 0; dim < TDim; ++dim) { + check_displacement[dim] += nodal_displacement[dim] * N[i]; + } + } + + KRATOS_CHECK_NEAR(density, check_density, 1e-16); + KRATOS_CHECK_VECTOR_NEAR(displacement, check_displacement, 1e-16); + } + + template + void TestEvaluateGradientInPoint(EvaluationMethodType&& rEvaluationMethod, NodalDataRetrievalType&& rNodalDataRetrievalType) + { + // Create a test element inside a modelpart + Model model; + ModelPart& model_part = model.CreateModelPart("Main"); + const auto& r_geometry = GenerateTestModelPart(model_part, TDim).GetGeometry(); + + // calculate gauss point data + Matrix Ns; + Element::GeometryType::ShapeFunctionsGradientsType dNdXs; + CalculateGeometryData(r_geometry, Ns, dNdXs); + + const Matrix& dNdX = dNdXs[0]; + array_1d density_gradient; + BoundedMatrix displacement_gradient; + + rEvaluationMethod(r_geometry, dNdX, density_gradient, displacement_gradient); + + + array_1d check_density_gradient = ZeroVector(TDim); + BoundedMatrix check_displacement_gradient = ZeroMatrix(TDim, TDim); + + for (std::size_t i = 0; i < r_geometry.PointsNumber(); ++i) { + const auto& r_node = r_geometry[i]; + + const auto density = rNodalDataRetrievalType(r_node, DENSITY); + + array_1d nodal_displacement; + nodal_displacement[0] = rNodalDataRetrievalType(r_node, DISPLACEMENT_X); + nodal_displacement[1] = rNodalDataRetrievalType(r_node, DISPLACEMENT_Y); + nodal_displacement[2] = rNodalDataRetrievalType(r_node, DISPLACEMENT_Z); + + const Vector& r_shape_derivatives = row(dNdX, i); + for (std::size_t j = 0; j < TDim; ++j) { + check_density_gradient[j] += density * r_shape_derivatives[j]; + + + for (std::size_t k = 0; k < TDim; ++k) { + check_displacement_gradient(k, j) += nodal_displacement[k] * r_shape_derivatives[j]; + } + } + } + + KRATOS_CHECK_VECTOR_NEAR(density_gradient, check_density_gradient, 1e-16); + KRATOS_CHECK_MATRIX_NEAR(displacement_gradient, check_displacement_gradient, 1e-16); + } + + KRATOS_TEST_CASE_IN_SUITE(FluidCalculationUtilitiesEvaluateInPoint2D, FluidDynamicsApplicationFastSuite) + { + TestEvaluateInPoint<2>([](const Element::GeometryType& rGeometry, const Vector& rN, double& rDensity, array_1d& rDisplacement) { + FluidCalculationUtilities::EvaluateInPoint(rGeometry, rN, + std::tie(rDensity, DENSITY), + std::tie(rDisplacement, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.FastGetSolutionStepValue(rVariable); + }); + + TestEvaluateInPoint<2>([](const Element::GeometryType& rGeometry, const Vector& rN, double& rDensity, array_1d& rDisplacement) { + FluidCalculationUtilities::EvaluateInPoint(rGeometry, rN, 1, + std::tie(rDensity, DENSITY), + std::tie(rDisplacement, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.FastGetSolutionStepValue(rVariable, 1); + }); + } + + KRATOS_TEST_CASE_IN_SUITE(FluidCalculationUtilitiesEvaluateInPoint3D, FluidDynamicsApplicationFastSuite) + { + TestEvaluateInPoint<3>([](const Element::GeometryType& rGeometry, const Vector& rN, double& rDensity, array_1d& rDisplacement) { + FluidCalculationUtilities::EvaluateInPoint(rGeometry, rN, + std::tie(rDensity, DENSITY), + std::tie(rDisplacement, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.FastGetSolutionStepValue(rVariable); + }); + + TestEvaluateInPoint<3>([](const Element::GeometryType& rGeometry, const Vector& rN, double& rDensity, array_1d& rDisplacement) { + FluidCalculationUtilities::EvaluateInPoint(rGeometry, rN, 1, + std::tie(rDensity, DENSITY), + std::tie(rDisplacement, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.FastGetSolutionStepValue(rVariable, 1); + }); + } + + KRATOS_TEST_CASE_IN_SUITE(FluidCalculationUtilitiesEvaluateNonHistoricalInPoint2D, FluidDynamicsApplicationFastSuite) + { + TestEvaluateInPoint<2>([](const Element::GeometryType& rGeometry, const Vector& rN, double& rDensity, array_1d& rDisplacement) { + FluidCalculationUtilities::EvaluateNonHistoricalInPoint(rGeometry, rN, + std::tie(rDensity, DENSITY), + std::tie(rDisplacement, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.GetValue(rVariable); + }); + + } + + KRATOS_TEST_CASE_IN_SUITE(FluidCalculationUtilitiesEvaluateNonHistoricalInPoint3D, FluidDynamicsApplicationFastSuite) + { + TestEvaluateInPoint<3>([](const Element::GeometryType& rGeometry, const Vector& rN, double& rDensity, array_1d& rDisplacement) { + FluidCalculationUtilities::EvaluateNonHistoricalInPoint(rGeometry, rN, + std::tie(rDensity, DENSITY), + std::tie(rDisplacement, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.GetValue(rVariable); + }); + } + + + KRATOS_TEST_CASE_IN_SUITE(FluidCalculationUtilitiesEvaluateGradientInPoint2D, FluidDynamicsApplicationFastSuite) + { + TestEvaluateGradientInPoint<2>([](const Element::GeometryType& rGeometry, const Matrix& rdNdX, array_1d& rDensityGradient, BoundedMatrix& rDisplacementGradient) { + FluidCalculationUtilities::EvaluateGradientInPoint(rGeometry, rdNdX, + std::tie(rDensityGradient, DENSITY), + std::tie(rDisplacementGradient, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.FastGetSolutionStepValue(rVariable); + }); + + TestEvaluateGradientInPoint<2>([](const Element::GeometryType& rGeometry, const Matrix& rdNdX, array_1d& rDensityGradient, BoundedMatrix& rDisplacementGradient) { + FluidCalculationUtilities::EvaluateGradientInPoint(rGeometry, rdNdX, 1, + std::tie(rDensityGradient, DENSITY), + std::tie(rDisplacementGradient, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.FastGetSolutionStepValue(rVariable, 1); + }); + } + + KRATOS_TEST_CASE_IN_SUITE(FluidCalculationUtilitiesEvaluateGradientInPoint3D, FluidDynamicsApplicationFastSuite) + { + TestEvaluateGradientInPoint<3>([](const Element::GeometryType& rGeometry, const Matrix& rdNdX, array_1d& rDensityGradient, BoundedMatrix& rDisplacementGradient) { + FluidCalculationUtilities::EvaluateGradientInPoint(rGeometry, rdNdX, + std::tie(rDensityGradient, DENSITY), + std::tie(rDisplacementGradient, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.FastGetSolutionStepValue(rVariable); + }); + + TestEvaluateGradientInPoint<3>([](const Element::GeometryType& rGeometry, const Matrix& rdNdX, array_1d& rDensityGradient, BoundedMatrix& rDisplacementGradient) { + FluidCalculationUtilities::EvaluateGradientInPoint(rGeometry, rdNdX, 1, + std::tie(rDensityGradient, DENSITY), + std::tie(rDisplacementGradient, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.FastGetSolutionStepValue(rVariable, 1); + }); + } + + KRATOS_TEST_CASE_IN_SUITE(FluidCalculationUtilitiesEvaluateNonHistoricalGradientInPoint2D, FluidDynamicsApplicationFastSuite) + { + TestEvaluateGradientInPoint<2>([](const Element::GeometryType& rGeometry, const Matrix& rdNdX, array_1d& rDensityGradient, BoundedMatrix& rDisplacementGradient) { + FluidCalculationUtilities::EvaluateNonHistoricalGradientInPoint(rGeometry, rdNdX, + std::tie(rDensityGradient, DENSITY), + std::tie(rDisplacementGradient, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.GetValue(rVariable); + }); + } + + KRATOS_TEST_CASE_IN_SUITE(FluidCalculationUtilitiesEvaluateNonHistoricalGradientInPoint3D, FluidDynamicsApplicationFastSuite) + { + TestEvaluateGradientInPoint<3>([](const Element::GeometryType& rGeometry, const Matrix& rdNdX, array_1d& rDensityGradient, BoundedMatrix& rDisplacementGradient) { + FluidCalculationUtilities::EvaluateNonHistoricalGradientInPoint(rGeometry, rdNdX, + std::tie(rDensityGradient, DENSITY), + std::tie(rDisplacementGradient, DISPLACEMENT)); + }, [](const ModelPart::NodeType& rNode, const Variable& rVariable) { + return rNode.GetValue(rVariable); + }); + } + +} // namespace Testing +} // namespace Kratos. diff --git a/applications/FluidDynamicsApplication/tests/distance_smoothing_test.py b/applications/FluidDynamicsApplication/tests/distance_smoothing_test.py index 1bda0bd11c28..db00c0cd5802 100644 --- a/applications/FluidDynamicsApplication/tests/distance_smoothing_test.py +++ b/applications/FluidDynamicsApplication/tests/distance_smoothing_test.py @@ -41,7 +41,7 @@ def test_smoothing_2d_square(self): kratos_comm, model_part).Execute() KratosMultiphysics.GenericFindElementalNeighboursProcess( - model_part).ExecuteInitialize() + model_part).Execute() # Set IS_STRUCTURE to define contact with solid for node in model_part.Nodes: diff --git a/applications/FluidDynamicsApplication/tests/sod_shock_tube_test/sod_shock_tube_explicit_ASGS_SC_results.json b/applications/FluidDynamicsApplication/tests/sod_shock_tube_test/sod_shock_tube_explicit_ASGS_SC_results.json index 3bb5d6cfd4fd..e34fa4be405d 100644 --- a/applications/FluidDynamicsApplication/tests/sod_shock_tube_test/sod_shock_tube_explicit_ASGS_SC_results.json +++ b/applications/FluidDynamicsApplication/tests/sod_shock_tube_test/sod_shock_tube_explicit_ASGS_SC_results.json @@ -1 +1 @@ -{"NODE_55": {"MOMENTUM_X": [0.0, 1.3163788719588541e-45, 4.007700411163886e-34, 4.618616135936775e-26, 4.2308840632471136e-19, 7.269954329774323e-15, 6.00818409539189e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999938, 0.9999999999949254], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999787, 2.4999999999822395]}, "ELEMENT_142": {}, "ELEMENT_371": {}, "ELEMENT_195": {}, "ELEMENT_1402": {}, "ELEMENT_179": {}, "ELEMENT_1804": {}, "ELEMENT_637": {}, "NODE_67": {"MOMENTUM_X": [0.0, 9.495259225955221e-40, 3.8927464401088786e-29, 7.011716557826016e-22, 9.280120130548296e-16, 1.7863450066305613e-12, 7.197811748906752e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999992, 0.9999999999984868, 0.9999999993898675], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.4999999999947042, 2.499999997864536]}, "ELEMENT_17": {}, "ELEMENT_1116": {}, "NODE_1101": {"MOMENTUM_X": [0.0, 0.0, 2.8072400238431483e-46, 2.8471850784701973e-37, 5.206202277499331e-30, 9.707276391088864e-24, 9.584235265053354e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "ELEMENT_1095": {}, "ELEMENT_1301": {}, "ELEMENT_440": {}, "ELEMENT_1241": {}, "NODE_852": {"MOMENTUM_X": [0.0, 3.383679614998172e-18, 1.608945046929531e-12, 2.9367600086452302e-08, 0.00020584211140464834, 0.13770232971084312, 0.25595506573211196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000015146, 0.12500002762223372, 0.12519128335137064, 0.20792369973230584, 0.27159142814905957], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000424094, 0.25000007734226853, 0.25053626753635966, 0.5786473867353913, 0.8943180466045693]}, "ELEMENT_1340": {}, "NODE_424": {"MOMENTUM_X": [2.522445141690656e-07, 0.0013451788609561595, 0.02751778828434738, 0.10800043531488289, 0.1964009342244508, 0.2585552329580196, 0.29777660483744267], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999997870847294, 0.9988643140698406, 0.9763944120898087, 0.9027872446622182, 0.8114132374906948, 0.7364879680931323, 0.6814215153338684], "TOTAL_ENERGY": [2.4999992547967014, 2.496027622857295, 2.4182654388138176, 2.1734559186127296, 1.8900820040010295, 1.6747765736511016, 1.5263337598425954]}, "NODE_99": {"MOMENTUM_X": [0.0, 7.755367078592187e-40, 8.051410763673705e-30, 4.550860095665365e-22, 4.1833280827524075e-16, 8.497772723360213e-13, 3.8302735997928677e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 0.9999999999992811, 0.9999999996763456], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999987, 2.4999999999974842, 2.499999998867209]}, "NODE_910": {"MOMENTUM_X": [0.0, 7.015461120953673e-26, 1.5780462074498437e-17, 1.0340906331429425e-12, 1.0332095759613805e-08, 6.133246116297195e-05, 0.08764289077241602], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000097866, 0.12500000979758277, 0.12505802126150087, 0.18023354137712194], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.25000000000274025, 0.2500000274332335, 0.2501625200334204, 0.4528669830600683]}, "NODE_841": {"MOMENTUM_X": [0.0, 5.541197121743462e-17, 1.5837145595489236e-11, 2.3198710625129584e-07, 0.0015204073761225742, 0.21717693427712792, 0.23850696734438231], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000006, 0.12500000001490466, 0.12500021811457757, 0.12633898448390346, 0.2502378741876621, 0.26363636042229677], "TOTAL_ENERGY": [0.25, 0.25000000000000017, 0.250000000041733, 0.2500006107216901, 0.25378501435286377, 0.7876382311490271, 0.8497258919562977]}, "NODE_721": {"MOMENTUM_X": [4.2359630982399986e-12, 2.3066156604268594e-05, 0.06048997720788378, 0.27974578050178484, 0.24908467237349757, 0.2856257640504592, 0.35415945478389543], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000399944, 0.12502171679857044, 0.16443317153237685, 0.2827329315107838, 0.2724535765013027, 0.30829722230720297, 0.3826603163580511], "TOTAL_ENERGY": [0.25000000001119843, 0.25006081609468317, 0.38736874216963946, 0.9544202548891358, 0.8645843969812541, 0.8934697600977974, 0.924050835367889]}, "ELEMENT_1143": {}, "ELEMENT_1584": {}, "ELEMENT_979": {}, "ELEMENT_1442": {}, "ELEMENT_1197": {}, "NODE_790": {"MOMENTUM_X": [1.4128270709459363e-21, 3.1225474142986915e-11, 1.0504453700914376e-06, 0.006461239598482356, 0.2492783957468855, 0.24175945884896347, 0.25071873785473237], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000002976644, 0.125001004605755, 0.13021996497812213, 0.26808297453309865, 0.26584626332220107, 0.27152842552579665], "TOTAL_ENERGY": [0.25, 0.25000000008334605, 0.2500028129147397, 0.265184330502075, 0.8770957548995946, 0.8594522950661979, 0.8768461174784239]}, "ELEMENT_1870": {}, "NODE_898": {"MOMENTUM_X": [0.0, 2.9597720664196608e-24, 1.5806157376325724e-16, 8.181462801812009e-12, 7.28193541955412e-08, 0.0004276617624742246, 0.16598776687865235], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000014, 0.1250000000077181, 0.1250000687853031, 0.12539475745341377, 0.22348553168842497], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000044, 0.2500000000216107, 0.25000019259893425, 0.2511082244453873, 0.6527026513767941]}, "ELEMENT_1365": {}, "ELEMENT_1801": {}, "NODE_378": {"MOMENTUM_X": [1.4178252031637814e-11, 4.567754857102483e-06, 0.000796671823373653, 0.014437395791885785, 0.06669107249436007, 0.142228241676155, 0.20752861976938822], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999880246, 0.9999961452378286, 0.9993266945857949, 0.9876883926900347, 0.9414095485885724, 0.8688815461385574, 0.7986669271997735], "TOTAL_ENERGY": [2.4999999999580864, 2.4999865083675563, 2.4976442756809343, 2.4571506724864136, 2.2999559317811684, 2.065441900368172, 1.8521649870778611]}, "ELEMENT_930": {}, "ELEMENT_762": {}, "ELEMENT_337": {}, "ELEMENT_887": {}, "NODE_223": {"MOMENTUM_X": [0.0, 7.208040374035037e-22, 6.109219442969635e-15, 4.5027010678147376e-11, 3.0287543974923325e-08, 3.992283633450672e-06, 0.00015362223984740145], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999948, 0.9999999999618682, 0.9999999743981638, 0.9999966334309629, 0.9998706468341848], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999982, 2.4999999998665388, 2.499999910393574, 2.4999882170294407, 2.4995472924433093]}, "ELEMENT_1940": {}, "NODE_528": {"MOMENTUM_X": [0.24587296864984542, 0.36029644277396183, 0.3748177995726749, 0.3842898148648015, 0.38698340883660476, 0.387254923458546, 0.390406731917362], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.6595773133276501, 0.5337493126622652, 0.48651246906957846, 0.46588408626373945, 0.45069697724781416, 0.43942741157615034, 0.4348515941733267], "TOTAL_ENERGY": [1.4739115611610978, 1.184449628248515, 1.075212264980702, 1.022539573400695, 0.9912105858634596, 0.9702160251893739, 0.9574763852457815]}, "ELEMENT_1555": {}, "ELEMENT_119": {}, "ELEMENT_357": {}, "NODE_1069": {"MOMENTUM_X": [0.0, 2.35300216502761e-55, 1.8896923298542643e-41, 5.135607415228497e-33, 7.237869930003739e-26, 1.2401933971491464e-19, 5.065577600381237e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000483], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001343]}, "ELEMENT_1875": {}, "NODE_826": {"MOMENTUM_X": [0.0, 1.0184324064374934e-16, 2.53080044080281e-11, 3.994760613388914e-07, 0.0034700044065961336, 0.2742838570675475, 0.2190675391687313], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000000001, 0.1250000000270907, 0.1250004264847358, 0.12818091650313457, 0.2840793619240915, 0.25830177845326313], "TOTAL_ENERGY": [0.25, 0.2500000000000003, 0.2500000000758539, 0.2500011941599364, 0.25908273332650467, 0.951282727006149, 0.805788287529999]}, "ELEMENT_1810": {}, "ELEMENT_425": {}, "ELEMENT_92": {}, "NODE_425": {"MOMENTUM_X": [2.481562592721556e-07, 0.0013294895575966755, 0.027411896922968096, 0.10794055096090216, 0.19648994893720634, 0.25871721131372005, 0.2979419722177327], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999999790795278, 0.9988796332181464, 0.976528071285361, 0.9029859252352662, 0.811523105690711, 0.7364915949920616, 0.6813537630710056], "TOTAL_ENERGY": [2.4999992677836165, 2.4960811717474223, 2.4187239976040056, 2.1741083545038205, 1.8904442372837014, 1.6748354802872856, 1.5262019181026831]}, "ELEMENT_1130": {}, "ELEMENT_1707": {}, "NODE_681": {"MOMENTUM_X": [4.5934749523154123e-07, 0.05266535260761969, 0.26693217977694117, 0.27018410673332227, 0.3426954732048122, 0.4069303943143669, 0.4004984453803139], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500044868717772, 0.1599518084371159, 0.2781179386084095, 0.29356028523183125, 0.37141255004263984, 0.44115011307283886, 0.4349005867250882], "TOTAL_ENERGY": [0.25000125632927245, 0.3692386810658583, 0.9221678373604486, 0.8822525138505082, 0.917393027943116, 0.946684975209063, 0.942740348859184]}, "NODE_171": {"MOMENTUM_X": [0.0, 3.672136744812924e-26, 8.735990345527123e-18, 5.78770526057899e-13, 8.218108863757378e-10, 2.0095282904003898e-07, 1.3399295744008101e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999995067, 0.9999999992990743, 0.9999998285886185, 0.9999885823191422], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999998274, 2.4999999975467606, 2.4999994000602226, 2.4999600383492937]}, "NODE_138": {"MOMENTUM_X": [0.0, 3.817058092959042e-39, 4.266754631688084e-29, 5.745367793241642e-22, 6.276991104075042e-16, 1.2832696054379946e-12, 5.620280505098773e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999994, 0.9999999999987851, 0.9999999994718389], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999998, 2.4999999999957474, 2.499999998151436]}, "ELEMENT_216": {}, "NODE_411": {"MOMENTUM_X": [2.6073194969315974e-08, 0.00038305201514773554, 0.013391425166070524, 0.07416181718725462, 0.16153171920581505, 0.23149174030728475, 0.2777952671955535], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999779758746, 0.9996764852397296, 0.9885884237424292, 0.9345452257045457, 0.8489559643629909, 0.7703786859438458, 0.7102798638574248], "TOTAL_ENERGY": [2.4999999229155625, 2.4988679138944208, 2.460274163890499, 2.2772207756235296, 2.0036689842703646, 1.7701700473537818, 1.6030290347349605]}, "ELEMENT_583": {}, "NODE_179": {"MOMENTUM_X": [0.0, 4.0159447690545254e-24, 4.765622835051613e-16, 6.458606837540668e-12, 6.3729192638054675e-09, 1.1153055215020866e-06, 5.401486426362996e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999997, 0.9999999999948675, 0.9999999949486733, 0.9999991164152535, 0.9999571304542242], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999987, 2.499999999982036, 2.499999982320357, 2.4999969074550594, 2.4998499601642603]}, "ELEMENT_1051": {}, "ELEMENT_1834": {}, "ELEMENT_1800": {}, "ELEMENT_779": {}, "NODE_340": {"MOMENTUM_X": [2.8118200435914056e-15, 2.8338777291416343e-08, 2.3909335865145453e-05, 0.0014497557553959043, 0.01667143159557823, 0.0640446335413657, 0.12947281985920145], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999976, 0.9999999753915444, 0.9999793285607903, 0.9987519418312846, 0.9856071704408639, 0.943493515365387, 0.8813551671317182], "TOTAL_ENERGY": [2.4999999999999916, 2.4999999138704068, 2.499927650823866, 2.495634451880596, 2.4499418039467993, 2.3068411240118345, 2.1046415095015525]}, "ELEMENT_978": {}, "ELEMENT_1889": {}, "ELEMENT_1639": {}, "ELEMENT_933": {}, "ELEMENT_1645": {}, "NODE_546": {"MOMENTUM_X": [0.4003085459046318, 0.40420448732243625, 0.3988635178530525, 0.3973480096815474, 0.3982895284578448, 0.39660452449378814, 0.3969913488157157], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.543921480986333, 0.44665447180214873, 0.4259581260115367, 0.41757228898870163, 0.4152022437878926, 0.4116522726164353, 0.41091574837443223], "TOTAL_ENERGY": [1.1857528628678198, 0.9830612087934963, 0.9384578748722573, 0.9236889225105993, 0.9170165875596382, 0.912201056097124, 0.909950091022822]}, "NODE_845": {"MOMENTUM_X": [0.0, 7.65828536239716e-17, 2.2880615205439358e-11, 3.0928070288311717e-07, 0.00187197787292581, 0.21456425546647045, 0.2434261244014424], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000008, 0.1250000000218286, 0.12500029581536104, 0.12665006975156007, 0.25017324035636945, 0.2664630718089818], "TOTAL_ENERGY": [0.25, 0.2500000000000002, 0.25000000006112005, 0.2500008282845881, 0.2546740346071047, 0.7840508232610961, 0.8640951325522994]}, "ELEMENT_1435": {}, "ELEMENT_945": {}, "NODE_634": {"MOMENTUM_X": [0.005420822141996098, 0.28411405446264726, 0.31122806065804465, 0.4085877732183253, 0.4149795274223113, 0.3863713219028751, 0.3944448325627313], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1292913274548915, 0.288869781682854, 0.3395506857846679, 0.4405907949532009, 0.44817166152095694, 0.41728315636513524, 0.426178281976603], "TOTAL_ENERGY": [0.2624820129933737, 0.9491630206585232, 0.8924259215025114, 0.9504998171072554, 0.9516738430471814, 0.9385068792138505, 0.9419568255573524]}, "ELEMENT_1899": {}, "ELEMENT_840": {}, "ELEMENT_1147": {}, "ELEMENT_1426": {}, "ELEMENT_1190": {}, "ELEMENT_1815": {}, "ELEMENT_678": {}, "ELEMENT_1934": {}, "NODE_1044": {"MOMENTUM_X": [0.0, 6.664700872060787e-48, 1.311761738554589e-35, 3.200357330792779e-27, 4.204997514573625e-20, 2.50799886330451e-15, 1.9194536404478374e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000244, 0.12500000001864667], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000683, 0.2500000000522106]}, "ELEMENT_1521": {}, "ELEMENT_1485": {}, "ELEMENT_769": {}, "NODE_492": {"MOMENTUM_X": [0.011508835065038296, 0.15898560197040126, 0.27409780862242583, 0.3291528187793123, 0.3550270036052239, 0.36871308779535067, 0.37658350967865606], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9902291866486789, 0.8517443368039628, 0.7158926880319061, 0.6301614500259667, 0.5786201050419236, 0.5455287787816024, 0.522500412707971], "TOTAL_ENERGY": [2.4659948102307063, 2.013327678991738, 1.6190191045533677, 1.396108376714302, 1.2713374784188465, 1.194447696153374, 1.142844010956905]}, "NODE_243": {"MOMENTUM_X": [0.0, 2.4825850682904132e-21, 1.637656637469504e-14, 1.0129611932314844e-10, 6.019254366204892e-08, 7.162001058386805e-06, 0.00025103223158536427], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999842, 0.9999999999040661, 0.9999999435253883, 0.9999933584994342, 0.999770034163835], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999454, 2.4999999996642317, 2.499999802338865, 2.499976754817485, 2.499195197032405]}, "ELEMENT_1333": {}, "NODE_444": {"MOMENTUM_X": [1.6506973732661652e-05, 0.011500122318617568, 0.0845755346536759, 0.18793900025835902, 0.26163132658515764, 0.30524705525754653, 0.33136872387885186], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999860709196903, 0.9902127295583311, 0.9248627710527606, 0.820572611196245, 0.7322184704555302, 0.6697267840504186, 0.6257349477259432], "TOTAL_ENERGY": [2.4999512487666506, 2.4659123738806255, 2.2454231894948946, 1.9175985929463024, 1.6630278011883126, 1.4958862030365907, 1.3845908972023038]}, "NODE_133": {"MOMENTUM_X": [0.0, 1.219195048067072e-34, 2.6808656937725475e-25, 8.942952397363209e-18, 9.899387184318552e-14, 9.651257918717825e-11, 2.2458302627836615e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999162, 0.9999999999184643, 0.999999981046644], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999997073, 2.4999999997146256, 2.4999999336632555]}, "ELEMENT_1531": {}, "ELEMENT_867": {}, "NODE_734": {"MOMENTUM_X": [1.884037994934663e-13, 2.8269464169594793e-06, 0.017482799596815406, 0.27314390431664065, 0.2434763451403023, 0.26779621487202443, 0.31994949832166675], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000017808, 0.12500267848057028, 0.13789173183752346, 0.27946206158760634, 0.26766402903774417, 0.2892800793100401, 0.34608780900188824], "TOTAL_ENERGY": [0.2500000000004986, 0.2500074998862312, 0.28950405421154474, 0.9386141767333063, 0.858407202779593, 0.885232609577457, 0.908024226316675]}, "NODE_13": {"MOMENTUM_X": [0.0, 0.0, 5.007480289981551e-40, 1.3799075035148362e-31, 1.7369370558715485e-24, 8.954128090747441e-18, 1.9902239387431032e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999831], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999414]}, "NODE_1086": {"MOMENTUM_X": [0.0, 0.0, 4.4178322287692445e-42, 3.0039234678184883e-33, 6.842030243909266e-26, 7.762301616112283e-20, 3.95605517607852e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000375], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000105]}, "NODE_832": {"MOMENTUM_X": [0.0, 1.0536938679067793e-15, 1.850154572382105e-10, 2.007237585664481e-06, 0.009986605871813485, 0.2680407914743227, 0.23683829210407195], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125000000000001, 0.12500000017459678, 0.125001895973789, 0.1327600589584552, 0.27643664376390115, 0.2630637159888489], "TOTAL_ENERGY": [0.25, 0.2500000000000028, 0.2500000004888709, 0.2500053087917555, 0.27300043216035536, 0.924284313502659, 0.8457138678341913]}, "ELEMENT_1630": {}, "ELEMENT_936": {}, "ELEMENT_281": {}, "NODE_81": {"MOMENTUM_X": [0.0, 1.0676467711884095e-39, 2.567792921463673e-29, 7.352432377315218e-22, 6.910387485894381e-16, 1.344412520614421e-12, 5.616745327590056e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999994, 0.999999999998866, 0.9999999995261207], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999998, 2.4999999999960303, 2.499999998341422]}, "ELEMENT_1079": {}, "ELEMENT_1334": {}, "NODE_746": {"MOMENTUM_X": [7.347653424195512e-15, 3.410450392859214e-07, 0.0034039575793433164, 0.23212482485539868, 0.24407314783435335, 0.25742004140570546, 0.2923997405479589], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000697, 0.1250003259292777, 0.12788894187816321, 0.25938155262511425, 0.2673204694249445, 0.2787095225480813, 0.31728777604330505], "TOTAL_ENERGY": [0.2500000000000195, 0.25000091260410934, 0.25826055215422394, 0.831228490418267, 0.864220333924586, 0.8803686409695592, 0.8944350898890704]}, "ELEMENT_786": {}, "NODE_416": {"MOMENTUM_X": [2.0141855370343986e-08, 0.0003194812012078883, 0.012347586807425759, 0.07246380124752448, 0.16121927947629083, 0.23228349436057125, 0.2788884941814778], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999830786952, 0.9997321895016928, 0.989574124327098, 0.9366090812802942, 0.8501615548801775, 0.7703073497285697, 0.7094363753679992], "TOTAL_ENERGY": [2.4999999407754343, 2.499062809976549, 2.4636891313386897, 2.284082692093605, 2.007500306833303, 1.7701501226327963, 1.6009224707369138]}, "ELEMENT_1055": {}, "NODE_626": {"MOMENTUM_X": [0.03860989799137545, 0.28424506967700036, 0.36516424686017707, 0.40921024610723983, 0.3868437832996351, 0.38956711194828053, 0.39078378735166697], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.15048310479455926, 0.30079405630516926, 0.3966644051338011, 0.4449658732430899, 0.4213445830182946, 0.42463849547009824, 0.4259738382638534], "TOTAL_ENERGY": [0.3350176774294481, 0.9155181957023577, 0.9254256978487704, 0.9449425501826619, 0.9345830284730128, 0.93598753028866, 0.9370738469339511]}, "NODE_139": {"MOMENTUM_X": [0.0, 5.95968205838691e-37, 2.9331493285891213e-27, 3.914479302662926e-20, 7.498831678922314e-15, 1.069540887874638e-11, 3.4898513798749446e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999936, 0.9999999999909663, 0.9999999970581528], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999978, 2.4999999999683826, 2.499999989703535]}, "ELEMENT_1268": {}, "ELEMENT_543": {}, "ELEMENT_596": {}, "ELEMENT_507": {}, "ELEMENT_44": {}, "NODE_743": {"MOMENTUM_X": [7.101493870165809e-15, 3.041163991171942e-07, 0.002876633579934786, 0.23664764130609606, 0.2399333845719669, 0.26020245474056425, 0.29272156269268523], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000672, 0.1250002866275, 0.12745552338934818, 0.26046661015553685, 0.26497434506507406, 0.27957048656583466, 0.31640128293614955], "TOTAL_ENERGY": [0.25000000000001876, 0.2500008025586621, 0.2569999841111212, 0.839719205872271, 0.8516695666386824, 0.8859033043164216, 0.8952290424732705]}, "ELEMENT_112": {}, "NODE_812": {"MOMENTUM_X": [8.841611259223583e-26, 2.1300118223076792e-13, 1.587474939692971e-08, 0.00012871657664167396, 0.11410454229264355, 0.2614314408316301, 0.2486075084729063], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000020278, 0.1250000151709063, 0.12512220633038093, 0.195595236245116, 0.2747493558881388, 0.2690892777363375], "TOTAL_ENERGY": [0.25, 0.2500000000005679, 0.2500000424785422, 0.2503424456986457, 0.5198471202881475, 0.9102675259087991, 0.8762204842591376]}, "ELEMENT_518": {}, "NODE_167": {"MOMENTUM_X": [0.0, 8.65871361740747e-28, 4.2389978289758644e-19, 6.528826204249738e-14, 1.2788469705354924e-10, 4.18005556069439e-08, 3.657155824002802e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999449, 0.9999999998922252, 0.9999999647667016, 0.9999969177740252], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999998077, 2.499999999622788, 2.499999876683458, 2.499989212226565]}, "ELEMENT_1238": {}, "NODE_535": {"MOMENTUM_X": [0.2654485997627443, 0.37495398217766396, 0.3874822644358263, 0.3930814357148025, 0.3936937195844294, 0.3945118911406773, 0.39528453953766574], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.6763088269080054, 0.5221098947184816, 0.4770757048777568, 0.45739740840365783, 0.4439805244264076, 0.43612852900198995, 0.4310715894901522], "TOTAL_ENERGY": [1.509146150716363, 1.1464479116055848, 1.0464474909982011, 1.0027428071111646, 0.9772613962521769, 0.9613418294205073, 0.95056531254175]}, "NODE_468": {"MOMENTUM_X": [0.000616477531668905, 0.05610313949773832, 0.17612889230375897, 0.26641347526521125, 0.31537349251535796, 0.3419515438837029, 0.35755681115521043], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9994796088651501, 0.9510211052679355, 0.8334892113283191, 0.7260160701714584, 0.6535928974179253, 0.6057221311508869, 0.5726381302506457], "TOTAL_ENERGY": [2.4981792854722498, 2.3323630622483607, 1.956904356340422, 1.6461824256292001, 1.4546491168862605, 1.3358716097115653, 1.2571141512072572]}, "ELEMENT_1370": {}, "NODE_172": {"MOMENTUM_X": [0.0, 6.881820887735681e-28, 3.7747516455749863e-19, 5.372226162799534e-14, 1.0860610630633459e-10, 3.667027786529454e-08, 3.309297082776011e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999547, 0.9999999999084542, 0.9999999691015028, 0.9999972133862591], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999998415, 2.4999999996795905, 2.499999891855262, 2.4999902468661785]}, "ELEMENT_598": {}, "NODE_95": {"MOMENTUM_X": [0.0, 6.122686096132768e-38, 8.623732291568511e-28, 1.9757927920454126e-20, 4.39632889747343e-15, 6.6178875462298295e-12, 2.2211792771976677e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999962, 0.9999999999944175, 0.9999999981262824], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999987, 2.4999999999804614, 2.4999999934419885]}, "ELEMENT_450": {}, "NODE_621": {"MOMENTUM_X": [0.031171416215150887, 0.2953877649540814, 0.35928860773882293, 0.4249071888657002, 0.39685666754069815, 0.3862100044702041, 0.4006319558001357], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.14595356851263913, 0.3041766839745681, 0.3897142469681137, 0.4575728353863542, 0.4282195780718957, 0.4165760016415408, 0.4322179430441541], "TOTAL_ENERGY": [0.318396360210159, 0.9416887948801849, 0.9188934055828737, 0.957751129857887, 0.9424364211502692, 0.938163720296993, 0.9447932528827334]}, "NODE_25": {"MOMENTUM_X": [0.0, 5.686185916878612e-50, 5.496748943129176e-37, 9.154685654244528e-29, 9.56029067229629e-22, 3.542112767759626e-16, 4.057182917987244e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 0.999999999999657], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.4999999999988]}, "ELEMENT_1275": {}, "ELEMENT_436": {}, "NODE_711": {"MOMENTUM_X": [8.726191465710908e-11, 0.00018878071449136515, 0.1350252212631728, 0.2626451689314018, 0.2619635739001589, 0.3113207977100948, 0.38882439315675654], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000008244344, 0.12517616619817404, 0.20675399244676573, 0.2755677736375155, 0.283238795925724, 0.33645378857257263, 0.4201004982722316], "TOTAL_ENERGY": [0.2500000002308417, 0.25049385757953285, 0.5722974698480864, 0.9088668353614081, 0.8811097913286954, 0.9042805281146841, 0.9403917044669181]}, "ELEMENT_904": {}, "ELEMENT_190": {}, "ELEMENT_1005": {}, "ELEMENT_1891": {}, "NODE_517": {"MOMENTUM_X": [0.2107576836482346, 0.3378087710165261, 0.36965317348210397, 0.3785308325796222, 0.3822520137898527, 0.38660929825233264, 0.38838692565679245], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.8262832879780726, 0.6216416048048977, 0.5495802486876472, 0.5079381523767019, 0.48232119164840087, 0.46843875816467007, 0.4575329161051268], "TOTAL_ENERGY": [1.9456081845445885, 1.3737695412552358, 1.202901922324065, 1.1120116980963732, 1.0598094348371503, 1.0273452120248532, 1.0045027994515938]}, "ELEMENT_1189": {}, "NODE_855": {"MOMENTUM_X": [0.0, 4.021114946306919e-18, 2.2176832427329794e-12, 3.676691960561363e-08, 0.00022675521739359098, 0.1384466281545644, 0.25706818263897296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000209863, 0.12500003486665945, 0.12521239548154006, 0.2087654422827567, 0.2724099817918968], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000058762, 0.2500000976266688, 0.25059552923427414, 0.5815156927234155, 0.898021165462879]}, "ELEMENT_235": {}, "ELEMENT_212": {}, "ELEMENT_239": {}, "ELEMENT_555": {}, "NODE_581": {"MOMENTUM_X": [0.3389494152300439, 0.41622673718002023, 0.38967903011436306, 0.39710986880809535, 0.39512567887874617, 0.3952207707547447, 0.3955021134825012], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3454866655153863, 0.43254604204841723, 0.399874833171481, 0.4043280621725118, 0.3998059929323868, 0.3980357422875419, 0.39690079180613874], "TOTAL_ENERGY": [0.9263089948132084, 0.9156892891438466, 0.8953377638416844, 0.8927151892005577, 0.8862410503619947, 0.8828934314799096, 0.8803699516211858]}, "ELEMENT_78": {}, "ELEMENT_1273": {}, "ELEMENT_515": {}, "ELEMENT_503": {}, "NODE_553": {"MOMENTUM_X": [0.4113636176827428, 0.3881843973206167, 0.3969459857452031, 0.39529733096623343, 0.3945088692273281, 0.39635471266431366, 0.39564070567310283], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3540364392279954, 0.35143336124045266, 0.3683313781898884, 0.3711511052228614, 0.37349410748943324, 0.3777214391967468, 0.37884501141935817], "TOTAL_ENERGY": [0.7889186046877805, 0.8049776978967103, 0.8231489412013044, 0.8347386001599775, 0.8400837673206416, 0.846149871161042, 0.8495039691367942]}, "ELEMENT_878": {}, "ELEMENT_755": {}, "ELEMENT_1378": {}, "NODE_317": {"MOMENTUM_X": [4.144417406904309e-18, 9.277693485627496e-10, 2.0075155128335158e-06, 0.000250455578538772, 0.005215974193645624, 0.03152943725992632, 0.08502318280794292], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999992588959, 0.9999984060121334, 0.9998010725969233, 0.9958211996549864, 0.974105943853429, 0.9270988649357144], "TOTAL_ENERGY": [2.5, 2.499999997406136, 2.4999944210486613, 2.499303834848088, 2.4854053587524922, 2.4104584502674995, 2.2529768910158268]}, "ELEMENT_891": {}, "ELEMENT_797": {}, "ELEMENT_48": {}, "ELEMENT_1967": {}, "ELEMENT_468": {}, "ELEMENT_366": {}, "ELEMENT_1428": {}, "ELEMENT_524": {}, "ELEMENT_795": {}, "ELEMENT_451": {}, "NODE_483": {"MOMENTUM_X": [0.00242528516026833, 0.09786354478814188, 0.22807167275452947, 0.30287381042684225, 0.33895684592441877, 0.3577893947757618, 0.3687060326351533], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9979929110711092, 0.9138220340151898, 0.7768392587259247, 0.675153420767592, 0.6121945409301814, 0.5718195128066592, 0.5442060640451287], "TOTAL_ENERGY": [2.492984073810609, 2.209708259022252, 1.789793590012197, 1.5106643687903505, 1.3517330275208492, 1.2552432439174561, 1.1915762074291234]}, "ELEMENT_1961": {}, "NODE_722": {"MOMENTUM_X": [4.293794620134402e-12, 2.3336403275900417e-05, 0.06083815383746783, 0.27914819131540614, 0.24983880458224803, 0.2851642445715798, 0.35431409665730984], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000405653, 0.12502201228459817, 0.1646530592956361, 0.28250162000449763, 0.2727710050122291, 0.30797353246446874, 0.382847573425721], "TOTAL_ENERGY": [0.2500000000113583, 0.25006164368839257, 0.3881995834864337, 0.9530733363539521, 0.8666243494735558, 0.8928085568044807, 0.924269233344465]}, "NODE_861": {"MOMENTUM_X": [0.0, 4.3734804518156705e-20, 7.977490535854276e-14, 2.096954662325544e-09, 1.9306331098772085e-05, 0.061673511524956245, 0.27535394118839585], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000000757, 0.12500000198412692, 0.12501809142819248, 0.16396160301582519, 0.2796381842296842], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000002119, 0.25000000555555535, 0.2500506618792684, 0.3865339992782781, 0.9422331281782533]}, "ELEMENT_1556": {}, "ELEMENT_1007": {}, "ELEMENT_1759": {}, "NODE_16": {"MOMENTUM_X": [0.0, 2.0637449022500888e-47, 8.732648665221543e-35, 8.046304548406185e-27, 6.406340404142273e-20, 5.204440683424647e-15, 4.695110872740714e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999959, 0.9999999999962875], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999986, 2.499999999987007]}, "NODE_363": {"MOMENTUM_X": [9.984446730861987e-13, 1.0091833876257657e-06, 0.0002990153634093354, 0.007879701542112533, 0.0467118916348646, 0.11520992390657972, 0.18196159909664175], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999991367, 0.999999124588812, 0.9997418539400569, 0.9932078836442686, 0.9590956508130479, 0.8952718808376336, 0.8268478171521917], "TOTAL_ENERGY": [2.4999999999969784, 2.4999969360626717, 2.4990966137248205, 2.4763016029103944, 2.3592971734591592, 2.149037925654069, 1.9360746028723814]}, "NODE_456": {"MOMENTUM_X": [6.352937288683961e-06, 0.007306634373528751, 0.07203094854935871, 0.18049263038881294, 0.2604572244120863, 0.306771624206725, 0.3338523374060599], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999994079893943, 0.9932867884304813, 0.9331575415150077, 0.8237937726712969, 0.7302301430090504, 0.6660792040584588, 0.6220585183741685], "TOTAL_ENERGY": [2.4999792797098936, 2.476572619811214, 2.272081612689051, 1.9245320502876053, 1.6535757736893062, 1.4824734737961491, 1.3719382177575905]}, "NODE_184": {"MOMENTUM_X": [0.0, 1.1490233504268305e-30, 7.099840601772311e-22, 1.3048359216254655e-15, 4.994997405338039e-12, 2.820347138607575e-09, 4.0683621338534513e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999988, 0.9999999999952669, 0.9999999973491237, 0.9999996211819863], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999956, 2.4999999999834337, 2.4999999907219332, 2.499998674137182]}, "ELEMENT_1455": {}, "ELEMENT_4": {}, "ELEMENT_1338": {}, "NODE_236": {"MOMENTUM_X": [0.0, 8.866899907275145e-19, 6.98333928463678e-13, 2.1520787616150744e-09, 7.035463120330408e-07, 4.880460717621087e-05, 0.0010469013166459723], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999994119, 0.999999998188143, 0.9999994079175103, 0.9999589416502055, 0.9991182404120815], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999979416, 2.4999999936585007, 2.4999979277119873, 2.499856298804695, 2.496915118271267]}, "ELEMENT_367": {}, "ELEMENT_274": {}, "ELEMENT_789": {}, "NODE_566": {"MOMENTUM_X": [0.4134243988248789, 0.398769669611508, 0.3860863413153907, 0.40021381990174937, 0.39296542381197563, 0.39465897699043995, 0.39546786340819384], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3929361416646588, 0.38246669201894934, 0.3688736267928516, 0.38248505335159433, 0.37582458228504606, 0.37822622235127773, 0.37972659116979984], "TOTAL_ENERGY": [0.9091601806527038, 0.844727754756684, 0.8376688677230002, 0.8461157585477377, 0.8437000985085351, 0.8464451739828805, 0.8487332899724332]}, "ELEMENT_996": {}, "NODE_965": {"MOMENTUM_X": [0.0, 1.38262993182257e-34, 5.493029958685446e-25, 1.6366706390495064e-17, 3.6108140361187734e-13, 2.8110263319201207e-09, 1.662485407980854e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000034178, 0.1250000026652722, 0.12501576967336217], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000095696, 0.25000000746276224, 0.2500441595395589]}, "ELEMENT_1390": {}, "NODE_933": {"MOMENTUM_X": [0.0, 3.6955263855296636e-29, 4.113431531544026e-20, 1.4302059907474414e-14, 1.991317532400977e-10, 1.2755337020099499e-06, 0.006946108058329973], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000001363, 0.12500000019017912, 0.12500122039652217, 0.13057134937481812], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000003814, 0.25000000053250154, 0.2500034171366722, 0.26624924262234384]}, "NODE_132": {"MOMENTUM_X": [0.0, 9.611065159533765e-31, 2.560431624023112e-21, 3.778492163016484e-15, 1.2690886421456113e-11, 6.259022446882172e-09, 7.690884635716756e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.999999999999997, 0.9999999999899366, 0.999999995044117, 0.9999993909094084], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.49999999999999, 2.499999999964779, 2.49999998265441, 2.4999978681837085]}, "NODE_209": {"MOMENTUM_X": [0.0, 2.859919909477521e-23, 1.0288740002500704e-15, 1.0495540529193682e-11, 8.988519231065864e-09, 1.4560687962343452e-06, 6.763989628550145e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999991, 0.9999999999911439, 0.9999999924220111, 0.9999987738848547, 0.9999430909321655], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999997, 2.4999999999690035, 2.499999973477039, 2.49999570859985, 2.4998008238968423]}, "ELEMENT_1700": {}, "ELEMENT_1641": {}, "ELEMENT_1201": {}, "NODE_241": {"MOMENTUM_X": [0.0, 7.229920484727485e-19, 5.506767896664352e-13, 1.7731590975539213e-09, 6.067666703593966e-07, 4.394970523266211e-05, 0.0009787392105709673], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999995356, 0.9999999985057765, 0.9999994891943335, 0.9999630402355495, 0.9991764672378078], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999998375, 2.499999994770219, 2.4999982121806887, 2.4998706432750195, 2.497118749145691]}, "NODE_347": {"MOMENTUM_X": [2.368598865888942e-15, 2.1769179773217902e-08, 1.8476500824387815e-05, 0.0011808014332605305, 0.014659360714615197, 0.060368673757628624, 0.12711727488850513], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999999999999998, 0.9999999816834935, 0.9999844700776417, 0.9990060301478052, 0.9875523553312666, 0.9473649215067529, 0.8843848924815386], "TOTAL_ENERGY": [2.499999999999993, 2.4999999358922276, 2.4999456457738, 2.496522841906152, 2.4566751825849305, 2.3198217496972653, 2.1143197769849182]}, "NODE_622": {"MOMENTUM_X": [0.031149355984520025, 0.29555650034540615, 0.3592524762855205, 0.4251900954767387, 0.39553210950272666, 0.3864483008923857, 0.4006366139510239], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.14595353843452127, 0.30424172337903943, 0.38997043835414913, 0.4580500194066038, 0.4268313386928986, 0.4170375513597968, 0.4324387014651293], "TOTAL_ENERGY": [0.3183821981280796, 0.9422984696281109, 0.9185803640530311, 0.9578902149679729, 0.9421436306333861, 0.9381135703639456, 0.9446421796278326]}, "ELEMENT_733": {}, "ELEMENT_482": {}, "ELEMENT_1626": {}, "ELEMENT_796": {}, "ELEMENT_1356": {}, "NODE_571": {"MOMENTUM_X": [0.3985563453689577, 0.38301089277193406, 0.38780698813198566, 0.3877604457600925, 0.3892373935582072, 0.39065451283153446, 0.39094075114644955], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.38154127347117345, 0.3620518510204286, 0.3638789277998315, 0.3626144372424012, 0.36393183082972536, 0.3657371333985649, 0.3668752519542174], "TOTAL_ENERGY": [0.8640823675840127, 0.814400428276767, 0.8135585042593247, 0.8138243899039863, 0.8168492979465718, 0.8205577285982072, 0.8239502396163803]}, "ELEMENT_1110": {}, "ELEMENT_460": {}, "ELEMENT_1656": {}, "NODE_912": {"MOMENTUM_X": [0.0, 7.770720489430292e-26, 2.1021780571114724e-17, 1.3911762159567954e-12, 1.4351260789304797e-08, 9.066535812475434e-05, 0.09968498716276195], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000003, 0.1250000000013526, 0.1250000139536152, 0.12508762542899857, 0.18785363550007983], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.25000000000378736, 0.250000039070126, 0.25024548523783197, 0.4845608179571591]}, "ELEMENT_502": {}, "NODE_353": {"MOMENTUM_X": [5.2892013459780927e-14, 1.5713935828636349e-07, 7.905866844417028e-05, 0.0032565257916353013, 0.02774524607250803, 0.08664653887474952, 0.15512321117626227], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999553, 0.9999998661669168, 0.9999326166924025, 0.9972197994573452, 0.976032795395193, 0.922734160835588, 0.8554438978558356], "TOTAL_ENERGY": [2.4999999999998432, 2.499999531584254, 2.4997641674435807, 2.4902822595302054, 2.416980674636484, 2.238127184112261, 2.0234776658741898]}, "ELEMENT_206": {}, "ELEMENT_941": {}, "NODE_1011": {"MOMENTUM_X": [0.0, 5.6349844505393615e-42, 6.9700007143214295e-31, 7.590707466583382e-23, 1.0056475204124207e-16, 1.205163023582031e-12, 7.943361518677766e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000008, 0.12500000000117079, 0.1250000077209703], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000003, 0.25000000000327827, 0.250000021618718]}, "ELEMENT_1012": {}, "NODE_865": {"MOMENTUM_X": [0.0, 1.4748946122207899e-19, 2.083735100300414e-13, 4.472502534613621e-09, 2.945508376565618e-05, 0.06250177449573155, 0.27669839120047923], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000019654, 0.12500000422245988, 0.12502780294063426, 0.16558433951146312, 0.2811087339578751], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000005503, 0.2500000118228879, 0.2500778621383937, 0.39203284001786765, 0.9478407842169939]}, "ELEMENT_1528": {}, "ELEMENT_1785": {}, "NODE_988": {"MOMENTUM_X": [0.0, 3.424504573502035e-38, 5.466507480203966e-28, 4.9303342726461965e-20, 5.924159318159075e-15, 5.614302184910543e-11, 3.449277752961428e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000563, 0.12500000005361322, 0.12500033001654895], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000158, 0.25000000015011714, 0.25000092404826885]}, "ELEMENT_619": {}, "ELEMENT_841": {}, "ELEMENT_1067": {}, "ELEMENT_584": {}, "ELEMENT_1270": {}, "NODE_224": {"MOMENTUM_X": [0.0, 3.61878562898848e-20, 1.0906226257012208e-13, 4.768169776632303e-10, 2.056426336064408e-07, 1.815414315399847e-05, 0.00048567862134345403], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999082, 0.9999999995983831, 0.9999998267607989, 0.9999847075956402, 0.9995904300703935], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999996785, 2.499999998594341, 2.4999993936628577, 2.499946477014087, 2.4985667860781366]}, "ELEMENT_1060": {}, "ELEMENT_12": {}, "NODE_950": {"MOMENTUM_X": [0.0, 5.198351108631665e-33, 9.548184127536056e-24, 5.717917103090946e-17, 1.4153894605807859e-12, 1.2862876245478494e-08, 0.00010005783773201927], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000133704, 0.12500001210963227, 0.12509311777921928], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000001, 0.2500000000037437, 0.25000003390697306, 0.25026088950218583]}, "ELEMENT_1019": {}, "ELEMENT_137": {}, "ELEMENT_1501": {}, "ELEMENT_1236": {}, "ELEMENT_752": {}, "ELEMENT_720": {}, "ELEMENT_478": {}, "NODE_799": {"MOMENTUM_X": [6.805903442452396e-24, 2.4407169318184663e-12, 1.1584274269389258e-07, 0.0008009060087144904, 0.1905971482329155, 0.24643391369550352, 0.25198731821770215], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000230344, 0.12500010940901418, 0.12572707237817854, 0.23660016157850194, 0.26746236956096897, 0.27075838732726737], "TOTAL_ENERGY": [0.25, 0.25000000000644956, 0.2500003063454661, 0.2520459010722752, 0.7175255916723486, 0.8700497783752896, 0.8820137555133113]}, "ELEMENT_185": {}, "ELEMENT_1076": {}, "ELEMENT_1413": {}, "ELEMENT_376": {}, "NODE_544": {"MOMENTUM_X": [0.4004444466988048, 0.4046487323249402, 0.39938298579535547, 0.39662253963783994, 0.39820517246790665, 0.3965505834207274, 0.3970173970396882], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.5437206582219491, 0.4465403924325908, 0.4262271231571894, 0.4164167535029554, 0.4147279229480475, 0.411242741206188, 0.4105501815091375], "TOTAL_ENERGY": [1.1856583020428713, 0.9828315886235426, 0.9376025019109978, 0.9227492581604188, 0.9162926746619552, 0.911489662067431, 0.9093416574079133]}, "ELEMENT_102": {}, "ELEMENT_882": {}, "ELEMENT_370": {}, "NODE_475": {"MOMENTUM_X": [0.002978974202623062, 0.10170059140930285, 0.22646926406271278, 0.2993298196862437, 0.3362114462012776, 0.3560700513146243, 0.3675579851825843], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9974660789750683, 0.9081508313771129, 0.7756745001188284, 0.6785067916499784, 0.6173025566812793, 0.5772484941912125, 0.5491578043558663], "TOTAL_ENERGY": [2.4911454320854447, 2.191224680140386, 1.7858870104363311, 1.518588136424984, 1.3631259794042427, 1.266876227177955, 1.202438207141066]}, "ELEMENT_822": {}, "ELEMENT_1306": {}, "NODE_658": {"MOMENTUM_X": [6.085907745270623e-05, 0.18823716227559895, 0.2653667629202046, 0.3269622810850528, 0.4037022217830979, 0.4068269072477687, 0.38750376582745694], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250574789708512, 0.23640823551585402, 0.2854527182001105, 0.35431125143899017, 0.43808169033792893, 0.44139822650754684, 0.42027477259746976], "TOTAL_ENERGY": [0.25016101699243054, 0.7142043707787431, 0.8901174412149461, 0.9113144378933938, 0.9450633614918132, 0.9467720380581618, 0.9382012768526707]}, "NODE_36": {"MOMENTUM_X": [0.0, 0.0, 3.661910021504042e-40, 1.1245050652088203e-31, 1.3714558312379079e-24, 8.5138830598593175e-19, 1.1058348671366075e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999906], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999967]}, "NODE_763": {"MOMENTUM_X": [5.922785286459574e-18, 2.4760974964218907e-09, 4.739549869223077e-05, 0.08366059376810897, 0.27184264983389383, 0.24879904262388686, 0.26118731237168014], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000023272495, 0.12504427424052203, 0.17747081443906984, 0.2787391735918109, 0.26910820109977, 0.2817981604184248], "TOTAL_ENERGY": [0.25, 0.2500000065162987, 0.25012400409222146, 0.44185200567894095, 0.934431343843663, 0.8721601714371979, 0.8803512181225744]}, "ELEMENT_263": {}, "ELEMENT_277": {}, "NODE_915": {"MOMENTUM_X": [0.0, 1.8658230823233314e-28, 6.285034333143949e-20, 2.238957905194389e-14, 3.493847862388242e-10, 3.185900756812088e-06, 0.022511738623467694], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000212, 0.1250000003301167, 0.1250029912055231, 0.1403587149743187], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000594, 0.2500000009243268, 0.2500083755326657, 0.2980548746000756]}, "ELEMENT_600": {}, "ELEMENT_771": {}, "NODE_932": {"MOMENTUM_X": [0.0, 3.6674532886395494e-29, 3.061565001471771e-20, 1.2882773349016166e-14, 1.787612634430559e-10, 1.1379450409849287e-06, 0.006112805127825062], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000001218, 0.12500000016936486, 0.125001079816173, 0.12995080469468048], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000003414, 0.2500000004742216, 0.25000302350615977, 0.26437924342195773]}, "NODE_605": {"MOMENTUM_X": [0.20887765635282945, 0.3958407301522268, 0.42877631548299583, 0.4108085717551867, 0.41677755846805653, 0.4114347646603216, 0.4106057435146642], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.24288643730653728, 0.4129620669714618, 0.44647994728308854, 0.427572362406546, 0.4345997142225218, 0.4298448068769887, 0.43010782487302635], "TOTAL_ENERGY": [0.7363227816503882, 0.9441978903662374, 0.9630871160127595, 0.9538906990093411, 0.9552145824551878, 0.9518002680935875, 0.9506179333868324]}, "NODE_170": {"MOMENTUM_X": [0.0, 7.316774025633919e-30, 2.3055525698405387e-21, 4.074481864828257e-15, 1.2471333705208043e-11, 6.025954865019117e-09, 7.532268986253632e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999966, 0.9999999999894245, 0.9999999948998515, 0.9999993637958805], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999988, 2.499999999962986, 2.499999982149481, 2.499997773286334]}, "ELEMENT_42": {}, "NODE_329": {"MOMENTUM_X": [1.0894005392289062e-16, 4.230783523207259e-09, 5.979093984019853e-06, 0.0005457754074336542, 0.00884016349656484, 0.04393764247367667, 0.10406325993678081], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999999, 0.9999999963254145, 0.9999948265193447, 0.9995299236822871, 0.9923914767619553, 0.9616379046663083, 0.9061633521135569], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999871389504, 2.4999818928734903, 2.498355121294325, 2.473460709956902, 2.367884592688323, 2.1840785725947036]}, "NODE_71": {"MOMENTUM_X": [0.0, 1.1908467196705214e-39, 3.4985045697092937e-29, 7.628428165853696e-22, 8.060587912025534e-16, 1.5706488737914214e-12, 6.413391417872035e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999993, 0.9999999999986737, 0.9999999994581988], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999998, 2.4999999999953584, 2.4999999981036956]}, "NODE_1016": {"MOMENTUM_X": [0.0, 5.014297233842924e-44, 7.553171217213725e-33, 3.611938284807299e-25, 2.109183954463163e-18, 4.7228043253239027e-14, 4.138808096514714e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000004471, 0.12500000039030626], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001251, 0.2500000010928574]}, "ELEMENT_1676": {}, "ELEMENT_1507": {}, "NODE_12": {"MOMENTUM_X": [0.0, 5.826634041843174e-50, 8.39599571603021e-37, 1.505493344220468e-28, 1.7348730595826637e-21, 5.812096482564474e-16, 6.817468795434248e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999994, 0.9999999999994104], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.4999999999979368]}, "ELEMENT_1933": {}, "ELEMENT_1193": {}, "NODE_298": {"MOMENTUM_X": [1.6087073823970188e-22, 7.899911017610782e-12, 5.032724188317632e-08, 1.524847105406032e-05, 0.0007043356724681508, 0.00860774051761076, 0.03942825173376299], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999933201, 0.9999999573937259, 0.999987083326182, 0.9994024928253458, 0.9926631681079569, 0.9658395070063409], "TOTAL_ENERGY": [2.5, 2.4999999999766205, 2.499999850878045, 2.4999547919713425, 2.4979093404951476, 2.4744049970007054, 2.3821465850471117]}, "ELEMENT_244": {}, "ELEMENT_53": {}, "ELEMENT_242": {}, "ELEMENT_1287": {}, "ELEMENT_1542": {}, "ELEMENT_1343": {}, "ELEMENT_1952": {}, "NODE_504": {"MOMENTUM_X": [0.035967067231997316, 0.22488502506149147, 0.3160897965661122, 0.3532874036459531, 0.369821508932237, 0.37852037260818144, 0.38365308653982777], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9690640844872468, 0.7791684684675122, 0.6538609699610252, 0.5838028397550358, 0.5424051815974867, 0.5160116567864131, 0.49788625774595097], "TOTAL_ENERGY": [2.3934715877811166, 1.7969391878104477, 1.4552713574985379, 1.2828299753860972, 1.187608474797672, 1.128689788596271, 1.0890090727661283]}, "ELEMENT_952": {}, "NODE_61": {"MOMENTUM_X": [0.0, 1.2317311641868406e-39, 5.211618434609542e-29, 1.4589364859315212e-21, 1.3515549958084593e-15, 2.488364102972906e-12, 9.819689006667855e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999989, 0.9999999999978462, 0.9999999991520586], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999996, 2.499999999992461, 2.4999999970322047]}, "NODE_921": {"MOMENTUM_X": [0.0, 1.6397240579745213e-27, 1.448172215962118e-18, 1.1719409818219543e-13, 1.367873851396656e-09, 8.357707994745732e-06, 0.030075795799182833], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000011088, 0.1250000012965205, 0.1250079295206312, 0.14599257616500375], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000003105, 0.25000000363025743, 0.2500222037831654, 0.3173436536579418]}, "ELEMENT_1532": {}, "NODE_942": {"MOMENTUM_X": [0.0, 6.615617239788106e-31, 9.600549039230265e-22, 1.2340428563666462e-15, 2.1006032122678624e-11, 1.45359950859263e-07, 0.000848803051916697], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000114, 0.1250000000198212, 0.12500013733097298, 0.12576903653067326], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000033, 0.2500000000554994, 0.25000038452706425, 0.2521646554269839]}, "NODE_834": {"MOMENTUM_X": [0.0, 1.152707961584037e-15, 2.102355444283685e-10, 2.329339331232198e-06, 0.011766728420220219, 0.26160834328412347, 0.24147174164158297], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000000011, 0.12500000020067795, 0.12500222822106638, 0.13400455819995555, 0.27426898071914296, 0.2655751638002861], "TOTAL_ENERGY": [0.25, 0.25000000000000305, 0.25000000056189814, 0.250006239107864, 0.27689539305842326, 0.9100531856648943, 0.8589209287318262]}, "NODE_246": {"MOMENTUM_X": [0.0, 4.7235727889932e-17, 5.810418252141515e-12, 1.1969357925880355e-08, 2.7840480770747817e-06, 0.00014272398950183004, 0.002327453165756852], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999951065, 0.9999999899189624, 0.9999976554103459, 0.9998797307486764, 0.998034343849189], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999982873, 2.4999999647163693, 2.4999917939470016, 2.499579083056652, 2.493126415739278]}, "NODE_30": {"MOMENTUM_X": [0.0, 1.9051261867509562e-52, 1.3872804948725346e-38, 3.32373965318416e-30, 3.573914916527576e-23, 1.7951451729878376e-17, 7.019301617408435e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999408], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997926]}, "ELEMENT_1047": {}, "ELEMENT_270": {}, "ELEMENT_1367": {}, "NODE_821": {"MOMENTUM_X": [0.0, 1.4789508878131074e-14, 1.6418899797441798e-09, 1.4896004175661694e-05, 0.04276982775504888, 0.2807631571079134, 0.24205071069179163], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000001396, 0.12500000154987395, 0.12501406691589018, 0.15383443684603226, 0.2829152851749865, 0.2655566181188952], "TOTAL_ENERGY": [0.25, 0.2500000000000391, 0.25000000433964714, 0.2500393909347811, 0.3461305136209688, 0.9582274799448974, 0.8587320336371208]}, "NODE_356": {"MOMENTUM_X": [8.850316021640267e-16, 1.052102644768918e-08, 1.1008722454835487e-05, 0.0008607386620194562, 0.01255259551199418, 0.05703222938406886, 0.12538401129650323], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999992, 0.9999999911786722, 0.9999907937600839, 0.9992804449591869, 0.9894291754990545, 0.9506591967236586, 0.8865208683893494], "TOTAL_ENERGY": [2.4999999999999973, 2.4999999691253523, 2.499967778334786, 2.49748246640701, 2.4631770840656766, 2.3308702843289737, 2.121126897183269]}, "ELEMENT_1620": {}, "NODE_680": {"MOMENTUM_X": [3.8903257137621635e-07, 0.04569473355283715, 0.27375052368896235, 0.2665152585083003, 0.33611484046354134, 0.4055291466846752, 0.40597260364493143], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250003705453634, 0.15558994343764895, 0.2812864815912878, 0.2905401621514961, 0.3646278276946753, 0.4401461352514591, 0.4407503535223342], "TOTAL_ENERGY": [0.2500010375305854, 0.3527462534859152, 0.9393246303821322, 0.8783871389058067, 0.9148255146517139, 0.9462415747824943, 0.946224253670871]}, "ELEMENT_876": {}, "ELEMENT_1247": {}, "ELEMENT_1250": {}, "ELEMENT_1586": {}, "NODE_418": {"MOMENTUM_X": [2.7659077250039706e-07, 0.0015214298551202406, 0.029881052535814887, 0.11129118585535314, 0.19704035854600288, 0.2574106469617348, 0.29617752141148196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999997600825934, 0.998684203586035, 0.9739305956681893, 0.898720652700876, 0.8097684669620614, 0.7373036531469761, 0.6834502412550424], "TOTAL_ENERGY": [2.499999160289261, 2.495397989738915, 2.4098129996437665, 2.160269372930496, 1.8850667080370127, 1.6769291671712063, 1.5315736180752522]}, "ELEMENT_1560": {}, "NODE_352": {"MOMENTUM_X": [1.5272043820685781e-15, 1.5088314593435078e-08, 1.4196711991306811e-05, 0.0010081972254925554, 0.013595313011712025, 0.05875142798822903, 0.12627385907641706], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999987, 0.9999999872928227, 0.9999880696808096, 0.9991530209336953, 0.9884982964151183, 0.948983484731353, 0.8854860292854076], "TOTAL_ENERGY": [2.4999999999999956, 2.4999999555248795, 2.4999582441762587, 2.497036831074649, 2.459950912189151, 2.3252507843877464, 2.1178482255025157]}, "ELEMENT_669": {}, "ELEMENT_165": {}, "ELEMENT_532": {}, "NODE_2": {"MOMENTUM_X": [0.0, 0.0, 3.2733750434315884e-41, 1.4384018896392017e-32, 2.2525070494915e-25, 7.7653179255353765e-19, 7.733868583629025e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999932], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999774]}, "NODE_850": {"MOMENTUM_X": [0.0, 1.766330050028197e-18, 8.407216479515401e-13, 1.7550416868344027e-08, 0.00015601695021940206, 0.13877158508950505, 0.25160651253086724], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000007971, 0.1250000165854315, 0.12514409888879577, 0.2072328716525358, 0.2690245983932269], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000022319, 0.2500000464392132, 0.2504038583565133, 0.5773617888322039, 0.8818644632244977]}, "ELEMENT_572": {}, "ELEMENT_711": {}, "NODE_1007": {"MOMENTUM_X": [0.0, 4.98784060654424e-42, 4.408477562229801e-31, 4.853285556736153e-23, 4.454403417619753e-17, 6.493243958227193e-13, 4.75995201745567e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000061207, 0.12500000448477305], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.2500000000017138, 0.2500000125573648]}, "NODE_969": {"MOMENTUM_X": [0.0, 1.3144485671465137e-37, 1.0342964489982103e-27, 3.359871592354155e-20, 3.881703967393692e-15, 4.612959547206497e-11, 4.145219778519507e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000416, 0.12500000004932044, 0.1250004426522248], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000001166, 0.25000000013809714, 0.25000123942909913]}, "ELEMENT_605": {}, "NODE_1028": {"MOMENTUM_X": [0.0, 6.363939370541439e-46, 3.0239611819572507e-34, 1.6251856883094004e-26, 1.2875524903332176e-19, 7.866003336196148e-15, 6.786382755024109e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000744, 0.12500000006394107], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000208, 0.25000000017903495]}, "ELEMENT_898": {}, "NODE_195": {"MOMENTUM_X": [0.0, 3.440635764779771e-23, 2.1831510482802763e-15, 2.0518167149417973e-11, 1.593552923440681e-08, 2.31715495381507e-06, 9.653152595817458e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999981, 0.9999999999825102, 0.9999999864065362, 0.9999980242831346, 0.999917764233075], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999994, 2.4999999999387867, 2.4999999524228778, 2.499993084998327, 2.499712186420834]}, "NODE_771": {"MOMENTUM_X": [9.46327760552452e-21, 4.656019918874693e-11, 1.5538441315003914e-06, 0.01243880199184276, 0.29714052262022206, 0.22572088175383076, 0.24995821098373436], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000004982223, 0.125001659246, 0.1350282682548249, 0.29540620219329966, 0.2618328978922962, 0.27454411633885156], "TOTAL_ENERGY": [0.25, 0.25000000013950224, 0.2500046459298867, 0.2799045411141697, 1.0117437440247987, 0.8228639395754002, 0.8796463970916875]}, "ELEMENT_1948": {}, "NODE_34": {"MOMENTUM_X": [0.0, 0.0, 2.0193481340721205e-41, 8.413654615211528e-33, 1.0481549829766274e-25, 1.2404591634266001e-19, 2.8489871117683255e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999977], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999916]}, "ELEMENT_457": {}, "ELEMENT_741": {}, "NODE_392": {"MOMENTUM_X": [1.8697695534835147e-10, 2.113767904812519e-05, 0.0022067568438316042, 0.02693194494496015, 0.09453658728979333, 0.17262538227570584, 0.23285517784431814], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999998423629, 0.9999822245585852, 0.9981403339598156, 0.9769605083377585, 0.9158091457827879, 0.8376493233392279, 0.7691666811122406], "TOTAL_ENERGY": [2.49999999944827, 2.4999377866699204, 2.4934973655469985, 2.4201845857934403, 2.2155846373116126, 1.968991962358253, 1.766720080149514]}, "ELEMENT_394": {}, "ELEMENT_1884": {}, "ELEMENT_1264": {}, "ELEMENT_427": {}, "ELEMENT_1249": {}, "ELEMENT_958": {}, "ELEMENT_947": {}, "ELEMENT_504": {}, "NODE_247": {"MOMENTUM_X": [0.0, 3.6886397391375316e-17, 5.0225880377010986e-12, 1.0624987406352186e-08, 2.5464887985254877e-06, 0.0001342521087509009, 0.0022409104296898666], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999957714, 0.9999999910565943, 0.9999978577935159, 0.9998870490278773, 0.9981110347039022], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999851994, 2.4999999686980794, 2.4999925022862968, 2.4996046940322443, 2.493394364980549]}, "ELEMENT_226": {}, "NODE_493": {"MOMENTUM_X": [0.011202189487447988, 0.15903430853724512, 0.27481603115102243, 0.32983987964858275, 0.3555976142443601, 0.3690866164187394, 0.3768097607848893], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9905304369593183, 0.8522540848358078, 0.7155366569335554, 0.6295309838307679, 0.5779813770718784, 0.5447758863573379, 0.5216919390827062], "TOTAL_ENERGY": [2.467037139475086, 2.0149554452157354, 1.6181416119394723, 1.3943278777117283, 1.2693305145453164, 1.192441692980952, 1.1409534844288003]}, "ELEMENT_1778": {}, "ELEMENT_1001": {}, "ELEMENT_593": {}, "ELEMENT_318": {}, "NODE_769": {"MOMENTUM_X": [7.8180028041707e-18, 4.405567861611381e-09, 8.079799294529819e-05, 0.09645616530745293, 0.26109819041152166, 0.2498601950028302, 0.2623288422486937], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000042914931, 0.1250781778671138, 0.1860320724237027, 0.2744535050078892, 0.2702012172890734, 0.2841707279364342], "TOTAL_ENERGY": [0.25, 0.25000001201618094, 0.2502190065305139, 0.47651792331319964, 0.9095570308699849, 0.876257189535736, 0.88016037588741]}, "ELEMENT_1692": {}, "ELEMENT_921": {}, "ELEMENT_192": {}, "NODE_843": {"MOMENTUM_X": [0.0, 6.938095005665702e-17, 2.0047737921808618e-11, 2.668049015483801e-07, 0.0015621994822086489, 0.21615100192814882, 0.24082661636367528], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000006, 0.1250000000189143, 0.12500025201605755, 0.12638157541109327, 0.24996340304018744, 0.26484060941793824], "TOTAL_ENERGY": [0.25, 0.25000000000000017, 0.2500000000529601, 0.25000070564611987, 0.2539062455532191, 0.785494157206715, 0.8559680221922041]}, "ELEMENT_43": {}, "NODE_437": {"MOMENTUM_X": [2.055680827388339e-06, 0.0040715366681846835, 0.050443324820816975, 0.1468819427453853, 0.23060255274173883, 0.2836939955598596, 0.31603926856451575], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999982723346811, 0.9965711540515775, 0.9563272080738772, 0.8646685714265068, 0.7721554304469971, 0.7025920636058137, 0.6528493140270367], "TOTAL_ENERGY": [2.499993953180436, 2.4880208238962545, 2.350076878987093, 2.052594973315105, 1.7755082731441894, 1.5825647915160197, 1.4526411596440134]}, "NODE_999": {"MOMENTUM_X": [0.0, 4.487764038612648e-40, 1.7083766005115047e-29, 2.378100296448349e-21, 6.918282769790215e-16, 7.410827607597581e-12, 4.668596151166709e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000064, 0.12500000000707426, 0.12500004465529477], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000019, 0.250000000019808, 0.25000012503486063]}, "NODE_698": {"MOMENTUM_X": [1.5168256535782564e-09, 0.001441254692620199, 0.21394821928214286, 0.24716642302142847, 0.2800192952768752, 0.34635831252112587, 0.4129698181856422], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000014299906, 0.1262691383833614, 0.2488165718166398, 0.26990437952886814, 0.30108485050933104, 0.3742296247957621, 0.44609698297266553], "TOTAL_ENERGY": [0.25000000400397376, 0.2535866535662037, 0.7791544379080928, 0.8645517106192604, 0.89434630459151, 0.9200399706837712, 0.9511490794920334]}, "ELEMENT_186": {}, "ELEMENT_792": {}, "NODE_954": {"MOMENTUM_X": [0.0, 1.0280419745259914e-32, 1.586866158571721e-23, 1.4584431242246617e-16, 2.9102360346114975e-12, 2.088990188673912e-08, 0.00012218872738637625], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000014, 0.12500000000275538, 0.1250000198153584, 0.12511517507061995], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000004, 0.25000000000771505, 0.25000005548301063, 0.2503227299347078]}, "NODE_781": {"MOMENTUM_X": [1.9496551832348384e-19, 7.318969280145382e-10, 1.8358885547749817e-05, 0.05193615628326633, 0.2621574310192559, 0.25180685172708606, 0.2615054948862873], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000065241637, 0.12501617007159313, 0.15728031956192332, 0.26988361519446635, 0.26700267822777285, 0.27707455769371075], "TOTAL_ENERGY": [0.25, 0.2500000018267659, 0.25004528155948064, 0.36090235474070215, 0.900536544186875, 0.8761741016234709, 0.8822383168908713]}, "ELEMENT_565": {}, "ELEMENT_280": {}, "ELEMENT_272": {}, "ELEMENT_1405": {}, "NODE_49": {"MOMENTUM_X": [0.0, 1.1192680011643546e-47, 1.289650817659471e-35, 1.8822146961610034e-27, 2.353170432383901e-20, 1.2628333836144406e-15, 1.3070031284297487e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999999, 0.9999999999988957], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999964, 2.499999999996135]}, "ELEMENT_1757": {}, "ELEMENT_505": {}, "ELEMENT_725": {}, "ELEMENT_380": {}, "NODE_469": {"MOMENTUM_X": [0.0006145187117472428, 0.05608208898235575, 0.17617836494007721, 0.2665153741687526, 0.31548891914820293, 0.34207906053130854, 0.3576775199924491], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9994816888489835, 0.951086274794709, 0.8335695220612127, 0.7260536351157302, 0.6536079173190937, 0.6057502873638776, 0.5726498433492082], "TOTAL_ENERGY": [2.4981865600057436, 2.3325829807056033, 1.9571687008544927, 1.6463211194288094, 1.4546830767780534, 1.3358188570424767, 1.2569695803594692]}, "ELEMENT_1824": {}, "NODE_793": {"MOMENTUM_X": [4.617606834315097e-25, 3.0175060447672525e-13, 2.063503766865882e-08, 0.00021598559522647957, 0.16857152050052676, 0.24079022971066527, 0.254836334835924], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000032285, 0.12500002205332952, 0.12522539624791457, 0.22796182745306615, 0.2683853633421721, 0.27576165524079554], "TOTAL_ENERGY": [0.25, 0.250000000000904, 0.25000006174933015, 0.2506318715980097, 0.6656703809013704, 0.8610339614184153, 0.8974317525609994]}, "ELEMENT_665": {}, "ELEMENT_1469": {}, "NODE_628": {"MOMENTUM_X": [0.0017968434635534545, 0.2925744234277191, 0.27895643417204774, 0.39771677752016693, 0.4201380475303588, 0.3678724652248943, 0.37917313912399736], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12668417950045724, 0.2950081168111427, 0.3149797125776606, 0.4363762649776072, 0.46444337403466207, 0.4069540703609551, 0.41938307681453857], "TOTAL_ENERGY": [0.2547710336475841, 0.9931581091770938, 0.8648019176385947, 0.9464837313121153, 0.947943742914124, 0.9261990947202153, 0.9318803082516623]}, "ELEMENT_1023": {}, "ELEMENT_471": {}, "NODE_229": {"MOMENTUM_X": [0.0, 1.7444286969346145e-18, 1.022944001214623e-12, 3.0598627511602117e-09, 9.507806405006197e-07, 6.210221774186968e-05, 0.0012501038321097889], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999991289, 0.9999999973906121, 0.9999991890660747, 0.9999470744536775, 0.9989349645526907], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999996951, 2.499999990867142, 2.4999971617325643, 2.499814765548837, 2.4962742110984233]}, "NODE_808": {"MOMENTUM_X": [8.777809482898205e-26, 1.5958542032202188e-13, 1.1996834767832175e-08, 0.0001041588900829858, 0.10937188669732402, 0.26489803732397127, 0.2491334481072818], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000015019, 0.1250000112830586, 0.12509735672413158, 0.192286287468363, 0.2756917391552913, 0.26886931750393056], "TOTAL_ENERGY": [0.25, 0.25000000000042055, 0.2500000315925665, 0.2502727720528373, 0.5065195791793042, 0.917086302151329, 0.8758389469488163]}, "ELEMENT_1509": {}, "ELEMENT_1678": {}, "NODE_996": {"MOMENTUM_X": [0.0, 4.33767262671655e-40, 1.5175639818878583e-29, 1.601142260266322e-21, 4.354859599403481e-16, 5.1231914293626504e-12, 3.6129078075899437e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000042, 0.12500000000482814, 0.12500003404195306], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000011, 0.2500000000135188, 0.25000009531748946]}, "NODE_526": {"MOMENTUM_X": [0.18456564266465206, 0.3413037423700983, 0.37466378306769255, 0.3846311673994369, 0.38931778552805824, 0.39174766379376713, 0.39291790998636955], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.8305466646134932, 0.6120934887966678, 0.5365478724025222, 0.49771933160620196, 0.4761172954448289, 0.4623226428464935, 0.4525078792434897], "TOTAL_ENERGY": [1.951996599786887, 1.348320670702359, 1.170464097094556, 1.0878390028488314, 1.0420458939145552, 1.013249979321342, 0.9934980762305954]}, "ELEMENT_1336": {}, "ELEMENT_1154": {}, "ELEMENT_530": {}, "ELEMENT_803": {}, "ELEMENT_98": {}, "ELEMENT_194": {}, "ELEMENT_700": {}, "ELEMENT_1074": {}, "NODE_460": {"MOMENTUM_X": [9.695715340812355e-05, 0.026235182404921745, 0.12684134287618504, 0.22926424619097366, 0.2913008450984108, 0.3258684212476628, 0.34616259383897996], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999918765575385, 0.9776713795836575, 0.885044436939628, 0.7741442642322507, 0.6918528702265372, 0.6362274587327648, 0.5975959166663813], "TOTAL_ENERGY": [2.4997156966314993, 2.422679116592433, 2.1169685558537283, 1.7814807364294456, 1.5541046656626984, 1.410759747912413, 1.3160289848168807]}, "ELEMENT_842": {}, "ELEMENT_493": {}, "ELEMENT_356": {}, "NODE_189": {"MOMENTUM_X": [0.0, 1.3221493311564214e-24, 1.7050337198533481e-16, 2.6263639262522605e-12, 2.817853866185417e-09, 5.494956128049121e-07, 3.017896333315856e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999999, 0.9999999999977872, 0.9999999976257021, 0.9999995369420888, 0.9999745677513444], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.4999999999922555, 2.4999999916899576, 2.499998379297728, 2.499910988277621]}, "NODE_657": {"MOMENTUM_X": [5.818462011233137e-05, 0.1886283311663042, 0.26681334853752586, 0.3276218902875161, 0.40810170920095495, 0.4142324090731043, 0.38953863396775207], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250545421175767, 0.2359314166858026, 0.2856934451867237, 0.3538563230749297, 0.44114989551986206, 0.44748036910047423, 0.42082521655205046], "TOTAL_ENERGY": [0.25015278615595044, 0.713005221820298, 0.8916580729634481, 0.9121549503836772, 0.9485937918665469, 0.9520567314163226, 0.940329094520463]}, "NODE_101": {"MOMENTUM_X": [0.0, 3.6004355796587844e-36, 3.380453749271278e-26, 4.566052315427525e-19, 3.1711190407607035e-14, 3.6072108547975665e-11, 9.498978903404036e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999732, 0.9999999999695437, 0.9999999919755387], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999063, 2.4999999998934035, 2.499999971914386]}, "ELEMENT_816": {}, "ELEMENT_421": {}, "ELEMENT_821": {}, "NODE_937": {"MOMENTUM_X": [0.0, 8.30460496692939e-32, 8.055104332530879e-23, 2.262011745706362e-16, 5.008679949838e-12, 4.794497874927379e-08, 0.0004475780466638058], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000022, 0.12500000000473954, 0.12500004520067154, 0.12540269238843305], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000006, 0.2500000000132707, 0.25000012656191606, 0.251130565638357]}, "ELEMENT_498": {}, "ELEMENT_139": {}, "NODE_757": {"MOMENTUM_X": [2.4554758254001512e-16, 3.6225203998643544e-08, 0.0004729431182160812, 0.16465423647829974, 0.25251867372497505, 0.25246904302233264, 0.27254351372398483], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000022, 0.12500003460313094, 0.1254396050553359, 0.22367345891386234, 0.27086562147855353, 0.27314516317484555, 0.29581490270630934], "TOTAL_ENERGY": [0.25000000000000067, 0.25000009688879143, 0.25123449587293867, 0.6514183035541634, 0.8869590141877997, 0.8787025706315981, 0.8850575858551608]}, "ELEMENT_1081": {}, "ELEMENT_1139": {}, "NODE_346": {"MOMENTUM_X": [2.5340434764020463e-15, 2.3278963778348638e-08, 1.9419623859554723e-05, 0.0012156280676610927, 0.01486029338560601, 0.06066964636185667, 0.12725499478048508], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999979, 0.9999999803811935, 0.9999836465980898, 0.9989745108791405, 0.9873532669084578, 0.9469942866293964, 0.8840774820316399], "TOTAL_ENERGY": [2.4999999999999925, 2.4999999313341776, 2.499942763650848, 2.4964126358858807, 2.455985861633697, 2.3185762724723675, 2.113325346650456]}, "ELEMENT_1931": {}, "NODE_5": {"MOMENTUM_X": [0.0, 0.0, 2.3941598079761384e-41, 1.0081624570682457e-32, 1.6042346418747158e-25, 7.054821003377758e-19, 6.1450252592562245e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999947], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999982]}, "ELEMENT_152": {}, "NODE_473": {"MOMENTUM_X": [0.004262894533236238, 0.11469234120989819, 0.23324045445714983, 0.3000200951717406, 0.3345711810059702, 0.353578005536987, 0.36462418783497663], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9965775029167482, 0.9004720521946029, 0.7737572512302685, 0.6811169029497234, 0.6210116864484392, 0.580638253414813, 0.551688579322149], "TOTAL_ENERGY": [2.4880493872384246, 2.167795860898379, 1.7845696275743086, 1.5303090389177465, 1.3762635129835386, 1.2779126996116, 1.210965786365815]}, "ELEMENT_1327": {}, "ELEMENT_1577": {}, "NODE_859": {"MOMENTUM_X": [0.0, 7.459993895633158e-21, 2.2538384924052068e-14, 6.786007367070525e-10, 6.589696760570723e-06, 0.036926766237345365, 0.29404234786098205], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000002415, 0.12500000072540432, 0.12500703200060967, 0.15116460406189103, 0.2936848669803166], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000006767, 0.25000000203113226, 0.2500196903250319, 0.33491665130586845, 1.002159462019706]}, "ELEMENT_614": {}, "ELEMENT_1883": {}, "NODE_66": {"MOMENTUM_X": [0.0, 3.706650364296208e-50, 2.3926643752247044e-37, 1.2151767593742337e-29, 1.1423252750645325e-22, 9.493158694647931e-17, 1.5260498467990378e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998702], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999999546]}, "ELEMENT_1793": {}, "ELEMENT_172": {}, "NODE_278": {"MOMENTUM_X": [0.0, 9.198441042098248e-14, 1.6161529037181803e-09, 1.0564590224685373e-06, 9.373387304624996e-05, 0.0020491493493583323, 0.015461902367198731], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999224, 0.9999999986365883, 0.999999108449098, 0.9999208422994238, 0.9982655938364972, 0.9868077490526325], "TOTAL_ENERGY": [2.5, 2.499999999999728, 2.49999999522806, 2.499996879573507, 2.499722959486362, 2.4939345067270926, 2.454090601149519]}, "ELEMENT_806": {}, "NODE_97": {"MOMENTUM_X": [0.0, 2.94337653987945e-36, 3.6772935933620776e-26, 7.798865202544544e-19, 3.59691703800301e-14, 4.04670053875758e-11, 1.0519941356918113e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999696, 0.9999999999657202, 0.9999999910817801], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999998934, 2.4999999998800204, 2.49999996878623]}, "NODE_977": {"MOMENTUM_X": [0.0, 2.1847593908505668e-36, 2.550035390089117e-26, 1.7118247675610863e-18, 4.963131411587583e-14, 4.216884437034006e-10, 2.5459312872724475e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000004732, 0.12500000040285913, 0.1250024360355998], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000001325, 0.25000000112800563, 0.25000682100488447]}, "ELEMENT_1929": {}, "NODE_1056": {"MOMENTUM_X": [0.0, 1.0159634455438828e-49, 6.686214488212928e-37, 1.9335276877666245e-28, 3.0800329265558677e-21, 5.280178823458376e-16, 4.285521398112332e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000044, 0.1250000000037992], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000133, 0.2500000000106379]}, "NODE_603": {"MOMENTUM_X": [0.1806872408873887, 0.35776358449803747, 0.4174898869275668, 0.3916716519380458, 0.39395785972955355, 0.3966970697885609, 0.3947649839501008], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.232146637147306, 0.38465690177667033, 0.45026505354059854, 0.4228607256522875, 0.4252175610449771, 0.42826210524439995, 0.426196618806234], "TOTAL_ENERGY": [0.6850916715787647, 0.9262528798162166, 0.95016901876118, 0.9374779091153347, 0.9395693281575971, 0.9412371449028819, 0.9410028529927904]}, "NODE_371": {"MOMENTUM_X": [7.666176770095342e-13, 7.259115274229969e-07, 0.00022670994783731985, 0.006568332621593783, 0.042768761093998256, 0.11194598324858415, 0.18134674937505887], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999993548, 0.9999993904387986, 0.9998097085858325, 0.9944615514770293, 0.9631639991993354, 0.8993766758991155, 0.828495134473347], "TOTAL_ENERGY": [2.4999999999977423, 2.499997866536704, 2.4993340500840495, 2.480665985650606, 2.373102513232884, 2.1623073650443954, 1.941174598725378]}, "ELEMENT_1724": {}, "NODE_669": {"MOMENTUM_X": [5.117030504456774e-06, 0.11189118000637942, 0.26817528624738235, 0.2913582921801888, 0.37386765414420425, 0.41439467104426886, 0.39372164137180804], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500487440802208, 0.19427575380834466, 0.28097329091792195, 0.3162497831506683, 0.40569985900414035, 0.4497206323038678, 0.4272941805646549], "TOTAL_ENERGY": [0.25001364891761607, 0.5144567741935495, 0.9169645934238053, 0.893605743416368, 0.9316764172801657, 0.9502707859631905, 0.940772814213998]}, "NODE_994": {"MOMENTUM_X": [0.0, 3.6538531002868518e-40, 9.372967587522915e-30, 2.552937880529709e-22, 2.40651518442934e-16, 3.1504977018848294e-12, 2.6057292026235668e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000022, 0.12500000000297662, 0.12500002452389128], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000006, 0.2500000000083345, 0.25000006866690655]}, "NODE_434": {"MOMENTUM_X": [7.87534979893763e-08, 0.0006819608935231419, 0.02009931283007372, 0.09695208769420491, 0.19091678103588966, 0.2575974849193988, 0.2988363951682108], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999262692009, 0.9993687498106034, 0.9816188218977705, 0.9095119293694502, 0.8130041339084861, 0.7345354280973858, 0.6783973303148143], "TOTAL_ENERGY": [2.4999997419422177, 2.4977912904394666, 2.4361424134439833, 2.194198924458669, 1.892148907105712, 1.6658990716036013, 1.5149578112240711]}, "NODE_130": {"MOMENTUM_X": [0.0, 6.220030147798833e-41, 1.3967669366952729e-30, 2.333036356833118e-23, 9.084981093666496e-17, 2.4646394669529723e-13, 1.3423632489068297e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999997665, 0.9999999998736622], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999991824, 2.4999999995578177]}, "NODE_261": {"MOMENTUM_X": [0.0, 1.121644427092031e-14, 3.441701168448755e-10, 3.313431533270689e-07, 3.958331576092551e-05, 0.0010967841865232798, 0.010027032017900967], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999903, 0.9999999997012485, 0.9999997132569187, 0.9999659024047091, 0.9990587081080078, 0.9913898251132185], "TOTAL_ENERGY": [2.5, 2.499999999999966, 2.4999999989543693, 2.499998996399386, 2.4998806605272477, 2.4967069284999015, 2.4699769194972006]}, "NODE_640": {"MOMENTUM_X": [0.0003703971899244964, 0.25925142348965985, 0.2677422632620452, 0.3767243046899043, 0.43614401867194935, 0.3957248743961372, 0.3839625916480811], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12532644977042745, 0.2708448449237522, 0.2946256464534394, 0.40349941258684746, 0.46997053218664375, 0.4248498932706885, 0.41231558679314495], "TOTAL_ENERGY": [0.25091643008435954, 0.8922138907349375, 0.8637646336356234, 0.9419490473879862, 0.9625903883333105, 0.946653149839834, 0.9398663301329687]}, "ELEMENT_355": {}, "ELEMENT_321": {}, "ELEMENT_834": {}, "ELEMENT_1149": {}, "NODE_884": {"MOMENTUM_X": [0.0, 5.607288912293945e-23, 9.761951855123064e-16, 4.09201205752236e-11, 3.985316809687063e-07, 0.0028852773057440008, 0.23987146368523735], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000092, 0.12500000003858483, 0.1250003744041126, 0.12742607964724917, 0.2616550941624941], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000255, 0.2500000001080376, 0.25000104833405457, 0.2569175788519499, 0.8477113910164656]}, "ELEMENT_1280": {}, "NODE_632": {"MOMENTUM_X": [0.0054179451916230225, 0.28437179604418206, 0.31035414538611794, 0.40901850630295766, 0.41559032652282885, 0.3860150081726655, 0.39310092293004884], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12928234045723577, 0.2890060934180389, 0.33905824445241833, 0.44025950600351005, 0.4488293410777099, 0.4165634563409676, 0.42428980664162896], "TOTAL_ENERGY": [0.2624562562904269, 0.9496119731908585, 0.8903164251151711, 0.9522420069389133, 0.9512098606603047, 0.9385762475168722, 0.9417225685664553]}, "NODE_381": {"MOMENTUM_X": [1.3474531044723185e-11, 4.319467396137282e-06, 0.0007683749702028426, 0.014178191146888229, 0.06622450504161312, 0.14203883023064345, 0.2077003118263696], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.99999999998864, 0.9999963676565683, 0.9993533394398433, 0.9879620993853417, 0.9420443489161138, 0.8694381127198787, 0.7988879322077886], "TOTAL_ENERGY": [2.4999999999602402, 2.499987286829147, 2.497737467786351, 2.4580986946551104, 2.3020830331878104, 2.06723064380671, 1.8528898176704485]}, "NODE_750": {"MOMENTUM_X": [7.630603964647737e-17, 1.1890552259534457e-08, 0.00021287648540744322, 0.1600147252727857, 0.2485939905814913, 0.25811194152576084, 0.2669915329423058], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000008, 0.12500001118894694, 0.1251947127207696, 0.21804575006291105, 0.26820629478450286, 0.2740389529557988, 0.28841084106386317], "TOTAL_ENERGY": [0.2500000000000002, 0.25000003132905385, 0.2505458865864125, 0.6290410755074803, 0.8737044367976773, 0.8931071559586137, 0.8819794907133859]}, "ELEMENT_176": {}, "NODE_325": {"MOMENTUM_X": [1.579566020358251e-18, 4.334983276481032e-10, 1.019241965240072e-06, 0.0001458361197088681, 0.0035842505037471445, 0.025436238985102767, 0.0768698562484092], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999996352279, 0.999999142975054, 0.9998773779038902, 0.9969772824472244, 0.97826688667496, 0.9323159494616774], "TOTAL_ENERGY": [2.5, 2.4999999987232977, 2.4999970004143175, 2.4995708507834213, 2.4894355197408142, 2.4246460751499863, 2.2697006545597227]}, "ELEMENT_1170": {}, "ELEMENT_623": {}, "ELEMENT_1123": {}, "NODE_315": {"MOMENTUM_X": [1.0908018659446145e-23, 1.2843526726114578e-12, 1.1876523479757424e-08, 5.198451111528421e-06, 0.0003376574973882508, 0.005535222183809079, 0.031565153176832006], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999987794, 0.9999999887830392, 0.9999951515238231, 0.9996895099138815, 0.9949774667406849, 0.9714544898215961], "TOTAL_ENERGY": [2.5, 2.499999999995728, 2.499999960740637, 2.499983030372886, 2.498913429996969, 2.4824563557188193, 2.401183589238159]}, "ELEMENT_592": {}, "ELEMENT_121": {}, "NODE_800": {"MOMENTUM_X": [6.811320123492831e-24, 2.5222804705331975e-12, 1.203484247796874e-07, 0.0008392860476192195, 0.19015770575128726, 0.24730662775857082, 0.25106173737152604], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000238648, 0.12500011411101103, 0.12576280663569228, 0.23671210915129015, 0.2680246525238549, 0.2704316468474311], "TOTAL_ENERGY": [0.25, 0.25000000000668215, 0.2500003195110766, 0.2521469627504803, 0.7172677580413866, 0.872873494444667, 0.880180448201646]}, "NODE_1035": {"MOMENTUM_X": [0.0, 3.5560527718473195e-49, 4.134266356377202e-37, 7.257345371731848e-29, 2.8567128936130696e-22, 1.3286932381924845e-16, 1.4291966370252675e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000017, 0.1250000000015292], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.2500000000042818]}, "NODE_665": {"MOMENTUM_X": [4.815408335712307e-06, 0.10875687564787234, 0.272652484334014, 0.29094640250264087, 0.3771044618774459, 0.42272636469221003, 0.40025258535443725], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500453489059155, 0.19193621837321015, 0.2825577065661236, 0.3154453298299367, 0.40690188382104125, 0.45666774737640586, 0.432220541850726], "TOTAL_ENERGY": [0.2500126981929191, 0.5050534047729963, 0.9252179533986871, 0.8910800518327819, 0.935702912500006, 0.9554159332312882, 0.9454387879953403]}, "ELEMENT_254": {}, "NODE_778": {"MOMENTUM_X": [1.223596880342895e-19, 3.282174060864038e-10, 7.448371035237833e-06, 0.028578762350684815, 0.27796762493213173, 0.24230997127110326, 0.25434854125120526], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000031075054, 0.12500706195450867, 0.14507351016166836, 0.2818149078228933, 0.2660825586300559, 0.275042260954103], "TOTAL_ENERGY": [0.25, 0.25000000087010155, 0.25001977438793827, 0.3140650835713249, 0.9515991481088246, 0.8589919022358496, 0.878187568440518]}, "ELEMENT_531": {}, "ELEMENT_1802": {}, "ELEMENT_50": {}, "ELEMENT_1125": {}, "NODE_501": {"MOMENTUM_X": [0.03642497732097011, 0.22463997612860412, 0.3153032163168674, 0.3530879131847863, 0.3698960254461242, 0.3782953528641862, 0.38342644805390913], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9684704312362803, 0.779530410119999, 0.6546933751364662, 0.5853627748195581, 0.5441411549109005, 0.5171575376890086, 0.4989002428346676], "TOTAL_ENERGY": [2.391461044703516, 1.7979995173449415, 1.4566919071265245, 1.2850473984636173, 1.1902103528327912, 1.131294787185698, 1.0915836804576795]}, "ELEMENT_1262": {}, "ELEMENT_702": {}, "ELEMENT_191": {}, "ELEMENT_157": {}, "NODE_75": {"MOMENTUM_X": [0.0, 7.414907757629795e-38, 1.4548025568703913e-27, 4.295648439564584e-20, 8.341873085257453e-15, 1.1933126017032188e-11, 3.781414344848632e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999929, 0.9999999999896736, 0.9999999967359192], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999747, 2.499999999963857, 2.4999999885757163]}, "NODE_266": {"MOMENTUM_X": [0.0, 9.14010422609624e-15, 2.6957910870418195e-10, 2.5770565018981203e-07, 3.1463194143577124e-05, 0.0009122396679365666, 0.008860637936650078], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999923, 0.9999999997726088, 0.9999997825170469, 0.9999734377826076, 0.9992285880165229, 0.992468180483977], "TOTAL_ENERGY": [2.5, 2.499999999999973, 2.4999999992041304, 2.4999992388097656, 2.499907033559933, 2.497301055975063, 2.473726097067311]}, "NODE_995": {"MOMENTUM_X": [0.0, 4.108155616157212e-40, 1.3182566599846018e-29, 3.5696711248196616e-22, 3.358413612279292e-16, 4.190493174314077e-12, 3.200808880937338e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000003, 0.12500000000395045, 0.1250000301148014], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000009, 0.25000000001106126, 0.25000008432146037]}, "NODE_344": {"MOMENTUM_X": [2.597117667917526e-15, 2.3996869764219417e-08, 1.991673547631647e-05, 0.001237084497545456, 0.015019371464973424, 0.06098116994785578, 0.12745507594684238], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999978, 0.999999979743256, 0.9999831918721396, 0.9989538661864176, 0.9871875184044395, 0.9466136061782195, 0.8837171023267184], "TOTAL_ENERGY": [2.4999999999999925, 2.4999999291013975, 2.4999411721413547, 2.4963404516042176, 2.455411789138211, 2.3172961641825256, 2.112162522454204]}, "NODE_464": {"MOMENTUM_X": [0.0006244653705098796, 0.05707203954608969, 0.17683675307010382, 0.2658187495403566, 0.3144242805329918, 0.3410770068373968, 0.3568238462658048], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9994697579306348, 0.9498008103395958, 0.8319125660168813, 0.726013045437803, 0.6545855989288556, 0.6070359605514146, 0.5739905616603928], "TOTAL_ENERGY": [2.4981448284255907, 2.32825058808835, 1.951997924455132, 1.6460326489776684, 1.4571261068637242, 1.3392146683278259, 1.2606377429440172]}, "ELEMENT_141": {}, "ELEMENT_1414": {}, "ELEMENT_466": {}, "ELEMENT_330": {}, "NODE_968": {"MOMENTUM_X": [0.0, 4.643640437232257e-34, 2.8902229227805862e-24, 3.010074946524288e-17, 8.434216004469483e-13, 6.641707324561804e-09, 4.314093618317052e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000074896, 0.1250000058833875, 0.12503787110955997], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.250000000002097, 0.2500000164734857, 0.2501060678713959]}, "NODE_327": {"MOMENTUM_X": [1.2512798963409634e-18, 3.687342453069253e-10, 8.989105519881528e-07, 0.00013422394898500364, 0.0034238503603787594, 0.024927785996433575, 0.07634538106818439], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999996899102, 0.9999992446802525, 0.9998872812702866, 0.9971176607612866, 0.978745910519363, 0.9329061319185233], "TOTAL_ENERGY": [2.5, 2.4999999989146855, 2.4999973563821434, 2.4996055081639486, 2.4899254826229344, 2.426292344596484, 2.271658851560698]}, "NODE_630": {"MOMENTUM_X": [0.005059711828762912, 0.2848915070592299, 0.3133978690906982, 0.4162709972516251, 0.41181199914627664, 0.38412454176130517, 0.3997428195509177], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12890801552713874, 0.28813237003253594, 0.3408408692836528, 0.4462786068651616, 0.44304662196442235, 0.4134170623436945, 0.4305747807374938], "TOTAL_ENERGY": [0.26134007128305903, 0.9502215893598409, 0.8932080260217127, 0.9567161489052398, 0.9507332518622812, 0.9380227396974404, 0.9449713641008272]}, "NODE_1029": {"MOMENTUM_X": [0.0, 6.495392323614934e-46, 3.5917700609561092e-34, 5.987229807655166e-26, 1.758681299018037e-19, 1.0048147509353531e-14, 8.134511908708618e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000946, 0.1250000000766527], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000002653, 0.2500000002146276]}, "ELEMENT_1771": {}, "ELEMENT_257": {}, "ELEMENT_373": {}, "NODE_643": {"MOMENTUM_X": [0.0006086317015039504, 0.2533823357629315, 0.27623783519815975, 0.37194805673347536, 0.4229020354035792, 0.3993534760117828, 0.3852559554144334], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1255445886008967, 0.2700072050277932, 0.30228199448041354, 0.4003958382454234, 0.4568313346065862, 0.43110402818210775, 0.41592722815035077], "TOTAL_ENERGY": [0.2515317814999848, 0.8811370085648735, 0.8742071144634781, 0.9355736493156781, 0.955000320024534, 0.9449600123543406, 0.9382961560908019]}, "NODE_357": {"MOMENTUM_X": [5.122737254349781e-14, 1.4600552010661468e-07, 7.276384363855103e-05, 0.0030273388652761564, 0.026460599208857724, 0.08483806677728666, 0.15422888749343738], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999568, 0.9999998769461516, 0.9999387058748948, 0.9974424020657688, 0.9773295623856091, 0.9247943400446538, 0.8567966752355287], "TOTAL_ENERGY": [2.4999999999998486, 2.499999569311569, 2.4997854781219573, 2.4910595325298615, 2.4214361605238572, 2.2449299569204983, 2.027734376154032]}, "NODE_1095": {"MOMENTUM_X": [0.0, 0.0, 8.634062971990437e-44, 4.5795408380578263e-35, 7.768117641948369e-28, 2.5803111481019987e-21, 3.5330034771561933e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000033], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000009]}, "NODE_764": {"MOMENTUM_X": [6.695932333305453e-18, 2.960288018413094e-09, 5.191671689402563e-05, 0.08314872328088616, 0.27325799211092777, 0.24744352470428038, 0.26145972629058056], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000027847196, 0.12504866872268183, 0.17750617069682595, 0.27957630208256834, 0.26885556694185925, 0.28242847232090557], "TOTAL_ENERGY": [0.25, 0.2500000077972151, 0.25013631603663283, 0.44160148106506947, 0.9383919561034915, 0.8691762668367231, 0.8808972829669535]}, "ELEMENT_417": {}, "NODE_796": {"MOMENTUM_X": [5.524639984916864e-24, 1.616169919096119e-12, 8.57620246959391e-08, 0.000738218460645425, 0.19218601996728757, 0.24288305205511646, 0.25444662796745204], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000152117, 0.12500008058431847, 0.1256630677910413, 0.2368663300971014, 0.26552621853292807, 0.2713999444836559], "TOTAL_ENERGY": [0.25, 0.2500000000042592, 0.2500002256362143, 0.2518651296354345, 0.7203493276834965, 0.8604097263528844, 0.8874708553091692]}, "ELEMENT_1040": {}, "ELEMENT_950": {}, "NODE_153": {"MOMENTUM_X": [0.0, 2.315503970181531e-31, 2.8133473858944583e-22, 8.059263372535645e-16, 3.1765205161837953e-12, 1.868628754414329e-09, 2.777190973190773e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999993, 0.999999999997316, 0.9999999984227158, 0.9999997658276517], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999998, 2.499999999990606, 2.4999999944795053, 2.4999991803968844]}, "ELEMENT_1470": {}, "ELEMENT_836": {}, "ELEMENT_1768": {}, "ELEMENT_1957": {}, "ELEMENT_1305": {}, "NODE_918": {"MOMENTUM_X": [0.0, 1.085443446833959e-27, 2.8208766614245975e-19, 7.573500344004831e-14, 9.973590785372516e-10, 7.199666235713472e-06, 0.028549556476629143], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000714, 0.12500000093881752, 0.12500676431937363, 0.14499268916364677], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000001999, 0.2500000026286891, 0.2500189409255648, 0.31389681191995383]}, "NODE_1064": {"MOMENTUM_X": [0.0, 2.8504247129260433e-52, 7.067778586222109e-39, 3.2056745907176036e-30, 3.8932184533388456e-23, 2.2856997313446662e-17, 2.350461932587076e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000022263], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000006233]}, "ELEMENT_713": {}, "ELEMENT_805": {}, "ELEMENT_269": {}, "ELEMENT_413": {}, "NODE_131": {"MOMENTUM_X": [0.0, 1.081151693062083e-32, 2.3381195347311609e-23, 1.5341639436811928e-16, 8.993186962827392e-13, 6.304296322626724e-10, 1.0885840111763138e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999992419, 0.9999999994684502, 0.9999999082037231], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999973466, 2.4999999981395753, 2.4999996787130465]}, "ELEMENT_1781": {}, "ELEMENT_1830": {}, "ELEMENT_740": {}, "ELEMENT_64": {}, "ELEMENT_1429": {}, "ELEMENT_634": {}, "ELEMENT_1298": {}, "NODE_649": {"MOMENTUM_X": [0.001638484463836469, 0.2513222024009794, 0.3037410059970392, 0.4015962555948821, 0.4254210793611972, 0.40645810905000224, 0.41297355755373366], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.126282811601347, 0.2651959795149879, 0.3208918592870197, 0.42321934333909916, 0.4476324727615567, 0.4271014937058272, 0.4339606780393449], "TOTAL_ENERGY": [0.25363885668711605, 0.8628288475354694, 0.899818421159262, 0.9510425057564047, 0.9633833711893743, 0.9537437249713442, 0.9559796492939463]}, "ELEMENT_205": {}, "ELEMENT_1954": {}, "ELEMENT_1030": {}, "ELEMENT_21": {}, "ELEMENT_1565": {}, "NODE_120": {"MOMENTUM_X": [0.0, 1.6044843435056087e-40, 3.622774098039084e-30, 5.4033977297994e-23, 1.5904528726169715e-16, 4.192251782253773e-13, 2.1205051643645388e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999996454, 0.9999999998210569], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999998759, 2.4999999993737]}, "ELEMENT_1158": {}, "ELEMENT_167": {}, "ELEMENT_992": {}, "ELEMENT_1480": {}, "ELEMENT_1919": {}, "ELEMENT_1161": {}, "NODE_269": {"MOMENTUM_X": [0.0, 1.92309619611241e-16, 1.3513339214791604e-11, 2.3962684857279302e-08, 5.0800951309203265e-06, 0.00024119879391678087, 0.0036182466634070813], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999998, 0.9999999999886091, 0.9999999798453078, 0.999995738577961, 0.9997978962426112, 0.9969622946997478], "TOTAL_ENERGY": [2.5, 2.4999999999999996, 2.499999999960132, 2.499999929458578, 2.499985085057419, 2.4992927070242965, 2.4893826194053563]}, "ELEMENT_1636": {}, "ELEMENT_1966": {}, "NODE_787": {"MOMENTUM_X": [1.4063530760619486e-21, 2.726521563072039e-11, 8.960274955816064e-07, 0.005389933318128208, 0.2555771841668428, 0.23617917659709659, 0.2538423321752268], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000002568967, 0.12500084410634754, 0.12940691954583222, 0.27001988820817585, 0.2628347824985187, 0.2726020316814863], "TOTAL_ENERGY": [0.25, 0.25000000007193107, 0.2500023635110945, 0.2627494413235427, 0.8904000887065561, 0.843476508306349, 0.8832265517952362]}, "NODE_23": {"MOMENTUM_X": [0.0, 0.0, 2.2778433173424724e-41, 1.0019901609349291e-32, 1.2062824627491229e-25, 1.814019778672902e-19, 3.640784437640406e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999997], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999999]}, "NODE_53": {"MOMENTUM_X": [0.0, 4.914369193545704e-50, 3.4134350974715986e-37, 5.088677479313998e-29, 4.316137146830197e-22, 1.4060435905079046e-16, 2.1087742657510616e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998214], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999993747]}, "ELEMENT_1607": {}, "ELEMENT_1784": {}, "ELEMENT_812": {}, "NODE_252": {"MOMENTUM_X": [0.0, 2.791536485745409e-17, 4.0137234304817146e-12, 8.8719185624145e-09, 2.225413914785078e-06, 0.00012239452252986273, 0.002117428341516155], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999966169, 0.9999999925269787, 0.9999981277297869, 0.9998970888587106, 0.9982172627443698], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999881597, 2.499999973844426, 2.4999934470610996, 2.4996398296081477, 2.4937655371194505]}, "ELEMENT_126": {}, "ELEMENT_939": {}, "ELEMENT_399": {}, "ELEMENT_1915": {}, "NODE_18": {"MOMENTUM_X": [0.0, 7.375008339613628e-48, 3.2247284615835547e-35, 3.912467312024353e-27, 4.1968380232991665e-20, 3.2796185303002686e-15, 3.1240202040817837e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999972, 0.9999999999972992], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999999, 2.4999999999905462]}, "ELEMENT_1504": {}, "ELEMENT_1202": {}, "ELEMENT_1331": {}, "ELEMENT_1913": {}, "ELEMENT_1539": {}, "NODE_80": {"MOMENTUM_X": [0.0, 8.057452846619033e-46, 2.431768413210836e-34, 7.474356486024836e-27, 6.314092076199481e-20, 3.766612629819306e-15, 3.4720153133409132e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999968, 0.9999999999970519], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999989, 2.4999999999896816]}, "ELEMENT_1997": {}, "ELEMENT_124": {}, "ELEMENT_558": {}, "NODE_513": {"MOMENTUM_X": [0.09041186810406038, 0.28617879549513503, 0.3475400805569518, 0.3700331572719905, 0.3806891824790077, 0.38590549895677834, 0.3887404447341188], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9181405495941031, 0.6960868552455358, 0.5923475453519328, 0.5390815590816483, 0.5092408370468028, 0.48948607879113126, 0.47552975696511396], "TOTAL_ENERGY": [2.224496023408881, 1.566635832267786, 1.3060672805249836, 1.1821330099649177, 1.1139846934097797, 1.0712403928491703, 1.0420038706805712]}, "ELEMENT_1600": {}, "ELEMENT_1166": {}, "ELEMENT_1289": {}, "NODE_385": {"MOMENTUM_X": [2.1325013728873715e-10, 2.5540407952837387e-05, 0.002591103294550858, 0.029612674762452128, 0.09801674192654514, 0.17375377254277272, 0.23209833505670183], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999998152486, 0.9999778798896322, 0.9977646561902838, 0.9742352267639013, 0.9117005125627141, 0.8355365898249159, 0.7693378990132761], "TOTAL_ENERGY": [2.49999999935337, 2.4999225806861882, 2.4921849727700685, 2.4108317378329454, 2.2021334859912423, 1.9624472641593265, 1.7670962262494965]}, "NODE_300": {"MOMENTUM_X": [1.6092663406690821e-22, 7.67352547807102e-12, 4.863610088111404e-08, 1.473782104662627e-05, 0.0006833187777492387, 0.008414183658658151, 0.03890984190104086], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999935257, 0.999999958958089, 0.9999875621089135, 0.999422384481452, 0.9928494991725728, 0.9663667492609129], "TOTAL_ENERGY": [2.5, 2.49999999997734, 2.499999856353315, 2.4999564676879786, 2.497978923520341, 2.475053261030766, 2.383943782938539]}, "ELEMENT_1762": {}, "ELEMENT_1959": {}, "NODE_699": {"MOMENTUM_X": [1.5695684541524553e-09, 0.0014467922071930812, 0.21382760133185183, 0.24776498382405743, 0.27909337159344694, 0.3458122721858044, 0.4146305519908233], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000148194795, 0.12627737824288085, 0.24880219458635572, 0.27023524915508823, 0.30053257730492877, 0.3737065211885503, 0.4479077086056852], "TOTAL_ENERGY": [0.2500000041494543, 0.2536100136730443, 0.7788968688658212, 0.8661170588790938, 0.8930335665874708, 0.9201579084194491, 0.9523332722599325]}, "ELEMENT_1271": {}, "ELEMENT_1009": {}, "NODE_782": {"MOMENTUM_X": [6.056968602395528e-23, 3.852753046780069e-12, 1.8137057935459875e-07, 0.0017434093601489263, 0.25326952312090784, 0.2217056710195359, 0.2538597192065061], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000412273, 0.12500019374913074, 0.12668191330003756, 0.2733712502951027, 0.2595445687232931, 0.27554131305641594], "TOTAL_ENERGY": [0.25, 0.25000000001154365, 0.2500005424981325, 0.25475611944015886, 0.8944197057834139, 0.8120559277068471, 0.8930990811022739]}, "ELEMENT_1360": {}, "NODE_103": {"MOMENTUM_X": [0.0, 3.008964857096099e-44, 3.9494917707049196e-33, 8.699070261479535e-26, 6.486288562420481e-19, 1.4190563533705136e-14, 1.1155918121276972e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999879, 0.999999999990576], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999958, 2.4999999999670166]}, "NODE_176": {"MOMENTUM_X": [0.0, 5.4029271502428975e-28, 2.527150425174412e-19, 4.105210344288169e-14, 8.685302079106774e-11, 3.067068926057603e-08, 2.8876586364613833e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999655, 0.9999999999266793, 0.9999999741336323, 0.9999975678091627], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999998788, 2.4999999997433777, 2.499999909467715, 2.499991487342918]}, "ELEMENT_597": {}, "ELEMENT_57": {}, "ELEMENT_168": {}, "ELEMENT_236": {}, "ELEMENT_29": {}, "ELEMENT_1285": {}, "ELEMENT_1226": {}, "ELEMENT_533": {}, "ELEMENT_31": {}, "ELEMENT_1795": {}, "ELEMENT_1973": {}, "ELEMENT_1283": {}, "ELEMENT_405": {}, "NODE_706": {"MOMENTUM_X": [3.4133274120224374e-11, 9.839105511644233e-05, 0.1302383401110982, 0.26047740507549466, 0.2622727197567346, 0.3051489673520854, 0.39480303060299116], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000003196274, 0.12509068732689949, 0.2019256816962995, 0.27385552918349554, 0.2805594116276069, 0.32921353572337253, 0.4255910507434444], "TOTAL_ENERGY": [0.2500000000894957, 0.2502540774485294, 0.5521762929022136, 0.9024514827841883, 0.8885946482024799, 0.9011346284615064, 0.9443815774360955]}, "NODE_474": {"MOMENTUM_X": [0.0031418811007638972, 0.1038379977803315, 0.22637754372820462, 0.2980236238174354, 0.3349330645758607, 0.3550312345778059, 0.3667747384088601], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9972746933758144, 0.9052839716122708, 0.7748384682209809, 0.6799006266823722, 0.6193726793023332, 0.5792155088442953, 0.5508816878951314], "TOTAL_ENERGY": [2.4904774288634712, 2.1818754468630224, 1.78334021056056, 1.5221550755167812, 1.3682899948761558, 1.2718310905775005, 1.2067351314651522]}, "NODE_902": {"MOMENTUM_X": [0.0, 6.900619787521722e-24, 3.9367271559300424e-16, 2.0164548579736363e-11, 1.8410095161455482e-07, 0.0012389258271609522, 0.18870086117706528], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000036, 0.12500000001791664, 0.12500016290451307, 0.12601850228062098, 0.23228367016787715], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000000001, 0.25000000005016654, 0.25000045613316857, 0.2528746829222113, 0.7041263790069557]}, "ELEMENT_1888": {}, "NODE_941": {"MOMENTUM_X": [0.0, 5.246703173127007e-31, 3.920015921881034e-22, 1.0498847088345112e-15, 1.8609055426225837e-11, 1.3656163472301128e-07, 0.0008321095659339196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000097, 0.12500000001753114, 0.12500012866751575, 0.12575291996555227], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000028, 0.25000000004908735, 0.2500003602693439, 0.2521190844602919]}, "ELEMENT_110": {}, "NODE_431": {"MOMENTUM_X": [2.209714571193518e-06, 0.004347673660120123, 0.05212705334226919, 0.1480113663369667, 0.2300538528835018, 0.28246850537196716, 0.31480104084334787], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999981248747868, 0.9962875225064107, 0.954310211427415, 0.862440237811967, 0.771648997830758, 0.7034112407063907, 0.6543424796350482], "TOTAL_ENERGY": [2.4999934370724, 2.487031581967945, 2.3432597715446333, 2.0455091197271282, 1.7738350594631085, 1.5845456251520165, 1.4562682348663947]}, "ELEMENT_652": {}, "ELEMENT_949": {}, "ELEMENT_328": {}, "ELEMENT_1434": {}, "ELEMENT_148": {}, "NODE_147": {"MOMENTUM_X": [0.0, 2.9541356262511684e-29, 1.8791839234347443e-20, 1.3690531748266226e-14, 3.554628217934852e-11, 1.45082776379329e-08, 1.5314086083898841e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999883, 0.9999999999696878, 0.9999999876237403, 0.9999986943853822], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999959, 2.499999999893907, 2.4999999566830913, 2.499995430351984]}, "ELEMENT_1696": {}, "NODE_928": {"MOMENTUM_X": [0.0, 1.075815146391885e-29, 9.444999968168114e-21, 5.9014564098038924e-15, 9.696279397229064e-11, 8.025328782560256e-07, 0.005581108346184322], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000558, 0.12500000009145718, 0.12500075364405874, 0.129476192571362], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000001565, 0.25000000025608016, 0.2500021102136566, 0.2629694758718065]}, "NODE_1090": {"MOMENTUM_X": [0.0, 0.0, 4.2424013091392684e-45, 3.100591554628826e-36, 4.320555801200808e-29, 8.095172793562116e-23, 3.722578518494498e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000001]}, "NODE_616": {"MOMENTUM_X": [0.1302617010411718, 0.340278730131286, 0.4288479253612343, 0.41509100840509033, 0.4126855068491737, 0.41480114080542846, 0.41040304721719445], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.19844038726448474, 0.35502551284075373, 0.4489304339440048, 0.4337449975061502, 0.43127000913133023, 0.43397405589213744, 0.4299688732405147], "TOTAL_ENERGY": [0.5462557711462941, 0.9219484976322573, 0.9641270568793274, 0.9578235645675498, 0.9554072203231656, 0.9551646285012686, 0.952073095404613]}, "ELEMENT_1385": {}, "ELEMENT_1593": {}, "NODE_837": {"MOMENTUM_X": [0.0, 6.633588120366626e-18, 2.5284092973878195e-12, 4.8310796738173354e-08, 0.0004352787464573239, 0.2004271440315828, 0.22926244646807314], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000270797, 0.1250000515944098, 0.12544678527082354, 0.2453670324321732, 0.2628884748922684], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000075823, 0.25000014446438673, 0.2512540607995945, 0.7512851573618403, 0.8314870048866698]}, "ELEMENT_1568": {}, "NODE_695": {"MOMENTUM_X": [6.548017570946729e-10, 0.0008579926239739215, 0.21573774724175349, 0.24103844221868775, 0.2771152268600453, 0.3430808410407259, 0.4274069871124367], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000061276634, 0.12575176345126646, 0.24783490419951648, 0.2661180992150422, 0.29549029456778103, 0.3702662051423637, 0.46055321840393565], "TOTAL_ENERGY": [0.25000000171574577, 0.2521161220760141, 0.7770455134732293, 0.8509163652378364, 0.8988883772735955, 0.918609039814121, 0.9600702021869852]}, "ELEMENT_381": {}, "ELEMENT_932": {}, "NODE_839": {"MOMENTUM_X": [0.0, 2.690169724586854e-17, 8.527619689800413e-12, 1.448551343040643e-07, 0.0012540225932239908, 0.22004509967302008, 0.23438926990193748], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000003, 0.12500000000807904, 0.12500013667249693, 0.12609139475471087, 0.25051670394733894, 0.2612133021251603], "TOTAL_ENERGY": [0.25, 0.25000000000000006, 0.25000000002262124, 0.25000038268332647, 0.25307992842015337, 0.7918429919381175, 0.8380882274846331]}, "NODE_291": {"MOMENTUM_X": [0.0, 2.6526521884243983e-14, 5.863774933290179e-10, 4.877004116469969e-07, 5.459004493535186e-05, 0.0014620332063748718, 0.012937428074884981], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999777, 0.9999999995065122, 0.9999995905290944, 0.9999542704446446, 0.9987748326436776, 0.9890811358261076], "TOTAL_ENERGY": [2.5, 2.4999999999999214, 2.499999998272792, 2.4999985668521747, 2.4998399503617645, 2.4957143832833424, 2.4619655915236094]}, "ELEMENT_838": {}, "ELEMENT_118": {}, "ELEMENT_1754": {}, "ELEMENT_1821": {}, "NODE_203": {"MOMENTUM_X": [0.0, 3.771614810344333e-23, 1.3773688575617254e-15, 1.3241273824234123e-11, 1.0832977877986345e-08, 1.6784217357498874e-06, 7.484839525859032e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999989, 0.999999999988844, 0.9999999908758289, 0.9999985871057402, 0.9999370026788539], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999996, 2.499999999960954, 2.4999999680654015, 2.499995054873898, 2.499779516287394]}, "NODE_1024": {"MOMENTUM_X": [0.0, 4.697423913600338e-47, 1.4700231167270347e-35, 2.0842726393805293e-27, 9.229005431925841e-21, 1.1543765659189173e-15, 1.1632688304617473e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000125, 0.12500000001244083], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000344, 0.25000000003483414]}, "ELEMENT_1290": {}, "ELEMENT_313": {}, "NODE_971": {"MOMENTUM_X": [0.0, 1.1473142666919398e-36, 5.4063659240670076e-27, 1.204664984017047e-19, 1.2816474122981159e-14, 1.419914589624978e-10, 1.2305252241258324e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000001218, 0.12500000013464174, 0.12500115893284253], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000003414, 0.250000000376997, 0.2500032450359304]}, "ELEMENT_26": {}, "ELEMENT_1564": {}, "ELEMENT_202": {}, "NODE_858": {"MOMENTUM_X": [0.0, 9.754548633830595e-18, 4.944785033044021e-12, 8.606509681526719e-08, 0.000613264169555624, 0.1655090177484475, 0.24954978188458246], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000440464, 0.12500007622920534, 0.1255184837111451, 0.22010662523621224, 0.265133244929355], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000012333, 0.2500002134418936, 0.2514574467361228, 0.6431639029501193, 0.8718291453394633]}, "NODE_9": {"MOMENTUM_X": [0.0, 1.9202379236356787e-52, 1.4352398434929562e-38, 3.542810593170039e-30, 4.32921976839393e-23, 8.713633614727579e-17, 1.1581269449927506e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999999013], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999996545]}, "ELEMENT_814": {}, "ELEMENT_1791": {}, "ELEMENT_441": {}, "ELEMENT_707": {}, "NODE_816": {"MOMENTUM_X": [0.0, 3.5162606627451026e-15, 4.890015556204239e-10, 6.331536752462385e-06, 0.03550104393943744, 0.28937718787599026, 0.24121651821325404], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000333, 0.1250000004614803, 0.12500593500891555, 0.1481782903572834, 0.285778776725029, 0.2648940632459184], "TOTAL_ENERGY": [0.25, 0.25000000000000927, 0.25000000129214484, 0.2500166186454672, 0.32577069212863663, 0.9765333238521584, 0.8553211237854318]}, "ELEMENT_250": {}, "ELEMENT_1796": {}, "ELEMENT_1661": {}, "NODE_568": {"MOMENTUM_X": [0.4140800691953098, 0.3976959337164555, 0.38782279678403353, 0.39807989962445856, 0.39319936516644366, 0.39559331179975565, 0.39479462117184516], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3932120974820328, 0.3817669302264263, 0.36987305221349, 0.37978303574736894, 0.3754485067862268, 0.3782649373768089, 0.37808723258935417], "TOTAL_ENERGY": [0.9104361217590995, 0.8422584911498503, 0.8388797315844115, 0.8437901016034236, 0.8423791564985644, 0.8452095165449498, 0.8462516130619734]}, "NODE_917": {"MOMENTUM_X": [0.0, 5.570641620995233e-28, 2.3586028623707298e-19, 5.6178849271271903e-14, 7.869861914840402e-10, 6.304565941076596e-06, 0.028672514412714747], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000005307, 0.12500000074168066, 0.12500591143757311, 0.1448488898479697], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000001486, 0.2500000020767059, 0.2500165526605602, 0.31350728508786124]}, "ELEMENT_1502": {}, "ELEMENT_872": {}, "ELEMENT_1993": {}, "ELEMENT_1990": {}, "ELEMENT_283": {}, "ELEMENT_1508": {}, "NODE_562": {"MOMENTUM_X": [0.4045652433523178, 0.39850444415705644, 0.36541268808801636, 0.3946022025248871, 0.38169461708562935, 0.38525192102320016, 0.39004594786032065], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.4072311412180258, 0.41859226275693456, 0.37905069783037304, 0.40508047116426904, 0.38954782819407724, 0.3912433880804124, 0.39455800999604373], "TOTAL_ENERGY": [0.9881674537931534, 0.8888407719467707, 0.8680393547698354, 0.8794651703749415, 0.8696041594105154, 0.8706356462554701, 0.8719534346420404]}, "NODE_810": {"MOMENTUM_X": [8.834962611554613e-26, 1.955785840621413e-13, 1.4035250122567888e-08, 0.00010961013568936608, 0.10953659678315213, 0.2658279100931136, 0.24856674821171607], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000018455, 0.12500001325279322, 0.12510298283321056, 0.1925262325217486, 0.27622124445906043, 0.2687454676165279], "TOTAL_ENERGY": [0.25, 0.25000000000051675, 0.2500000371078243, 0.25028854413943813, 0.5072220160382059, 0.9196804603205894, 0.874739575908232]}, "NODE_741": {"MOMENTUM_X": [5.797879191827126e-15, 2.500263294785177e-07, 0.0027949422828643516, 0.23755792917630494, 0.23856096835785667, 0.2613056722200078, 0.2941312031575554], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000547, 0.12500023467076773, 0.1273574326624601, 0.26059578084923646, 0.26402436864295453, 0.2795430030047445, 0.3174357316628481], "TOTAL_ENERGY": [0.25000000000001527, 0.25000065707926167, 0.2567178315239211, 0.841452968050128, 0.8478584905650229, 0.8883284726622956, 0.8953266552905063]}, "ELEMENT_1029": {}, "NODE_631": {"MOMENTUM_X": [0.005400702521428201, 0.28377838889363777, 0.31222218816467856, 0.4089020468308284, 0.4121456657326047, 0.3876806597483073, 0.3951565444119957], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12923415521315432, 0.2885596470169096, 0.3403247051457246, 0.43992179710085805, 0.4450159315828262, 0.4183578528720355, 0.4264412923553882], "TOTAL_ENERGY": [0.26231588310252285, 0.9479951905436269, 0.8923617130920363, 0.9516627644016651, 0.9493155171700433, 0.9391120663487007, 0.9426502957591315]}, "ELEMENT_1693": {}, "NODE_337": {"MOMENTUM_X": [1.4035143671090012e-19, 9.901315118371483e-11, 3.3328532106452084e-07, 6.676923978697434e-05, 0.002206950638856396, 0.019746800881336048, 0.06886493130407315], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999060744, 0.999999686631744, 0.9999381208049721, 0.99798497948829, 0.9821246622613315, 0.9370501828527732], "TOTAL_ENERGY": [2.5, 2.4999999996712603, 2.4999989032112855, 2.4997834289547596, 2.492953297477713, 2.43787035430054, 2.2849493772120697]}, "ELEMENT_922": {}, "NODE_37": {"MOMENTUM_X": [0.0, 1.383666512593029e-43, 4.676720041267034e-32, 2.6927434091561962e-24, 1.1312619514137732e-17, 9.731081681378514e-14, 5.93721650897188e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999157, 0.9999999999486969], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999705, 2.4999999998204396]}, "NODE_767": {"MOMENTUM_X": [7.092725334860285e-18, 3.43550661694877e-09, 5.655884689062676e-05, 0.08477363989561723, 0.271697809567683, 0.248138583744331, 0.260595644929949], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000325388996, 0.12505348230617605, 0.17863771007944415, 0.27914744922457474, 0.2693837943355566, 0.28208164176903927], "TOTAL_ENERGY": [0.25, 0.2500000091108922, 0.2501498026321363, 0.4459335889407456, 0.9352734951254255, 0.8717462921090028, 0.8801186603938682]}, "ELEMENT_628": {}, "NODE_724": {"MOMENTUM_X": [4.382413094004458e-12, 2.5962928552155078e-05, 0.0653592427956985, 0.2718544236917934, 0.25167880349411154, 0.2842555181139801, 0.35309228093311995], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000415848, 0.125024792004131, 0.16747874838851307, 0.27976587842256284, 0.2740311511923137, 0.3085045189137182, 0.3831537371214909], "TOTAL_ENERGY": [0.25000000001164374, 0.25006942932041126, 0.3991461653077057, 0.9367142074098577, 0.8728426387984746, 0.8906306666587271, 0.9224040627214161]}, "ELEMENT_777": {}, "NODE_784": {"MOMENTUM_X": [8.901340073384925e-22, 1.3828537212085486e-11, 5.475800373150563e-07, 0.00475479072663756, 0.2591939022984584, 0.23349128270577657, 0.2556043443270958], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000001306974, 0.1250005156136022, 0.1287975251657919, 0.2706778175111993, 0.26095221017891224, 0.27225092917204097], "TOTAL_ENERGY": [0.25, 0.2500000000365952, 0.25000144372296446, 0.26094945245180945, 0.8970168435634559, 0.8353237361076917, 0.887000200104011]}, "NODE_301": {"MOMENTUM_X": [1.6110210126037252e-22, 7.264749551677284e-12, 4.624642357522732e-08, 1.4172452580229724e-05, 0.0006648490763805604, 0.008270186392896998, 0.0385568968302649], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999938793, 0.9999999610488448, 0.999988067438908, 0.9994394524316699, 0.9929895018344176, 0.9667450513669767], "TOTAL_ENERGY": [2.5, 2.4999999999785776, 2.4999998636709604, 2.4999582363186543, 2.4980386286770666, 2.475540345341014, 2.3852337837361635]}, "NODE_588": {"MOMENTUM_X": [0.2659545042836321, 0.39949494080529074, 0.41343042815425335, 0.3836740041298301, 0.3997615800745019, 0.39769278297374033, 0.3938677611204865], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.28596047311703254, 0.43205188845761705, 0.4412297751016243, 0.4111293637141143, 0.4275478057260917, 0.4249767321186195, 0.4205710903352313], "TOTAL_ENERGY": [0.8646056908727804, 0.9292307296987135, 0.9486819533715404, 0.9295171058755917, 0.9376819963965374, 0.9355044964600466, 0.93315512189211]}, "ELEMENT_196": {}, "NODE_653": {"MOMENTUM_X": [5.486543847317541e-05, 0.1900542849991182, 0.2641123181099682, 0.3310901523643298, 0.40923684028672197, 0.4121768821529971, 0.38761177348843007], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12505104465655276, 0.23607463711183374, 0.28431601331151984, 0.35618103666427414, 0.4417489612580177, 0.4449802939124371, 0.41853980097800525], "TOTAL_ENERGY": [0.25014298521827855, 0.7150819565096699, 0.8838304397720821, 0.9161553140095088, 0.9488350807083419, 0.9505023925770134, 0.9392275048847181]}, "ELEMENT_756": {}, "NODE_276": {"MOMENTUM_X": [0.0, 9.543326887372824e-14, 1.6862963795889296e-09, 1.1019151346041903e-06, 9.73725411239928e-05, 0.0021133509254516463, 0.015787292479295965], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999192, 0.9999999985729815, 0.9999990666383213, 0.9999174594801021, 0.9982053171512705, 0.986494298583217], "TOTAL_ENERGY": [2.5, 2.499999999999718, 2.499999995005436, 2.4999967332359425, 2.499711120564772, 2.4937238637211827, 2.453005261408965]}, "ELEMENT_574": {}, "NODE_590": {"MOMENTUM_X": [0.2656143478607348, 0.39997507287789164, 0.41159455901219577, 0.3859759284881797, 0.3982505903352942, 0.39558359261660303, 0.39537385331301766], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2858052202190645, 0.43243045075771236, 0.44009283283116524, 0.41339228103179526, 0.4260586615695806, 0.42271295066990705, 0.4219464849529593], "TOTAL_ENERGY": [0.863905033317956, 0.9302376008013555, 0.946214729953253, 0.931554896015574, 0.9363860979167785, 0.9337390121564046, 0.9327411516905186]}, "NODE_272": {"MOMENTUM_X": [0.0, 5.8530210083889405e-15, 1.8186893119873924e-10, 1.8887724256437872e-07, 2.5185471069728984e-05, 0.0007898500398987693, 0.00816576621164398], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.999999999999995, 0.9999999998468375, 0.9999998410504104, 0.9999788310332285, 0.9993357895037288, 0.9931012525537178], "TOTAL_ENERGY": [2.5, 2.4999999999999827, 2.499999999463932, 2.49999944367649, 2.4999259094534025, 2.49767600491522, 2.4759281057380016]}, "ELEMENT_1223": {}, "NODE_341": {"MOMENTUM_X": [5.3845039701919726e-17, 2.1358306618577642e-09, 3.347538279172739e-06, 0.0003575556655892832, 0.006838734527794179, 0.03891655498707238, 0.09978153264035403], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999981999594, 0.9999971842388004, 0.9996996006304505, 0.9942352527681324, 0.9665925053030352, 0.9110979461891279], "TOTAL_ENERGY": [2.5, 2.4999999936998583, 2.499990144852658, 2.498948765263798, 2.479876661273058, 2.3847309272397426, 2.2001526787650363]}, "ELEMENT_1346": {}, "NODE_979": {"MOMENTUM_X": [0.0, 7.13539971456746e-36, 9.464285849449393e-26, 2.5118263411477403e-18, 1.0322772862417174e-13, 8.836664552830579e-10, 5.6889115331726246e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000009173, 0.1250000007831458, 0.12500501675196452], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000002568, 0.2500000021928082, 0.2500140474077369]}, "ELEMENT_234": {}, "NODE_93": {"MOMENTUM_X": [0.0, 2.972691690497122e-53, 8.152299422146685e-40, 1.0151956924207725e-31, 1.1366524830451652e-24, 1.5570842098600959e-18, 1.2169316861910882e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999883], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999596]}, "ELEMENT_292": {}, "ELEMENT_914": {}, "ELEMENT_959": {}, "NODE_454": {"MOMENTUM_X": [0.00010904381433151789, 0.02741779986581026, 0.1277110760411233, 0.22839546613888473, 0.28988110087659547, 0.32461581545295193, 0.34522434245315947], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999078978288409, 0.9763980471273137, 0.8831414006171843, 0.7737861546331416, 0.6927670983182349, 0.6377847662998194, 0.5994596630410793], "TOTAL_ENERGY": [2.4996776645829075, 2.418315253976941, 2.11083626333537, 1.7801849949070712, 1.5562179733713912, 1.4143205060590864, 1.3201651718481504]}, "ELEMENT_1665": {}, "ELEMENT_606": {}, "ELEMENT_966": {}, "ELEMENT_722": {}, "ELEMENT_1844": {}, "ELEMENT_28": {}, "ELEMENT_1799": {}, "ELEMENT_58": {}, "ELEMENT_696": {}, "ELEMENT_1181": {}, "ELEMENT_1484": {}, "ELEMENT_71": {}, "ELEMENT_414": {}, "NODE_213": {"MOMENTUM_X": [0.0, 6.87161825642824e-26, 7.492381575139865e-18, 4.5474624597691057e-13, 6.69236738090569e-10, 1.7525353237929933e-07, 1.2654018402590845e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999995675, 0.9999999993686213, 0.9999998362230031, 0.999988307684875], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999984865, 2.4999999977901743, 2.499999426780555, 2.4999590771065634]}, "NODE_294": {"MOMENTUM_X": [6.449027901454811e-25, 5.905782470717713e-13, 6.580927911776658e-09, 3.1839678719810047e-06, 0.00022204686590137626, 0.0039051729439831167, 0.024124762467568332], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.999999999999503, 0.9999999944622994, 0.9999973238547134, 0.9998134153373052, 0.9967101423069569, 0.979434475365743], "TOTAL_ENERGY": [2.5, 2.4999999999982596, 2.4999999806180475, 2.4999906335060103, 2.499347015619996, 2.4885028902932658, 2.428653394614301]}, "ELEMENT_160": {}, "ELEMENT_1134": {}, "ELEMENT_397": {}, "NODE_914": {"MOMENTUM_X": [0.0, 6.809817092741437e-29, 3.4950058318416305e-20, 1.1046277210689861e-14, 1.8068106241066862e-10, 1.647786076649092e-06, 0.013018590638953286], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000001182, 0.1250000001931435, 0.1250017593672508, 0.1354306377936116], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000332, 0.2500000005408019, 0.25000492627359994, 0.2811899634564571]}, "NODE_220": {"MOMENTUM_X": [0.0, 1.0116782429104694e-21, 8.852443866924834e-15, 6.087638753831738e-11, 3.847433557567397e-08, 4.782296418254549e-06, 0.0001744522487485198], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999925, 0.9999999999486547, 0.9999999675776591, 0.9999959753727058, 0.9998532441611694], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999974, 2.499999999820292, 2.49999988652181, 2.4999859138347067, 2.499486391334075]}, "NODE_1105": {"MOMENTUM_X": [0.0, 0.0, 3.056805758153225e-45, 1.814073748993855e-36, 3.1919649878528504e-29, 1.3838939339519452e-22, 4.7203358141713646e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000001]}, "ELEMENT_557": {}, "ELEMENT_1763": {}, "NODE_540": {"MOMENTUM_X": [0.38852848517515126, 0.405379128734532, 0.40142543167372113, 0.3991804437186327, 0.40114440786487704, 0.398171749706991, 0.3986819814287607], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.5449354661204756, 0.4523631814104937, 0.43003016859486015, 0.419218470432922, 0.41719817991777947, 0.41178722161544873, 0.4109535153217834], "TOTAL_ENERGY": [1.1914443500723835, 0.9970164367774121, 0.9482072885380836, 0.9293670795571658, 0.9214448442384013, 0.9144453991816298, 0.9110817679548996]}, "NODE_348": {"MOMENTUM_X": [1.1784445199372437e-17, 7.858338369703737e-10, 1.596767569365229e-06, 0.00021462469576290493, 0.005013013318860759, 0.033238634210237226, 0.09322266030587298], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999992554883, 0.9999985029982993, 0.9998017859584949, 0.9954373371585422, 0.969854406156121, 0.9139575713754685], "TOTAL_ENERGY": [2.5, 2.499999997394209, 2.499994760498089, 2.499306312271611, 2.484060175263487, 2.395712650788499, 2.208700666807017]}, "ELEMENT_433": {}, "NODE_961": {"MOMENTUM_X": [0.0, 9.982015514393365e-35, 3.223589966382141e-25, 4.562646278775282e-18, 1.6699501672375752e-13, 1.6207234302330128e-09, 1.2781081229158936e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000001579, 0.12500000152730562, 0.1250119762033881], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.250000000000442, 0.25000000427645575, 0.2500335359831042]}, "ELEMENT_1925": {}, "ELEMENT_724": {}, "NODE_435": {"MOMENTUM_X": [2.1738267516925977e-06, 0.004200474170241863, 0.05083863983033758, 0.14686742010873816, 0.23021455779339495, 0.283232260439838, 0.31563370072674046], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999981658938802, 0.9964458078935896, 0.95579236532543, 0.8642517297801028, 0.7721061932922662, 0.7027973392243148, 0.6532054836612411], "TOTAL_ENERGY": [2.499993580638803, 2.487583740338614, 2.348271307969546, 2.051246712235934, 1.775265809595032, 1.5830015584880817, 1.453450956261167]}, "NODE_945": {"MOMENTUM_X": [0.0, 7.706592977239937e-31, 2.1403835807795968e-21, 1.857337500789132e-15, 3.1749443362416056e-11, 2.1907727608416005e-07, 0.0013580386629435052], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000018, 0.12500000003085812, 0.12500021300743697, 0.12623005241457952], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000505, 0.2500000000864027, 0.25000059642161127, 0.2534729174500161]}, "ELEMENT_32": {}, "ELEMENT_1244": {}, "NODE_159": {"MOMENTUM_X": [0.0, 9.959460040808425e-28, 2.0917048254291583e-19, 9.101882411316539e-14, 1.7458973442054072e-10, 5.519947773128322e-08, 4.637093987228269e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999224, 0.9999999998511044, 0.9999999529126611, 0.9999960477908291], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999997287, 2.4999999994788658, 2.499999835194318, 2.4999861672962376]}, "ELEMENT_409": {}, "NODE_76": {"MOMENTUM_X": [0.0, 8.629784569405822e-38, 1.1239679685534964e-27, 3.332448315205417e-20, 6.813595117717139e-15, 9.857703615384624e-12, 3.1691213151896685e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999942, 0.9999999999915918, 0.9999999972965733], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999796, 2.499999999970571, 2.499999990538006]}, "ELEMENT_1522": {}, "ELEMENT_1949": {}, "NODE_792": {"MOMENTUM_X": [2.6315283377777024e-21, 6.532580436630193e-11, 2.296403682303067e-06, 0.014079796091671395, 0.2497687715635718, 0.2483575496295301, 0.25621053046840747], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000583201, 0.1250020294809925, 0.13470340715697185, 0.2633621527431713, 0.2650430381463805, 0.27126668089478523], "TOTAL_ENERGY": [0.25, 0.25000000016329627, 0.25000568263203343, 0.27939186099007896, 0.8663754809723241, 0.8688626934544309, 0.8802385241553015]}, "NODE_542": {"MOMENTUM_X": [0.4065757597357578, 0.40504721488327783, 0.39999681430305795, 0.39666733144073185, 0.3981749956601246, 0.3973449440337261, 0.39700566158114775], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.5458317198930167, 0.4475399696382623, 0.42621893834445845, 0.4158107213557416, 0.4139693209167969, 0.4111206377106349, 0.40964958164880394], "TOTAL_ENERGY": [1.1953843737707686, 0.9827189879335598, 0.9389810263586619, 0.9220967419649183, 0.9157568326183881, 0.911127103912644, 0.9083336383514502]}, "ELEMENT_699": {}, "ELEMENT_255": {}, "ELEMENT_869": {}, "NODE_970": {"MOMENTUM_X": [0.0, 5.915311793641677e-37, 2.7231748218234825e-27, 5.884733907657684e-20, 7.725247397447839e-15, 8.896484716970264e-11, 7.996706710457019e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000733, 0.12500000008411952, 0.12500075215833392], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000205, 0.25000000023553465, 0.2500021060532685]}, "ELEMENT_1715": {}, "ELEMENT_661": {}, "NODE_963": {"MOMENTUM_X": [0.0, 1.33473642153667e-34, 4.946255484135937e-25, 1.2098904816498333e-17, 2.793113233997634e-13, 2.372269588131026e-09, 1.5248397884283047e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000026323, 0.12500000223494273, 0.12501436276548], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.250000000000737, 0.25000000625783964, 0.250040219472563]}, "ELEMENT_785": {}, "NODE_869": {"MOMENTUM_X": [0.0, 3.181439588472309e-19, 4.959790363722429e-13, 1.0952631841221845e-08, 8.013561289414484e-05, 0.09461921185235313, 0.2576181666066064], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000044217, 0.12500000971091038, 0.1250701245582451, 0.18153599193546688, 0.2682846803667398], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000012382, 0.25000002719055114, 0.25019644783653555, 0.46226107082112056, 0.8906738423691742]}, "ELEMENT_1906": {}, "NODE_592": {"MOMENTUM_X": [0.2597730242697199, 0.4027377651170781, 0.40490259867712897, 0.3899699445058501, 0.39814597652224437, 0.3947960182075729, 0.39640051630994105], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2836715414080103, 0.43323331695006545, 0.43410125050104065, 0.41743880841200776, 0.42505053501728396, 0.4201697205564999, 0.42063428236448175], "TOTAL_ENERGY": [0.8530706270218049, 0.939696032806473, 0.9395321466019713, 0.9310341865242666, 0.9327607246285677, 0.9289763094413802, 0.9276009649227237]}, "NODE_582": {"MOMENTUM_X": [0.3293226448201575, 0.4044336804853081, 0.38244782820822226, 0.39122861861664116, 0.38789492379763085, 0.3906736830582092, 0.390593609171825], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.34359716937549417, 0.41983662891581613, 0.39132866577210956, 0.3959659081165049, 0.389529397369408, 0.38996255053740686, 0.38822782631647984], "TOTAL_ENERGY": [0.8987783376916063, 0.898174906250388, 0.8766707934268757, 0.8737348178841201, 0.8669580529777844, 0.8654854586828808, 0.8634856440738055]}, "ELEMENT_1666": {}, "ELEMENT_395": {}, "NODE_573": {"MOMENTUM_X": [0.32761633009058144, 0.41442941703480796, 0.3765157527129298, 0.3753614350851151, 0.3926821748268579, 0.37837116233323426, 0.3875352278807181], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.334962198736724, 0.4565882420261443, 0.41016493001620324, 0.40869688512303315, 0.4255591067462685, 0.4083512820624678, 0.41631073633345855], "TOTAL_ENERGY": [0.9777430639683862, 0.9215410603352049, 0.9157044988472917, 0.9139784227602507, 0.9193637735015706, 0.9118254453808735, 0.9153167492961305]}, "ELEMENT_1840": {}, "NODE_629": {"MOMENTUM_X": [0.0037733774692949294, 0.29053686718251565, 0.305134481073976, 0.4211683442673499, 0.421621815907414, 0.37959302453690946, 0.4013232881042484], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1279422977498524, 0.28930941655060594, 0.3333095193644319, 0.4515388672198646, 0.4532882277148887, 0.40715774316471376, 0.43062908522809634], "TOTAL_ENERGY": [0.25845744539993637, 0.9659680962319169, 0.8864328615898277, 0.9609518026815289, 0.9569195957280049, 0.9383652205851936, 0.9478277051165059]}, "ELEMENT_222": {}, "ELEMENT_1831": {}, "ELEMENT_1981": {}, "ELEMENT_1212": {}, "ELEMENT_1596": {}, "NODE_383": {"MOMENTUM_X": [9.674831185589954e-12, 3.3192637053663338e-06, 0.0006539976495107331, 0.013172492416535304, 0.06467314626719131, 0.14142894698115763, 0.20796736684025965], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999918598, 0.999997212692587, 0.9994511413310946, 0.988865469481145, 0.9436686085489601, 0.8704181268179129, 0.7989241129086234], "TOTAL_ENERGY": [2.4999999999715095, 2.4999902444421496, 2.498079554106441, 2.461227306107885, 2.307507373245762, 2.070347215181988, 1.853065310756187]}, "NODE_1037": {"MOMENTUM_X": [0.0, 3.688617272973566e-48, 3.388733160694046e-36, 2.269935186287011e-28, 2.515654425315809e-21, 4.42158211748486e-16, 4.4549604824864326e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000042, 0.12500000000423173], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000117, 0.25000000001184886]}, "ELEMENT_1550": {}, "ELEMENT_1091": {}, "ELEMENT_1203": {}, "ELEMENT_301": {}, "ELEMENT_125": {}, "NODE_509": {"MOMENTUM_X": [0.025971344229329403, 0.21480646936859132, 0.3165800650160072, 0.35682042393213004, 0.3743134818444424, 0.3831387321593166, 0.3879547614368493], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9760545839569612, 0.783201654951826, 0.6487697709834324, 0.5775898573637802, 0.5378803017404127, 0.5129364928565785, 0.4956286785120968], "TOTAL_ENERGY": [2.417105715220166, 1.8034632838251363, 1.435620944352745, 1.262964531582048, 1.1729327684095303, 1.1185263619343857, 1.0820054150235103]}, "ELEMENT_1497": {}, "ELEMENT_435": {}, "ELEMENT_526": {}, "ELEMENT_1725": {}, "ELEMENT_1887": {}, "ELEMENT_1773": {}, "ELEMENT_1519": {}, "NODE_740": {"MOMENTUM_X": [4.248779628844462e-15, 1.8990361008097483e-07, 0.0024683732474307914, 0.24000978572181325, 0.2365318919467854, 0.2617293234485398, 0.29271170763968507], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000402, 0.12500017872482516, 0.12706762162913454, 0.26099938869236516, 0.2626975212754427, 0.2786813954606177, 0.3151175937451057], "TOTAL_ENERGY": [0.2500000000000112, 0.2500005004301417, 0.25587973145632015, 0.8454727312353487, 0.8421466382894688, 0.8904145340102454, 0.8949205953566015]}, "NODE_415": {"MOMENTUM_X": [2.377440361092999e-08, 0.0003565361300419897, 0.012975790702582916, 0.07350791013153726, 0.16149763379790127, 0.23198698235007936, 0.27844096874089963], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999800048925, 0.9997007186661225, 0.9890149482073819, 0.9355040051452769, 0.8496294837095307, 0.7704814458355052, 0.7099880214487183], "TOTAL_ENERGY": [2.4999999300171254, 2.498952699444953, 2.4617517724566094, 2.2804149254125035, 2.005826615312281, 1.7706022250411801, 1.602385247998982]}, "NODE_89": {"MOMENTUM_X": [0.0, 5.5782560790332405e-36, 7.266181588226849e-26, 2.3026701207195874e-18, 7.78863253189942e-14, 8.229295796360573e-11, 1.984499770242773e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999383, 0.9999999999348496, 0.9999999842960933], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999997837, 2.499999999771973, 2.4999999450363264]}, "NODE_22": {"MOMENTUM_X": [0.0, 1.8237230694174743e-52, 1.6157314008145262e-38, 3.530758881845381e-30, 3.733833108866926e-23, 3.364883236922879e-17, 8.410976985683154e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999929], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997513]}, "ELEMENT_1450": {}, "NODE_761": {"MOMENTUM_X": [2.052062759201819e-18, 1.110273364979708e-09, 2.5495338198120986e-05, 0.07607520510222715, 0.27722644702588983, 0.24990204306916267, 0.2571098069336539], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000010458139, 0.1250237860170835, 0.17159174523802775, 0.28072033939736435, 0.26938212484649643, 0.27764127785618575], "TOTAL_ENERGY": [0.25, 0.2500000029282789, 0.25006661095055355, 0.4179905899703508, 0.9458268071901929, 0.8755089497897279, 0.8776684732155781]}, "ELEMENT_389": {}, "ELEMENT_1479": {}, "NODE_57": {"MOMENTUM_X": [0.0, 0.0, 9.962595295379561e-42, 1.3829349491299314e-33, 1.7522961777132222e-26, 4.914685606244711e-20, 1.4776981446671122e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999987], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999956]}, "ELEMENT_1419": {}, "NODE_892": {"MOMENTUM_X": [0.0, 1.172964289417783e-25, 1.44064622704561e-17, 9.787876252587144e-13, 1.2244366581181454e-08, 0.00010898682578089889, 0.13943795918124685], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000104822, 0.12500001307764488, 0.12511492732115775, 0.21163217570039333], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.2500000000029351, 0.25000003661740816, 0.2503219927972317, 0.5885012169957154]}, "ELEMENT_813": {}, "NODE_682": {"MOMENTUM_X": [8.748513446235593e-07, 0.07031421861209552, 0.2644638185075355, 0.28549476732831747, 0.3682529883419626, 0.4246764442028388, 0.41135995039626405], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500077934103113, 0.1675594541284704, 0.27240917586667984, 0.30189878306543766, 0.38947593653611123, 0.44875034080187504, 0.43403509382841354], "TOTAL_ENERGY": [0.25000218217251297, 0.40297810381730764, 0.9010664630146191, 0.8934195028403651, 0.9341153655645398, 0.9621006605413549, 0.9558365309574454]}, "NODE_824": {"MOMENTUM_X": [0.0, 1.880902117545071e-14, 2.273601522325928e-09, 2.2325615806864005e-05, 0.054727494849651365, 0.2660523364599559, 0.24711166869847295], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000001826, 0.1250000022126291, 0.1250216924526831, 0.16130169006802006, 0.27669213287707756, 0.2678817338652523], "TOTAL_ENERGY": [0.25, 0.25000000000005124, 0.2500000061953617, 0.25006074707421494, 0.3741864753853494, 0.9227223993845878, 0.8726630503492179]}, "ELEMENT_1871": {}, "ELEMENT_1835": {}, "ELEMENT_89": {}, "ELEMENT_1613": {}, "ELEMENT_1664": {}, "NODE_846": {"MOMENTUM_X": [0.0, 9.039358762896273e-17, 2.762872982870749e-11, 3.891511759818169e-07, 0.0024719372373046625, 0.21611407630826893, 0.2438046111663267], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000008, 0.12500000002688072, 0.12500037851518842, 0.12716194580451737, 0.2516351941391078, 0.26634681856534326], "TOTAL_ENERGY": [0.25, 0.2500000000000002, 0.2500000000752659, 0.25000105984505383, 0.25614553599709156, 0.7905254091627493, 0.8649276970684577]}, "ELEMENT_1094": {}, "ELEMENT_956": {}, "ELEMENT_1533": {}, "ELEMENT_1463": {}, "ELEMENT_508": {}, "ELEMENT_1396": {}, "ELEMENT_1513": {}, "NODE_511": {"MOMENTUM_X": [0.0903034561703332, 0.286158705619452, 0.3475459589497677, 0.3699877664075185, 0.3806516245810264, 0.3858854084849945, 0.3886079019932585], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9180339231496414, 0.6959789024851893, 0.5923864217083679, 0.5391098061863848, 0.5092690083390198, 0.48955414959743354, 0.4754774535556093], "TOTAL_ENERGY": [2.224124075376926, 1.5663743936083976, 1.306064374366998, 1.1820378361971864, 1.1140079192122205, 1.0714002494049644, 1.0422587251675772]}, "ELEMENT_1589": {}, "NODE_419": {"MOMENTUM_X": [2.567467977754642e-07, 0.0013990091554883157, 0.028454393645525135, 0.10954772662871422, 0.19676050606259285, 0.2580046794284592, 0.2969686262479668], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999997820669545, 0.998807543558915, 0.9753795770140039, 0.9007622171172193, 0.8103783785424253, 0.7366944822622182, 0.6823180280374697], "TOTAL_ENERGY": [2.4999992372344955, 2.495829153091254, 2.414780961575669, 2.166868988726873, 1.8868966782340917, 1.675246108278143, 1.5286233318959663]}, "ELEMENT_1633": {}, "NODE_128": {"MOMENTUM_X": [0.0, 1.0893838362819754e-38, 1.0762048181037258e-28, 1.3640427524698639e-21, 1.147818037676733e-15, 2.1558969104646853e-12, 8.763600910166497e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999991, 0.999999999998178, 0.9999999992608576], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.4999999999936233, 2.499999997413002]}, "ELEMENT_1085": {}, "ELEMENT_1025": {}, "ELEMENT_1115": {}, "ELEMENT_1227": {}, "ELEMENT_1216": {}, "ELEMENT_1964": {}, "ELEMENT_127": {}, "ELEMENT_1446": {}, "ELEMENT_183": {}, "ELEMENT_1634": {}, "ELEMENT_1155": {}, "ELEMENT_639": {}, "ELEMENT_1122": {}, "ELEMENT_1609": {}, "NODE_719": {"MOMENTUM_X": [3.5606607284044633e-12, 2.0522487191481335e-05, 0.060903779514094085, 0.27822464190465956, 0.25024106433148674, 0.2868636665996147, 0.3583369686711476], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000335007, 0.12501920790979054, 0.16435045918529897, 0.2818180771822861, 0.27248918292350444, 0.30903088610574936, 0.38657363451231463], "TOTAL_ENERGY": [0.2500000000093802, 0.2500537892750609, 0.38736916634453106, 0.9503047396960148, 0.8671550503364358, 0.8938958824537605, 0.9256740652592764]}, "ELEMENT_1625": {}, "ELEMENT_331": {}, "NODE_427": {"MOMENTUM_X": [2.0321485271912115e-07, 0.0011754951861605504, 0.026189627474475514, 0.10696193467983071, 0.19671809459682144, 0.2594549302920762, 0.2987107608586977], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999998293966355, 0.9990143690188227, 0.9777114371935218, 0.9043624118364498, 0.8118354971970543, 0.735972024539652, 0.6804399244467717], "TOTAL_ENERGY": [2.499999402888318, 2.4965521837949063, 2.4227810864094366, 2.17857834358511, 1.8914711885008264, 1.6735030513161708, 1.5238730312152788]}, "NODE_670": {"MOMENTUM_X": [6.152416416325283e-06, 0.11933922199867392, 0.263017093620671, 0.29618565047213463, 0.37923753908593105, 0.4105994461548347, 0.38938456357692186], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500600678760973, 0.19905336598447482, 0.2787421652886443, 0.32106884549602605, 0.41124522623705617, 0.4456029658080269, 0.42335611147661606], "TOTAL_ENERGY": [0.2500168198690498, 0.5352212622679626, 0.9032703702133776, 0.8963148258774504, 0.9337365613713058, 0.9477838743517094, 0.9372376011604888]}, "NODE_59": {"MOMENTUM_X": [0.0, 0.0, 1.911474337149275e-40, 1.8243214986331685e-32, 1.9178727498661464e-25, 4.440509210779744e-19, 5.919115056534804e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999995], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999827]}, "ELEMENT_1332": {}, "ELEMENT_1741": {}, "NODE_1036": {"MOMENTUM_X": [0.0, 1.2320089573011379e-48, 1.3061728308046774e-36, 1.2383174541291959e-28, 1.65008920795784e-21, 2.6522541758316424e-16, 2.760862161899471e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000025, 0.1250000000026139], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000007, 0.25000000000731903]}, "ELEMENT_116": {}, "ELEMENT_759": {}, "ELEMENT_1209": {}, "ELEMENT_1689": {}, "ELEMENT_1473": {}, "NODE_180": {"MOMENTUM_X": [0.0, 3.316677526918893e-28, 5.553208610067114e-20, 2.8739365150282003e-14, 6.471163282497998e-11, 2.421320155354895e-08, 2.4063760119684855e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999756, 0.9999999999451591, 0.9999999795195462, 0.999997969109527], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999147, 2.499999999808057, 2.499999928318413, 2.4999928918908814]}, "NODE_339": {"MOMENTUM_X": [4.923743304330968e-15, 4.360494868673605e-08, 3.342067766162099e-05, 0.0018330801100081475, 0.019197460344219368, 0.06890341301902003, 0.1341730982195817], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999999999999996, 0.9999999652239093, 0.9999734715960745, 0.9985391537681318, 0.9844163113491032, 0.9417557087672273, 0.8803463626269047], "TOTAL_ENERGY": [2.499999999999986, 2.499999878283686, 2.499907152188894, 2.4948911155879774, 2.445866675345724, 2.301437723773507, 2.102607074808285]}, "ELEMENT_237": {}, "NODE_216": {"MOMENTUM_X": [0.0, 6.509871926092027e-20, 1.6107945712988974e-13, 7.062999174995349e-10, 2.9602373907518284e-07, 2.4832538369934423e-05, 0.0006214386133838294], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999998601, 0.9999999993877051, 0.9999997441921674, 0.9999786330495699, 0.9994671562314343], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999995106, 2.4999999978569685, 2.499999104672717, 2.499925216486804, 2.498135510206497]}, "ELEMENT_839": {}, "NODE_911": {"MOMENTUM_X": [0.0, 7.103720727147748e-26, 1.7977377548953813e-17, 1.1417483141334243e-12, 1.1481524314043221e-08, 6.938354961711393e-05, 0.0915164922715812], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000003, 0.12500000000108902, 0.12500001097629035, 0.1250661269748457, 0.18267520112085575], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.25000000000304917, 0.25000003073361504, 0.25018523344005517, 0.4628254900717439]}, "ELEMENT_1041": {}, "ELEMENT_262": {}, "NODE_238": {"MOMENTUM_X": [0.0, 1.4436028607016436e-16, 1.3036975348455036e-11, 2.5092029952554403e-08, 5.269368434906354e-06, 0.0002379941336512899, 0.003368855000570427], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999999, 0.9999999999896125, 0.9999999800868534, 0.9999958234664877, 0.9998108614447843, 0.9973019166460731], "TOTAL_ENERGY": [2.5, 2.4999999999999996, 2.4999999999636437, 2.499999930303988, 2.499985382170278, 2.4993380837905947, 2.4905694298679535]}, "ELEMENT_56": {}, "NODE_326": {"MOMENTUM_X": [1.3034394573683922e-21, 1.1655029249428801e-11, 6.49799110789438e-08, 1.9291898177518755e-05, 0.0008966187892740494, 0.01086526822520776, 0.04809202866537953], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999889324, 0.9999999387552722, 0.9999820631755421, 0.9991784555750179, 0.9901605247560717, 0.9563351930716332], "TOTAL_ENERGY": [2.5, 2.4999999999612634, 2.4999997856434595, 2.499937221642746, 2.4971255906300502, 2.4656950265454074, 2.3497171901500753]}, "NODE_90": {"MOMENTUM_X": [0.0, 9.955594579424555e-40, 1.3280994998523652e-29, 6.624564303524815e-22, 5.676074164369961e-16, 1.0996053370643668e-12, 4.747811945128853e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 0.9999999999990719, 0.9999999995993589], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.499999999996751, 2.4999999985977555]}, "NODE_65": {"MOMENTUM_X": [0.0, 1.585460523317817e-43, 1.2304329253881251e-32, 1.1755141741805649e-24, 7.984383123703055e-18, 4.004538091279663e-14, 2.6701442760849184e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999966, 0.9999999999774548], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999882, 2.499999999921092]}, "ELEMENT_33": {}, "ELEMENT_1566": {}, "ELEMENT_1279": {}, "NODE_160": {"MOMENTUM_X": [0.0, 1.5436827854427232e-29, 1.591410804919257e-20, 7.829651784701576e-15, 2.1455415185796416e-11, 9.357031614197904e-09, 1.0619762214054914e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999933, 0.9999999999819098, 0.9999999921137016, 0.9999991054060037], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999977, 2.499999999936684, 2.499999972397956, 2.499996868922508]}, "NODE_1099": {"MOMENTUM_X": [0.0, 0.0, 1.1602190880813545e-43, 1.3322956364029051e-34, 2.9421318881982174e-27, 1.0047926305807412e-20, 7.541715733509053e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000072], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000205]}, "ELEMENT_1339": {}, "ELEMENT_1745": {}, "ELEMENT_208": {}, "ELEMENT_925": {}, "NODE_225": {"MOMENTUM_X": [0.0, 3.34623064898008e-20, 9.222643697324563e-14, 4.140889255825413e-10, 1.8416184268781425e-07, 1.6754224328491058e-05, 0.0004601887416395826], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999223, 0.9999999996512957, 0.9999998449649319, 0.9999859043962137, 0.9996125703484801], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999728, 2.499999998779535, 2.499999457377311, 2.4999506657512502, 2.498644247676267]}, "ELEMENT_1427": {}, "NODE_900": {"MOMENTUM_X": [0.0, 3.0371022084976452e-24, 1.9121966855118278e-16, 9.759428331810933e-12, 8.588267175889041e-08, 0.0005131481673955208, 0.16817083121451926], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000017, 0.12500000000931247, 0.12500008214104313, 0.12547609797784848, 0.2254983052047403], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000005, 0.250000000026075, 0.25000022999504135, 0.2513372708655138, 0.6605284393886524]}, "ELEMENT_850": {}, "ELEMENT_1672": {}, "NODE_467": {"MOMENTUM_X": [4.6817179692144766e-05, 0.019353145543692444, 0.11493863800830914, 0.22392785430915702, 0.2907125505487018, 0.3272436432491841, 0.34833247371503906], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999565115184088, 0.9822251436804796, 0.8913326646345877, 0.7745570700015514, 0.6891989195990801, 0.6332450205167135, 0.5951192969374666], "TOTAL_ENERGY": [2.4998477944054516, 2.4382500358240056, 2.135414778102125, 1.7786684250755882, 1.5424288682547724, 1.3991249807203479, 1.3066099715098631]}, "ELEMENT_1615": {}, "ELEMENT_908": {}, "NODE_118": {"MOMENTUM_X": [0.0, 2.3947301684085143e-38, 1.5235302414535874e-28, 2.56337561632765e-21, 1.8029056797445896e-15, 3.129556110192183e-12, 1.194780365609345e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999984, 0.9999999999973435, 0.9999999989877288], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999947, 2.499999999990702, 2.4999999964570505]}, "NODE_108": {"MOMENTUM_X": [0.0, 9.242262491933687e-47, 3.712443143632773e-35, 1.3841421252100821e-27, 1.781153339124517e-20, 1.4569939044055001e-15, 1.4832071616586417e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999986, 0.9999999999985985], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999995, 2.4999999999950946]}, "NODE_641": {"MOMENTUM_X": [0.0005298322166546802, 0.25564387892993645, 0.2752822461612293, 0.3798588019508742, 0.42602877846435505, 0.392660344204939, 0.3891636837252937], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12546708580078664, 0.2700573061464623, 0.3009955944894305, 0.40675940268873295, 0.4585605832264987, 0.42234258460451696, 0.41911318932669867], "TOTAL_ENERGY": [0.2513129378484958, 0.8851536036207793, 0.8717749614221157, 0.9415346797388062, 0.957199843527188, 0.942840621547337, 0.9403103236093002]}, "ELEMENT_162": {}, "ELEMENT_944": {}, "ELEMENT_833": {}, "ELEMENT_479": {}, "ELEMENT_1420": {}, "ELEMENT_573": {}, "ELEMENT_1594": {}, "ELEMENT_1276": {}, "ELEMENT_1476": {}, "ELEMENT_1738": {}, "ELEMENT_1174": {}, "ELEMENT_1752": {}, "ELEMENT_924": {}, "ELEMENT_153": {}, "NODE_413": {"MOMENTUM_X": [6.017761422352251e-10, 3.9087359581729816e-05, 0.003480209010757556, 0.03752176533466593, 0.11776315220720959, 0.19862028453269745, 0.25551701223955364], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999994361617, 0.9999635336807148, 0.9968073293817757, 0.9657154849049561, 0.8894376878179227, 0.8049791941708173, 0.737686019246184], "TOTAL_ENERGY": [2.4999999980265657, 2.4998723702996632, 2.4888409446197555, 2.381602437279353, 2.1292761245948166, 1.8683581458712213, 1.6749737348320153]}, "ELEMENT_1391": {}, "ELEMENT_888": {}, "ELEMENT_115": {}, "NODE_482": {"MOMENTUM_X": [0.002783551767562997, 0.10006831224554372, 0.22719771163171856, 0.30120852792025243, 0.33774609062095107, 0.3570430439248852, 0.36829479948538296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9976620690728235, 0.9108352388126054, 0.7766171965466551, 0.6771136167793015, 0.6146658417179242, 0.5740957930078364, 0.5461646605010534], "TOTAL_ENERGY": [2.491829309832635, 2.1999976662993523, 1.7889310057325771, 1.5154582465343776, 1.3574917202425665, 1.2604453126816313, 1.1959439131264433]}, "ELEMENT_442": {}, "ELEMENT_870": {}, "NODE_523": {"MOMENTUM_X": [0.18781462878963906, 0.3405692408019766, 0.37461347909978826, 0.3843763576929753, 0.3885764355123371, 0.39170087192990327, 0.3930146033611118], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.833242786181575, 0.6125952452771933, 0.5372258269711868, 0.49837088292660153, 0.47619434579040765, 0.46321059734692793, 0.4535343410650584], "TOTAL_ENERGY": [1.9611256057063382, 1.3484812233284393, 1.1723702941837888, 1.0895558705505126, 1.0437931223444743, 1.0153769113495863, 0.9956947456438648]}, "ELEMENT_173": {}, "NODE_237": {"MOMENTUM_X": [0.0, 1.2078954718699841e-20, 3.176647017945802e-14, 1.7433298923941258e-10, 9.362858305144756e-08, 1.0157917617894861e-05, 0.00032673053512457964], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999731, 0.9999999998530402, 0.9999999212484706, 0.9999914769993672, 0.9997260557290302], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999063, 2.4999999994856417, 2.4999997243696606, 2.4999701696304335, 2.4990413207433675]}, "NODE_1094": {"MOMENTUM_X": [0.0, 0.0, 6.964934579042406e-44, 2.706315549476645e-35, 4.33636952420308e-28, 2.2549138544062317e-21, 2.6524025031909897e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000025], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000007]}, "NODE_449": {"MOMENTUM_X": [1.4224574733524693e-05, 0.010756630187488769, 0.08334550945201424, 0.18820475411024534, 0.2627103300643277, 0.30636868873580253, 0.33231494779742127], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999880796150125, 0.990929256578592, 0.9266027446336875, 0.82132475525859, 0.7317963010265779, 0.6687040278628003, 0.6244720777385491], "TOTAL_ENERGY": [2.4999582790494257, 2.4683966682732676, 2.2511658173546345, 1.9200180395363038, 1.662088053900313, 1.4933889803538762, 1.3814744541037096]}, "NODE_470": {"MOMENTUM_X": [0.0006044025933393298, 0.055934164265955905, 0.1763412026040188, 0.26680424906635075, 0.3157487914992106, 0.3422928694641147, 0.3578263127795373], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9994915444448592, 0.9513394011432963, 0.8336897422878506, 0.7259875231574399, 0.6534552615880127, 0.6055663125468562, 0.5724094055665899], "TOTAL_ENERGY": [2.4982210294803875, 2.333433276321948, 1.957572487920697, 1.646204791212047, 1.4543016548186258, 1.335271841705595, 1.2563065056681741]}, "ELEMENT_1512": {}, "ELEMENT_1708": {}, "ELEMENT_246": {}, "NODE_860": {"MOMENTUM_X": [0.0, 1.4086797323807067e-20, 4.7145076037219716e-14, 1.322215382409079e-09, 1.2788672447422403e-05, 0.05467565540589497, 0.28208484189359156], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000004463, 0.12500000124817628, 0.12501197169286626, 0.15932038195183765, 0.2826660246331183], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000012496, 0.2500000034948936, 0.2500335232636925, 0.368206149493133, 0.9583307298178989]}, "NODE_678": {"MOMENTUM_X": [3.7494657468909843e-07, 0.04224237352299663, 0.28157600230498403, 0.2640476364037105, 0.33782832137140206, 0.4121767433543427, 0.4156660864944547], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500035410995244, 0.15343879358528417, 0.28427341615325924, 0.2888333946453578, 0.3646459902074237, 0.44542456093781085, 0.4491381393453488], "TOTAL_ENERGY": [0.250000991511123, 0.34479973313451756, 0.9565214577286579, 0.8709256946775931, 0.9178995477662412, 0.9510015417622638, 0.9527116057529122]}, "NODE_410": {"MOMENTUM_X": [2.6135013666559518e-08, 0.0003862872053044074, 0.01352621811859633, 0.07460749512076403, 0.16178350640160624, 0.23140457280537974, 0.27756060837683777], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999779077113, 0.999672989579751, 0.9884424318045844, 0.9339990110737405, 0.8484780465443773, 0.7702689174604558, 0.7104357853170611], "TOTAL_ENERGY": [2.4999999226769916, 2.498855683250685, 2.4597679920100055, 2.2754008730205535, 2.002167568258019, 1.7698176205282314, 1.6034162438621855]}, "NODE_1070": {"MOMENTUM_X": [0.0, 4.47824871307862e-55, 5.523442938479123e-41, 9.423356399713843e-33, 1.1514874445499042e-25, 2.9120501100302892e-19, 8.324802829062557e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000079], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000222]}, "ELEMENT_1322": {}, "ELEMENT_1866": {}, "ELEMENT_1975": {}, "ELEMENT_1398": {}, "NODE_1000": {"MOMENTUM_X": [0.0, 4.818555573667935e-40, 2.701039923500134e-29, 2.4736755738632463e-21, 8.549338247215091e-16, 9.22069297828268e-12, 5.9089691281886284e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000008, 0.12500000000895856, 0.12500005744691187], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000233, 0.25000000002508405, 0.2500001608514106]}, "ELEMENT_747": {}, "ELEMENT_1610": {}, "ELEMENT_1603": {}, "ELEMENT_537": {}, "NODE_991": {"MOMENTUM_X": [0.0, 3.1089937463483177e-41, 6.999854170445072e-31, 4.8829831444539016e-23, 4.6978818890302053e-17, 6.827151566187455e-13, 6.254097277598241e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000073078, 0.1250000066808789], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000204603, 0.25000001870646144]}, "NODE_1030": {"MOMENTUM_X": [0.0, 6.5230923431142136e-46, 3.7763469084901974e-34, 8.465937128618607e-26, 2.506486559473219e-19, 1.2013583997706208e-14, 9.191467381191075e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001132, 0.1250000000867675], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000003175, 0.250000000242949]}, "ELEMENT_948": {}, "NODE_713": {"MOMENTUM_X": [8.933614701726913e-11, 0.00021239874935277952, 0.13781059657787165, 0.2591797927470215, 0.26167562221229, 0.31077585515560446, 0.38496906760875027], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000000848494, 0.12520013319310164, 0.20897554681499397, 0.2744751432555323, 0.2836290813354089, 0.337336942190781, 0.417813636600219], "TOTAL_ENERGY": [0.25000000023757835, 0.2505611338274123, 0.5812660388975819, 0.9023609210111214, 0.8815634189275895, 0.902710179797072, 0.9369446136513634]}, "ELEMENT_278": {}, "ELEMENT_1066": {}, "ELEMENT_1117": {}, "NODE_397": {"MOMENTUM_X": [2.421345531266831e-09, 0.0001008387357278993, 0.006072578042158116, 0.04827303707085484, 0.12835357043220422, 0.20291590114784258, 0.2556948410020801], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999979453222, 0.9999141380975217, 0.9948074370132783, 0.9578120853056292, 0.8824134698682256, 0.8035725515594373, 0.7398247734654417], "TOTAL_ENERGY": [2.499999992808628, 2.4996994991255197, 2.4818717850292065, 2.3550028452400267, 2.1081299347706133, 1.8666331816413557, 1.6838905627415743]}, "ELEMENT_1061": {}, "ELEMENT_802": {}, "NODE_194": {"MOMENTUM_X": [0.0, 5.936420445134065e-23, 2.536192693463689e-15, 2.409669955628841e-11, 1.862302128054682e-08, 2.6647935748838434e-06, 0.00010830191918934463], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999978, 0.9999999999790997, 0.9999999838902681, 0.9999977035866013, 0.9999070233672133], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999992, 2.499999999926849, 2.4999999436159386, 2.499991962562874, 2.4996745964311073]}, "NODE_21": {"MOMENTUM_X": [0.0, 7.231623619859062e-48, 1.741874582357027e-35, 2.5278917380076613e-27, 2.9729913511042824e-20, 2.675235841795249e-15, 2.540858267970712e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999978, 0.9999999999978322], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999992, 2.4999999999924127]}, "ELEMENT_218": {}, "ELEMENT_1308": {}, "ELEMENT_1927": {}, "ELEMENT_217": {}, "ELEMENT_1325": {}, "NODE_539": {"MOMENTUM_X": [0.40287540312449066, 0.39758457708911427, 0.39359404400505377, 0.38669445652850193, 0.39302837456961537, 0.3904991029910346, 0.39084727829699767], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.5728996145237898, 0.46490984314140865, 0.4391166161275242, 0.41991912042765067, 0.4195725288371906, 0.4128063735560631, 0.4101969771822674], "TOTAL_ENERGY": [1.2435530469571219, 1.0272354305382878, 0.9619096722654314, 0.9336821343232098, 0.923721303880566, 0.9144876834859186, 0.909569958665088]}, "NODE_364": {"MOMENTUM_X": [9.280260062364335e-13, 9.032787203486632e-07, 0.00026975113726620197, 0.007339996000069998, 0.04514365988960182, 0.1139627914151726, 0.18170802685174142], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999992134, 0.9999992307929138, 0.9997700534472359, 0.9937210206824705, 0.9606447262912428, 0.8966538946796621, 0.8272384665303991], "TOTAL_ENERGY": [2.499999999997247, 2.499997307776644, 2.499195288223934, 2.478087611502745, 2.3645466671394626, 2.1534772056536653, 1.937238913380131]}, "NODE_997": {"MOMENTUM_X": [0.0, 4.43397213679219e-40, 1.5481380720455366e-29, 2.2473666229908882e-21, 5.299790746731946e-16, 5.884151689857025e-12, 3.89016536609142e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000005, 0.12500000000555306, 0.12500003675055574], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000014, 0.25000000001554845, 0.25000010290158026]}, "NODE_338": {"MOMENTUM_X": [7.648948926332559e-17, 2.7491767170090192e-09, 4.0343400677929036e-06, 0.00040309690049115466, 0.00728891753514768, 0.03995685955590025, 0.10059806717920408], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999999, 0.9999999976887791, 0.9999966122565204, 0.9996614526029217, 0.9938496148820283, 0.9656380655246022, 0.9102375346591687], "TOTAL_ENERGY": [2.4999999999999996, 2.499999991910727, 2.4999881429224096, 2.498815291749067, 2.478534281588281, 2.381484409821917, 2.1973499729869506]}, "NODE_211": {"MOMENTUM_X": [0.0, 1.3297368139732477e-21, 1.3845081342445445e-14, 8.82794540858194e-11, 5.16720477172684e-08, 5.958160990211975e-06, 0.00020315521311449952], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999883, 0.9999999999256388, 0.9999999564669567, 0.9999949809848288, 0.9998287389515882], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999959, 2.4999999997397357, 2.4999998476343515, 2.499982433494095, 2.499400636419586]}, "NODE_506": {"MOMENTUM_X": [0.10568067068321171, 0.28760983185043376, 0.3424276222844505, 0.36390568001396295, 0.3753736154705357, 0.381285207565562, 0.383876795143944], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9061290413305476, 0.6959543258056766, 0.599053986115134, 0.5460257669334235, 0.5157307836166591, 0.4950447002428069, 0.47919109413669186], "TOTAL_ENERGY": [2.1868182209392355, 1.5739130493336733, 1.3304935231958026, 1.2041368636963443, 1.1313115187601546, 1.0846034639494533, 1.0520652106564365]}, "ELEMENT_20": {}, "NODE_951": {"MOMENTUM_X": [0.0, 6.401082914332018e-33, 1.2480411368893968e-23, 8.114851758734395e-17, 1.8849047467628615e-12, 1.5905261334862693e-08, 0.0001093630920861965], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000008, 0.12500000000177658, 0.12500001496590857, 0.1251021826057139], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000002, 0.25000000000497447, 0.2500000419045481, 0.2502863025081849]}, "ELEMENT_197": {}, "ELEMENT_829": {}, "NODE_322": {"MOMENTUM_X": [1.5864152789717042e-18, 4.930568726672323e-10, 1.1340856765701548e-06, 0.00015691878302215144, 0.003743144098354316, 0.02599629346670195, 0.07753106815751938], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999995838961, 0.9999990429640881, 0.9998674807054083, 0.996828334250169, 0.9776874777470266, 0.9314729691066487], "TOTAL_ENERGY": [2.5, 2.4999999985436365, 2.4999966503763464, 2.4995362152947287, 2.4889156695044585, 2.422653992637084, 2.2668973166795245]}, "NODE_321": {"MOMENTUM_X": [1.597084961567476e-18, 5.043555433192941e-10, 1.1653174698392028e-06, 0.00016125580141492473, 0.003831022485005926, 0.026396556431070903, 0.07809454339449184], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.999999999573384, 0.9999990133753103, 0.9998633260199514, 0.9967432640817679, 0.9772844470175086, 0.9308400717894001], "TOTAL_ENERGY": [2.5, 2.499999998506844, 2.499996546815747, 2.499521675849692, 2.4886187473185606, 2.4212682331178077, 2.2647956754595446]}, "ELEMENT_473": {}, "ELEMENT_1836": {}, "NODE_494": {"MOMENTUM_X": [0.010166767983859433, 0.15826948069424532, 0.27670041833310144, 0.33151263712374396, 0.35653070152263516, 0.36941615478203615, 0.37684482843353473], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9915489179167987, 0.8545866515860455, 0.7143366917231816, 0.6269289650982036, 0.5752541911284775, 0.5422205454617887, 0.5195295097470567], "TOTAL_ENERGY": [2.470565472754065, 2.0222755465014215, 1.6152350236678419, 1.3880765532965693, 1.263148361913171, 1.1871177181331816, 1.1365626279375791]}, "NODE_1083": {"MOMENTUM_X": [0.0, 0.0, 3.0217145439022656e-42, 8.06235983362965e-34, 1.1432873299931976e-26, 4.487022354741459e-20, 2.1677523553698765e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000205], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000057]}, "ELEMENT_1663": {}, "NODE_398": {"MOMENTUM_X": [2.3949291433869237e-09, 9.783385213071768e-05, 0.005882351745734963, 0.04735612424104045, 0.12749945700409587, 0.202731797434173, 0.2559013199830515], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999979756126, 0.9999172164021181, 0.9949961212222562, 0.9587594285592826, 0.8834384416492608, 0.8039028792645323, 0.7395846847821401], "TOTAL_ENERGY": [2.499999992914644, 2.4997102721988234, 2.482529268283719, 2.3582122510910413, 2.1114082708461632, 1.8676346678296931, 1.6832315685857537]}, "ELEMENT_40": {}, "ELEMENT_93": {}, "NODE_79": {"MOMENTUM_X": [0.0, 1.3923850109413783e-41, 3.7641714516057497e-31, 2.8191121276825806e-23, 9.756748906048565e-17, 2.1345699304598497e-13, 1.1462040285070388e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998196, 0.9999999999032501], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999993694, 2.4999999996613758]}, "ELEMENT_866": {}, "ELEMENT_485": {}, "NODE_720": {"MOMENTUM_X": [4.0437223817600235e-12, 2.2419935762365405e-05, 0.06053211449012187, 0.27925282037119287, 0.24929242334470197, 0.28632227698485735, 0.3549022525897988], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000000038128, 0.1250210568193593, 0.164415934331029, 0.2824846443712145, 0.27246232759947214, 0.30885527430164833, 0.3834096031980569], "TOTAL_ENERGY": [0.2500000000106758, 0.2500589676419061, 0.38736745587399485, 0.9532060295413837, 0.8648977336102835, 0.8938504376438622, 0.9240275563776302]}, "ELEMENT_929": {}, "NODE_822": {"MOMENTUM_X": [0.0, 1.5385698272916625e-14, 1.7184066990967893e-09, 1.5561591426396073e-05, 0.0440982102082026, 0.2780454961657426, 0.24355792444707], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000001454, 0.1250000016280894, 0.12501475626242214, 0.15465113563013533, 0.2819056540646668, 0.26636916016517476], "TOTAL_ENERGY": [0.25, 0.2500000000000407, 0.2500000045586504, 0.25004132144944463, 0.3491323538480781, 0.9519394031058429, 0.8630632558388708]}, "ELEMENT_77": {}, "ELEMENT_1627": {}, "NODE_819": {"MOMENTUM_X": [0.0, 1.1846921267583345e-14, 1.3656461784841312e-09, 1.378256664544465e-05, 0.042398863095283804, 0.28125389244935595, 0.24123522683610849], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000001116, 0.1250000012846395, 0.12501294587960488, 0.1535517835094262, 0.2830203685137652, 0.2650341500737038], "TOTAL_ENERGY": [0.25, 0.25000000000003125, 0.2500000035969906, 0.25003625151326414, 0.34516715350289257, 0.9592528082206244, 0.8562508156174289]}, "ELEMENT_594": {}, "ELEMENT_175": {}, "NODE_48": {"MOMENTUM_X": [0.0, 1.5580853509860782e-41, 1.602537675355407e-30, 5.853032406631777e-23, 1.7677658239198705e-16, 5.007040495267201e-13, 2.458050311918588e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999995666, 0.9999999997876708], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999998483, 2.4999999992568482]}, "ELEMENT_823": {}, "NODE_1062": {"MOMENTUM_X": [0.0, 2.841899136671977e-52, 6.295460524371617e-39, 1.9174473544330332e-30, 1.1702246540791686e-23, 1.6515621755515067e-17, 1.742369443252185e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000001643], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000004601]}, "NODE_667": {"MOMENTUM_X": [4.898641358342892e-06, 0.10886794503163251, 0.2732562850731401, 0.2904978243521849, 0.37712435531440813, 0.4238416334724408, 0.3986972688266021], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250046225385316, 0.19206961793903607, 0.28282735920841306, 0.31510651028468667, 0.4073441640014096, 0.45791669242734584, 0.4308674363469284], "TOTAL_ENERGY": [0.2500129436247519, 0.5054826012391246, 0.9269252509494299, 0.8908187934762153, 0.9352425463132814, 0.9565697375322165, 0.9445900843212801]}, "NODE_4": {"MOMENTUM_X": [0.0, 0.0, 5.971393185596067e-40, 1.9553685747757419e-31, 2.799572556407514e-24, 1.2585505359034975e-17, 2.9548481366162474e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999744], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999107]}, "NODE_17": {"MOMENTUM_X": [0.0, 0.0, 2.5508751618583563e-41, 1.1041431949062747e-32, 1.2764502604928893e-25, 3.4656521618174188e-19, 4.4463060164671056e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999964], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999987]}, "ELEMENT_1920": {}, "ELEMENT_679": {}, "NODE_305": {"MOMENTUM_X": [1.4222228546057775e-22, 5.392925602687249e-12, 3.6170907240179945e-08, 1.1881088785655057e-05, 0.0005953924597763276, 0.007800309989220775, 0.0375918227010603], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999954616, 0.9999999695753343, 0.9999900189403216, 0.9994996272286912, 0.9934138266790572, 0.9677089364051938], "TOTAL_ENERGY": [2.5, 2.499999999984116, 2.4999998935136722, 2.4999650664878685, 2.498249129517125, 2.4770165698211954, 2.388518424723742]}, "ELEMENT_1902": {}, "ELEMENT_1632": {}, "NODE_178": {"MOMENTUM_X": [0.0, 3.1008545942948467e-26, 1.0323886857105728e-17, 4.2330418268022493e-13, 6.137474756037796e-10, 1.5509530886734785e-07, 1.076616893326987e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999996434, 0.9999999994828177, 0.9999998692839109, 0.9999909274607537], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999998752, 2.4999999981898617, 2.4999995424937214, 2.499968246261425]}, "NODE_786": {"MOMENTUM_X": [1.3811767344075935e-21, 2.4370025433232424e-11, 8.369786777574953e-07, 0.005378285865928279, 0.25579192472166373, 0.23553456713765933, 0.25431303263873933], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000002292902, 0.12500078666788975, 0.12938224148555946, 0.2700657252211037, 0.26245707185455414, 0.2727031623702182], "TOTAL_ENERGY": [0.25, 0.25000000006420137, 0.25000220268169365, 0.2626785863888916, 0.8908941135023395, 0.8416926345187531, 0.8843147236467154]}, "NODE_1058": {"MOMENTUM_X": [0.0, 6.458054291619985e-53, 7.744443027916491e-40, 1.49201333394398e-31, 1.8592039878959913e-24, 2.775454556097854e-18, 4.155127695895818e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000003939], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001103]}, "ELEMENT_1315": {}, "ELEMENT_475": {}, "NODE_789": {"MOMENTUM_X": [1.4128994959205003e-21, 2.9613391166332994e-11, 9.598527389210511e-07, 0.005730365264175081, 0.25219396671951977, 0.23991071738219913, 0.25200322596808894], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000002802772, 0.1250009101667339, 0.12966924244499353, 0.26886388454927573, 0.26473022880010266, 0.271852093008372], "TOTAL_ENERGY": [0.25, 0.25000000007847767, 0.2500025484822513, 0.2635319255976273, 0.8828987298396302, 0.8537009972356732, 0.8792879937723672]}, "NODE_1053": {"MOMENTUM_X": [0.0, 4.928885054117865e-50, 2.7408148108096108e-37, 9.701743018371158e-29, 1.3497452551505209e-21, 2.1130111506625655e-16, 1.7877260289030776e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002, 0.1250000000016933], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000056, 0.2500000000047412]}, "ELEMENT_544": {}, "ELEMENT_647": {}, "ELEMENT_1358": {}, "ELEMENT_633": {}, "ELEMENT_317": {}, "NODE_986": {"MOMENTUM_X": [0.0, 3.384423674643763e-38, 4.913056326817114e-28, 4.589897612095404e-20, 4.595539680741168e-15, 4.526460775494537e-11, 2.8924507823445227e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000043, 0.1250000000427219, 0.1250002732949835], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000121, 0.25000000011962137, 0.2500007652272993]}, "ELEMENT_1857": {}, "NODE_688": {"MOMENTUM_X": [2.5577140140949975e-08, 0.009606011647356959, 0.2668773998798091, 0.24801800247812672, 0.30392539137043667, 0.38262983845593806, 0.4246659546573511], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000241468386, 0.13245925826224342, 0.27608964609428505, 0.27388970508007265, 0.32737615858772495, 0.41350680862570544, 0.45873307148761094], "TOTAL_ENERGY": [0.25000006761116444, 0.27208816596103863, 0.9199556231292694, 0.8553387648861926, 0.9043148341670294, 0.9371277407082019, 0.9570164576470617]}, "ELEMENT_459": {}, "NODE_604": {"MOMENTUM_X": [0.18353641304950563, 0.3588653637487304, 0.40837153101699003, 0.3845155367744613, 0.3900876192244144, 0.38924255234305344, 0.3892833891161477], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.23496047651306448, 0.3891061701491363, 0.4438104433036658, 0.41904000420027326, 0.42526455894061055, 0.4243322679610264, 0.4241641400886061], "TOTAL_ENERGY": [0.6971011828628864, 0.922808004718174, 0.9431252619224985, 0.9314992553869861, 0.9350659625347404, 0.9355335633536609, 0.9364280195888648]}, "NODE_801": {"MOMENTUM_X": [6.81136782830871e-24, 2.6538600338138443e-12, 1.3107919656452152e-07, 0.0009491026240206516, 0.19080094743844742, 0.24715433036745804, 0.24995129784376818], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000025283, 0.12500012532874716, 0.12586374855637303, 0.23767090705631091, 0.268247804209046, 0.27014948325206467], "TOTAL_ENERGY": [0.25, 0.2500000000070793, 0.2500003509207865, 0.25243269400743895, 0.7206205848627827, 0.8735767072392319, 0.8782227935641818]}, "ELEMENT_1065": {}, "ELEMENT_1407": {}, "ELEMENT_1064": {}, "NODE_585": {"MOMENTUM_X": [0.26846163735049144, 0.4079231992144062, 0.4176825886101323, 0.3839824496417736, 0.4086431820198359, 0.3985649833725532, 0.39773701063609407], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.28312641064540933, 0.43964788857271825, 0.4426413133632864, 0.40849210827651933, 0.4348784466421147, 0.42450179708372965, 0.42410040962950024], "TOTAL_ENERGY": [0.8731950679695333, 0.9328409363365501, 0.9561002832100481, 0.9356543219272232, 0.9470276171992538, 0.941955105038528, 0.9418082789100247]}, "ELEMENT_16": {}, "ELEMENT_1075": {}, "ELEMENT_602": {}, "ELEMENT_1383": {}, "NODE_490": {"MOMENTUM_X": [0.011565345252215715, 0.15872716946431306, 0.2737570798570377, 0.3288180043117205, 0.35463263657270044, 0.3684236439111869, 0.37655029862998957], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9901605924298168, 0.8515627003914923, 0.7158512476427259, 0.6301047188263185, 0.5784422809769764, 0.5455062342783811, 0.5228358817654215], "TOTAL_ENERGY": [2.4657575473200817, 2.0127044544565176, 1.6188384127512432, 1.3961802113662205, 1.2716009785902571, 1.1949555224960575, 1.1436285382556988]}, "ELEMENT_470": {}, "ELEMENT_1971": {}, "NODE_864": {"MOMENTUM_X": [0.0, 1.3945144591929359e-19, 1.8753449503610094e-13, 4.151532357883671e-09, 2.8639356219511833e-05, 0.06201426004413843, 0.27732686864838324], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000017658, 0.12500000391036395, 0.12502696053559634, 0.1652787153702387, 0.28131554201582887], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000004945, 0.2500000109490194, 0.25007550262685363, 0.3908803544049395, 0.9492369565993749]}, "ELEMENT_344": {}, "NODE_992": {"MOMENTUM_X": [0.0, 1.2613970820484188e-40, 2.5395869387163346e-30, 8.236989913832092e-23, 9.666715593541615e-17, 1.3246366807792506e-12, 1.202551003702927e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000008, 0.12500000000125425, 0.12500001134744054], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000003, 0.25000000000351197, 0.25000003177283586]}, "ELEMENT_1188": {}, "ELEMENT_575": {}, "ELEMENT_770": {}, "NODE_441": {"MOMENTUM_X": [1.3750524195582655e-06, 0.0033112377802781176, 0.047122493978048456, 0.1454128475449326, 0.23155555529933441, 0.28524010742161915, 0.3174167229693591], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999988584134883, 0.9972428951321095, 0.9596670609709826, 0.8670011985130469, 0.7717074959248557, 0.7006803899232591, 0.650517871879111], "TOTAL_ENERGY": [2.499996004451057, 2.4903642188881245, 2.361344955067301, 2.059936408740673, 1.7743522140782484, 1.5775775813756763, 1.4468250410469417]}, "ELEMENT_1860": {}, "NODE_651": {"MOMENTUM_X": [3.17503594961796e-05, 0.1892646438815589, 0.2582925782821787, 0.32705678866489046, 0.42039777610503126, 0.4236622979647604, 0.37871015682713444], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12502915944659412, 0.2338695228332444, 0.2792217044925362, 0.35040828424494913, 0.45322979603546043, 0.4554712147234906, 0.40700437716371357], "TOTAL_ENERGY": [0.25008166520011593, 0.7064148039549523, 0.8758295849541738, 0.9182570024799098, 0.9553759228363703, 0.9595358907869801, 0.9374478912539721]}, "ELEMENT_765": {}, "ELEMENT_671": {}, "ELEMENT_1088": {}, "ELEMENT_1598": {}, "NODE_981": {"MOMENTUM_X": [0.0, 9.443402737796054e-39, 8.370665521494798e-29, 2.6412015894014186e-21, 8.567840028100625e-16, 1.0883915504007518e-11, 9.795209619850445e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000078, 0.1250000000102987, 0.12500009230750522], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000023, 0.25000000002883654, 0.25000025846116414]}, "ELEMENT_1461": {}, "ELEMENT_1015": {}, "ELEMENT_1826": {}, "NODE_606": {"MOMENTUM_X": [0.06713087786544614, 0.29462581718745406, 0.38993275898423974, 0.4176711529858944, 0.3655189184781357, 0.3827040873715728, 0.39178805107834486], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.16836604649776524, 0.31555218734614165, 0.429712054513261, 0.4614014460198963, 0.4041714907668434, 0.4233682520137858, 0.4330557273826286], "TOTAL_ENERGY": [0.40300341263646344, 0.9208379753516991, 0.9354382279223956, 0.9455155364226252, 0.9242663591222822, 0.9318663522496022, 0.9368924440543596]}, "ELEMENT_1909": {}, "ELEMENT_201": {}, "NODE_182": {"MOMENTUM_X": [0.0, 2.9232602672846825e-26, 8.907249592460998e-18, 3.520671471111903e-13, 5.267385754183602e-10, 1.374606641128045e-07, 9.836531198856066e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999997033, 0.9999999995561254, 0.9999998842057783, 0.9999917195738164], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999989613, 2.4999999984464383, 2.4999995947202502, 2.499971018632224]}, "NODE_206": {"MOMENTUM_X": [0.0, 1.2742387149281317e-21, 1.794054572265434e-14, 1.1413956090105855e-10, 6.543695793938281e-08, 7.309639588326508e-06, 0.00023970498968058817], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999847, 0.9999999999026927, 0.9999999441781864, 0.9999937690507212, 0.9997958106166818], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999467, 2.499999999659425, 2.499999804623659, 2.499978191749247, 2.499285407328186]}, "NODE_574": {"MOMENTUM_X": [0.35127386156832624, 0.4294635270058374, 0.3881752715400244, 0.4025510808426991, 0.4044019953637722, 0.3958648838558679, 0.4022518328504075], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3505285460208201, 0.4517344531885385, 0.40281266515562725, 0.4170479195114932, 0.4182084370033197, 0.40893543300243684, 0.4153521889123831], "TOTAL_ENERGY": [0.9641542612479364, 0.9364780366382822, 0.9213551740125262, 0.9243983428142449, 0.9207713844527795, 0.9151553444125999, 0.9164430199715241]}, "ELEMENT_449": {}, "NODE_88": {"MOMENTUM_X": [0.0, 0.0, 1.8842798416228408e-42, 5.102401285981821e-34, 5.701062375678638e-27, 1.3663839470297253e-20, 6.605427834897071e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999994], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982]}, "ELEMENT_1252": {}, "NODE_333": {"MOMENTUM_X": [1.0378959316347924e-16, 3.5661070572850724e-09, 4.934293083450256e-06, 0.0004584591872393403, 0.007804460840602537, 0.041140880838787704, 0.10152234763354408], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999999, 0.9999999969900718, 0.9999958363481343, 0.9996126234337527, 0.99337021237556, 0.9643886503020184, 0.9089340366996711], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999894652514, 2.4999854272558437, 2.498644453881657, 2.4768659265492414, 2.377232855852205, 2.1930843683295733]}, "ELEMENT_383": {}, "ELEMENT_1719": {}, "ELEMENT_188": {}, "NODE_373": {"MOMENTUM_X": [2.5911475992378283e-11, 7.78697394862475e-06, 0.0012081462807631168, 0.01873647078966402, 0.07559071630924263, 0.14938110625849124, 0.211052634661729], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999790053, 0.9999938059236532, 0.9990384438627211, 0.9848195276017526, 0.9359041041125562, 0.865324566914976, 0.7981002160544821], "TOTAL_ENERGY": [2.499999999926519, 2.499978320832104, 2.4966364279313127, 2.447266045443058, 2.282115486491181, 2.0557606531327868, 1.8527626086395395]}, "ELEMENT_1068": {}, "ELEMENT_1828": {}, "NODE_1010": {"MOMENTUM_X": [0.0, 5.16353506057337e-42, 4.944982026839695e-31, 7.233375544021556e-23, 8.317700702733152e-17, 9.680400351480058e-13, 6.3112081332696364e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000092376, 0.125000006033885], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000002, 0.2500000000025866, 0.2500000168948788]}, "NODE_271": {"MOMENTUM_X": [0.0, 1.8428449717903062e-13, 3.1253004827388016e-09, 1.9021103201533656e-06, 0.000152031028458236, 0.002923513448966032, 0.019306710383302728], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999998522, 0.9999999975136932, 0.9999984914856259, 0.9998792836477762, 0.9976623585380769, 0.9842805200357568], "TOTAL_ENERGY": [2.5, 2.499999999999483, 2.4999999912979263, 2.499994720204911, 2.4995775218655463, 2.4918280109711137, 2.4453865996514863]}, "ELEMENT_1956": {}, "ELEMENT_709": {}, "ELEMENT_625": {}, "ELEMENT_1304": {}, "ELEMENT_1059": {}, "ELEMENT_1440": {}, "NODE_84": {"MOMENTUM_X": [0.0, 6.970053298851706e-38, 1.134033294721189e-27, 2.0597320743826585e-20, 5.20167967808589e-15, 7.666834726068924e-12, 2.5154561402444133e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999957, 0.9999999999935266, 0.9999999978749992], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999985, 2.499999999977343, 2.499999992562497]}, "ELEMENT_1018": {}, "ELEMENT_221": {}, "NODE_486": {"MOMENTUM_X": [0.011678621802090235, 0.15941992362289248, 0.27313047422757497, 0.327833949105451, 0.3538017030223376, 0.3677914943827059, 0.3761610894011049], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9900083078783112, 0.8499378537652189, 0.7157398107431849, 0.6311780917023116, 0.5798317052281508, 0.5469170651562966, 0.5243135933148481], "TOTAL_ENERGY": [2.4652293853241747, 2.0075678938742563, 1.6183756130096338, 1.3987981342559799, 1.2750706022060458, 1.1985507531174362, 1.147144536417652]}, "NODE_370": {"MOMENTUM_X": [8.612987027021852e-13, 8.053457209727472e-07, 0.00024256532607356095, 0.006790108696276019, 0.043279218984359595, 0.11224919918345325, 0.18129949326253486], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999992739, 0.999999322586155, 0.9997960003542895, 0.9942612514845267, 0.9626346353189152, 0.8989104725644178, 0.8283319021893315], "TOTAL_ENERGY": [2.4999999999974585, 2.49999762905267, 2.499286081877204, 2.4799686408392816, 2.371306068802226, 2.160794287145443, 1.940649165562271]}, "ELEMENT_1862": {}, "ELEMENT_1326": {}, "NODE_403": {"MOMENTUM_X": [2.3088919496289037e-09, 9.375043589314761e-05, 0.00570946226487951, 0.04661278846711251, 0.1268869824244688, 0.20282812232883282, 0.2564064728814952], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999980533183, 0.9999211351080568, 0.9951761328248374, 0.9596620767066615, 0.8845625637343748, 0.8044257736670708, 0.7395179555993808], "TOTAL_ENERGY": [2.4999999931866137, 2.499723986321442, 2.483156494935604, 2.3612740975209423, 2.11503520678042, 1.8692881163474286, 1.6831701288913676]}, "NODE_818": {"MOMENTUM_X": [0.0, 9.179973184276835e-15, 1.103426801795537e-09, 1.2246219129392509e-05, 0.04266479011174228, 0.280339318392401, 0.2426463843577595], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000863, 0.12500000103841752, 0.12501147445364919, 0.15344033264386356, 0.2823854940118891, 0.26537796377222406], "TOTAL_ENERGY": [0.25, 0.2500000000000242, 0.25000000290756913, 0.2500321308699692, 0.34494473663086445, 0.9564640005565673, 0.8591407612219344]}, "NODE_853": {"MOMENTUM_X": [0.0, 3.7940102712070856e-18, 1.8965612151539287e-12, 3.279619243487558e-08, 0.00021131017247363664, 0.13750107728379776, 0.25698695062652915], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000178607, 0.12500003089479908, 0.12519694900546338, 0.20789861845786128, 0.272115890120026], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000005001, 0.250000086505455, 0.25055216769877536, 0.5782916414279393, 0.8970047153469238]}, "ELEMENT_738": {}, "ELEMENT_47": {}, "NODE_548": {"MOMENTUM_X": [0.4085124231487755, 0.40390944488653935, 0.3979977658933922, 0.3979782697691857, 0.3973612116564276, 0.39674011683040367, 0.3969742835373434], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.5449426403624011, 0.44589351320937776, 0.4234868646497715, 0.41714986731355136, 0.41375319448754405, 0.4114957382467805, 0.4107182223759266], "TOTAL_ENERGY": [1.195840911695765, 0.9760870331383955, 0.9359235026586061, 0.9220246899053628, 0.9152132473210389, 0.9113846475231899, 0.9092799044110168]}, "ELEMENT_52": {}, "ELEMENT_1150": {}, "ELEMENT_492": {}, "ELEMENT_19": {}, "ELEMENT_1498": {}, "ELEMENT_1179": {}, "NODE_162": {"MOMENTUM_X": [0.0, 9.134919814657164e-28, 3.951224642295013e-19, 8.251887027076308e-14, 1.576615214414387e-10, 5.000046527477068e-08, 4.23773872659675e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999302, 0.9999999998665076, 0.9999999576247058, 0.9999964077438381], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999997558, 2.4999999995327773, 2.4999998516864754, 2.499987427127053]}, "NODE_288": {"MOMENTUM_X": [0.0, 4.309350966844953e-14, 8.553978138441341e-10, 6.489323087716573e-07, 6.680953950443809e-05, 0.0016620369789337713, 0.013848285219973892], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999635, 0.999999999277362, 0.9999994528377981, 0.9999437881387284, 0.9986015475378501, 0.9882704380845158], "TOTAL_ENERGY": [2.5, 2.499999999999872, 2.499999997470767, 2.4999980849329106, 2.499803264230793, 2.4951086293016163, 2.4591560009391644]}, "NODE_825": {"MOMENTUM_X": [0.0, 3.3256947307688736e-14, 3.902131341238454e-09, 3.9343312515643436e-05, 0.07192911846632637, 0.26064283679431743, 0.2520141266262534], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000002984, 0.12500000346571674, 0.1250345632758254, 0.16874192742824692, 0.26942874865647437, 0.2666366885663859], "TOTAL_ENERGY": [0.25, 0.25000000000008354, 0.25000000970400715, 0.2500968012298004, 0.40733868650938904, 0.897566547687591, 0.8782569960300871]}, "ELEMENT_742": {}, "NODE_332": {"MOMENTUM_X": [1.0423971872870092e-16, 3.637734053963043e-09, 5.054991270486167e-06, 0.00046972182327359934, 0.007960740365181119, 0.041633823362452034, 0.10202629805864236], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999999, 0.9999999969224433, 0.9999957204650762, 0.9996017112958747, 0.9932165570783567, 0.9638740273028118, 0.9083216593633113], "TOTAL_ENERGY": [2.4999999999999996, 2.499999989228552, 2.4999850216671473, 2.498606275769184, 2.4763311304990165, 2.3754811009495227, 2.191084292845859]}, "ELEMENT_1850": {}, "ELEMENT_1901": {}, "NODE_838": {"MOMENTUM_X": [0.0, 1.340167788496434e-17, 5.167928112671066e-12, 9.334690937091223e-08, 0.000868042081802112, 0.21906379344900692, 0.2304929171272061], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000048845, 0.12500008792085354, 0.12576364919853586, 0.24923482337519437, 0.25987050194647265], "TOTAL_ENERGY": [0.25, 0.25000000000000006, 0.2500000000136766, 0.25000024617852656, 0.2521494698232367, 0.7856814680996234, 0.8287777325415047]}, "NODE_794": {"MOMENTUM_X": [2.208567377568736e-24, 6.568456746593423e-13, 4.0581117637924215e-08, 0.0004284844558949346, 0.1904611337673045, 0.23809401814098155, 0.25841295163560335], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000062003, 0.1250000382178027, 0.12538605864650337, 0.23423091627068493, 0.26338063820821467, 0.2730609805309206], "TOTAL_ENERGY": [0.25, 0.2500000000017361, 0.2500001070098743, 0.25108373007640145, 0.7092377040814438, 0.8477153686137127, 0.8975530179362902]}, "NODE_372": {"MOMENTUM_X": [5.969229629876028e-13, 5.975891327102256e-07, 0.0001995879912294132, 0.006147883921375328, 0.04169191918441, 0.11118593365296195, 0.18124634571633935], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999994975, 0.9999994976093827, 0.9998324653826801, 0.9948230177788955, 0.9641705910098165, 0.9002363125107504, 0.8287199273918657], "TOTAL_ENERGY": [2.4999999999982414, 2.4999982416334494, 2.499413682905198, 2.4819247280648287, 2.3765185796087764, 2.1650854441942107, 1.9418790382850346]}, "NODE_428": {"MOMENTUM_X": [3.6393458390804956e-06, 0.006009177003974181, 0.06083484648971202, 0.1565051556869087, 0.23399015731942444, 0.2834313932338457, 0.3142866586660136], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999970811646202, 0.9951908695752173, 0.9491992501497699, 0.858693407444881, 0.7714984866821754, 0.7049733381699018, 0.6562659184661117], "TOTAL_ENERGY": [2.4999897841047365, 2.4832144516013472, 2.326466256996861, 2.0357759402666837, 1.7766707170718536, 1.5923376523097355, 1.4645075581236497]}, "ELEMENT_298": {}, "NODE_660": {"MOMENTUM_X": [0.00014894899155177895, 0.20646734574574024, 0.27509517403917744, 0.3600055860962061, 0.4252987119998746, 0.412957000608941, 0.4071490672698495], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12512794200573332, 0.24120611719439036, 0.29045860136918084, 0.37977015661476754, 0.4486316131764981, 0.4347289383256542, 0.4283606821692124], "TOTAL_ENERGY": [0.2503586687178411, 0.7496643984710591, 0.8870593533111376, 0.9309735667520023, 0.9625932181357713, 0.957202882424126, 0.9535817781036943]}, "ELEMENT_231": {}, "NODE_478": {"MOMENTUM_X": [0.0029458692559002275, 0.10065943649378314, 0.22640661253433828, 0.3001063514672322, 0.33698819792020956, 0.3566416566486538, 0.36796485428906156], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9975080491332958, 0.9096249955518171, 0.7764611158001596, 0.6778862051555513, 0.6160339833784204, 0.5757636312770936, 0.5476807403017265], "TOTAL_ENERGY": [2.491291945066748, 2.1960470842929474, 1.788266233608196, 1.5170686063273926, 1.3600838870210816, 1.26347581050408, 1.199098883998192]}, "ELEMENT_1782": {}, "ELEMENT_843": {}, "NODE_868": {"MOMENTUM_X": [0.0, 1.9908030221936542e-19, 2.8804261862407357e-13, 6.456417095273745e-09, 4.5143400165240914e-05, 0.07588846542296984, 0.26307096525707474], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000028016, 0.12500000627954788, 0.12504378092661286, 0.17394421238164692, 0.27528391761854776], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000007845, 0.2500000175827348, 0.2501226199231245, 0.4251735559934467, 0.9148775579515788]}, "ELEMENT_1783": {}, "ELEMENT_132": {}, "NODE_747": {"MOMENTUM_X": [8.028202340215498e-15, 4.2118487010099677e-07, 0.004440403762579143, 0.23183721174508315, 0.24500075046162229, 0.2586199038596165, 0.29806553228460564], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000774, 0.12500041046823254, 0.12871814979252916, 0.25979421958599375, 0.26749970756146096, 0.27971006546294075, 0.32266156564803317], "TOTAL_ENERGY": [0.2500000000000217, 0.25000114931436396, 0.26069283466033344, 0.8326240707537793, 0.8662635437643212, 0.8801178366942485, 0.8971685942740915]}, "ELEMENT_831": {}, "NODE_417": {"MOMENTUM_X": [4.325085379142301e-07, 0.002019361778028127, 0.03467151575580626, 0.11863146445763612, 0.2021680156055103, 0.260030900886411, 0.29714797174088886], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999996524351281, 0.9983901541342916, 0.9716027959987321, 0.8962196933319498, 0.8090797978524867, 0.7376190230046021, 0.6839440185520564], "TOTAL_ENERGY": [2.499998783523385, 2.4943710399615813, 2.4019936700202917, 2.1534496529006035, 1.8856800584686095, 1.6811251073704636, 1.5362034915317284]}, "ELEMENT_1832": {}, "ELEMENT_1451": {}, "ELEMENT_579": {}, "ELEMENT_224": {}, "NODE_227": {"MOMENTUM_X": [0.0, 2.206797819626375e-18, 1.1831577825590096e-12, 3.555701109456976e-09, 1.0940466678859202e-06, 6.992842508920177e-05, 0.0013663569620498196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999989726, 0.9999999969185341, 0.9999990552852916, 0.9999398719912836, 0.9988289353683921], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999996404, 2.499999989214869, 2.4999966935002544, 2.499789558278323, 2.4959034704721974]}, "ELEMENT_659": {}, "ELEMENT_1330": {}, "NODE_732": {"MOMENTUM_X": [1.845356140825849e-13, 2.717697308769704e-06, 0.016695150117016232, 0.2771079264797242, 0.24006410507955572, 0.2692557505585725, 0.320361326990647], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000017422, 0.12500256096580728, 0.137367153842831, 0.2809605456670331, 0.26600361388213667, 0.2899785208436143, 0.3461868566575803], "TOTAL_ENERGY": [0.25000000000048783, 0.25000717083327967, 0.28778974374701755, 0.947725236239435, 0.8490530596088982, 0.8879600806593387, 0.9082533146602195]}, "ELEMENT_481": {}, "ELEMENT_1341": {}, "NODE_836": {"MOMENTUM_X": [0.0, 2.3781065631075887e-15, 4.3788728507210164e-10, 5.134019531805137e-06, 0.023662547483699062, 0.25688833027002506, 0.24898345619340462], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000000021, 0.12500000038931738, 0.12500453044008494, 0.14060667538329702, 0.2669654336256352, 0.2651656654598894], "TOTAL_ENERGY": [0.25, 0.250000000000006, 0.25000000109008885, 0.25001268564543994, 0.29918354206732006, 0.8856694301928334, 0.8709906654854332]}, "NODE_777": {"MOMENTUM_X": [1.2215894734962993e-19, 3.1939031230130736e-10, 7.19020777714782e-06, 0.027590452647849557, 0.28088950826111275, 0.24046631958775136, 0.25516406857337576], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000030153255, 0.1250067899246595, 0.14444991238970645, 0.2829074259120124, 0.2651242230352565, 0.27533482555838806], "TOTAL_ENERGY": [0.25, 0.25000000084429114, 0.25001901263756326, 0.3119025466695999, 0.9583521387704779, 0.8537701118926512, 0.8796584283760766]}, "NODE_567": {"MOMENTUM_X": [0.413731206089729, 0.39847062617529616, 0.3872124126460069, 0.3992989740023529, 0.3929465105620348, 0.39517856345461805, 0.3949110286541535], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3930290579332331, 0.3820798929798823, 0.36950017252153555, 0.3811665756284065, 0.375415727493157, 0.37812604071624795, 0.3785022709204387], "TOTAL_ENERGY": [0.9096853493166778, 0.8440391151231816, 0.8382305378650015, 0.8445657845477288, 0.8426278935706899, 0.8455408864248871, 0.8469719868049994]}, "ELEMENT_1511": {}, "ELEMENT_1032": {}, "NODE_83": {"MOMENTUM_X": [0.0, 5.490352526009451e-38, 1.2480294920551457e-27, 1.9701436756837392e-20, 5.940885694297449e-15, 8.659844586744162e-12, 2.8042829140443884e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999995, 0.9999999999926648, 0.9999999976228086], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999822, 2.4999999999743263, 2.4999999916798297]}, "ELEMENT_1263": {}, "NODE_827": {"MOMENTUM_X": [0.0, 2.3383167311652427e-16, 5.1163396953297315e-11, 7.712422829471983e-07, 0.006697739928465513, 0.27807164168412213, 0.22869474137431423], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000022, 0.12500000004832262, 0.12500072506764945, 0.1301452791048254, 0.2795480333811776, 0.25913013659627326], "TOTAL_ENERGY": [0.25, 0.2500000000000006, 0.2500000001353033, 0.2500020301986864, 0.2649915382838289, 0.9449592658297055, 0.8241398540566194]}, "ELEMENT_384": {}, "NODE_648": {"MOMENTUM_X": [0.0008141148521393789, 0.24445357951931296, 0.2829712513596305, 0.3730780012455051, 0.4101107661765777, 0.38832403009937416, 0.3895957390015326], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125739360237364, 0.2671650304816424, 0.3079077073109337, 0.4046012936121218, 0.44553992391428965, 0.4226591902830164, 0.424335013029851], "TOTAL_ENERGY": [0.2520830083142851, 0.8639903248697469, 0.8870462679485048, 0.9311305310535348, 0.946744823104175, 0.9361640788258774, 0.9370131530559113]}, "ELEMENT_378": {}, "NODE_645": {"MOMENTUM_X": [0.0006109073536776758, 0.25283790080324253, 0.27749642954596604, 0.37127298148602456, 0.4233902751283399, 0.3980770218749158, 0.38697999738857425], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12554749284607034, 0.2698042966325439, 0.302814585986803, 0.4004492602798807, 0.45746444795017305, 0.42995748207610707, 0.4182185176055566], "TOTAL_ENERGY": [0.2515399754462354, 0.8799616034989592, 0.8776643702763595, 0.933555418254159, 0.9557069592111713, 0.9444244667014415, 0.938723366698474]}, "ELEMENT_144": {}, "NODE_343": {"MOMENTUM_X": [2.618397999716218e-15, 2.4418404905889932e-08, 2.0349640865197798e-05, 0.0012639355384186895, 0.015269746880800095, 0.061525224031247785, 0.1278550293552853], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999978, 0.9999999793386152, 0.9999827703004696, 0.9989275339348664, 0.9869361083940167, 0.9460162773845456, 0.8831726463343565], "TOTAL_ENERGY": [2.4999999999999925, 2.499999927685154, 2.499939696668648, 2.4962483783194562, 2.454541009338666, 2.3152896588456198, 2.1104159092979415]}, "ELEMENT_830": {}, "ELEMENT_764": {}, "ELEMENT_832": {}, "NODE_889": {"MOMENTUM_X": [0.0, 1.0651461082310264e-22, 2.1422071166762193e-15, 8.116547804514531e-11, 6.381017762748388e-07, 0.003654307376019332, 0.234645572055855], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125000000000002, 0.12500000007748402, 0.12500061043515578, 0.12808446217155692, 0.26058777400990596], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000057, 0.25000000021695545, 0.25000170922506426, 0.2588319193277496, 0.8378832560218208]}, "ELEMENT_1256": {}, "NODE_639": {"MOMENTUM_X": [0.0001698324879379338, 0.24984572543753003, 0.25220564322629213, 0.3492316902339652, 0.4249465916130264, 0.3950721986848263, 0.3638380702380758], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12517531435483814, 0.272176306458331, 0.2855510710289067, 0.38263879238054277, 0.4692303480740434, 0.43619435298326065, 0.4025829201250136], "TOTAL_ENERGY": [0.25049143142451635, 0.8850178746722677, 0.8514175644205046, 0.927099547336034, 0.950857289564526, 0.9394088621237563, 0.924490954546715]}, "ELEMENT_799": {}, "NODE_811": {"MOMENTUM_X": [8.841564271207459e-26, 2.0277161931339838e-13, 1.4628806151073212e-08, 0.00011459452641630681, 0.11071816140196451, 0.2646212562260469, 0.2486379774141932], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000001918, 0.12500001386605686, 0.1251080415143688, 0.1933577160295793, 0.275865943124829, 0.2688857691942732], "TOTAL_ENERGY": [0.25, 0.250000000000537, 0.25000003882496286, 0.250302727213655, 0.5105485221668886, 0.9172470309741728, 0.8754215384673886]}, "ELEMENT_1903": {}, "NODE_578": {"MOMENTUM_X": [0.3450274221898019, 0.4177812500900766, 0.38987994388637975, 0.3945171937510213, 0.39934763947166957, 0.3938805081718751, 0.39662099225402775], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3478615076209619, 0.4367536326312523, 0.40095049912368336, 0.4045159657586786, 0.40774136904386915, 0.4010141810069897, 0.40299726453652646], "TOTAL_ENERGY": [0.938548750839904, 0.9141086005002009, 0.9031874244633661, 0.899286617339761, 0.8978666486446438, 0.893061833840481, 0.8928678400758215]}, "NODE_885": {"MOMENTUM_X": [0.0, 7.1869690790789e-23, 1.3237104849624288e-15, 5.276635454757783e-11, 4.7215860529676443e-07, 0.002968793570096381, 0.23915822541227091], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000122, 0.12500000004967743, 0.12500044388195203, 0.12751924169303203, 0.26158740114074835], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000035, 0.2500000001390969, 0.2500012428730466, 0.2571861713774971, 0.8464736492915208]}, "ELEMENT_1873": {}, "ELEMENT_859": {}, "ELEMENT_1217": {}, "NODE_753": {"MOMENTUM_X": [2.238513840806902e-16, 2.996942434936382e-08, 0.0003952065241825665, 0.16322688000547342, 0.2523139283066866, 0.25472316554922264, 0.2734968451992169], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000022, 0.12500002818932893, 0.12536332491185967, 0.22186282711096908, 0.2702061965051026, 0.27371702049969726, 0.295637769996237], "TOTAL_ENERGY": [0.2500000000000006, 0.2500000789301375, 0.25101979736887825, 0.6450247276459437, 0.8843005274643861, 0.8826727279422304, 0.8857742827751436]}, "ELEMENT_1089": {}, "ELEMENT_1348": {}, "ELEMENT_1820": {}, "NODE_760": {"MOMENTUM_X": [9.18814627856808e-19, 5.329298105876293e-10, 1.3024954233961251e-05, 0.055251335170441784, 0.2893827791300076, 0.24082410326392192, 0.2497805063589561], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000057021934, 0.12501388804070473, 0.1625023744924191, 0.29143957212412475, 0.26935339730601593, 0.2765525294295685], "TOTAL_ENERGY": [0.25, 0.2500000015966142, 0.25003888937146956, 0.37742950977144846, 0.9887430588966518, 0.8613185862945816, 0.8720012622222949]}, "ELEMENT_146": {}, "ELEMENT_1869": {}, "NODE_888": {"MOMENTUM_X": [0.0, 1.0445041981516565e-22, 1.979311407910852e-15, 7.378084261880943e-11, 5.724323624971526e-07, 0.0032062302014536585, 0.23635395055677946], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000186, 0.1250000000698752, 0.12500054311084563, 0.12772411331399705, 0.2607888391030649], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000053, 0.2500000001956506, 0.25000152071566195, 0.2577804704420164, 0.8405899122250806]}, "ELEMENT_906": {}, "NODE_1110": {"MOMENTUM_X": [0.0, 0.0, 4.9999056981508044e-45, 8.281447385131695e-36, 2.085011355715994e-28, 7.838361794299829e-22, 1.4199182359273043e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000014], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000033]}, "ELEMENT_386": {}, "NODE_498": {"MOMENTUM_X": [0.03646997716920196, 0.22471439377306343, 0.31487672271236256, 0.3527371999608469, 0.36958462358067024, 0.3780252012651745, 0.38333798643665973], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9684106734507786, 0.7792689219641648, 0.6547533247212343, 0.5856209372346758, 0.544388288077464, 0.5173788827115626, 0.49930227776163555], "TOTAL_ENERGY": [2.3912575947713606, 1.797237386499016, 1.4567371206426172, 1.2857520003575367, 1.191022784490791, 1.132207283557808, 1.0926348573566387]}, "NODE_754": {"MOMENTUM_X": [2.3733902762140165e-16, 3.221891448811655e-08, 0.0004015466855638415, 0.16304517766663496, 0.2532019316398021, 0.25413486134051955, 0.2732016925436321], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000022, 0.1250000303682001, 0.1253701961139423, 0.22183749579612091, 0.27066008176665923, 0.27355609197154596, 0.2953826073441126], "TOTAL_ENERGY": [0.2500000000000006, 0.25000008503097937, 0.2510391196468445, 0.644677974723157, 0.8865841887156832, 0.8813429239810588, 0.8859819006385782]}, "NODE_848": {"MOMENTUM_X": [0.0, 2.0351535869633397e-19, 2.4335480741956317e-13, 5.769979729057227e-09, 5.3446159054701785e-05, 0.10833280222957517, 0.26206610692827037], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000002608, 0.12500000616476523, 0.12505669481235976, 0.1938098274178777, 0.2783530173409186], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000073014, 0.2500000172613432, 0.25015879283491566, 0.5078527287970835, 0.9166744545711281]}, "ELEMENT_1936": {}, "ELEMENT_1163": {}, "ELEMENT_1395": {}, "ELEMENT_1324": {}, "NODE_11": {"MOMENTUM_X": [0.0, 0.0, 2.709351431427904e-41, 1.089032121835772e-32, 1.389502782535919e-25, 6.282022925040229e-19, 5.259820565401281e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999957], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999985]}, "ELEMENT_1739": {}, "ELEMENT_1635": {}, "ELEMENT_631": {}, "ELEMENT_1475": {}, "NODE_38": {"MOMENTUM_X": [0.0, 1.3530665651217773e-43, 2.5699980403427865e-32, 1.8648236358057614e-24, 1.1302317842249373e-17, 7.904227362310646e-14, 4.8866222597154814e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999325, 0.9999999999583102], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997637, 2.4999999998540865]}, "ELEMENT_1984": {}, "ELEMENT_993": {}, "ELEMENT_961": {}, "ELEMENT_772": {}, "NODE_365": {"MOMENTUM_X": [9.19518407296702e-13, 8.743727562969593e-07, 0.0002588111626673156, 0.0070821260866349815, 0.04422771373634163, 0.11308343653141742, 0.18140247611629876], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999999999999223, 0.9999992601936734, 0.9997807240407345, 0.9939688373984857, 0.9615581201115021, 0.8976313254845886, 0.8276472839691672], "TOTAL_ENERGY": [2.4999999999972804, 2.4999974106792036, 2.499232626983982, 2.47895046918585, 2.3676474075748337, 2.156634838868508, 1.9384907886647884]}, "ELEMENT_423": {}, "ELEMENT_541": {}, "ELEMENT_1770": {}, "ELEMENT_1430": {}, "ELEMENT_662": {}, "ELEMENT_1261": {}, "ELEMENT_554": {}, "ELEMENT_998": {}, "NODE_557": {"MOMENTUM_X": [0.41591521214137206, 0.3872091022630871, 0.3969544688038438, 0.3947178719918659, 0.39554258732027386, 0.3961211456217573, 0.39533444491070774], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3547661477547331, 0.34857163166586475, 0.3650726199694091, 0.367333990089849, 0.37135607312294927, 0.37439512818158877, 0.3757076655198993], "TOTAL_ENERGY": [0.7912538655738908, 0.8003652435401819, 0.8195431501531204, 0.8276783034129812, 0.834564644693752, 0.8399027385077853, 0.8434754280604417]}, "NODE_250": {"MOMENTUM_X": [0.0, 1.05225701036442e-15, 5.4783807635362105e-11, 7.718403237387531e-08, 1.2684990420872295e-05, 0.00046608752976784793, 0.005498262901205068], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999991, 0.9999999999524372, 0.9999999331657003, 0.9999890649624869, 0.9995997780222632, 0.9952855838711342], "TOTAL_ENERGY": [2.5, 2.499999999999997, 2.49999999983353, 2.4999997660799607, 2.499961727590965, 2.4985994909485827, 2.4835338645140936]}, "NODE_107": {"MOMENTUM_X": [0.0, 3.13695563502658e-36, 2.6895857643338056e-26, 4.265146543384605e-19, 2.7050711422429645e-14, 3.1401639096524635e-11, 8.456708845352591e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999772, 0.999999999973516, 0.9999999928671126], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.49999999999992, 2.4999999999073057, 2.499999975034893]}, "NODE_290": {"MOMENTUM_X": [8.154235806490195e-25, 8.156370400751202e-13, 8.628167660726068e-09, 3.8921145028452845e-06, 0.0002533219321118864, 0.004208682311581452, 0.0249952212777826], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999993129, 0.9999999927332343, 0.9999967230380016, 0.9997865354826632, 0.9964414718259541, 0.9786065664795753], "TOTAL_ENERGY": [2.5, 2.499999999997595, 2.4999999745663195, 2.4999885306548935, 2.499252955364747, 2.4875654684570554, 2.425805920646347]}, "NODE_146": {"MOMENTUM_X": [0.0, 2.170413790699784e-37, 1.2281545192713509e-27, 1.5579065674407232e-20, 4.146761617264136e-15, 6.447839036236636e-12, 2.268382726806541e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999961, 0.999999999993903, 0.9999999978717152], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999862, 2.49999999997866, 2.499999992551003]}, "NODE_256": {"MOMENTUM_X": [0.0, 1.9388557123892377e-17, 2.9066098900401903e-12, 6.8600587699457395e-09, 1.83299566999853e-06, 0.00010686174976413089, 0.0019447158348351798], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999975395, 0.999999994202054, 0.9999984543377449, 0.9999100517164027, 0.9983626935969161], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999913887, 2.499999979707189, 2.4999945901867484, 2.4996851951880688, 2.4942737438067772]}, "NODE_749": {"MOMENTUM_X": [2.8369100874466144e-17, 5.783149498743802e-09, 0.0001076170359975215, 0.1364423258523827, 0.25480513092054086, 0.2525603487034024, 0.25640397061713766], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000003, 0.12500000618694823, 0.12511343405313505, 0.21003801953097878, 0.27507920131936264, 0.2754105587161154, 0.2841589321320114], "TOTAL_ENERGY": [0.25000000000000006, 0.2500000173234556, 0.2503178072417435, 0.5807594293683638, 0.8970890587116946, 0.8892988653695565, 0.8738714412419976]}, "NODE_833": {"MOMENTUM_X": [0.0, 1.0996096464312666e-15, 1.9456226321273368e-10, 2.0996567138821615e-06, 0.010475788393794705, 0.26540641382983216, 0.23913794232172642], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000105, 0.12500000018425644, 0.1250019916847654, 0.13310371090481377, 0.27550381221157166, 0.264258903238321], "TOTAL_ENERGY": [0.25, 0.2500000000000029, 0.250000000515918, 0.25000557678895136, 0.2740706531897709, 0.9183037038947675, 0.8520727974552234]}, "NODE_690": {"MOMENTUM_X": [2.587394317790356e-08, 0.00996297375829543, 0.2634391188429255, 0.2513667501823187, 0.3026843294397272, 0.38179720103644205, 0.4208878294236725], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000244714793, 0.13271546403172582, 0.27479110875815865, 0.275437586199557, 0.3268182547172776, 0.41292390415691965, 0.45500048389878023], "TOTAL_ENERGY": [0.2500000685201587, 0.2728843776611858, 0.9122732748985682, 0.8643889484522741, 0.9017052758477873, 0.9366052208909967, 0.9550372154602191]}, "ELEMENT_1572": {}, "NODE_541": {"MOMENTUM_X": [0.28307836940062514, 0.3851940178941496, 0.39835736273171385, 0.40036051694465313, 0.4011370957191063, 0.40131735086261555, 0.4009405523910212], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.6950840369756789, 0.5113762428070577, 0.46991270640007854, 0.4503576069809353, 0.4401794257214722, 0.4338014108235157, 0.4290536767290107], "TOTAL_ENERGY": [1.557822342237487, 1.1086016675622339, 1.0216948056250863, 0.9858493334598504, 0.9665934727050797, 0.95440977545898, 0.9457316372373202]}, "ELEMENT_1409": {}, "ELEMENT_865": {}, "TIME": [0.030000000000000002, 0.05999999999999999, 0.085, 0.11000000000000003, 0.13500000000000004, 0.16000000000000006, 0.18500000000000008], "ELEMENT_1547": {}, "ELEMENT_448": {}, "ELEMENT_1838": {}, "ELEMENT_1808": {}, "ELEMENT_728": {}, "ELEMENT_1329": {}, "NODE_1066": {"MOMENTUM_X": [0.0, 2.8686153232370384e-52, 8.983065519217281e-39, 3.794450047076575e-30, 6.245642109057253e-23, 3.881915991203972e-17, 3.398356266603725e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000033004], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000092415]}, "ELEMENT_986": {}, "ELEMENT_999": {}, "ELEMENT_96": {}, "ELEMENT_1817": {}, "NODE_1038": {"MOMENTUM_X": [0.0, 5.70350277813408e-48, 5.383027205446039e-36, 4.3082579765641435e-28, 3.5944528811157396e-21, 6.718326554779087e-16, 6.522136965711614e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000006, 0.12500000000616163], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000018, 0.25000000001725264]}, "ELEMENT_99": {}, "ELEMENT_1302": {}, "ELEMENT_686": {}, "ELEMENT_158": {}, "ELEMENT_1438": {}, "NODE_947": {"MOMENTUM_X": [0.0, 5.374107466274736e-34, 1.318619351723342e-24, 1.209707074222123e-17, 2.997914224549476e-13, 3.0665355731699165e-09, 2.7479769157962337e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000032102, 0.1250000032759079, 0.1250292547124637], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000008989, 0.2500000091725423, 0.25008192578397936]}, "NODE_692": {"MOMENTUM_X": [3.0895762170559075e-08, 0.01378030352694317, 0.2553058230919302, 0.2548988766856806, 0.3073074545641964, 0.3853052276195235, 0.4105012554592743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500003012167063, 0.13537564579297684, 0.2717870297676679, 0.27789677622284453, 0.332851172074563, 0.4174549378352259, 0.445212002930469], "TOTAL_ENERGY": [0.250000084340703, 0.2812874738095027, 0.8947109986988879, 0.8723081605462609, 0.9017073059569358, 0.9370541657332337, 0.9479064208816267]}, "NODE_662": {"MOMENTUM_X": [2.4737954701488913e-06, 0.10328492595489874, 0.27296610928881143, 0.2868811112484618, 0.38087385118549916, 0.43764394484889757, 0.3959467860126413], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500230138026963, 0.18687699366947347, 0.2810489265442135, 0.30916924952980673, 0.4102257085903261, 0.47126237864662407, 0.4259074101465553], "TOTAL_ENERGY": [0.25000644398632044, 0.4840844429164207, 0.9275241726278042, 0.89338714655884, 0.9381982206677136, 0.9649617992927068, 0.9455337973447995]}, "NODE_228": {"MOMENTUM_X": [0.0, 3.240047534634691e-22, 3.765335052785356e-15, 3.059247940741714e-11, 2.228647977434765e-08, 3.1596390687418713e-06, 0.00012993120829469813], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999968, 0.9999999999741929, 0.9999999812412849, 0.9999973468669048, 0.9998910364633161], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999989, 2.499999999909675, 2.499999934344497, 2.49999071404726, 2.499618647883686]}, "NODE_554": {"MOMENTUM_X": [0.41789835684056686, 0.3878377135804778, 0.39630703084208185, 0.3957374893133187, 0.394085700708669, 0.39735284403278653, 0.39556905154224087], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3573526712390187, 0.34993790509952544, 0.36585825846365094, 0.3693914304853542, 0.3710335107802663, 0.3766938559940031, 0.3769736354668293], "TOTAL_ENERGY": [0.7971521779475637, 0.8031259631346211, 0.8202785737398015, 0.8311037703617278, 0.8361525464013725, 0.8431135830125444, 0.8462277332957696]}, "NODE_507": {"MOMENTUM_X": [0.09235696839776225, 0.28460317421240244, 0.345107966895833, 0.3689980905968502, 0.3802912744732569, 0.3857042074352239, 0.38861802596202855], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9144138679309599, 0.6966227338409604, 0.5972486031513886, 0.5450083855585954, 0.5145167899038688, 0.4937869127111179, 0.47903372826896845], "TOTAL_ENERGY": [2.2122087931154844, 1.5675551589834549, 1.3160701944200732, 1.1935962869138164, 1.1243818397669803, 1.080258058957352, 1.049761744789635]}, "NODE_735": {"MOMENTUM_X": [1.9086808675635363e-13, 3.0478261826483505e-06, 0.019236202318219597, 0.26849825622605833, 0.24508832973499925, 0.26695237129366506, 0.32009386551406716], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000018097, 0.12500291359159496, 0.13904989937040807, 0.27782488894650537, 0.2687098319065448, 0.28949393265929074, 0.3473179024697656], "TOTAL_ENERGY": [0.2500000000005067, 0.25000815822203276, 0.2933220778991012, 0.9283308185592828, 0.8637058945737373, 0.8833620227574346, 0.9072584943855847]}, "NODE_949": {"MOMENTUM_X": [0.0, 3.733050731464432e-33, 5.1613253467691725e-24, 3.6090833547597566e-17, 9.597194770326198e-13, 9.263667027755267e-09, 8.072773465902733e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.1250000000009117, 0.1250000087633538, 0.1250750663598664], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000255274, 0.250000024537392, 0.2502102885036261]}, "ELEMENT_553": {}, "ELEMENT_66": {}, "ELEMENT_1646": {}, "ELEMENT_1087": {}, "ELEMENT_1111": {}, "NODE_1020": {"MOMENTUM_X": [0.0, 5.834709988019418e-44, 1.3735852262709124e-32, 2.399902786467735e-24, 9.049404547294756e-18, 1.091028216088271e-13, 7.563380079142964e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000010328, 0.12500000071701584], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000002892, 0.25000000200764444]}, "ELEMENT_1307": {}, "NODE_516": {"MOMENTUM_X": [0.08909622323689935, 0.2909896422465533, 0.3507247277560789, 0.37200397213892755, 0.38105548949113305, 0.3855804780311512, 0.38844489264064513], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9222343507255303, 0.6949339492934106, 0.5891798110183449, 0.5362241138589177, 0.5057001360828547, 0.4860526279128912, 0.472809262778705], "TOTAL_ENERGY": [2.2379650885565057, 1.564453950117115, 1.297053182316836, 1.1730486406009712, 1.1055536830823134, 1.063765914994448, 1.0356572681636003]}, "ELEMENT_1986": {}, "ELEMENT_1524": {}, "ELEMENT_1623": {}, "NODE_768": {"MOMENTUM_X": [7.087147559957796e-18, 3.6454774818829063e-09, 6.272120508983811e-05, 0.08836815605358522, 0.2674882913280274, 0.24855286253825865, 0.26009045359996824], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000347987356, 0.1250597844304243, 0.1809198333787749, 0.2775922421345682, 0.2698313074255132, 0.2823604303754324], "TOTAL_ENERGY": [0.25, 0.2500000097436462, 0.2501674611501945, 0.45517196447223535, 0.9258045158534735, 0.8737846213991268, 0.8791030580558806]}, "NODE_330": {"MOMENTUM_X": [1.0457843230567447e-16, 3.764278766976631e-09, 5.299059005247336e-06, 0.0004931333673462472, 0.008267588946801172, 0.042525841116034246, 0.10289604129147631], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999999, 0.999999996794939, 0.9999954835488729, 0.9995795246545717, 0.9929276134493301, 0.9630055977603421, 0.9074005394165751], "TOTAL_ENERGY": [2.4999999999999996, 2.499999988782287, 2.499984192464529, 2.49852865237875, 2.4753256495448897, 2.3725279042339666, 2.188085284792516]}, "NODE_63": {"MOMENTUM_X": [0.0, 1.192508224175449e-52, 6.923699569371481e-39, 4.742084690709353e-31, 4.789703288352652e-24, 7.999458833659182e-18, 3.052394658084832e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999974], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999094]}, "ELEMENT_622": {}, "ELEMENT_1382": {}, "ELEMENT_828": {}, "ELEMENT_1642": {}, "NODE_785": {"MOMENTUM_X": [1.3009324426357624e-21, 1.9703269003841434e-11, 7.221812473971453e-07, 0.0052890145161677785, 0.2563926406606296, 0.2352405768926117, 0.25474162572883086], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000001853673, 0.12500067781434998, 0.12926477323536378, 0.2700960686442871, 0.2620835564421724, 0.27249653665897183], "TOTAL_ENERGY": [0.25, 0.25000000005190276, 0.25000189788876664, 0.26233469633248285, 0.8919190503021779, 0.8405028344092254, 0.8851354193545954]}, "ELEMENT_113": {}, "NODE_867": {"MOMENTUM_X": [0.0, 1.56358698761954e-19, 2.405860218338195e-13, 5.214807554796159e-09, 3.478658304792054e-05, 0.0678414205247719, 0.269990632014861], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000022926, 0.12500000498346778, 0.12503323117359508, 0.1688798896400917, 0.27862792973629247], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000064204, 0.25000001395371035, 0.2500930669007711, 0.40488916680378617, 0.9324374842344478]}, "NODE_646": {"MOMENTUM_X": [0.0006168203141216981, 0.25088674879452727, 0.279443951386092, 0.3704055260856804, 0.42153735027599126, 0.39870316416880297, 0.3902301464745942], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12555344940451166, 0.2690662666326243, 0.30370094590733526, 0.39976471810421427, 0.45549263975065196, 0.4305623152593991, 0.42150517359893835], "TOTAL_ENERGY": [0.25155681298876054, 0.8758493489532735, 0.8827317817114065, 0.9323252153816557, 0.9547089394697488, 0.9446585155492242, 0.9404044024469261]}, "ELEMENT_934": {}, "ELEMENT_1684": {}, "ELEMENT_38": {}, "ELEMENT_1362": {}, "ELEMENT_387": {}, "NODE_570": {"MOMENTUM_X": [0.4128910363012022, 0.39528271703223233, 0.391995543454908, 0.39570338867943017, 0.39323742241884013, 0.39518543047389393, 0.39406909184856076], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.39224101381414156, 0.37804158894247164, 0.37300427156433, 0.37574463670995767, 0.3732559656026312, 0.37519239862979475, 0.37442004179310084], "TOTAL_ENERGY": [0.9071350801563626, 0.8392859262189661, 0.8360611666301115, 0.8375361220248585, 0.8367695363305742, 0.838761029426224, 0.8393527378366055]}, "ELEMENT_1780": {}, "ELEMENT_905": {}, "NODE_188": {"MOMENTUM_X": [0.0, 1.1652370142376436e-28, 2.959978574410032e-20, 1.8410239110396744e-14, 4.490682281612974e-11, 1.8035043266238863e-08, 1.91298036339285e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999845, 0.999999999962102, 0.9999999848116022, 0.9999983923452661], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999454, 2.4999999998673563, 2.4999999468406084, 2.499994373213157]}, "NODE_166": {"MOMENTUM_X": [0.0, 6.916636134304497e-32, 5.308547198429792e-23, 2.849258518126115e-16, 1.5588334588191223e-12, 1.041559983217705e-09, 1.741921213321302e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999986827, 0.9999999991217867, 0.9999998534068784], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.49999999999539, 2.499999996926254, 2.4999994869241156]}, "NODE_74": {"MOMENTUM_X": [0.0, 0.0, 8.060642148470712e-41, 9.233203900116333e-33, 1.0431524887608968e-25, 2.507759447786085e-19, 3.9458119955308566e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999967], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999885]}, "ELEMENT_130": {}, "ELEMENT_213": {}, "ELEMENT_1205": {}, "ELEMENT_240": {}, "NODE_254": {"MOMENTUM_X": [0.0, 7.778512137289902e-20, 1.320743366722266e-13, 5.593924423136368e-10, 2.448438014369716e-07, 2.2242722932683865e-05, 0.000608126658039869], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999998742, 0.9999999994710432, 0.999999770787648, 0.9999794320559748, 0.999444673087264], "TOTAL_ENERGY": [2.5, 2.5, 2.49999999999956, 2.4999999981486516, 2.4999991977568574, 2.499928012851126, 2.498056800676194]}, "ELEMENT_1987": {}, "ELEMENT_1472": {}, "NODE_361": {"MOMENTUM_X": [3.242906607654881e-14, 9.882117209429321e-08, 5.555968302595413e-05, 0.0026066630370463577, 0.024824089763499802, 0.08317213373702562, 0.15375574118130558], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999727, 0.9999999168395045, 0.9999533408643864, 0.9978088905907065, 0.9788686082182837, 0.9267027557399337, 0.8577832604569171], "TOTAL_ENERGY": [2.499999999999904, 2.499999708938284, 2.499836697367727, 2.492339278846175, 2.42672243812203, 2.2512284828292297, 2.0308628268855426]}, "ELEMENT_1371": {}, "NODE_733": {"MOMENTUM_X": [1.8747811224658112e-13, 2.7635445601658352e-06, 0.016868773683648697, 0.27599176594594704, 0.2415128252862446, 0.26861183829469887, 0.3202387262433108], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000000001771, 0.12500260940942123, 0.13748416283584033, 0.28052168992453985, 0.26667255905107434, 0.28958506523275385, 0.3460659868280859], "TOTAL_ENERGY": [0.2500000000004959, 0.2500073064800523, 0.2881699531143696, 0.9451015110056932, 0.8528557337846248, 0.8867638445974245, 0.9083499238501014]}, "NODE_389": {"MOMENTUM_X": [1.9498272881267593e-10, 2.208806454934781e-05, 0.002265389364247854, 0.027256882384715332, 0.09490300190087454, 0.17263527139881255, 0.23258544316533744], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999998353031, 0.9999813592365767, 0.9980830231832041, 0.9765862207487227, 0.9151891906409516, 0.8372368235566857, 0.769073736877477], "TOTAL_ENERGY": [2.499999999423561, 2.499934758115193, 2.4932971564519524, 2.4188991170163905, 2.213541448238659, 1.9676756312262136, 1.7663699589593964]}, "NODE_575": {"MOMENTUM_X": [0.3467782015047367, 0.4186992191079044, 0.3890220307314767, 0.3975099068926988, 0.3983742391541848, 0.3943045491341064, 0.39635540959584553], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.35005578963913464, 0.43754914224526, 0.402336378451717, 0.4096943527593683, 0.409963886000365, 0.40516345219191996, 0.4070840522757807], "TOTAL_ENERGY": [0.9427995603372247, 0.9219786104300732, 0.9074087348142043, 0.9068266199843446, 0.9045076035311556, 0.9017518328964649, 0.9017759478954711]}, "NODE_600": {"MOMENTUM_X": [0.18236600453004798, 0.3541085864366642, 0.42565109935400497, 0.3921701718205818, 0.38980402451869356, 0.4007808577212641, 0.3943710597699509], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.23221347940512493, 0.3823806175562794, 0.4568765232701439, 0.4223704165917647, 0.41967371658754316, 0.4318536974228086, 0.4251320125112528], "TOTAL_ENERGY": [0.686124121032843, 0.9160696035160769, 0.9571515072825365, 0.938102514178899, 0.9383698081604291, 0.9433486008623083, 0.9408670111341084]}, "ELEMENT_1021": {}, "ELEMENT_1882": {}, "ELEMENT_238": {}, "NODE_233": {"MOMENTUM_X": [0.0, 7.747996682150564e-23, 1.9034884268411844e-15, 1.748954209875391e-11, 1.4081444496587738e-08, 2.1860761807502206e-06, 9.784722382997357e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999981, 0.9999999999834126, 0.9999999867619223, 0.9999979671186734, 0.9999100920104271], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999994, 2.4999999999419447, 2.499999953666729, 2.4999928849219715, 2.499685334058462]}, "ELEMENT_609": {}, "ELEMENT_1923": {}, "ELEMENT_1616": {}, "ELEMENT_1545": {}, "ELEMENT_564": {}, "ELEMENT_245": {}, "ELEMENT_1200": {}, "NODE_948": {"MOMENTUM_X": [0.0, 1.7721091830480655e-33, 2.641648008838267e-24, 2.2065069567177087e-17, 5.88368967752889e-13, 5.895032408945066e-09, 5.391426317221038e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000055714, 0.12500000556415203, 0.12505013378938604], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000015599, 0.25000001557962626, 0.250140419354841]}, "ELEMENT_1965": {}, "ELEMENT_327": {}, "NODE_738": {"MOMENTUM_X": [9.372453894485945e-16, 5.9586340548048155e-08, 0.0008805381595933344, 0.22675309041638658, 0.22864579359806392, 0.25656549320527255, 0.2710264568017201], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000097, 0.12500006373492273, 0.12588088228568278, 0.25961412996901134, 0.2629277627217791, 0.2786422060564705, 0.29962791446343523], "TOTAL_ENERGY": [0.2500000000000027, 0.2500001784578496, 0.2524787700308516, 0.8225922922404063, 0.8291606709431538, 0.8940031034276895, 0.8822747927917052]}, "ELEMENT_1373": {}, "ELEMENT_477": {}, "NODE_998": {"MOMENTUM_X": [0.0, 4.472727291457237e-40, 1.5979922646324887e-29, 2.3161093521569003e-21, 6.083746873638434e-16, 6.548426469718067e-12, 4.162937136705001e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000056, 0.1250000000062022, 0.12500003949731828], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000016, 0.25000000001736616, 0.25000011059251914]}, "NODE_518": {"MOMENTUM_X": [0.18831706551532618, 0.3360109397757915, 0.3718199426240242, 0.3830159569325569, 0.3884944383211124, 0.39218848765897535, 0.39331542441029377], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.8291902307486677, 0.6148967539199992, 0.5413723096247833, 0.5026965263206999, 0.4806394870145231, 0.4673081913685866, 0.4566789749935908], "TOTAL_ENERGY": [1.9484461612805994, 1.3552418739956604, 1.184603168896367, 1.1007086785096816, 1.0536606870074334, 1.0238898398846037, 1.0027615583367864]}, "ELEMENT_545": {}, "NODE_525": {"MOMENTUM_X": [0.18714523994595023, 0.34146052616953937, 0.3748217365555761, 0.3846186984601024, 0.38892647291481064, 0.3915491743332213, 0.39269482470366274], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.8325852158774636, 0.6129252186930904, 0.5374586418582805, 0.4985367474146857, 0.47649105410267795, 0.46291396038018817, 0.4530350122952388], "TOTAL_ENERGY": [1.9589719833851245, 1.3501679866126752, 1.1721960480572229, 1.0895642976967266, 1.0436387987347249, 1.0148194923583782, 0.9949119539665445]}, "NODE_737": {"MOMENTUM_X": [3.894251531278824e-13, 6.830934241346119e-06, 0.03540171800856332, 0.260998435252889, 0.25399544695885967, 0.28165086120233884, 0.3485357136965576], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000035408, 0.12500603153926762, 0.14760090891161773, 0.26913271067246064, 0.2697477280690954, 0.2982633295145548, 0.369451610380308], "TOTAL_ENERGY": [0.25000000000099143, 0.250016889104413, 0.32415229819099706, 0.8964924241696068, 0.8755954938407179, 0.8921905087321059, 0.9240857262060117]}, "ELEMENT_343": {}, "NODE_281": {"MOMENTUM_X": [0.0, 7.551418846219425e-14, 1.3528384004739062e-09, 9.189295510386437e-07, 8.497700648627678e-05, 0.0019255800487351662, 0.014937747629732916], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999365, 0.999999998861615, 0.9999992270953185, 0.9999285375021363, 0.9983776525712028, 0.9873124212206643], "TOTAL_ENERGY": [2.5, 2.4999999999997775, 2.499999996015652, 2.4999972948348606, 2.4997498905875335, 2.4943261096705123, 2.455838096990413]}, "NODE_46": {"MOMENTUM_X": [0.0, 0.0, 2.906907940214549e-40, 7.332743507124892e-32, 8.569050760707169e-25, 6.514243631328001e-19, 8.344563776639103e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999993], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999975]}, "ELEMENT_1108": {}, "ELEMENT_615": {}, "ELEMENT_1825": {}, "ELEMENT_599": {}, "NODE_122": {"MOMENTUM_X": [0.0, 1.4429842590397295e-32, 2.3945789461435247e-23, 2.5658265166554415e-16, 1.3036149812273412e-12, 8.831873511275976e-10, 1.4623714457639224e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999988886, 0.9999999992466192, 0.9999998752746435], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.4999999999961102, 2.4999999973631675, 2.499999563461282]}, "ELEMENT_988": {}, "ELEMENT_1218": {}, "ELEMENT_1355": {}, "NODE_421": {"MOMENTUM_X": [2.5377843813253555e-07, 0.0013615486118835197, 0.02782979659523844, 0.10856041582418625, 0.1964742697001534, 0.2582310859295398, 0.29734246325404634], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999997855150409, 0.9988463445481672, 0.9760285529561158, 0.9019392956401159, 0.8108976015808501, 0.7364879774326215, 0.6817354421119471], "TOTAL_ENERGY": [2.499999249302793, 2.4959648020358043, 2.417008669998643, 2.1706901840527704, 1.8884782214234799, 1.6746930574479442, 1.5270873280733892]}, "ELEMENT_5": {}, "NODE_455": {"MOMENTUM_X": [0.00010886519796915472, 0.027286089350855157, 0.12740927129198593, 0.2284485329779017, 0.29014758124453743, 0.32489212207039686, 0.34544533777507397], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999908127271026, 0.9765600879276507, 0.8836440749599422, 0.7740061179703369, 0.6926319050795567, 0.6374644654346433, 0.5990500873021309], "TOTAL_ENERGY": [2.4996784675341814, 2.4188719235241516, 2.112453986384699, 1.780863554419708, 1.5559100852522034, 1.4135705076031178, 1.3192412886685096]}, "NODE_407": {"MOMENTUM_X": [2.8510289014877046e-08, 0.00043594188302988307, 0.014788013791386709, 0.07754856761444583, 0.16320083028710514, 0.23106877946523477, 0.2765639333619888], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999752711651, 0.9996228818227203, 0.9871877818587784, 0.9308205129925157, 0.8465188144849971, 0.7703916643773331, 0.7117403245724748], "TOTAL_ENERGY": [2.4999999134490802, 2.498680369708255, 2.455421297867249, 2.2648514134676376, 1.996093309041029, 1.770148027321697, 1.606935438047606]}, "ELEMENT_1660": {}, "NODE_677": {"MOMENTUM_X": [3.731575985306306e-07, 0.04202844729018758, 0.282212559665284, 0.2630758415924359, 0.33820041694065345, 0.4121482356838836, 0.4168251289609526], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250003521902605, 0.1533074606113497, 0.284550014655623, 0.2884336576636772, 0.36473642632492365, 0.4453651027240133, 0.4502924656869995], "TOTAL_ENERGY": [0.25000098613595373, 0.3443202652145938, 0.9579735831059124, 0.868479054256161, 0.9189258068436512, 0.9508144035247879, 0.9532568022301283]}, "ELEMENT_539": {}, "ELEMENT_937": {}, "NODE_668": {"MOMENTUM_X": [4.928914923609308e-06, 0.1094772455274935, 0.2722056007754213, 0.29120446622915247, 0.37603942695642273, 0.4214118819855001, 0.39905635017305396], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500465859689527, 0.19255186766616386, 0.28241989409381746, 0.3154548586838872, 0.40649416838846786, 0.45542140279774085, 0.4311983097509669], "TOTAL_ENERGY": [0.25001304459640256, 0.5073873624563858, 0.9250635967758661, 0.8926372819210525, 0.934086963204899, 0.9553152036087124, 0.94485564344949]}, "ELEMENT_13": {}, "NODE_1103": {"MOMENTUM_X": [0.0, 0.0, 1.2375759449377627e-45, 7.2960454000431906e-37, 1.2168644972592818e-29, 6.869632950207131e-23, 2.6790689029531496e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "NODE_260": {"MOMENTUM_X": [0.0, 1.859346562226393e-14, 5.319705130312269e-10, 4.763075482460786e-07, 5.273677534137779e-05, 0.0013531990273510247, 0.01150317326174878], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999851, 0.999999999576591, 0.9999996221512937, 0.999958161462239, 0.9989209196760236, 0.9907010305693151], "TOTAL_ENERGY": [2.5, 2.4999999999999476, 2.4999999985180685, 2.499998677529864, 2.4998535687062593, 2.4962253501896927, 2.4675982437219734]}, "ELEMENT_1233": {}, "NODE_430": {"MOMENTUM_X": [1.4936336197843873e-07, 0.0009889196560470739, 0.024399463800932088, 0.1051636202615806, 0.1967504777278682, 0.26030989059587445, 0.29962074522024257], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999998757697002, 0.9991771834706863, 0.9793879264975623, 0.9064783982248176, 0.8122008241548669, 0.735046940644176, 0.6790597866107024], "TOTAL_ENERGY": [2.4999995651939995, 2.497121461562313, 2.4285359736590237, 2.18541870681965, 1.892589484950485, 1.6709945115565017, 1.5203360091748734]}, "NODE_3": {"MOMENTUM_X": [0.0, 0.0, 1.5275643615909365e-39, 4.131584439448953e-31, 6.045200494504472e-24, 1.7591956536324256e-17, 4.5635127984711915e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999964], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999874]}, "NODE_565": {"MOMENTUM_X": [0.4114976424473873, 0.3992440862480153, 0.386791546016823, 0.39934012222688603, 0.39366069120953623, 0.39448064750605427, 0.3967111030498433], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.391645688074951, 0.3836239781458189, 0.3702363692976867, 0.38282229334328566, 0.37776489752311426, 0.3794613223453089, 0.38246273097068473], "TOTAL_ENERGY": [0.905993063545472, 0.8454435848015377, 0.8395084895017934, 0.8483222301706418, 0.847442559432972, 0.8497565452116125, 0.853184870993018]}, "NODE_14": {"MOMENTUM_X": [0.0, 5.841549928390695e-50, 4.9709090943004e-37, 9.839868713524019e-29, 1.0777819934214358e-21, 4.741221163075126e-16, 5.511821837363727e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 0.9999999999995297], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999987, 2.4999999999983538]}, "NODE_673": {"MOMENTUM_X": [1.7594987922960379e-07, 0.035964735336773614, 0.2894704190620275, 0.25829897327267526, 0.3358615988466265, 0.42363616163645196, 0.4231271983027429], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500016429934746, 0.14842281864880474, 0.2865016167721477, 0.28281711086464423, 0.36092043631713505, 0.4567884955303793, 0.45547300795970885], "TOTAL_ENERGY": [0.2500004600388307, 0.3267031025054383, 0.9743529903452571, 0.865663644298033, 0.9194945661073028, 0.9571848286334873, 0.9583457072357491]}, "NODE_1017": {"MOMENTUM_X": [0.0, 5.536770117994349e-44, 1.1044895931590373e-32, 4.953634389436367e-25, 2.965980581612248e-18, 6.456586400016211e-14, 5.303458132487592e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006095, 0.12500000049942833], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000017064, 0.2500000013983994]}, "ELEMENT_942": {}, "ELEMENT_1393": {}, "ELEMENT_379": {}, "ELEMENT_1389": {}, "ELEMENT_69": {}, "ELEMENT_973": {}, "ELEMENT_1251": {}, "NODE_110": {"MOMENTUM_X": [0.0, 3.409251557881897e-40, 5.644265094059659e-30, 1.0144562443176592e-22, 2.6917568328964514e-16, 6.157754582321759e-13, 2.9262910083948603e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999994771, 0.9999999997519332], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.4999999999981695, 2.4999999991317656]}, "ELEMENT_36": {}, "NODE_1106": {"MOMENTUM_X": [0.0, 0.0, 3.747964822119178e-45, 2.5598654533473852e-36, 6.509304305653215e-29, 1.7133533215819368e-22, 5.984112969269322e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000017]}, "ELEMENT_1141": {}, "NODE_62": {"MOMENTUM_X": [0.0, 1.507319405291112e-41, 9.655202225858153e-31, 3.2226775536518083e-23, 1.2173822162410733e-16, 3.1039133443300197e-13, 1.576054410578592e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.999999999999738, 0.9999999998668503], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999999083, 2.4999999995339763]}, "ELEMENT_354": {}, "NODE_547": {"MOMENTUM_X": [0.4011355825723672, 0.40283078842996384, 0.39771624265165945, 0.39709811985394633, 0.39763767895049584, 0.3964587231458331, 0.39686262218311175], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.5450513574759293, 0.44640852414567506, 0.4248649367044088, 0.41739878888214377, 0.41474939250728027, 0.4117365172867927, 0.411046422693142], "TOTAL_ENERGY": [1.1889114952700572, 0.9805562820128731, 0.9379854785297058, 0.9231920220072658, 0.9163422980416832, 0.9118889955958261, 0.9096907219488582]}, "ELEMENT_1652": {}, "ELEMENT_563": {}, "ELEMENT_334": {}, "NODE_1042": {"MOMENTUM_X": [0.0, 6.49881688208765e-48, 1.0291988230678472e-35, 2.9006172474626007e-27, 2.740623425934717e-20, 1.7220946958670941e-15, 1.349953432520982e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000016, 0.12500000001278938], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000455, 0.2500000000358102]}, "ELEMENT_1401": {}, "ELEMENT_1368": {}, "NODE_440": {"MOMENTUM_X": [1.793480821144899e-05, 0.012574681038809443, 0.08800240387323667, 0.18904992763306638, 0.26050153175844115, 0.30357688421828044, 0.3298432401439479], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999844564670877, 0.9890811627389569, 0.9207963155486805, 0.8183109829293006, 0.7329646287057824, 0.6719773480020566, 0.6284572408078801], "TOTAL_ENERGY": [2.499945598300386, 2.4619870864218556, 2.2320110959412047, 1.9106770225191398, 1.66497190434922, 1.5016419870173705, 1.391281799512113]}, "ELEMENT_1300": {}, "NODE_806": {"MOMENTUM_X": [2.7892528505613815e-26, 8.524912035960291e-14, 7.1762733221577726e-09, 7.741947603746933e-05, 0.10986516076477217, 0.26173227505590946, 0.2533184076966152], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000008066, 0.12500000677926879, 0.12507201462406328, 0.19131812717511082, 0.2736272614393592, 0.2700161615510621], "TOTAL_ENERGY": [0.25, 0.2500000000002259, 0.2500000189819535, 0.2502017351978597, 0.5037389721495447, 0.9074534562834338, 0.8847744968058396]}, "NODE_515": {"MOMENTUM_X": [0.09080470302571372, 0.28799723826768614, 0.3485778231669689, 0.37101873225916987, 0.38109149250749896, 0.3859542199641057, 0.38891364050073296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9190224838637563, 0.6963684533924767, 0.5922061241115869, 0.5390720561583516, 0.5085486248469945, 0.4884267330372316, 0.47470739036255344], "TOTAL_ENERGY": [2.2274727864511847, 1.5677406775667042, 1.304939884326929, 1.1805755415462933, 1.1119515648649783, 1.068967659151988, 1.0398364703980143]}, "ELEMENT_1581": {}, "ELEMENT_982": {}, "ELEMENT_1443": {}, "ELEMENT_643": {}, "ELEMENT_818": {}, "ELEMENT_847": {}, "NODE_702": {"MOMENTUM_X": [1.6272643291484396e-09, 0.0016569090666694495, 0.21110931926429716, 0.24995493873153263, 0.2772544395883274, 0.3447031224749508, 0.4071393700445246], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000015470323, 0.12646513186123953, 0.24854803553071556, 0.27165316439981957, 0.3003296248652072, 0.3741548252816359, 0.4419663607988517], "TOTAL_ENERGY": [0.2500000043316905, 0.25414617833554815, 0.7752005376766635, 0.8740277194182983, 0.8893350366559399, 0.9183285926220316, 0.9469529587903547]}, "ELEMENT_900": {}, "NODE_142": {"MOMENTUM_X": [0.0, 5.284373826439139e-33, 9.167953573587225e-24, 9.239224244419064e-17, 5.717918274176298e-13, 4.33234945904574e-10, 8.063884785920019e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999995168, 0.9999999996341542, 0.9999999319747768], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999983085, 2.499999998719539, 2.4999997619117265]}, "NODE_598": {"MOMENTUM_X": [0.182518130950071, 0.35492993129471223, 0.4238471679339572, 0.39375207312020194, 0.3907570169194431, 0.4002935007730079, 0.39528481697454954], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2321602083079802, 0.38266969944459195, 0.4546330984190681, 0.42402211466538264, 0.42043394082658553, 0.430897597360363, 0.4256228611795383], "TOTAL_ENERGY": [0.6863045259622659, 0.9171464181336512, 0.956090891885298, 0.9383279988875382, 0.9387759186191691, 0.9433928630112609, 0.9414472471535317]}, "ELEMENT_1318": {}, "ELEMENT_1448": {}, "ELEMENT_677": {}, "ELEMENT_352": {}, "ELEMENT_926": {}, "NODE_359": {"MOMENTUM_X": [3.4410052076147877e-16, 5.8121981360774e-09, 7.114528089301778e-06, 0.0006375733351244839, 0.010467846891152412, 0.05195321489184629, 0.1201081385381863], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999997, 0.999999994501828, 0.9999933515756044, 0.9994133649202741, 0.990493193672359, 0.9526524493072497, 0.8877536543360186], "TOTAL_ENERGY": [2.4999999999999987, 2.499999980756398, 2.499976730592187, 2.497947301637662, 2.4668518696356014, 2.3372781987154685, 2.123922496747162]}, "ELEMENT_1073": {}, "ELEMENT_775": {}, "NODE_420": {"MOMENTUM_X": [1.4366099497402168e-08, 0.0002604881673926346, 0.011208567910746182, 0.07032783393771169, 0.16058595321793032, 0.23285066311141803, 0.27974317534954873], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999880338643, 0.9997831824006476, 0.9906007428729215, 0.938831372378769, 0.8511881125801378, 0.7698478475464958, 0.708295506953987], "TOTAL_ENERGY": [2.4999999581185253, 2.499241234483511, 2.4672489989131385, 2.291458397058528, 2.0106748402017707, 1.7688613169227756, 1.5978925754248978]}, "NODE_56": {"MOMENTUM_X": [0.0, 1.4225253115009405e-43, 1.9703724826848144e-32, 1.3078876039894406e-24, 9.21293339227602e-18, 4.987821116058435e-14, 3.2193488675296447e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999578, 0.9999999999728295], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999853, 2.499999999904904]}, "ELEMENT_1345": {}, "ELEMENT_1688": {}, "NODE_1068": {"MOMENTUM_X": [0.0, 2.8606335085353903e-56, 7.38627337981244e-42, 2.891771983125187e-33, 2.198704290645316e-26, 4.309146162590324e-20, 2.6054073229029667e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000275], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000078]}, "ELEMENT_800": {}, "ELEMENT_753": {}, "NODE_599": {"MOMENTUM_X": [0.1824361048843639, 0.3540503351736116, 0.4260618726731813, 0.39283931497756974, 0.3887960313885911, 0.4016021455903563, 0.3947435042790941], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.23224012015942092, 0.38216741514117314, 0.4570755783187116, 0.42314369695477, 0.4185211689983239, 0.43257261877689007, 0.42541462420978743], "TOTAL_ENERGY": [0.6862639742015884, 0.916151748996733, 0.9577188193244638, 0.9379652879239371, 0.9378859469477814, 0.943932524526983, 0.9410732975656465]}, "NODE_1043": {"MOMENTUM_X": [0.0, 6.508485620194445e-48, 1.0800973157776272e-35, 3.0038221863081943e-27, 3.5514325512834564e-20, 2.000418634931824e-15, 1.534528893627818e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000019, 0.1250000000146523], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000533, 0.25000000004102646]}, "ELEMENT_571": {}, "NODE_280": {"MOMENTUM_X": [0.0, 2.4727711385672124e-15, 9.150689615801567e-11, 1.1123176081562169e-07, 1.7173354830094024e-05, 0.0006139032856316499, 0.007080625595495689], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999979, 0.9999999999229261, 0.999999906521915, 0.9999856055106784, 0.9994856714129104, 0.9940439751817624], "TOTAL_ENERGY": [2.5, 2.499999999999993, 2.4999999997302416, 2.4999996728267204, 2.499949619673186, 2.4982002947326674, 2.479208941000645]}, "NODE_935": {"MOMENTUM_X": [0.0, 7.557157040879336e-29, 7.593038874894938e-20, 2.960019949253457e-14, 4.1449397605476386e-10, 2.8172096749253535e-06, 0.015084063664850924], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000002637, 0.1250000003675972, 0.12500248662321622, 0.13532995352313806], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000738, 0.2500000010292721, 0.25000696266835715, 0.2814340011130859]}, "ELEMENT_1309": {}, "ELEMENT_1583": {}, "NODE_543": {"MOMENTUM_X": [0.4004399197100275, 0.40352129689316585, 0.3991663028650944, 0.3965474362113305, 0.39873456369315824, 0.3971921762159182, 0.39680307985910696], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.5432049109180774, 0.44560278867315345, 0.4256569686724656, 0.4160407444709292, 0.41487062815168146, 0.4113777155283135, 0.4098004687393346], "TOTAL_ENERGY": [1.1850560335922298, 0.9818891951058907, 0.9373895744228927, 0.9220936728167652, 0.9160964762152171, 0.9112994402919603, 0.9086640354628213]}, "NODE_958": {"MOMENTUM_X": [0.0, 9.22118820730841e-36, 4.1751929566355616e-26, 1.1559458094003806e-18, 3.4453556904788835e-14, 3.765726191163897e-10, 3.374938497229141e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000003691, 0.12500000040243495, 0.1250036034932042], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000010336, 0.25000000112681775, 0.25001008997122753]}, "ELEMENT_739": {}, "ELEMENT_1071": {}, "NODE_113": {"MOMENTUM_X": [0.0, 2.1684123568139692e-34, 1.0737451244288567e-24, 1.94962686304746e-17, 2.0843245945484848e-13, 1.8209699587626528e-10, 3.795481608426155e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998236, 0.9999999998457333, 0.9999999678222267], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999993827, 2.4999999994600675, 2.4999998873777964]}, "NODE_1093": {"MOMENTUM_X": [0.0, 0.0, 4.439897602392754e-44, 2.0382832160461958e-35, 2.563008474589596e-28, 1.6374214855149313e-21, 1.891109963497054e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000005]}, "NODE_976": {"MOMENTUM_X": [0.0, 2.1714534965235828e-36, 1.576846576963151e-26, 1.6769442260223356e-18, 4.3870303731160604e-14, 3.758293776843314e-10, 2.2630195696345792e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000004152, 0.1250000003561938, 0.125002147548964], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000011624, 0.2500000009973425, 0.2500060132196696]}, "ELEMENT_880": {}, "ELEMENT_1563": {}, "NODE_876": {"MOMENTUM_X": [0.0, 3.9496241759887635e-21, 1.9959956293136692e-14, 5.609516603221229e-10, 4.0109360109719e-06, 0.017498502686457095, 0.27618281092556424], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000001882, 0.12500000052942375, 0.12500378903712048, 0.137895375382261, 0.28053103337737106], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000527, 0.2500000014823865, 0.2500106095622344, 0.28953479064467175, 0.9461051072064101]}, "ELEMENT_1765": {}, "ELEMENT_1551": {}, "ELEMENT_249": {}, "NODE_817": {"MOMENTUM_X": [0.0, 6.156212741893602e-15, 7.86333849023156e-10, 9.582134255069712e-06, 0.04163331862903723, 0.2816641298429641, 0.24389428495289533], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000000058, 0.12500000074364645, 0.12500899315631642, 0.1522395976712842, 0.28240109488945, 0.2655778894976437], "TOTAL_ENERGY": [0.25, 0.2500000000000163, 0.2500000020822101, 0.2500251822896949, 0.3407542810301499, 0.9581660576206037, 0.8613318355788653]}, "NODE_973": {"MOMENTUM_X": [0.0, 1.970325308200381e-36, 1.3094445128594814e-26, 2.8598073699772264e-19, 2.646097699167476e-14, 2.618338360234671e-10, 1.895877995260785e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000002495, 0.12500000024658514, 0.12500178181737753], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000699, 0.2500000006904385, 0.25000498914636615]}, "ELEMENT_1375": {}, "NODE_614": {"MOMENTUM_X": [0.0975229249267169, 0.313546985376843, 0.40206819525412635, 0.40639158803878705, 0.3884287402027127, 0.3968915786603459, 0.39504712018270843], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.18452521202726585, 0.3336025525091515, 0.43474080885773325, 0.4397250026414673, 0.41992375770485957, 0.4289858031423645, 0.42679190909133774], "TOTAL_ENERGY": [0.4752745887957505, 0.920375784881148, 0.9438156409327981, 0.9450044960316657, 0.9377229934846182, 0.9417755626774978, 0.9412809813142861]}, "ELEMENT_73": {}, "ELEMENT_1312": {}, "NODE_1004": {"MOMENTUM_X": [0.0, 3.285756209344695e-42, 1.5707444528493203e-31, 5.2739398688749975e-24, 1.7866808987288485e-17, 2.610207421980167e-13, 2.338206433220528e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.1250000000002482, 0.12500000221403712], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000006949, 0.250000006199304]}, "NODE_463": {"MOMENTUM_X": [0.0006632189594523737, 0.05907084917747009, 0.1778154154040693, 0.26499811657556255, 0.3132504647289135, 0.3401309222171751, 0.35619865133381395], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9994252725405756, 0.9474800369704122, 0.8300829986679877, 0.72656146680605, 0.656300144542513, 0.6090692737046715, 0.576025671660647], "TOTAL_ENERGY": [2.497989229970944, 2.320448880959688, 1.9463544055040274, 1.6474481613917857, 1.4613738192926593, 1.3438653004690797, 1.2649012346519972]}, "ELEMENT_774": {}, "ELEMENT_1090": {}, "ELEMENT_1349": {}, "NODE_532": {"MOMENTUM_X": [0.265520188722709, 0.37473471932772834, 0.387653975806385, 0.39318831748412963, 0.3941739048491561, 0.39429699776217303, 0.3957003875431411], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.6762160102635084, 0.5223495908558391, 0.4773475397815126, 0.4575404103840629, 0.4445278438915578, 0.43590125055959045, 0.43151005510737395], "TOTAL_ENERGY": [1.5086974551492496, 1.145539016461064, 1.0465278673103022, 1.002770713889589, 0.9776124805087653, 0.9615763925695681, 0.9512471281103916]}, "ELEMENT_302": {}, "ELEMENT_1151": {}, "ELEMENT_134": {}, "ELEMENT_1350": {}, "ELEMENT_363": {}, "NODE_255": {"MOMENTUM_X": [0.0, 8.454176243247508e-16, 4.2511608902608383e-11, 5.9318994017200144e-08, 9.931609577138358e-06, 0.0003805030751652485, 0.004759457166783739], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999993, 0.9999999999641453, 0.9999999499437151, 0.9999916170945047, 0.9996784232472672, 0.9959641198897559], "TOTAL_ENERGY": [2.5, 2.499999999999998, 2.499999999874509, 2.4999998248030084, 2.4999706599655385, 2.498874658834608, 2.485900025886962]}, "ELEMENT_1751": {}, "ELEMENT_1618": {}, "NODE_262": {"MOMENTUM_X": [0.0, 5.031463627883092e-16, 2.7759509749119042e-11, 4.2089033455098336e-08, 7.712604378700984e-06, 0.0003209320368034927, 0.0042974415511105105], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999996, 0.9999999999766125, 0.9999999645630505, 0.9999935150061274, 0.9997301662984542, 0.996377349194501], "TOTAL_ENERGY": [2.5, 2.4999999999999987, 2.4999999999181437, 2.4999998759706803, 2.4999773026018195, 2.4990557071912964, 2.4873414434414833]}, "ELEMENT_90": {}, "NODE_700": {"MOMENTUM_X": [1.5837164552826414e-09, 0.0014568577089297747, 0.2132490661522578, 0.24898897543702198, 0.2785546252787045, 0.3458663978952751, 0.41471138107363476], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000014962894, 0.126287275209797, 0.24862468253855663, 0.270785261394866, 0.3002003365450366, 0.37384048815200976, 0.4480428160719981], "TOTAL_ENERGY": [0.25000000418961044, 0.2536382164884846, 0.7777384494894253, 0.869353143606881, 0.8919337765419746, 0.9201438303223516, 0.9524798802579842]}, "ELEMENT_1366": {}, "NODE_1040": {"MOMENTUM_X": [0.0, 6.47850935585466e-48, 9.517347560796758e-36, 1.8860072707484254e-27, 6.735443228264744e-21, 1.217036949859219e-15, 1.054981521139052e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000117, 0.1250000000099432], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000032, 0.2500000000278409]}, "ELEMENT_854": {}, "ELEMENT_452": {}, "NODE_751": {"MOMENTUM_X": [1.390334271015132e-16, 1.8972381477906896e-08, 0.0003119385934108872, 0.16481589492071022, 0.24862160696527633, 0.25742279234458143, 0.27192440370169146], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000014, 0.12500001788194734, 0.1252844845406089, 0.22148902481399602, 0.26793135952623237, 0.27376776921328133, 0.2929293170629424], "TOTAL_ENERGY": [0.2500000000000004, 0.250000050069459, 0.2507980788045888, 0.6453767721108484, 0.8737128763482042, 0.8892227001325681, 0.8845701363672817]}, "ELEMENT_382": {}, "ELEMENT_917": {}, "ELEMENT_1847": {}, "ELEMENT_1177": {}, "ELEMENT_710": {}, "ELEMENT_551": {}, "ELEMENT_581": {}, "NODE_716": {"MOMENTUM_X": [6.499044291244485e-13, 5.459974069808453e-06, 0.03627291431920647, 0.2967887255603793, 0.23781417119503845, 0.26682046477648547, 0.329526961043116], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000068343, 0.1250058335022385, 0.15080618909006568, 0.29519077950790906, 0.2689602261802404, 0.2939928416322498, 0.3628563505413132], "TOTAL_ENERGY": [0.2500000000019136, 0.25001633433381465, 0.3335316658569914, 1.008858448603545, 0.8499065124786341, 0.8837983524249174, 0.9112122905013093]}, "ELEMENT_638": {}, "ELEMENT_1265": {}, "ELEMENT_1928": {}, "ELEMENT_49": {}, "ELEMENT_556": {}, "NODE_962": {"MOMENTUM_X": [0.0, 1.2419635666105255e-34, 4.426522170521405e-25, 6.811094015185281e-18, 2.2550422977720577e-13, 2.0470153573103853e-09, 1.4446553950742328e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000021264, 0.12500000192691899, 0.12501356975810268], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000005954, 0.25000000539537326, 0.2500379986713013]}, "ELEMENT_403": {}, "ELEMENT_223": {}, "NODE_350": {"MOMENTUM_X": [9.784501054097496e-14, 2.668903488107732e-07, 0.0001208766998228205, 0.004361269707913782, 0.03265876663624957, 0.09341979640402484, 0.16012516564635748], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999203, 0.9999997873274592, 0.9999040142655179, 0.9965129271442524, 0.9731996421302255, 0.9195262970401937, 0.8540016659874412], "TOTAL_ENERGY": [2.499999999999721, 2.4999992556462347, 2.4996640701469115, 2.4878176978204842, 2.4073788617905545, 2.2282836166834676, 2.0205582246854163]}, "ELEMENT_1892": {}, "NODE_693": {"MOMENTUM_X": [5.8193163535131096e-08, 0.02236239664257217, 0.2566851433095418, 0.2650574344414754, 0.3287381825465139, 0.40796676902534595, 0.4215072477916706], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500005212835227, 0.1397069128370361, 0.267021227621285, 0.2813375857343685, 0.34772329598247936, 0.43166920576072837, 0.4454691545760927], "TOTAL_ENERGY": [0.2500001459594714, 0.2962116238086676, 0.8834389237008201, 0.8804013241356218, 0.9152391603699396, 0.9534411869652266, 0.9603982765369125]}, "NODE_589": {"MOMENTUM_X": [0.26578071757519706, 0.3994916218819378, 0.41239908069072756, 0.3845191754769415, 0.3998040229807943, 0.39661874636020544, 0.394833237161332], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2858908545071131, 0.43222759315460435, 0.44031954066586754, 0.4119793252792744, 0.42767178011701085, 0.42388519152835435, 0.4215595718193311], "TOTAL_ENERGY": [0.8642934438154406, 0.9291316878824343, 0.9478922676685345, 0.9304659881320423, 0.9375552652519118, 0.9346954179343043, 0.9332949035541956]}, "ELEMENT_342": {}, "ELEMENT_737": {}, "ELEMENT_1505": {}, "ELEMENT_1441": {}, "ELEMENT_689": {}, "ELEMENT_732": {}, "NODE_52": {"MOMENTUM_X": [0.0, 1.5067275739524493e-52, 1.0246005613609711e-38, 1.9443425945093412e-30, 1.9829266276581138e-23, 1.1542242317424416e-17, 4.258142052623234e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999964], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999874]}, "ELEMENT_362": {}, "NODE_369": {"MOMENTUM_X": [8.293562040611398e-15, 3.9939342170956244e-08, 2.9334850667182586e-05, 0.001740660592776176, 0.02004493340512898, 0.07577477142218705, 0.14831946235332788], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999922, 0.9999999622881611, 0.9999726776944318, 0.9984044611519659, 0.9818021063672733, 0.9303714272195354, 0.8592943794646362], "TOTAL_ENERGY": [2.499999999999973, 2.4999998680085667, 2.4999043732030604, 2.494419395066491, 2.436760507229468, 2.2627523819832915, 2.033971963683277]}, "ELEMENT_455": {}, "ELEMENT_587": {}, "NODE_1071": {"MOMENTUM_X": [0.0, 1.1032220178720732e-54, 8.748788790888396e-41, 1.7774213870567742e-32, 1.8169785223353756e-25, 6.046233808977039e-19, 1.2568083722753208e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001188], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000333]}, "ELEMENT_1210": {}, "NODE_253": {"MOMENTUM_X": [0.0, 8.795359012693938e-16, 4.4778368701101544e-11, 6.245022505297842e-08, 1.0408198609040585e-05, 0.00039584872256876103, 0.004901928253567917], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999993, 0.9999999999621217, 0.9999999471100964, 0.9999911810040859, 0.9996642557552541, 0.9958309114022948], "TOTAL_ENERGY": [2.5, 2.4999999999999973, 2.4999999998674265, 2.4999998148853444, 2.499969133662888, 2.4988250877236378, 2.485435403810254]}, "ELEMENT_143": {}, "ELEMENT_1935": {}, "NODE_608": {"MOMENTUM_X": [0.09604146489105346, 0.3132264033284282, 0.41224050854606764, 0.40963283063868644, 0.3858040962790441, 0.40054491735243886, 0.3972935665270473], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.18236465030570428, 0.33285558581101643, 0.4418141372720157, 0.44034962449099196, 0.4145869456704687, 0.43106658462236763, 0.4277896770979551], "TOTAL_ENERGY": [0.4673851444770756, 0.9137362425581907, 0.951952958109953, 0.9478689008061582, 0.9380389526635481, 0.9440141994626879, 0.9426776116731913]}, "ELEMENT_1900": {}, "NODE_879": {"MOMENTUM_X": [0.0, 6.747930761489298e-21, 2.769236921184769e-14, 8.100497238258715e-10, 6.051160251090664e-06, 0.025037463380378856, 0.26323338675112645], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000002692, 0.12500000078777013, 0.1250058831784328, 0.14284942045484683, 0.2753541443562393], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000754, 0.25000000220575636, 0.25001647350028783, 0.3061384036660668, 0.9156856510655851]}, "ELEMENT_601": {}, "ELEMENT_1670": {}, "ELEMENT_1173": {}, "ELEMENT_748": {}, "NODE_726": {"MOMENTUM_X": [9.058967242751034e-12, 5.992991591189581e-05, 0.09195300153719199, 0.2604653471448692, 0.2619118587951524, 0.30574403447609855, 0.38314619870492234], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000820677, 0.12505249435788393, 0.18003258441292208, 0.2698046871924193, 0.27697135118284627, 0.32388186271712194, 0.4060866516359163], "TOTAL_ENERGY": [0.250000000022979, 0.2501470434064802, 0.45567879157064994, 0.8963662252792169, 0.8831849513518827, 0.903565600110388, 0.9408080337388952]}, "ELEMENT_1277": {}, "ELEMENT_1488": {}, "ELEMENT_1293": {}, "ELEMENT_1258": {}, "NODE_814": {"MOMENTUM_X": [1.4416855504953072e-25, 4.405913361177955e-13, 3.364125539915017e-08, 0.0003022180053129909, 0.14074111798167888, 0.25272016941305075, 0.25349788421619235], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000003945, 0.12500002984315017, 0.12526030140271074, 0.20688226345267163, 0.2664460183533616, 0.26761638819185746], "TOTAL_ENERGY": [0.25, 0.25000000000110456, 0.25000008356083947, 0.2507302420006224, 0.5788306414231478, 0.8793037156269475, 0.8810906767711137]}, "NODE_611": {"MOMENTUM_X": [0.09566206016912135, 0.3140750786335501, 0.4054739359507127, 0.41388220985916485, 0.38425220791324777, 0.3966624128151758, 0.3986890342807401], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.18315334229054678, 0.3333174958955277, 0.43740334430230793, 0.44607328748852937, 0.41423851151983154, 0.42779039148248527, 0.4300252417773463], "TOTAL_ENERGY": [0.4696140845963488, 0.9188854704594455, 0.9453476292145369, 0.9503899086663911, 0.9366604131544245, 0.9422128743954872, 0.9432300962602161]}, "ELEMENT_1839": {}, "ELEMENT_1437": {}, "ELEMENT_1080": {}, "NODE_45": {"MOMENTUM_X": [0.0, 2.152245760075973e-41, 3.315324183083829e-30, 9.683768080083509e-23, 3.0845979074250234e-16, 7.683185562850157e-13, 3.5896678183617504e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999993917, 0.9999999997160944], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.4999999999978706, 2.4999999990063304]}, "ELEMENT_1148": {}, "ELEMENT_1845": {}, "ELEMENT_844": {}, "ELEMENT_1020": {}, "ELEMENT_749": {}, "NODE_731": {"MOMENTUM_X": [1.7518244307359975e-13, 2.603262489966051e-06, 0.016714964944334672, 0.2770429493702117, 0.23977799059705496, 0.2698593303597809, 0.32133689086077866], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000000001652, 0.12500244721293777, 0.1373509284750324, 0.28089853068173626, 0.26577659445799434, 0.29030705945680735, 0.34717374507508547], "TOTAL_ENERGY": [0.2500000000004625, 0.250006852314409, 0.2877507204589186, 0.9475564180474604, 0.8482100513879098, 0.8887563870764643, 0.908364191153097]}, "ELEMENT_267": {}, "ELEMENT_715": {}, "ELEMENT_1452": {}, "ELEMENT_1619": {}, "NODE_393": {"MOMENTUM_X": [1.7090135881989824e-10, 1.9609559368194316e-05, 0.002117554303846022, 0.026518012442931012, 0.09419588292579179, 0.17265562612025945, 0.23309563897433888], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999998562321, 0.9999835475256637, 0.9982199502608002, 0.977374215941492, 0.916298802543226, 0.8378579154032614, 0.7691083507803657], "TOTAL_ENERGY": [2.4999999994968123, 2.4999424169502342, 2.493775500330688, 2.4216040471536315, 2.21719158082269, 1.9696608463786422, 1.7665993774901823]}, "NODE_1102": {"MOMENTUM_X": [0.0, 0.0, 5.40876162975093e-46, 3.879732499657594e-37, 7.247231212907553e-30, 1.8051029296052643e-23, 1.86986991420974e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "NODE_282": {"MOMENTUM_X": [0.0, 6.068748028164439e-14, 1.1264534228043444e-09, 7.996461767463385e-07, 7.727310739778372e-05, 0.0018186118068581117, 0.01451131918548381], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999489, 0.9999999990517348, 0.9999993274506315, 0.9999350632412135, 0.9984698051251303, 0.9876962947838513], "TOTAL_ENERGY": [2.5, 2.499999999999821, 2.499999996681072, 2.49999764607815, 2.4997727290349796, 2.4946481665049887, 2.457167305468673]}, "ELEMENT_1805": {}, "NODE_906": {"MOMENTUM_X": [0.0, 3.4637794205236734e-26, 5.798279389275138e-18, 5.192066746885817e-13, 6.322260145714781e-09, 4.933206304429295e-05, 0.08624552784016137], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000049025, 0.12500000595297053, 0.12504608246861987, 0.17886920420425192], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000013726, 0.25000001666831795, 0.25012906978121613, 0.44801930251975763]}, "NODE_144": {"MOMENTUM_X": [0.0, 4.132986299138066e-29, 6.193776851897369e-20, 2.6103608045316308e-14, 6.403498547928875e-11, 2.4438445454218754e-08, 2.3892043348485565e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999792, 0.9999999999492304, 0.9999999806474448, 0.9999981073347487], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999276, 2.4999999998223066, 2.4999999322660575, 2.4999933756789967]}, "ELEMENT_1207": {}, "ELEMENT_1833": {}, "ELEMENT_1400": {}, "NODE_519": {"MOMENTUM_X": [0.18801500907592336, 0.3401045795043459, 0.37462816536173726, 0.38493792588049947, 0.38898496941917726, 0.3917757060475993, 0.3931694686503788], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.8323842500380951, 0.6134992023935144, 0.5391567058490073, 0.5007502598748574, 0.4780818326918312, 0.4644875563362388, 0.4547699761973627], "TOTAL_ENERGY": [1.9584530333283416, 1.3505959349977514, 1.175794811535471, 1.0929609091333448, 1.04706540809561, 1.0183491899250756, 0.9984640847768503]}, "ELEMENT_461": {}, "ELEMENT_1234": {}, "ELEMENT_1410": {}, "NODE_873": {"MOMENTUM_X": [0.0, 2.3549437767453703e-21, 1.1005548736085805e-14, 3.5024099835168756e-10, 3.133370946656909e-06, 0.017258685312933807, 0.27707914890689334], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000001035, 0.12500000033001116, 0.12500293945852758, 0.1375448588474834, 0.28055125202752973], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000291, 0.25000000092403135, 0.2500082306406827, 0.2884611975437778, 0.9475912137686148]}, "ELEMENT_1856": {}, "NODE_899": {"MOMENTUM_X": [0.0, 3.009143242923724e-24, 1.7255608589011128e-16, 8.858366504163007e-12, 7.722256487162774e-08, 0.0004507277586280428, 0.16630801994096772], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000014, 0.12500000000838626, 0.12500007325652204, 0.1254168373715055, 0.22395324481122553], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000005, 0.25000000002348166, 0.2500002051183584, 0.25117037621716953, 0.6542659974551153]}, "ELEMENT_1257": {}, "ELEMENT_1474": {}, "ELEMENT_528": {}, "ELEMENT_1254": {}, "NODE_707": {"MOMENTUM_X": [5.6393013117991776e-11, 0.0001450244292190209, 0.13601832122830254, 0.25861181024162105, 0.2642774995312913, 0.31349159033370255, 0.3988535446871573], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000000530545, 0.1251337211775311, 0.20598044515782493, 0.27294980264401486, 0.2827559636363297, 0.3373881906791482, 0.42886140511105325], "TOTAL_ENERGY": [0.25000000014855267, 0.2503747607250088, 0.5707457276254235, 0.8975921004981555, 0.8874786490762505, 0.9050303231535153, 0.9459822569906846]}, "NODE_1109": {"MOMENTUM_X": [0.0, 0.0, 4.6855932592804946e-45, 6.277090763482362e-36, 1.993745614954995e-28, 4.02976039389237e-22, 1.2056637431040054e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000001], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000003]}, "ELEMENT_1730": {}, "ELEMENT_1729": {}, "ELEMENT_1803": {}, "ELEMENT_730": {}, "NODE_202": {"MOMENTUM_X": [0.0, 1.878341131676236e-27, 2.514753034265614e-19, 6.862268311230511e-14, 1.364281934715525e-10, 4.623812838399159e-08, 4.217777001784872e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999345, 0.9999999998710867, 0.9999999566998742, 0.9999960922715811], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999997713, 2.4999999995488036, 2.4999998484495625, 2.49998632297427]}, "ELEMENT_1260": {}, "ELEMENT_1242": {}, "NODE_549": {"MOMENTUM_X": [0.4142013089679521, 0.40280756285849983, 0.3956029988079997, 0.39616949359957915, 0.3948582643113653, 0.39501886489756044, 0.39507941155999815], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.5336322166199904, 0.44192987495887354, 0.4212309979224949, 0.4163244486512977, 0.4122222109410193, 0.410647856748077, 0.4095523048276679], "TOTAL_ENERGY": [1.1791484487762887, 0.9651727236440063, 0.9292317197768734, 0.9177310827112292, 0.9116327870340536, 0.9086697951187528, 0.9068000843548654]}, "NODE_432": {"MOMENTUM_X": [2.1839168928850446e-06, 0.004241742929955919, 0.05125847528208957, 0.14725214959503208, 0.23006421740530167, 0.28282537925667967, 0.315206034888184], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999981550351591, 0.9963985829065503, 0.9552592982131846, 0.8634826222015959, 0.7718311094474702, 0.7029669064198446, 0.653621162083443], "TOTAL_ENERGY": [2.4999935426333972, 2.487419000124555, 2.346467038517379, 2.0487992172922707, 1.7743954105743778, 1.5833673697612582, 1.4544215961593092]}, "NODE_990": {"MOMENTUM_X": [0.0, 8.474690228433674e-38, 2.5418173134025175e-27, 8.011458635059969e-20, 1.2372769251889666e-14, 1.1714727891219766e-10, 7.548834539063756e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000001096, 0.12500000010385917, 0.12500066701245502], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000308, 0.2500000002908058, 0.2500018676437471]}, "ELEMENT_1468": {}, "ELEMENT_1837": {}, "ELEMENT_1673": {}, "NODE_164": {"MOMENTUM_X": [0.0, 5.6614783914117215e-34, 9.325510533717267e-25, 7.665706350188983e-18, 1.5576144482869505e-13, 1.45736285978976e-10, 3.294315494123064e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998521, 0.999999999862581, 0.9999999691999157], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999482, 2.4999999995190336, 2.499999892199707]}, "ELEMENT_1611": {}, "ELEMENT_916": {}, "ELEMENT_1612": {}, "ELEMENT_1561": {}, "NODE_636": {"MOMENTUM_X": [0.005803749985731221, 0.27630677429301587, 0.3141686777309019, 0.4028101130685629, 0.4070833444527535, 0.38772041676075614, 0.3956564425936565], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12958414704557594, 0.28581030788354206, 0.341587480535301, 0.4363843190756371, 0.4412579157841391, 0.4200708870295452, 0.4284039631500181], "TOTAL_ENERGY": [0.26336614088704935, 0.9329394614454956, 0.9006692255558618, 0.9451417519222223, 0.9465120842256303, 0.9380426020629012, 0.9421641681413185]}, "NODE_458": {"MOMENTUM_X": [0.00010814830262525651, 0.027209006277807354, 0.12733733322982785, 0.22860127039864495, 0.2904114306961124, 0.3251267659908414, 0.3455960017579149], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999088547092075, 0.9766770459204409, 0.8839448340915859, 0.7741857928510714, 0.6926170692094816, 0.6372974491473689, 0.5987425919705988], "TOTAL_ENERGY": [2.4996810132113336, 2.4192733400532846, 2.11343247520265, 1.7814502195131052, 1.5559795455344156, 1.413331338677338, 1.3187733111482998]}, "ELEMENT_1709": {}, "ELEMENT_1187": {}, "ELEMENT_1557": {}, "ELEMENT_225": {}, "ELEMENT_1911": {}, "ELEMENT_114": {}, "NODE_495": {"MOMENTUM_X": [0.04635181470646249, 0.23456203449515767, 0.31420922357647213, 0.3494282197443808, 0.3655946975261548, 0.3737233056312676, 0.3791645497996428], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9615546268194435, 0.7749544818666697, 0.6592989545991214, 0.5926451027482812, 0.5506874386860111, 0.522062630596704, 0.5028673812370348], "TOTAL_ENERGY": [2.36833854453035, 1.7896860824575975, 1.4737347041845354, 1.3062951399484668, 1.2080689682289558, 1.1452964664888992, 1.1025267310311189]}, "ELEMENT_656": {}, "NODE_387": {"MOMENTUM_X": [1.956151711219495e-10, 2.2319743974869928e-05, 0.0022961690939014914, 0.027557949604571363, 0.09539122396828767, 0.17282711570528464, 0.2324866939007915], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999998346664, 0.9999811186738771, 0.9980512022594789, 0.9762633797263817, 0.9145738455258094, 0.8368368603163147, 0.7690145892812179], "TOTAL_ENERGY": [2.4999999994213318, 2.499933916164645, 2.4931859792571247, 2.4177899157530853, 2.2115205106864044, 1.9664279365588297, 1.7661681878370064]}, "ELEMENT_1310": {}, "NODE_292": {"MOMENTUM_X": [8.014160462148989e-25, 7.247839053459629e-13, 7.79282047427626e-09, 3.607746933773528e-06, 0.00024103585192425034, 0.004090776803352939, 0.024653738284250406], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999993899, 0.9999999934434525, 0.9999969666609007, 0.9997972586296068, 0.9965484209593919, 0.9789438121102377], "TOTAL_ENERGY": [2.5, 2.499999999997865, 2.4999999770520835, 2.49998938333187, 2.4992904784221617, 2.487938609281064, 2.426965902027987]}, "ELEMENT_1852": {}, "ELEMENT_1735": {}, "ELEMENT_426": {}, "ELEMENT_660": {}, "ELEMENT_501": {}, "NODE_106": {"MOMENTUM_X": [0.0, 2.608560993749906e-34, 1.0821686698557392e-24, 2.9631268644802964e-17, 2.8404974250498336e-13, 2.4561564138147604e-10, 4.999833335341787e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999997538, 0.9999999997875787, 0.9999999568781515], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999991385, 2.4999999992565254, 2.499999849073534]}, "ELEMENT_703": {}, "ELEMENT_1562": {}, "NODE_1027": {"MOMENTUM_X": [0.0, 5.728469934798294e-46, 2.0450716273627614e-34, 1.2019387230531172e-26, 7.389592906636397e-20, 5.676703854292068e-15, 5.2016557970609816e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000054, 0.12500000004909884], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001504, 0.25000000013747664]}, "ELEMENT_1182": {}, "ELEMENT_1520": {}, "ELEMENT_1053": {}, "NODE_686": {"MOMENTUM_X": [2.2721464307660314e-08, 0.009595033227808879, 0.26697416507541766, 0.24790017961797253, 0.30651217408544634, 0.3852178152673516, 0.42062044691906636], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500002135632007, 0.13235383307284598, 0.27589076502727977, 0.27346563501001403, 0.32917234046418997, 0.4158543879713292, 0.4540036188135363], "TOTAL_ENERGY": [0.25000005979770895, 0.2717821191263096, 0.919885329561245, 0.8547528384480448, 0.906488071640024, 0.9376028529987057, 0.954555502291185]}, "ELEMENT_892": {}, "NODE_550": {"MOMENTUM_X": [0.4339237250400579, 0.3738089944401111, 0.38823626375862824, 0.38829877766602333, 0.38381934897262715, 0.39200350400063494, 0.3877549603195827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.42185685845336524, 0.36754614900880284, 0.38202081383564807, 0.38055881502544675, 0.3758580161217358, 0.38364672645537573, 0.37948626989642464], "TOTAL_ENERGY": [0.9090865334325962, 0.8429254642970115, 0.8443371335229595, 0.848339242867636, 0.8462692517312604, 0.8520612083256103, 0.8513902716417464]}, "NODE_1002": {"MOMENTUM_X": [0.0, 4.2964004348057766e-43, 1.7320535486691558e-32, 1.6765593519748372e-24, 3.901110010685217e-18, 8.217407585319015e-14, 7.689653983819487e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000008799, 0.12500000082169246], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000002464, 0.25000000230073893]}, "ELEMENT_1983": {}, "NODE_114": {"MOMENTUM_X": [0.0, 9.544856222418079e-45, 1.3108902808320553e-33, 3.4597408380528645e-26, 3.3505216319276585e-19, 8.170259743952894e-15, 6.889159358014295e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999922, 0.9999999999934982], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999973, 2.499999999977244]}, "NODE_51": {"MOMENTUM_X": [0.0, 1.7762986253691248e-41, 9.476340646642255e-31, 4.125122805494885e-23, 1.4397579193596597e-16, 4.0916081450543847e-13, 2.0352404084129375e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999996511, 0.9999999998263716], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999987783, 2.4999999993923]}, "ELEMENT_1415": {}, "NODE_770": {"MOMENTUM_X": [1.4349030200687466e-17, 7.766483028083647e-09, 0.0001450500199513209, 0.11575328267027835, 0.2565815684505511, 0.25516616109923534, 0.2719825147218313], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000691180518, 0.12512626862898002, 0.19328458735082882, 0.2680581213059881, 0.26957421223129363, 0.28820265684999263], "TOTAL_ENERGY": [0.25000000000000006, 0.2500000193530556, 0.2503538805925326, 0.5150499848887077, 0.8882256091968151, 0.8811161049798202, 0.8872808254429213]}, "ELEMENT_791": {}, "ELEMENT_200": {}, "ELEMENT_894": {}, "ELEMENT_215": {}, "NODE_538": {"MOMENTUM_X": [0.28562656094734123, 0.3761433042169598, 0.387941912281239, 0.3910364562404853, 0.39204474259842315, 0.3932779839767836, 0.3936130682470997], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.68387832916564, 0.5162575570186082, 0.47309339786426197, 0.45239064611028174, 0.4403452556556791, 0.43351689235843405, 0.4283197256759621], "TOTAL_ENERGY": [1.536522428976499, 1.1356187334906291, 1.0375761486670045, 0.9935196745266746, 0.9694095814980858, 0.9548510056086134, 0.944848901949122]}, "ELEMENT_1691": {}, "NODE_374": {"MOMENTUM_X": [1.5491923212677284e-11, 5.314302295142834e-06, 0.0009245285402384906, 0.01600636973047099, 0.06993133422572953, 0.14414972372188717, 0.2075864737526868], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999865906, 0.9999953941069779, 0.9992023130637583, 0.986158992001963, 0.9380063804664539, 0.866446431440963, 0.7982505657941529], "TOTAL_ENERGY": [2.4999999999530673, 2.499983879423014, 2.497209244231368, 2.4518551553544397, 2.28859711475745, 2.0577709043158543, 1.8509122798257451]}, "ELEMENT_1225": {}, "NODE_335": {"MOMENTUM_X": [1.0086374939613655e-16, 3.4401840597464368e-09, 4.784327179406469e-06, 0.0004484707701730801, 0.007696073669936614, 0.04083822113244905, 0.10123918426725503], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999999, 0.9999999971009897, 0.9999959714243334, 0.9996219950237551, 0.9934784343173803, 0.9647280932979367, 0.9093446136396126], "TOTAL_ENERGY": [2.4999999999999996, 2.499999989853464, 2.49998590002015, 2.49867724179687, 2.4772425758696364, 2.378388808760322, 2.194429576024723]}, "NODE_974": {"MOMENTUM_X": [0.0, 2.114737122160009e-36, 1.4646147379035955e-26, 1.1741481379625314e-18, 3.322454101668898e-14, 3.0929947340825986e-10, 2.0462973181645163e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000313, 0.1250000002914025, 0.12500192783123856], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000008765, 0.25000000081592705, 0.25000539799469823]}, "ELEMENT_1248": {}, "NODE_875": {"MOMENTUM_X": [0.0, 3.686261032889759e-21, 1.779389446893842e-14, 5.140205002454408e-10, 3.860829441380664e-06, 0.01724534852130548, 0.2773662389981491], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000001676, 0.1250000004841204, 0.12500363690250169, 0.13772657683978662, 0.2809737702518556], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000469, 0.250000001355537, 0.25001018356605376, 0.2889852267548858, 0.9488856499634346]}, "ELEMENT_824": {}, "NODE_174": {"MOMENTUM_X": [0.0, 2.6197720908921903e-32, 2.442464091678768e-23, 1.2877314445993778e-16, 8.993839739165419e-13, 6.540840993167307e-10, 1.1822527769884164e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999991467, 0.9999999993842003, 0.9999998896812853], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999997013, 2.4999999978447014, 2.4999996138845186]}, "NODE_35": {"MOMENTUM_X": [0.0, 2.8915029029993157e-43, 1.065138746390061e-31, 4.586375296928066e-24, 2.0988601729499542e-17, 1.5066266094970117e-13, 8.756138540778572e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999998807, 0.9999999999307561], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999995826, 2.499999999757646]}, "ELEMENT_1128": {}, "ELEMENT_323": {}, "NODE_1065": {"MOMENTUM_X": [0.0, 2.8504420956474658e-52, 7.264782851552509e-39, 3.451410863744895e-30, 4.981741018912311e-23, 2.913838694945503e-17, 2.708130379084887e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000025846], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000072364]}, "NODE_797": {"MOMENTUM_X": [6.685091747273545e-24, 2.0294409295022165e-12, 1.0182453228574164e-07, 0.0007773301563345139, 0.19131196817720603, 0.24435844491945302, 0.25329124281055587], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000019097, 0.12500009574311124, 0.12570249736436448, 0.23673742482418525, 0.2663973564842285, 0.271228049075778], "TOTAL_ENERGY": [0.25, 0.25000000000534717, 0.25000026808088566, 0.2519764935459291, 0.718871356710002, 0.8644944788584754, 0.8850526101443478]}, "NODE_772": {"MOMENTUM_X": [2.3178162251739563e-20, 9.838129910095253e-11, 3.0311917113938042e-06, 0.021548541376066224, 0.29137268836004937, 0.23675223993910652, 0.25437918283505434], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000009274526, 0.12500284312782545, 0.13978664385980216, 0.28650008695227913, 0.2630612157942246, 0.27328209800600906], "TOTAL_ENERGY": [0.25, 0.2500000002596867, 0.25000796090257416, 0.2960772593577859, 0.9810765544217415, 0.8436676355093674, 0.8809433655286968]}, "ELEMENT_716": {}, "NODE_318": {"MOMENTUM_X": [1.67719967987547e-18, 5.876868038509517e-10, 1.386411187963735e-06, 0.00018952253913090959, 0.004324450070129312, 0.02828490349220002, 0.08038090199333685], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999994895243, 0.9999987992891903, 0.9998366478095376, 0.9962830153261107, 0.9754912335079283, 0.9285217709318655], "TOTAL_ENERGY": [2.5, 2.499999998213335, 2.499995797515268, 2.4994283156680037, 2.4870126934050947, 2.4151104115288295, 2.2571286355236535]}, "NODE_408": {"MOMENTUM_X": [2.643361504450011e-08, 0.00039763332966470243, 0.01390055059757393, 0.07564481842820457, 0.1623771173746191, 0.23136135909736247, 0.2772528358377879], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999775630316, 0.9996613174678255, 0.9880648483141067, 0.9328651376760242, 0.8476630599891068, 0.7702128267169727, 0.7108595994507046], "TOTAL_ENERGY": [2.499999921470612, 2.498814844880589, 2.458459277715903, 2.271630633677461, 1.999626843488034, 1.7696333727321787, 1.6045584015775356]}, "ELEMENT_837": {}, "NODE_85": {"MOMENTUM_X": [0.0, 3.542657924783505e-48, 3.688477135602929e-36, 1.3692187741732515e-28, 1.3208519266477327e-21, 4.420759371398726e-16, 5.122636811027839e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 0.9999999999995667], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.499999999998484]}, "NODE_313": {"MOMENTUM_X": [4.635145296975191e-23, 2.5450751260135898e-12, 2.0222409283159953e-08, 7.80273814714596e-06, 0.00045252073359870553, 0.006698555740643843, 0.03515593806503245], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.999999999997858, 0.9999999830104666, 0.9999934631232827, 0.9996212167143859, 0.9943713447254036, 0.9699478058794335], "TOTAL_ENERGY": [2.5, 2.4999999999925033, 2.499999940536634, 2.499977121015408, 2.4986745072222223, 2.4803495772823267, 2.396150248908703]}, "ELEMENT_1199": {}, "ELEMENT_296": {}, "ELEMENT_520": {}, "ELEMENT_100": {}, "ELEMENT_1790": {}, "ELEMENT_1466": {}, "ELEMENT_416": {}, "ELEMENT_24": {}, "ELEMENT_1731": {}, "NODE_293": {"MOMENTUM_X": [0.0, 1.285362466254182e-14, 3.3074586431195743e-10, 3.1083389567225647e-07, 3.881744177390618e-05, 0.0011488672504362057, 0.011114099724100199], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999878, 0.9999999996865498, 0.9999997084117357, 0.9999640699895863, 0.9989510660755374, 0.9899600997284572], "TOTAL_ENERGY": [2.5, 2.4999999999999574, 2.4999999989029247, 2.4999989794412243, 2.4998742469915802, 2.4963303198252955, 2.46499798387215]}, "ELEMENT_1576": {}, "NODE_798": {"MOMENTUM_X": [6.791111556401721e-24, 2.2978922347560716e-12, 1.11007871630896e-07, 0.0007881285584521709, 0.19102944974447514, 0.2453263409096142, 0.25263222991874246], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000216496, 0.12500010458341554, 0.12571447771815356, 0.2366740932698019, 0.26689945912921614, 0.27103588976001397], "TOTAL_ENERGY": [0.25, 0.25000000000606193, 0.2500002928337711, 0.25201030889265374, 0.7182731930398168, 0.8670358618917895, 0.8835185059766639]}, "ELEMENT_1588": {}, "ELEMENT_990": {}, "ELEMENT_705": {}, "NODE_279": {"MOMENTUM_X": [0.0, 8.587788128225374e-14, 1.5142981742287991e-09, 1.0019542095001625e-06, 9.014345461300796e-05, 0.0019955512883483577, 0.015218171429763748], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999276, 0.9999999987246851, 0.999999156270181, 0.9999240665522025, 0.9983153332787797, 0.9870467758923264], "TOTAL_ENERGY": [2.5, 2.499999999999747, 2.499999995536399, 2.499997046947123, 2.499734243471729, 2.494108326606247, 2.454918310466259]}, "ELEMENT_1775": {}, "ELEMENT_780": {}, "ELEMENT_1046": {}, "NODE_287": {"MOMENTUM_X": [7.4491782460203045e-25, 8.963308577593595e-13, 9.495450696933299e-09, 4.232201048652037e-06, 0.00027089191307829905, 0.004417173226173252, 0.025733180180622782], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999992424, 0.9999999919628496, 0.9999964153137633, 0.9997702984646821, 0.9962437694652346, 0.9778689794286832], "TOTAL_ENERGY": [2.5, 2.4999999999973483, 2.4999999718699737, 2.4999874536242785, 2.499196138067606, 2.4868756834414065, 2.4232685783799037]}, "ELEMENT_864": {}, "NODE_514": {"MOMENTUM_X": [0.09076990779417944, 0.2868333685699206, 0.34776278069033456, 0.3702061999959537, 0.3806423963370695, 0.38572807053640656, 0.3886757393058919], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9183896268583572, 0.6963907540125914, 0.592421277964276, 0.53913112190619, 0.5090204474790946, 0.48911236763177013, 0.4753065281125534], "TOTAL_ENERGY": [2.225368826231504, 1.5676262715277218, 1.306154473931835, 1.1820422471504033, 1.1136135116182506, 1.070664522637231, 1.0413861037658023]}, "ELEMENT_624": {}, "ELEMENT_1243": {}, "ELEMENT_646": {}, "ELEMENT_1535": {}, "NODE_745": {"MOMENTUM_X": [7.269260560620317e-15, 3.1831553227768906e-07, 0.0030331999434872175, 0.23401605945253898, 0.24309914368677707, 0.2585669303370389, 0.29223925137915807], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000688, 0.12500030161800765, 0.12758672194218815, 0.25965009978791437, 0.2665740021051039, 0.27882561163757486, 0.3161851684585343], "TOTAL_ENERGY": [0.2500000000000192, 0.25000084453225513, 0.25738069721077517, 0.834232684412234, 0.8604862699473612, 0.882585143248631, 0.8950516874646846]}, "NODE_795": {"MOMENTUM_X": [3.3697334498797944e-24, 1.1162853783777456e-12, 6.353688279900564e-08, 0.0006245556993813547, 0.19360314230856604, 0.2401875959832404, 0.2565672223971305], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000105574, 0.1250000599398725, 0.12555906630450178, 0.23671037246567014, 0.2639531290635832, 0.2718548565296293], "TOTAL_ENERGY": [0.25, 0.2500000000029561, 0.2500001678317097, 0.251571413821428, 0.7212690359839887, 0.8527154582790226, 0.892011094659078]}, "ELEMENT_694": {}, "NODE_111": {"MOMENTUM_X": [0.0, 2.286615213333197e-42, 1.2150318241283628e-31, 2.347288641360996e-24, 1.6954691846141973e-17, 7.863882855075443e-14, 4.94951827756152e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999334, 0.9999999999582108], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999767, 2.4999999998537374]}, "ELEMENT_1898": {}, "ELEMENT_1756": {}, "NODE_234": {"MOMENTUM_X": [0.0, 2.864650400274439e-20, 5.041220596318678e-14, 2.526737144736664e-10, 1.252348104525681e-07, 1.2624727607867667e-05, 0.00038000657987585383], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999574, 0.9999999997861583, 0.999999894214637, 0.999989362022061, 0.9996801226936036], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999998503, 2.499999999251554, 2.499999629751252, 2.4999627672837086, 2.4988806006155295]}, "ELEMENT_1881": {}, "NODE_163": {"MOMENTUM_X": [0.0, 9.217666423382203e-28, 5.03959760611156e-19, 7.47859455696992e-14, 1.43796768637677e-10, 4.60447249555056e-08, 3.947702616058845e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999369, 0.9999999998786604, 0.9999999611208842, 0.9999966658025263], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999997793, 2.4999999995753113, 2.499999863923098, 2.499988330329273]}, "NODE_1022": {"MOMENTUM_X": [0.0, 6.359943173468766e-44, 1.6757414849205142e-32, 2.630642453825848e-24, 1.3359811126455589e-17, 1.5574859957386367e-13, 1.0676409224731728e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000015127, 0.12500000103752404], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000042366, 0.2500000029050674]}, "ELEMENT_861": {}, "ELEMENT_308": {}, "ELEMENT_644": {}, "ELEMENT_642": {}, "NODE_70": {"MOMENTUM_X": [0.0, 7.688077308450663e-48, 7.803518682442416e-36, 3.0686434311374534e-28, 2.6303260749363395e-21, 6.51934153631059e-16, 7.398530063275211e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999994, 0.9999999999993715], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.4999999999978]}, "NODE_161": {"MOMENTUM_X": [0.0, 1.3199451231655485e-31, 7.990860340790217e-23, 5.160198972824273e-16, 2.307200281259102e-12, 1.4374195089477864e-09, 2.2543888177736163e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999996, 0.9999999999980425, 0.9999999987826825, 0.9999998094505111], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999987, 2.4999999999931486, 2.499999995739389, 2.4999993330768575]}, "NODE_505": {"MOMENTUM_X": [0.034019365239121066, 0.22617117489610475, 0.31826791656635145, 0.354353278497342, 0.37022112685876657, 0.3786012112464348, 0.3834220996350062], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9713069981993784, 0.7797967475537001, 0.6511709858548301, 0.5802867081633979, 0.5393543761791002, 0.5135859142588441, 0.4957784650253739], "TOTAL_ENERGY": [2.401087645751994, 1.7991543205448692, 1.4492975439676994, 1.2755446177958056, 1.1811492096553213, 1.1233904185151644, 1.0846777592630985]}, "NODE_193": {"MOMENTUM_X": [0.0, 5.118650805916367e-29, 1.8551576225886e-20, 9.870768096202288e-15, 2.664959035395822e-11, 1.16674298103445e-08, 1.340177954555402e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999907, 0.9999999999747815, 0.999999989053067, 0.9999987550885855], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999967, 2.499999999911735, 2.4999999616857345, 2.499995642812492]}, "ELEMENT_101": {}, "NODE_943": {"MOMENTUM_X": [0.0, 7.313346102555079e-31, 1.2702253135441084e-21, 1.3743692484597665e-15, 2.3007823438696482e-11, 1.5447132622756064e-07, 0.0008965386074669614], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000013, 0.12500000002179043, 0.12500014657241368, 0.12581283266214868], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000366, 0.2500000000610131, 0.2500004104031432, 0.25228859949826743]}, "NODE_871": {"MOMENTUM_X": [0.0, 3.5438487351188556e-22, 4.250427306599074e-15, 1.5365973377008694e-10, 1.5668319887580663e-06, 0.012658058613468548, 0.2865270991824001], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000402, 0.12500000014517723, 0.12500147232845465, 0.1341487174200979, 0.2839336815616485], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000001127, 0.2500000004064963, 0.25000412255770493, 0.27747096901619184, 0.9681250916248831]}, "NODE_47": {"MOMENTUM_X": [0.0, 1.0323712884931452e-45, 5.434945564883571e-34, 5.1652748322034946e-26, 4.679798957296136e-19, 9.122506541159352e-15, 7.31197020036246e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999922, 0.9999999999938275], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999734, 2.4999999999783973]}, "ELEMENT_253": {}, "ELEMENT_324": {}, "NODE_242": {"MOMENTUM_X": [0.0, 5.697827246988697e-17, 6.723225644145231e-12, 1.3668347732775429e-08, 3.112691340502444e-06, 0.00015587642965977417, 0.002481357597328502], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999999, 0.9999999999943137, 0.9999999884262785, 0.9999973626545691, 0.9998678309146689, 0.9978924887834202], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999800986, 2.4999999594919755, 2.4999907693045933, 2.499537438731226, 2.4926308044737353]}, "NODE_297": {"MOMENTUM_X": [1.6321720900362333e-22, 8.194412141076927e-12, 5.3019568710821244e-08, 1.615909566904834e-05, 0.0007427712165152803, 0.008948380386697546, 0.04028684662955737], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999930282, 0.9999999547960494, 0.9999862237381623, 0.9993667555813284, 0.9923469464508234, 0.9650179124931981], "TOTAL_ENERGY": [2.5, 2.4999999999755986, 2.4999998417861766, 2.499951783455065, 2.4977843300085407, 2.473305052511463, 2.3793484992137675]}, "ELEMENT_761": {}, "ELEMENT_1819": {}, "NODE_60": {"MOMENTUM_X": [0.0, 1.0168636690755935e-47, 1.0756151708189842e-35, 1.2922934060924977e-27, 1.44685416878738e-20, 9.248155605384709e-16, 1.011831621664314e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999992, 0.9999999999991436], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.4999999999970024]}, "ELEMENT_268": {}, "ELEMENT_1102": {}, "ELEMENT_782": {}, "ELEMENT_434": {}, "ELEMENT_1760": {}, "ELEMENT_171": {}, "ELEMENT_411": {}, "ELEMENT_1992": {}, "ELEMENT_1424": {}, "NODE_901": {"MOMENTUM_X": [0.0, 3.424456669743575e-24, 2.259108349335753e-16, 1.191926783836487e-11, 1.0811103357352915e-07, 0.0006779208418936813, 0.17342331760708368], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000022, 0.12500000001158967, 0.12500010512757703, 0.12563209683622664, 0.2290490313733699], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000006, 0.250000000032451, 0.2500002943574085, 0.2517771937149679, 0.6767154185580107]}, "NODE_552": {"MOMENTUM_X": [0.41967814423332717, 0.3896218650405473, 0.4028750110354232, 0.3974926303911253, 0.3983841792426879, 0.399771624963575, 0.3967301153267962], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3641886595978759, 0.3528017484015792, 0.3747894505318856, 0.3738398259390282, 0.37783280993275076, 0.38155505811917206, 0.3803805457699469], "TOTAL_ENERGY": [0.7970788072442697, 0.8184517065302694, 0.8353489287840262, 0.843931497787004, 0.8487124785873403, 0.8532929790681768, 0.8544646120889183]}, "ELEMENT_1974": {}, "ELEMENT_1829": {}, "NODE_73": {"MOMENTUM_X": [0.0, 9.114443735094642e-38, 2.710650631240894e-27, 9.090484688088917e-20, 1.3230890828447657e-14, 1.7973952746436987e-11, 5.410043007070666e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999895, 0.99999999998577, 0.9999999957198157], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999636, 2.4999999999501954, 2.499999985019355]}, "ELEMENT_1685": {}, "NODE_487": {"MOMENTUM_X": [0.011581202058488043, 0.1588321222264874, 0.2734742317882225, 0.3284232849786845, 0.3543271437381283, 0.36827461674127826, 0.3765539687020504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9901361201167665, 0.8510417744241625, 0.7157307039246533, 0.6303679684584303, 0.5788632737041809, 0.546066576196675, 0.5235240540270271], "TOTAL_ENERGY": [2.465672655198789, 2.011039116583646, 1.6184247012106823, 1.3967474649703264, 1.2724942082834285, 1.1960297031071636, 1.1448379441242769]}, "NODE_762": {"MOMENTUM_X": [4.053041293600225e-18, 1.8009685350529295e-09, 3.8138066728331946e-05, 0.08314798755613656, 0.2715905133787737, 0.2506074669173914, 0.26009661247275384], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000169932085, 0.1250356160704239, 0.1763553199133462, 0.2781221607763195, 0.2693939881388922, 0.28006610979173424], "TOTAL_ENERGY": [0.25, 0.25000000475809847, 0.2500997481412678, 0.43785627949070194, 0.9323494143219708, 0.8761084283218894, 0.8794332629594367]}, "NODE_1073": {"MOMENTUM_X": [0.0, 1.4152792725206513e-54, 1.5496799994500753e-40, 5.592950738216763e-32, 4.753709018612741e-25, 1.7272130539107388e-18, 2.2146024303624635e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002084], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000585]}, "NODE_807": {"MOMENTUM_X": [6.871358326224588e-26, 1.25297904653638e-13, 9.886591629062182e-09, 9.5563539602238e-05, 0.11003230446456697, 0.2631199959408715, 0.2507996318738991], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000011796, 0.1250000092975692, 0.12508897417477977, 0.19230325348746327, 0.2746960929562026, 0.26930217092759284], "TOTAL_ENERGY": [0.25, 0.25000000000033035, 0.2500000260331954, 0.25024927312198586, 0.507141850357371, 0.9122226979662491, 0.8794076471201357]}, "ELEMENT_1552": {}, "NODE_895": {"MOMENTUM_X": [0.0, 1.3693587510842409e-24, 7.91983369520481e-17, 4.6688691873562035e-12, 5.03679770727945e-08, 0.00038451490191681415, 0.16715476329578538], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000006, 0.12500000000440542, 0.12500004737828324, 0.12535133865378237, 0.2235333485363528], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000017, 0.25000000001233524, 0.2500001326592338, 0.2509860867600956, 0.6543238751640035]}, "ELEMENT_499": {}, "NODE_311": {"MOMENTUM_X": [7.949271931118242e-21, 6.360494621810605e-11, 2.428466852080389e-07, 4.9827254927142366e-05, 0.001660417900299901, 0.015326533163699932, 0.05642408395841318], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999463286, 0.9999997950552092, 0.9999579368132262, 0.9985951869326382, 0.9869235452011424, 0.9507416573580432], "TOTAL_ENERGY": [2.5, 2.4999999998121503, 2.4999992826933286, 2.4998527822548415, 2.495086480714416, 2.4544943302984703, 2.3311137284955965]}, "ELEMENT_315": {}, "ELEMENT_1467": {}, "NODE_830": {"MOMENTUM_X": [0.0, 8.302409345019512e-16, 1.4988957804513484e-10, 1.8018904625240938e-06, 0.009833857552770619, 0.2693600401097394, 0.2348004941644827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000078, 0.12500000014102905, 0.12500169332238018, 0.13262326664810356, 0.27688086710704807, 0.2619750816280281], "TOTAL_ENERGY": [0.25, 0.25000000000000216, 0.25000000039488135, 0.2500047413550309, 0.27258522855713024, 0.9273261503299578, 0.8401228162576763]}, "ELEMENT_517": {}, "ELEMENT_1222": {}, "ELEMENT_1114": {}, "ELEMENT_1979": {}, "ELEMENT_1624": {}, "ELEMENT_760": {}, "ELEMENT_1109": {}, "NODE_586": {"MOMENTUM_X": [0.26739996677143524, 0.40372112364928736, 0.40888220067393044, 0.38735456069771035, 0.40125383619842525, 0.3957142851165006, 0.3952054053797923], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.28593834343251257, 0.4347724632269392, 0.43586505664091946, 0.41440996751980863, 0.428961432675569, 0.42319598707962347, 0.42266213881374787], "TOTAL_ENERGY": [0.8671684405872389, 0.9335170800347977, 0.9467577957131014, 0.9331506990604064, 0.9388791533049496, 0.9360232733269643, 0.9356783869073434]}, "NODE_125": {"MOMENTUM_X": [0.0, 1.2646502260950767e-32, 2.8347870324377443e-23, 1.9582610535120547e-16, 1.1606002675659763e-12, 7.88186594390286e-10, 1.315335698873001e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999990177, 0.9999999993322186, 0.9999998884817985], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999996562, 2.4999999976627647, 2.499999609686319]}, "NODE_1059": {"MOMENTUM_X": [0.0, 1.0954182268098853e-52, 2.253445420718447e-39, 2.7268928599640533e-31, 2.933183658339806e-24, 5.178485942979063e-18, 6.787110807904174e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006456], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001808]}, "ELEMENT_1316": {}, "NODE_874": {"MOMENTUM_X": [0.0, 3.022462394184271e-21, 1.47186915679209e-14, 4.4388652818696336e-10, 3.610244078152681e-06, 0.0172590650605048, 0.27725172442014795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000001385, 0.1250000004177582, 0.12500339234590963, 0.13769877989486512, 0.2808704039785443], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000388, 0.2500000011697229, 0.25000949877752204, 0.28891322723791596, 0.9485368075800363]}, "NODE_235": {"MOMENTUM_X": [0.0, 1.3909606919565349e-18, 8.16772165876305e-13, 2.451108268419337e-09, 7.773163523180179e-07, 5.237316882461109e-05, 0.0010958005491205711], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.999999999999312, 0.9999999979355451, 0.9999993452562661, 0.9999558768124341, 0.9990754005565924], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999997592, 2.4999999927744074, 2.499997708397791, 2.4998455723428537, 2.4967653045698617]}, "NODE_86": {"MOMENTUM_X": [0.0, 1.094292860538948e-41, 2.771831286341928e-31, 1.9569074780059665e-23, 7.228813921219464e-17, 1.632126948090635e-13, 9.149797025431557e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998621, 0.9999999999226529], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999995164, 2.4999999997292845]}, "NODE_920": {"MOMENTUM_X": [0.0, 1.5337086911787633e-27, 1.084440163941769e-18, 1.0659686432350051e-13, 1.2710609083955683e-09, 7.934490871391824e-06, 0.028905766311162547], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000001005, 0.1250000011999047, 0.1250074959251107, 0.1452628506130268], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000028155, 0.2500000033597333, 0.2500209896007472, 0.31479335613206694]}, "ELEMENT_1690": {}, "NODE_847": {"MOMENTUM_X": [0.0, 1.6202413465672142e-16, 4.741531510601402e-11, 6.677143660331654e-07, 0.004462416775554862, 0.22550062934554255, 0.24673007733285407], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000014, 0.12500000004219683, 0.1250005904802255, 0.12838329019464226, 0.2511464153683033, 0.2640777454096703], "TOTAL_ENERGY": [0.25, 0.2500000000000004, 0.25000000011815116, 0.25000165335168895, 0.25974568581529883, 0.8016550447956636, 0.865333510399644]}, "ELEMENT_1107": {}, "NODE_270": {"MOMENTUM_X": [0.0, 7.401190180558617e-15, 2.2147695180152049e-10, 2.2009959323192559e-07, 2.806340650373109e-05, 0.000845867835939973, 0.008476275462864646], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999938, 0.999999999813601, 0.9999998148155413, 0.9999764012187808, 0.9992879066668058, 0.9928275028835051], "TOTAL_ENERGY": [2.5, 2.4999999999999782, 2.4999999993476045, 2.499999351854469, 2.49991740530836, 2.4975085260194687, 2.474975881569107]}, "NODE_135": {"MOMENTUM_X": [0.0, 6.773168345650352e-31, 6.13660463440014e-22, 1.9591820210496383e-15, 6.9448633025223486e-12, 3.654166260786053e-09, 4.835446059559836e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999983, 0.9999999999940783, 0.9999999968828489, 0.9999995876470508], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999942, 2.4999999999792744, 2.499999989089971, 2.4999985567649965]}, "NODE_983": {"MOMENTUM_X": [0.0, 2.6308773383907494e-38, 3.1102172640878486e-28, 8.899282508730793e-21, 2.190960900508803e-15, 2.5396657536658784e-11, 2.061689835819711e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000208, 0.12500000002397535, 0.12500019379889574], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000058, 0.25000000006713097, 0.2500005426375877]}, "NODE_897": {"MOMENTUM_X": [0.0, 2.597217786764824e-24, 1.389852042536589e-16, 7.312037723319115e-12, 6.830140963011072e-08, 0.0004190121398658876, 0.16609105444313682], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000014, 0.125000000006887, 0.12500006434818173, 0.12538608643298366, 0.22340283737426053], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000033, 0.25000000001928335, 0.25000018017498377, 0.2510838268000995, 0.6526444802811826]}, "ELEMENT_1031": {}, "NODE_10": {"MOMENTUM_X": [0.0, 1.547561586134233e-49, 2.3664888509442438e-36, 3.1394565788854744e-28, 3.5325487564394545e-21, 9.149191904638846e-16, 1.0339838137667825e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999992, 0.9999999999991824], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.4999999999971387]}, "ELEMENT_514": {}, "NODE_499": {"MOMENTUM_X": [0.007200104606282846, 0.1449809484951515, 0.27152316703764584, 0.3317398157839506, 0.3589276724184451, 0.3727153561113236, 0.38056359075870816], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9933805419224766, 0.8600057191436704, 0.7138830085387584, 0.6246821968815749, 0.5734467844139801, 0.5411981939993756, 0.5192279086622831], "TOTAL_ENERGY": [2.4769078467778924, 2.0362274942043985, 1.6075246385124071, 1.3762285802036678, 1.2541806025172872, 1.1813043031075998, 1.1330760520728345]}, "NODE_938": {"MOMENTUM_X": [0.0, 1.7369663349012731e-31, 1.4751929408759708e-22, 3.8701183035776707e-16, 8.100306540836665e-12, 7.46961561624222e-08, 0.0006555843775016386], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000036, 0.1250000000076885, 0.12500007055205067, 0.1255855748028932], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000105, 0.2500000000215278, 0.25000019754583025, 0.251646267815251]}, "NODE_296": {"MOMENTUM_X": [1.6656281293820564e-22, 9.236229729612043e-12, 6.047767900435114e-08, 1.827341088087609e-05, 0.0008189810335032209, 0.009530536396966303, 0.041563151389919735], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999919774, 0.999999947551377, 0.9999842262320976, 0.9992959890889074, 0.9918075143841112, 0.9637984070956035], "TOTAL_ENERGY": [2.5, 2.4999999999719207, 2.499999816429825, 2.4999447922898224, 2.4975367971404876, 2.471429466160154, 2.3752017550469775]}, "ELEMENT_18": {}, "ELEMENT_997": {}, "ELEMENT_1748": {}, "ELEMENT_1267": {}, "ELEMENT_663": {}, "NODE_208": {"MOMENTUM_X": [0.0, 2.3545521783599964e-25, 2.1302326182709064e-17, 8.203297252672902e-13, 1.0942507516940312e-09, 2.623393227583388e-07, 1.744657232466346e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999993071, 0.9999999990777187, 0.9999997793551907, 0.999985357478892], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999997575, 2.499999996772015, 2.499999227743261, 2.4999487515554235]}, "ELEMENT_672": {}, "ELEMENT_1106": {}, "NODE_924": {"MOMENTUM_X": [0.0, 3.2117614856720404e-27, 2.5417104405133504e-18, 2.680023937262657e-13, 3.18591497159919e-09, 2.129671590496907e-05, 0.054307226482277024], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000023842, 0.12500000282392348, 0.12501874051348555, 0.15863772555560196], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000006675, 0.2500000079069859, 0.2500524804611643, 0.36627141002818425]}, "NODE_379": {"MOMENTUM_X": [1.4008548298492968e-11, 4.494513823288555e-06, 0.0007871164647049469, 0.014327852234596265, 0.06644414627492755, 0.1420926433160798, 0.2075844693844341], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999881752, 0.9999962131726056, 0.9993361457975768, 0.9878081517413683, 0.9417374817179839, 0.8691947296990221, 0.7988028729150484], "TOTAL_ENERGY": [2.499999999958613, 2.4999867461380387, 2.4976773321994523, 2.457565587707958, 2.301055176431251, 2.0664454877325005, 1.8526003744056299]}, "ELEMENT_472": {}, "ELEMENT_1772": {}, "NODE_872": {"MOMENTUM_X": [0.0, 1.5643048831872601e-21, 7.279330754474943e-15, 2.4628169451905047e-10, 2.3963966939511352e-06, 0.016254822080910773, 0.2795407828763356], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000000069, 0.12500000023327676, 0.1250022547334788, 0.13662046027052577, 0.28102578204971335], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000194, 0.25000000065317496, 0.2500063133444726, 0.28548874818458836, 0.9520578783800686]}, "ELEMENT_332": {}, "NODE_712": {"MOMENTUM_X": [8.76574578042295e-11, 0.00019385124827278927, 0.1355249242931928, 0.262013825555069, 0.26200595252976855, 0.31094267736034137, 0.3874311678637726], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000008288156, 0.12518140983344747, 0.20725271626391922, 0.27541382514506496, 0.28330308254832853, 0.33638564751238437, 0.4189706897072798], "TOTAL_ENERGY": [0.25000000023206836, 0.2505085751074619, 0.5741664112624649, 0.907998600858623, 0.8816412559641207, 0.9037236104036335, 0.9394429210622517]}, "NODE_275": {"MOMENTUM_X": [0.0, 6.918486254608025e-17, 7.344975999753945e-12, 1.4679838772200411e-08, 3.458548445530981e-06, 0.00018092497941060275, 0.0029678288704587334], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999999, 0.9999999999930202, 0.9999999861682375, 0.9999967795561753, 0.9998337039602523, 0.9973069463563531], "TOTAL_ENERGY": [2.5, 2.4999999999999996, 2.4999999999755707, 2.499999951588832, 2.4999887284635514, 2.4994180052231476, 2.4905844716034493]}, "NODE_462": {"MOMENTUM_X": [0.000935523036222189, 0.067643781459652, 0.18620826643193578, 0.2686825497981181, 0.3139166477725321, 0.339147545253983, 0.3543363586716468], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9992508196258185, 0.9433112726890654, 0.8276749251713431, 0.726931574636596, 0.6573247723506669, 0.609748318539178, 0.576249819446789], "TOTAL_ENERGY": [2.497379345303581, 2.307064142816335, 1.9420482430165071, 1.6530410606416532, 1.4686940780987932, 1.3499416127287516, 1.2693369422783431]}, "ELEMENT_1569": {}, "NODE_27": {"MOMENTUM_X": [0.0, 0.0, 4.038342288481323e-40, 1.3055957093194192e-31, 1.555574361069527e-24, 1.1399288457200853e-18, 1.402178627998054e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999882], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999587]}, "ELEMENT_616": {}, "ELEMENT_919": {}, "NODE_1014": {"MOMENTUM_X": [0.0, 1.505958955900151e-44, 1.9823209232003048e-33, 1.0525090268497908e-25, 6.590192506882879e-19, 1.9166194400923197e-14, 1.8210800660058447e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001815, 0.12500000017216223], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000005085, 0.25000000048205423]}, "ELEMENT_977": {}, "ELEMENT_1127": {}, "NODE_618": {"MOMENTUM_X": [0.026318600937594142, 0.2951006867534241, 0.3623398151581428, 0.43769922330708033, 0.39371708931055405, 0.38785988178743647, 0.40938051026249217], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1420763441088543, 0.30051858620697885, 0.39128525578706436, 0.4695929051697876, 0.4218558785570015, 0.4156928306032104, 0.4387908140512946], "TOTAL_ENERGY": [0.304732424359396, 0.9467498053672679, 0.9230482558714482, 0.9658434422464924, 0.9451200255466864, 0.9412094151665913, 0.9512595795811]}, "NODE_376": {"MOMENTUM_X": [1.4233254368899226e-11, 4.621815967774429e-06, 0.0008088975242811817, 0.014634960934157885, 0.06719690805473262, 0.14256815518970048, 0.2075360716737022], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999879714, 0.9999960902535603, 0.9993142549831131, 0.9874837565988649, 0.94082834820421, 0.8683594436979012, 0.7984812516421578], "TOTAL_ENERGY": [2.4999999999579003, 2.4999863159235662, 2.497600765525802, 2.4564416338818993, 2.2980105297150466, 2.063782536446013, 1.8515886974735065]}, "NODE_285": {"MOMENTUM_X": [7.835600124951744e-25, 1.0496022814319672e-12, 1.1462876924362256e-08, 5.114997377435374e-06, 0.0003191444096370882, 0.0049715122611341585, 0.027519078764464525], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999990884, 0.9999999900550844, 0.9999955810765778, 0.9997254840850719, 0.9957325240447549, 0.9761925681064736], "TOTAL_ENERGY": [2.5, 2.4999999999968097, 2.4999999651927958, 2.499984533806525, 2.499039324549192, 2.4850923976656496, 2.4175089456570213]}, "NODE_577": {"MOMENTUM_X": [0.3447385437829659, 0.4181859431769427, 0.38980049588435806, 0.3936348740255444, 0.4006945454654764, 0.3932680596242275, 0.3965929231670182], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3475935949919491, 0.43711753716752044, 0.40086140228452355, 0.40380806301186134, 0.4092942574068467, 0.40065244220497276, 0.4034393236732541], "TOTAL_ENERGY": [0.9378021660745363, 0.9143387409163373, 0.9030722422608324, 0.8988468832321957, 0.8994349265591735, 0.8935866484199491, 0.8940786247924429]}, "ELEMENT_1167": {}, "NODE_1067": {"MOMENTUM_X": [0.0, 5.939041343298559e-52, 1.6959714846343258e-38, 6.49393566516115e-30, 9.432830140772833e-23, 6.704690101749394e-17, 5.690087411469739e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000050446], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000017, 0.2500000000014126]}, "NODE_316": {"MOMENTUM_X": [2.408686814412223e-20, 4.612216279360348e-11, 1.8649101137410535e-07, 4.140163437209608e-05, 0.0014838642919585386, 0.014469891192289554, 0.055099231552020296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999612006, 0.9999998432067643, 0.9999652284927352, 0.9987523063421384, 0.9877356317240669, 0.952188922243619], "TOTAL_ENERGY": [2.5, 2.499999999864202, 2.4999994512237307, 2.4998783020475863, 2.495635702343782, 2.4573061603873474, 2.3359892549837977]}, "NODE_136": {"MOMENTUM_X": [0.0, 6.172627296781954e-31, 7.914669831752454e-22, 1.7199349165253334e-15, 6.213281489110992e-12, 3.277640412997499e-09, 4.372497774706482e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999984, 0.9999999999947403, 0.9999999972227922, 0.9999996292843042], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999995, 2.4999999999815916, 2.499999990279774, 2.499998702495326]}, "NODE_687": {"MOMENTUM_X": [2.4882680363570333e-08, 0.009622559104202646, 0.26684148980175393, 0.24781099679841911, 0.30492970704142763, 0.3822753251522605, 0.42247762486192697], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000234549553, 0.13245373171624966, 0.27604466950403506, 0.27374964754024095, 0.3280883794966841, 0.41308281252481127, 0.4563185096948192], "TOTAL_ENERGY": [0.25000006567389027, 0.2720759546873722, 0.9198734612283906, 0.8545711933269188, 0.9053515612615461, 0.9365233060193151, 0.9556885618995816]}, "NODE_1072": {"MOMENTUM_X": [0.0, 1.4093098089879918e-54, 1.2524035630457974e-40, 2.3708310271467983e-32, 2.9720731077685907e-25, 1.3509623341528402e-18, 1.7364081306005404e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001638], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000459]}, "ELEMENT_768": {}, "ELEMENT_801": {}, "NODE_952": {"MOMENTUM_X": [0.0, 6.907092125192153e-33, 1.3879295104943444e-23, 1.0880739183637529e-16, 2.301285946928855e-12, 1.8060203491307475e-08, 0.00011304446308576472], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000008, 0.1250000000021683, 0.1250000170155851, 0.1251059390089996], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000003, 0.2500000000060712, 0.25000004764364353, 0.2502968334702293]}, "NODE_204": {"MOMENTUM_X": [0.0, 8.593939591668901e-21, 3.3852137668453445e-14, 2.037301282622317e-10, 1.0896648792626338e-07, 1.1201739731077056e-05, 0.0003348643246963392], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999729, 0.9999999998382028, 0.999999913632079, 0.9999911208393751, 0.9997336068322221], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999906, 2.4999999994337103, 2.499999697712295, 2.4999689230999165, 2.499067756329789]}, "ELEMENT_333": {}, "NODE_423": {"MOMENTUM_X": [7.300840731167259e-09, 0.00017255954143455702, 0.008869305398388417, 0.06314768928616193, 0.15389275677712905, 0.22914736837416888, 0.2782101534796331], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999931592957, 0.9998396111908557, 0.9918861363478517, 0.9418499313445985, 0.8527162908303072, 0.7697131984974842, 0.7077148677191688], "TOTAL_ENERGY": [2.4999999760575347, 2.4994386840526763, 2.471697124804567, 2.301013941908717, 2.01336013080056, 1.7652638477406224, 1.5928572741438018]}, "ELEMENT_7": {}, "ELEMENT_960": {}, "ELEMENT_1904": {}, "NODE_939": {"MOMENTUM_X": [0.0, 2.3932822603859275e-31, 2.660403425152127e-22, 5.984361393849624e-16, 1.1799994087026729e-11, 1.0175823226544289e-07, 0.0007773273566723425], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000056, 0.1250000000111387, 0.12500009569228074, 0.12569659640717382], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000155, 0.2500000000311884, 0.2500002679385515, 0.25195995880209066]}, "ELEMENT_9": {}, "NODE_1049": {"MOMENTUM_X": [0.0, 4.2019967077949567e-50, 1.4255682758809205e-37, 1.500884695526848e-29, 1.3116866600121042e-22, 8.197305544501947e-17, 8.152584608661071e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.1250000000007708], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000002, 0.2500000000021583]}, "ELEMENT_1932": {}, "ELEMENT_695": {}, "NODE_624": {"MOMENTUM_X": [0.031493383338302636, 0.2947777534270466, 0.3608280593442722, 0.4222310702992068, 0.39731612840481284, 0.390796002940683, 0.3982319102341898], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1461611207677081, 0.3038169898829573, 0.39060247054292646, 0.45551408115714925, 0.42860294028438, 0.4217593995494766, 0.42992501366599045], "TOTAL_ENERGY": [0.3191329748594695, 0.9410833493522884, 0.921879261127215, 0.9546802814382765, 0.9432395251341977, 0.9398435992645472, 0.9432092709771619]}, "NODE_907": {"MOMENTUM_X": [0.0, 5.29932602075079e-26, 7.356045334883267e-18, 6.90325199458357e-13, 7.853199576232932e-09, 5.454069682776777e-05, 0.08568709202780608], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000006504, 0.12500000738946015, 0.12505112015069642, 0.17890044298295132], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000018211, 0.25000002069048943, 0.25014318404276514, 0.447714785926015]}, "NODE_625": {"MOMENTUM_X": [0.03290614575480611, 0.2898166195234309, 0.36078181748964105, 0.4158461931730672, 0.39320373570463674, 0.39161478803321775, 0.39696011944942144], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.14702607037296217, 0.3019850918347797, 0.39104513865988294, 0.45034684069882785, 0.425662186236494, 0.4237790193097383, 0.4293425709538504], "TOTAL_ENERGY": [0.3222612916185318, 0.9316935782659677, 0.923829135691809, 0.9500766971343877, 0.9400845289892514, 0.9396454397939934, 0.9425033965451812]}, "NODE_1080": {"MOMENTUM_X": [0.0, 0.0, 4.717515351759331e-43, 1.74937669657698e-34, 2.577537144837191e-27, 4.938520856047224e-21, 6.141810274341425e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000058], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000167]}, "ELEMENT_525": {}, "ELEMENT_151": {}, "ELEMENT_431": {}, "ELEMENT_447": {}, "NODE_1047": {"MOMENTUM_X": [0.0, 9.898013560991425e-51, 3.194957680780144e-38, 4.36933700862006e-30, 5.1963858677617975e-23, 2.9863452214335274e-17, 3.3923376001437205e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000032138], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000008999]}, "ELEMENT_856": {}, "NODE_672": {"MOMENTUM_X": [7.813766159560682e-08, 0.022529914177476112, 0.29734666063658965, 0.24365507106731102, 0.3129086798938817, 0.4030468333838971, 0.4231591571365492], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500008341568603, 0.14188980271427493, 0.2958628140016365, 0.27670161408802985, 0.34356146837892504, 0.4440793269775744, 0.46616762112587606], "TOTAL_ENERGY": [0.2500002335640628, 0.3024017142336227, 1.0104161601296608, 0.8478321754208417, 0.9077517975226597, 0.943057994593585, 0.9525427626649978]}, "ELEMENT_687": {}, "ELEMENT_608": {}, "ELEMENT_398": {}, "ELEMENT_650": {}, "NODE_302": {"MOMENTUM_X": [4.421631235853504e-25, 2.685078885002592e-13, 3.548081712919444e-09, 2.013766212157898e-06, 0.00016265104974964525, 0.0032462994342215244, 0.02206171447493802], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999997737, 0.9999999970164989, 0.9999983111189393, 0.9998638128118755, 0.9972773214092825, 0.9812831068319349], "TOTAL_ENERGY": [2.5, 2.4999999999992086, 2.499999989557747, 2.499994088922029, 2.4995233777963293, 2.490482551763434, 2.435015670915415]}, "NODE_1031": {"MOMENTUM_X": [0.0, 6.5327964864262094e-46, 3.8581732676411265e-34, 8.970024789827592e-26, 5.306899369096893e-19, 1.3802204381125909e-14, 1.013107121489357e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001305, 0.125000000096009], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000366, 0.2500000002688252]}, "ELEMENT_1764": {}, "ELEMENT_187": {}, "ELEMENT_1727": {}, "NODE_239": {"MOMENTUM_X": [0.0, 6.992538532131825e-17, 8.263318887447876e-12, 1.7011408922443434e-08, 3.831924240406824e-06, 0.00018601274220699722, 0.0028280104984960463], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999999, 0.9999999999928251, 0.9999999852629892, 0.9999966939960293, 0.9998401678227465, 0.997576405673923], "TOTAL_ENERGY": [2.5, 2.4999999999999996, 2.499999999974887, 2.499999948420462, 2.4999884290068803, 2.4994406310265167, 2.4915266554550066]}, "ELEMENT_484": {}, "ELEMENT_835": {}, "ELEMENT_361": {}, "NODE_882": {"MOMENTUM_X": [0.0, 1.0682649549326287e-23, 3.665732519210523e-16, 1.7502960397648013e-11, 1.9223907767114583e-07, 0.0017767403394890057, 0.24367057669529596], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000036, 0.12500000001654926, 0.12500018102411156, 0.12650835158668988, 0.26202532377411625], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000094, 0.2500000000463379, 0.25000050686808684, 0.2542696811367576, 0.8520631357834543]}, "ELEMENT_1963": {}, "NODE_124": {"MOMENTUM_X": [0.0, 8.565650770986032e-43, 4.41638710561211e-32, 9.176940472194102e-25, 1.0127013724669655e-17, 4.567629680832288e-14, 3.0940448898094476e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999567, 0.9999999999708388], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999848, 2.4999999998979354]}, "ELEMENT_1077": {}, "NODE_594": {"MOMENTUM_X": [0.284971623504024, 0.4315054102439607, 0.4147575295340318, 0.4165846317202676, 0.41351198375622594, 0.4105722187036149, 0.40908715254263484], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.297487443066484, 0.4452394478713717, 0.4244764885987993, 0.4249812683694195, 0.4208796773855498, 0.4172914307247146, 0.4155400871180624], "TOTAL_ENERGY": [0.8641851201630196, 0.9535478355523348, 0.9432966234207187, 0.9394065213151617, 0.9322384913476328, 0.926555969163294, 0.9220772764349005]}, "ELEMENT_965": {}, "NODE_177": {"MOMENTUM_X": [0.0, 2.9261042983820315e-30, 1.4309896835984575e-21, 2.5427717927096557e-15, 8.538010344036398e-12, 4.426074104615358e-09, 5.901999522456705e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999979, 0.9999999999927902, 0.9999999962702791, 0.9999995036324641], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999925, 2.499999999974765, 2.499999986945976, 2.499998262714081]}, "NODE_1009": {"MOMENTUM_X": [0.0, 5.1476585852440124e-42, 4.640421055107675e-31, 7.016380001777185e-23, 7.156966486654561e-17, 8.506637817146022e-13, 5.621566179350554e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000080547, 0.1250000053315045], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000002, 0.2500000000022554, 0.25000001492821317]}, "ELEMENT_345": {}, "NODE_217": {"MOMENTUM_X": [0.0, 4.05556083573802e-20, 1.3898357849901953e-13, 6.05618565212687e-10, 2.55871537690452e-07, 2.1890390907728647e-05, 0.0005633818006215721], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999998817, 0.999999999483615, 0.9999997817309736, 0.9999813427748339, 0.9995200967528081], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999586, 2.499999998192652, 2.4999992360585037, 2.4999347003417864, 2.498320718688274]}, "ELEMENT_1774": {}, "ELEMENT_107": {}, "NODE_105": {"MOMENTUM_X": [0.0, 3.940622767503332e-34, 2.685939803664356e-24, 5.265928683145326e-17, 4.420701258187923e-13, 3.627339883402487e-10, 6.998268872153815e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999996495, 0.9999999997128232, 0.9999999446066093], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999987725, 2.4999999989948805, 2.4999998061231388]}, "ELEMENT_1433": {}, "ELEMENT_128": {}, "ELEMENT_889": {}, "ELEMENT_676": {}, "NODE_536": {"MOMENTUM_X": [0.2642870106471379, 0.37410259978302557, 0.38732422439038505, 0.3929259014655195, 0.39362526739373793, 0.39460772239494957, 0.394993004730863], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.6762246672490104, 0.5217840528249663, 0.4770617991077708, 0.45738808221504484, 0.4440010537608177, 0.4363084381412719, 0.43081652586930225], "TOTAL_ENERGY": [1.507919028939473, 1.146177375821264, 1.046757505999169, 1.002527537345435, 0.9769579530593441, 0.961007774792088, 0.9499907129473613]}, "ELEMENT_1196": {}, "ELEMENT_233": {}, "NODE_443": {"MOMENTUM_X": [1.653590123185569e-05, 0.011568034808253688, 0.08492895510753704, 0.18806507744545536, 0.26143771763395063, 0.30496380740650614, 0.33109995166863265], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999986034934875, 0.9901336055957513, 0.9243836164764303, 0.820175459789958, 0.7322133791029823, 0.6699642257591771, 0.6260754689034281], "TOTAL_ENERGY": [2.499951122822349, 2.4656377300270202, 2.2438368305389425, 1.9163683016598667, 1.6629673034622217, 1.4964695902195246, 1.385441656305362]}, "NODE_783": {"MOMENTUM_X": [2.0824241880260525e-22, 8.261305698888129e-12, 3.5467197149157455e-07, 0.00343698835519224, 0.2627443858052717, 0.2287062897875515, 0.25646368598301184], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000779352, 0.1250003334748758, 0.12779227125330364, 0.2717877461309711, 0.25923859311264297, 0.27279826650506017], "TOTAL_ENERGY": [0.25, 0.2500000000218219, 0.25000093373166027, 0.257984306894985, 0.9033804682993174, 0.8239850160413642, 0.8907447601523099]}, "NODE_666": {"MOMENTUM_X": [4.883328278260498e-06, 0.10873245760777357, 0.27310216295612066, 0.2901862634114396, 0.3773279971869054, 0.4244431695113173, 0.39895743862980154], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500460527835985, 0.19195216343961896, 0.2827783544719332, 0.31497849515509335, 0.4072906858676219, 0.4585500492405664, 0.4310393635695501], "TOTAL_ENERGY": [0.25001289529275755, 0.5050372534442489, 0.9263827749324968, 0.8901773864548487, 0.9359535545465242, 0.9566345603630526, 0.9447561728059201]}, "NODE_766": {"MOMENTUM_X": [7.066884929460593e-18, 3.3504380391474624e-09, 5.454486271120843e-05, 0.08346183938165627, 0.273607690422479, 0.24752324955016075, 0.2610891702326351], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000316380777, 0.12505138765920482, 0.17778395830544208, 0.2798212690177992, 0.26901305351027505, 0.28222460316399917], "TOTAL_ENERGY": [0.25, 0.2500000088586621, 0.25014393372456367, 0.4425508844131628, 0.9394629519639476, 0.869657927821885, 0.880778665271662]}, "NODE_121": {"MOMENTUM_X": [0.0, 1.96769942541608e-34, 8.472985220892456e-25, 1.4246459837313185e-17, 1.590501437122574e-13, 1.4346860036453476e-10, 3.096099135485327e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998659, 0.9999999998790173, 0.999999973888747], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999995306, 2.4999999995765605, 2.4999999086106155]}, "ELEMENT_1185": {}, "ELEMENT_736": {}, "ELEMENT_1137": {}, "ELEMENT_65": {}, "ELEMENT_1296": {}, "NODE_656": {"MOMENTUM_X": [5.773889887338618e-05, 0.189321313239208, 0.26602981929409353, 0.3277213445746465, 0.4097512420241309, 0.4158163540815518, 0.38668436886342716], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12505403591145214, 0.23603124989272029, 0.2853238275787669, 0.3539494815191556, 0.4427399164486328, 0.4491575019425335, 0.41792547453949247], "TOTAL_ENERGY": [0.2501513674767525, 0.7139386799742589, 0.8890521102317711, 0.9122296485020023, 0.9497563053330477, 0.9528951938829899, 0.9387944674363885]}, "ELEMENT_316": {}, "ELEMENT_304": {}, "NODE_309": {"MOMENTUM_X": [1.0473435287486281e-22, 3.96972109015161e-12, 2.841268040196597e-08, 9.981451455561955e-06, 0.0005322058538007237, 0.007337388157624604, 0.036598931287094016], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999966478, 0.9999999760315966, 0.9999916003909748, 0.9995525476892403, 0.9938096923795461, 0.9686089525837573], "TOTAL_ENERGY": [2.5, 2.499999999988267, 2.49999991611059, 2.4999706015070084, 2.498434263563073, 2.4783941783270906, 2.391585594803317]}, "NODE_31": {"MOMENTUM_X": [0.0, 7.077042315510536e-48, 1.818543474301584e-35, 2.248872678249634e-27, 2.712538313192732e-20, 1.958652656645448e-15, 1.894413634366669e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999983, 0.9999999999983993], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999942, 2.499999999994398]}, "ELEMENT_788": {}, "ELEMENT_1337": {}, "ELEMENT_1549": {}, "NODE_232": {"MOMENTUM_X": [0.0, 1.7486996655763697e-18, 9.000703945717617e-13, 2.6669393068683144e-09, 8.316335758289439e-07, 5.509555815623823e-05, 0.0011354368653682283], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999992408, 0.9999999977500468, 0.99999929802092, 0.9999534689041889, 0.9990395368190138], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999973435, 2.4999999921251645, 2.499997543074209, 2.4998371450507366, 2.4966398889095367]}, "ELEMENT_467": {}, "ELEMENT_1228": {}, "NODE_219": {"MOMENTUM_X": [0.0, 5.412125688709362e-20, 1.2974335391200387e-13, 5.596746959271714e-10, 2.3596529695747082e-07, 2.0299270389851798e-05, 0.0005289408527802304], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999998902, 0.999999999526278, 0.9999998000649839, 0.9999827950647973, 0.9995513128945326], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999616, 2.499999998341973, 2.499999300227525, 2.4999397832673265, 2.4984299299215915]}, "NODE_697": {"MOMENTUM_X": [1.3666314383938318e-09, 0.0013988977791738414, 0.2145649226531933, 0.24630610326451713, 0.2810720528985101, 0.34905753494793024, 0.414767478703535], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000012849901, 0.12622297846044575, 0.2488748088658009, 0.2692357388163345, 0.3013980077246226, 0.376752992115184, 0.4475641197749605], "TOTAL_ENERGY": [0.2500000035979723, 0.2534553362493265, 0.7801999054015216, 0.8623968399094352, 0.8959405407886277, 0.9209523573119708, 0.9519232545968574]}, "NODE_922": {"MOMENTUM_X": [0.0, 1.659256160683941e-27, 1.5876476404384896e-18, 1.2974325287688234e-13, 1.520965223214668e-09, 9.403502921258866e-06, 0.032935059010312295], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000012373, 0.12500000145328855, 0.12500899571548044, 0.14778546114718674], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000034633, 0.2500000040692078, 0.25002518943793317, 0.3236669755696793]}, "ELEMENT_1622": {}, "ELEMENT_81": {}, "NODE_1033": {"MOMENTUM_X": [0.0, 6.818252300333468e-46, 4.806722384774958e-34, 9.673897844234291e-26, 1.2991830730480172e-18, 1.9868127924181232e-14, 1.4332657146668e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001926, 0.12500000013925724], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000005407, 0.25000000038992043]}, "NODE_946": {"MOMENTUM_X": [0.0, 1.5548733336603175e-30, 3.2391835456107915e-21, 3.1702495197697925e-15, 5.3316267108597686e-11, 3.743448096708562e-07, 0.002480764497338102], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000283, 0.12500000004730596, 0.125000330995202, 0.12696097979078885], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000079, 0.2500000001324567, 0.2500009267887516, 0.255579523058047]}, "ELEMENT_46": {}, "ELEMENT_1669": {}, "ELEMENT_1465": {}, "NODE_155": {"MOMENTUM_X": [0.0, 2.3978492863987601e-29, 1.8277650828197925e-20, 9.58742214250928e-15, 2.5529071504625243e-11, 1.0775701398622896e-08, 1.1850960270094044e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999919, 0.9999999999784827, 0.9999999909164378, 0.9999990009857149], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999716, 2.4999999999246896, 2.499999968207533, 2.4999965034518703]}, "ELEMENT_180": {}, "NODE_28": {"MOMENTUM_X": [0.0, 9.312737059254287e-46, 1.264725029791469e-33, 1.0079331086513618e-25, 5.840471676652716e-19, 1.8223383305532935e-14, 1.3851395899729167e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999842, 0.9999999999880272], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999945, 2.499999999958096]}, "ELEMENT_1269": {}, "ELEMENT_256": {}, "ELEMENT_1172": {}, "ELEMENT_897": {}, "ELEMENT_1219": {}, "NODE_15": {"MOMENTUM_X": [0.0, 1.7403990861992756e-52, 1.781546526911276e-38, 3.58361418817462e-30, 4.007145400002513e-23, 7.195421617564136e-17, 9.839973758958769e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999999164], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997082]}, "ELEMENT_640": {}, "NODE_980": {"MOMENTUM_X": [0.0, 2.1711724939444975e-39, 2.632146242417392e-29, 1.6006077077540568e-21, 4.265906139102758e-16, 5.628179586640992e-12, 5.090098983470952e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000044, 0.12500000000602055, 0.12500005436266742], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000013, 0.2500000000168576, 0.2500001522155122]}, "ELEMENT_1086": {}, "ELEMENT_509": {}, "ELEMENT_1136": {}, "ELEMENT_163": {}, "NODE_448": {"MOMENTUM_X": [1.5794705083370295e-05, 0.011268646536394877, 0.08423816190292138, 0.18816050213388716, 0.26219218969008323, 0.3058294675896387, 0.33187152782074275], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999867290084615, 0.9904630914990257, 0.925537363306995, 0.8209897837032524, 0.7321887948112117, 0.6694222433928846, 0.6252863198756529], "TOTAL_ENERGY": [2.4999535520259024, 2.466780378614166, 2.247658274659857, 1.9189513332295638, 1.663099053929721, 1.4952183334516567, 1.3834950043568062]}, "NODE_117": {"MOMENTUM_X": [0.0, 1.96064302110523e-32, 8.791879476741773e-23, 4.897511949263603e-16, 2.4155936200342578e-12, 1.5375055713824067e-09, 2.369431435546547e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999997, 0.9999999999980843, 0.9999999987827016, 0.9999998124002096], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999987, 2.4999999999932947, 2.499999995739455, 2.4999993434008085]}, "NODE_537": {"MOMENTUM_X": [0.26726598853110783, 0.37335347291903265, 0.38741630686734857, 0.3925189016016297, 0.39348929338821026, 0.39476983823819256, 0.39507638187161526], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.6781141763750634, 0.5207532205441675, 0.47638799926989356, 0.4561345576848544, 0.44308162251643807, 0.4357790277366609, 0.4302516026904115], "TOTAL_ENERGY": [1.5124936534198374, 1.144223855105413, 1.0458744160530933, 1.000943744164246, 0.9753835014287552, 0.9596658557737524, 0.9487767963675219]}, "ELEMENT_684": {}, "ELEMENT_1000": {}, "ELEMENT_486": {}, "ELEMENT_1387": {}, "ELEMENT_1988": {}, "NODE_388": {"MOMENTUM_X": [6.308433397064812e-12, 2.487302221459768e-06, 0.0005468327969328849, 0.012068467422888779, 0.06275244161052197, 0.14060556229597632, 0.2082235830936039], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999947268, 0.9999979227729433, 0.9995436703989283, 0.9898543422281109, 0.945587176287478, 0.8714792163099058, 0.79877560447028], "TOTAL_ENERGY": [2.4999999999815437, 2.499992729715298, 2.4984032334690336, 2.4646550210583706, 2.313912681650612, 2.073670642637031, 1.8526217900489153]}, "NODE_42": {"MOMENTUM_X": [0.0, 5.718271555027449e-50, 4.082956635222879e-37, 7.497665245613248e-29, 7.7623245008724365e-22, 2.062474547278786e-16, 2.7511187876728843e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999997677], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999991864]}, "ELEMENT_1943": {}, "NODE_447": {"MOMENTUM_X": [1.633793698209202e-05, 0.01143474186631644, 0.08442536519617182, 0.1879957430674431, 0.2618905684462626, 0.3055466561450534, 0.33164557700864356], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.99998623442031, 0.9902932438255104, 0.9251842716944819, 0.820863893536824, 0.7322839640529554, 0.6696384078500331, 0.625567900331786], "TOTAL_ENERGY": [2.4999518210058262, 2.466191610457021, 2.246491363368321, 1.9185286848387406, 1.6632957596480142, 1.495727918309278, 1.3841704048362937]}, "ELEMENT_1853": {}, "ELEMENT_339": {}, "NODE_580": {"MOMENTUM_X": [0.3446593532134089, 0.41778554228685005, 0.3905770909036611, 0.3955053286748131, 0.39625336463015937, 0.39413678162430504, 0.3952828426888902], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3476399421947251, 0.4361652575095671, 0.40183582930586254, 0.4047146098934307, 0.4035187523809579, 0.39994972691073766, 0.40002886576552255], "TOTAL_ENERGY": [0.9375876536093429, 0.9148173825679177, 0.9008079904790772, 0.8977853030571445, 0.8931736769777059, 0.8890634523967998, 0.8872438508160646]}, "ELEMENT_1239": {}, "ELEMENT_1893": {}, "ELEMENT_1335": {}, "NODE_109": {"MOMENTUM_X": [0.0, 2.709568087210577e-34, 1.037273315828029e-24, 2.5787463206598247e-17, 2.3528184098972024e-13, 2.0510030941585046e-10, 4.242535308888941e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999997992, 0.9999999998250482, 0.9999999638124581], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999298, 2.499999999387669, 2.499999873343606]}, "ELEMENT_1058": {}, "NODE_880": {"MOMENTUM_X": [0.0, 1.3156765932441573e-20, 4.7805142413430266e-14, 1.3709262755761166e-09, 1.0535114700264567e-05, 0.03711455826001905, 0.26019854026573874], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000000427, 0.1250000012164678, 0.12500928472557674, 0.14862155456318196, 0.2687613772155355], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000011946, 0.2500000034061098, 0.2500259989551357, 0.3278986801711762, 0.8950274618830887]}, "NODE_788": {"MOMENTUM_X": [1.4123025031440405e-21, 2.874109484293862e-11, 9.259002498674135e-07, 0.005467532926267468, 0.254462854016682, 0.23780513956148971, 0.2531145986252411], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000002712874, 0.12500087446819588, 0.12946892032717422, 0.2696173168651209, 0.2636261204719094, 0.2722726452561449], "TOTAL_ENERGY": [0.25, 0.2500000000759605, 0.25000244852520204, 0.2629336927728851, 0.8878589248217175, 0.8477842556793739, 0.8815491668576303]}, "ELEMENT_1186": {}, "ELEMENT_971": {}, "ELEMENT_776": {}, "ELEMENT_1286": {}, "ELEMENT_72": {}, "ELEMENT_1152": {}, "ELEMENT_529": {}, "ELEMENT_109": {}, "ELEMENT_1392": {}, "ELEMENT_1699": {}, "NODE_214": {"MOMENTUM_X": [0.0, 1.2586917509996777e-21, 1.1576198593652645e-14, 7.583441096822223e-11, 4.5784041362928046e-08, 5.444395805465082e-06, 0.00019083153934171512], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999902, 0.9999999999361244, 0.9999999614472329, 0.9999954185975882, 0.999839372876346], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999966, 2.4999999997764357, 2.4999998650653183, 2.4999839651308378, 2.499437849145751]}, "NODE_609": {"MOMENTUM_X": [0.0958306769271545, 0.3141001782721643, 0.40538595743602657, 0.4120460305662708, 0.3873150759321574, 0.39643924109559897, 0.39889437541166334], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1830404096790816, 0.33345216680928097, 0.436378445104189, 0.4440780783679188, 0.41729141911625767, 0.42719965691391426, 0.42983822847521197], "TOTAL_ENERGY": [0.4694804036610437, 0.9175482512990033, 0.9460431630696433, 0.9485009192465058, 0.9379193693033087, 0.9422402271710087, 0.943553547153556]}, "NODE_201": {"MOMENTUM_X": [0.0, 5.677698493962979e-25, 4.594699378607219e-17, 1.2433587091397297e-12, 1.5327439736345277e-09, 3.420344633097278e-07, 2.1292758643712465e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999989457, 0.9999999987026802, 0.9999997110852518, 0.9999820546540409], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.49999999999631, 2.4999999954593806, 2.4999989887985414, 2.499937191858307]}, "ELEMENT_120": {}, "ELEMENT_1657": {}, "ELEMENT_1376": {}, "ELEMENT_1674": {}, "ELEMENT_410": {}, "ELEMENT_1394": {}, "ELEMENT_1377": {}, "ELEMENT_1848": {}, "NODE_978": {"MOMENTUM_X": [0.0, 2.3201557437070827e-36, 4.7433174292837954e-26, 1.7722651267016724e-18, 6.124071531013072e-14, 5.260995345774831e-10, 3.2752958418942227e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000005954, 0.12500000051127785, 0.12500318428945573], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000016664, 0.25000000143157797, 0.2500089161861999]}, "ELEMENT_1035": {}, "ELEMENT_1038": {}, "NODE_1018": {"MOMENTUM_X": [0.0, 5.707145336023291e-44, 1.2934637351567815e-32, 1.6431730989153437e-24, 3.743141667646819e-18, 8.130846503806275e-14, 6.238618138912713e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000007663, 0.12500000058780755], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000021466, 0.25000000164586117]}, "ELEMENT_820": {}, "NODE_663": {"MOMENTUM_X": [3.7668612937373163e-06, 0.10934467182603413, 0.2702724067979116, 0.29330298796091014, 0.3849784306757377, 0.4278760742715312, 0.39259378146805685], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250035234367842, 0.19116365698913534, 0.28047661135082597, 0.31565804371361217, 0.4138799705892065, 0.4600665893158498, 0.42242227009486993], "TOTAL_ENERGY": [0.25000986591945507, 0.5029071547535058, 0.9191071520560764, 0.8958432985103579, 0.9396441893480275, 0.9595563242386136, 0.9425041678094439]}, "ELEMENT_487": {}, "NODE_165": {"MOMENTUM_X": [0.0, 1.2169344404447709e-29, 9.990686030688999e-21, 5.939125442373285e-15, 1.6955759707040597e-11, 7.733920996456101e-09, 9.159494629772844e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.999999999999995, 0.9999999999856799, 0.9999999934747164, 0.9999992280738729], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999822, 2.499999999949879, 2.499999977161507, 2.499997298259666]}, "ELEMENT_104": {}, "NODE_100": {"MOMENTUM_X": [0.0, 5.043111501458827e-42, 2.0357942186582888e-31, 4.441036076605994e-24, 2.786465158086952e-17, 1.1693076247063754e-13, 6.911563677629828e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999005, 0.999999999941377], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999996523, 2.49999999979482]}, "NODE_207": {"MOMENTUM_X": [0.0, 1.8882004774114233e-21, 1.670965804760262e-14, 1.0511066514964958e-10, 6.010796501051271e-08, 6.746783903176065e-06, 0.0002237994172798639], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.999999999999986, 0.9999999999110479, 0.9999999490761198, 0.9999942821359805, 0.9998102100241012], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999507, 2.4999999996886677, 2.499999821766425, 2.499979987536889, 2.4993357961977583]}, "NODE_1060": {"MOMENTUM_X": [0.0, 2.2522300499241063e-52, 3.603493166740285e-39, 5.12646354169949e-31, 4.995145638558397e-24, 1.0373219681453727e-17, 1.0148503196083206e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000009603], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000002689]}, "NODE_406": {"MOMENTUM_X": [4.5415522132554516e-08, 0.0005960122807578994, 0.017704891378566855, 0.08430990916939164, 0.1690444032444528, 0.23449665419192645, 0.27818463449545633], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999634312231, 0.9995256843163054, 0.9856868857972617, 0.9281924023235743, 0.845282426463266, 0.7704063363964645, 0.7121446297919913], "TOTAL_ENERGY": [2.499999872009287, 2.498340398999314, 2.4502700841852576, 2.256837856860164, 1.9943042934033732, 1.773117037879556, 1.6111849529376316]}, "ELEMENT_220": {}, "ELEMENT_881": {}, "ELEMENT_1194": {}, "ELEMENT_1406": {}, "ELEMENT_385": {}, "ELEMENT_1514": {}, "ELEMENT_1478": {}, "ELEMENT_1221": {}, "ELEMENT_1543": {}, "NODE_286": {"MOMENTUM_X": [8.218916386107768e-25, 9.30736553715776e-13, 1.0021602487756742e-08, 4.4975929779714225e-06, 0.00028693230667900754, 0.0046191508618471586, 0.026440549486541613], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999992082, 0.9999999914568933, 0.9999961651506816, 0.9997554050101151, 0.9960574175029193, 0.9772046861615812], "TOTAL_ENERGY": [2.5, 2.4999999999972293, 2.4999999700991267, 2.499986578056983, 2.499144022535002, 2.48622556928445, 2.4209848352674017]}, "NODE_708": {"MOMENTUM_X": [7.376166595056561e-11, 0.00017370455986637573, 0.13564342417174696, 0.2601380206048567, 0.2636456172433159, 0.31388468137024433, 0.39189558762263305], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000006937795, 0.12516069707691888, 0.2066570476580824, 0.274158993624282, 0.2836651233668865, 0.3386285246843817, 0.42280599684853454], "TOTAL_ENERGY": [0.2500000001942582, 0.25045044949074563, 0.572731389014145, 0.9022736235026776, 0.8844164388311143, 0.9050706565540965, 0.9413198229521624]}, "NODE_972": {"MOMENTUM_X": [0.0, 1.5902440549740344e-36, 9.702364392125504e-27, 2.1034115999229565e-19, 1.9335353863757123e-14, 2.0339957569428747e-10, 1.6266309805641277e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000183, 0.12500000019185079, 0.1250015268096768], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000005124, 0.2500000005371822, 0.2500042751094152]}, "NODE_654": {"MOMENTUM_X": [5.718435711078445e-05, 0.18963616414022988, 0.26479973471608986, 0.3286500324220202, 0.40891639312210376, 0.4163384396204732, 0.38718578390671576], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12505342502410566, 0.23608405349860465, 0.28480513939068036, 0.35436841838877414, 0.44156824278409124, 0.4496081436902355, 0.41807333266259494], "TOTAL_ENERGY": [0.25014965563986635, 0.7144653714263431, 0.885649015517655, 0.9139613196901408, 0.9493470449070397, 0.9527231149811242, 0.9393108098999204]}, "NODE_534": {"MOMENTUM_X": [0.26564548350392403, 0.374619985325197, 0.3872525935224786, 0.3929090326085016, 0.3937241230846043, 0.3943794065613944, 0.39533270013895216], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.676385823136574, 0.5220827772454631, 0.47695385442767074, 0.4572546256412485, 0.44406506442736715, 0.4360226068388976, 0.4311533824860491], "TOTAL_ENERGY": [1.5093813883394025, 1.145643376257752, 1.0461308989614089, 1.00255479343988, 0.9771582632816611, 0.9612420741039766, 0.9506198464393414]}, "ELEMENT_712": {}, "NODE_156": {"MOMENTUM_X": [0.0, 1.514474763974328e-27, 1.0012014237316608e-18, 1.7115289187674872e-13, 3.099353984267453e-10, 9.138718196745482e-08, 7.089843624781769e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999998638, 0.999999999754301, 0.9999999276206897, 0.9999943813962776], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999995235, 2.499999999140053, 2.499999746672426, 2.4999803349508096]}, "ELEMENT_1292": {}, "ELEMENT_401": {}, "ELEMENT_1812": {}, "ELEMENT_1698": {}, "ELEMENT_62": {}, "ELEMENT_306": {}, "ELEMENT_511": {}, "ELEMENT_203": {}, "NODE_613": {"MOMENTUM_X": [0.09602705952054492, 0.3158078345872185, 0.40451990981130037, 0.4126759589328456, 0.38845673943460257, 0.396771006112593, 0.39599786974984463], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1834104615406963, 0.3340548541577229, 0.4364446035488626, 0.44499745000331437, 0.4187684762241385, 0.42804230227875056, 0.4273347837545883], "TOTAL_ENERGY": [0.470682912619333, 0.9231777112270746, 0.9443168854350497, 0.9492276929771668, 0.9385377676810165, 0.9419073379663782, 0.9415766933306837]}, "ELEMENT_913": {}, "NODE_916": {"MOMENTUM_X": [0.0, 3.372642419693321e-28, 1.3572086983096554e-19, 3.7421070942622463e-14, 5.554302906250764e-10, 4.860894001522378e-06, 0.027559958962907173], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000003558, 0.12500000052617533, 0.1250045689657756, 0.14372883946820514], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000009953, 0.2500000014732908, 0.2500127934776809, 0.30973359346600526]}, "NODE_890": {"MOMENTUM_X": [0.0, 1.209881479749951e-22, 2.5526675328428123e-15, 9.945859063490844e-11, 8.102529800192376e-07, 0.004802981714022375, 0.23403310720446663], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000247, 0.12500000009671464, 0.1250007878583916, 0.12899583398586847, 0.2608465763803802], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000694, 0.25000000027080105, 0.2500022060142954, 0.26151345548693483, 0.8384106078524242]}, "ELEMENT_620": {}, "ELEMENT_464": {}, "ELEMENT_1459": {}, "ELEMENT_1471": {}, "ELEMENT_846": {}, "NODE_77": {"MOMENTUM_X": [0.0, 1.0330539434334045e-52, 3.024090771345548e-39, 2.2196172417462875e-31, 2.2968627065668727e-24, 3.880974932320485e-18, 2.0655062581032795e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999826], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999387]}, "ELEMENT_1972": {}, "NODE_576": {"MOMENTUM_X": [0.34478734644881653, 0.41756422437638585, 0.39151702066632454, 0.3937307747907273, 0.4000998892088494, 0.3939109558206093, 0.3964290544656196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.34765839744910443, 0.436328660849033, 0.4030728850767238, 0.4040597958700307, 0.4093407380571194, 0.40199619045247253, 0.40421363880521705], "TOTAL_ENERGY": [0.9376268522414324, 0.9151512669434718, 0.9045390994192564, 0.899858100441382, 0.9009986795163296, 0.8963347535838305, 0.8966884933742058]}, "NODE_744": {"MOMENTUM_X": [7.231107468543776e-15, 3.1119773308822474e-07, 0.002910353378104835, 0.235765615157454, 0.24141480916903654, 0.2595103409656557, 0.29249244200823626], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000683, 0.12500029390060668, 0.12748515576389685, 0.2601653549365793, 0.26567911711674524, 0.2791980655512388, 0.31615102837376663], "TOTAL_ENERGY": [0.2500000000000191, 0.25000082292344233, 0.25708578983029134, 0.8377960650922613, 0.8555860997598232, 0.8844210136537005, 0.8953090525790893]}, "ELEMENT_1359": {}, "NODE_484": {"MOMENTUM_X": [0.015788805206096383, 0.17184311282963163, 0.2763863887192678, 0.32629213723530387, 0.3506416992519017, 0.36431991200576236, 0.3728079624663259], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9872124634641288, 0.8428132025471295, 0.7165199671154213, 0.6349578081673221, 0.5835674106745568, 0.5501614826243368, 0.5270612080486056], "TOTAL_ENERGY": [2.4555992703049476, 1.9884711444706713, 1.6260363804859606, 1.4140279814203796, 1.2889019528824581, 1.2093866390514934, 1.1553182742641384]}, "ELEMENT_150": {}, "ELEMENT_1062": {}, "ELEMENT_329": {}, "NODE_104": {"MOMENTUM_X": [0.0, 5.721764171033164e-38, 4.685584445469383e-28, 1.8057724394826783e-20, 3.5239486221642804e-15, 5.465717236789443e-12, 1.895694651748086e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999997, 0.9999999999953869, 0.9999999984007815], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999893, 2.4999999999838542, 2.4999999944027347]}, "NODE_185": {"MOMENTUM_X": [0.0, 1.4176632804109128e-24, 2.146802079314107e-16, 3.2203584039595687e-12, 3.372599099703767e-09, 6.390444939124799e-07, 3.4065759557424207e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999998, 0.9999999999972756, 0.9999999971435994, 0.9999994583534051, 0.999971120965202], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.4999999999904645, 2.499999990002598, 2.4999981042374873, 2.499898924849545]}, "NODE_87": {"MOMENTUM_X": [0.0, 6.697425281585382e-44, 7.207009511287944e-33, 1.8317210444347454e-25, 1.4657576392694338e-18, 2.144251024048489e-14, 1.575879173715121e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999818, 0.9999999999866265], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999936, 2.499999999953192]}, "ELEMENT_815": {}, "ELEMENT_1595": {}, "ELEMENT_6": {}, "NODE_521": {"MOMENTUM_X": [0.18783431556272623, 0.34020972702847524, 0.37446840663406866, 0.38417112364241807, 0.38841073632613055, 0.3918077477455332, 0.39322911305887265], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.833084839593262, 0.612521910053467, 0.5372362729362526, 0.4983602749012741, 0.47617668786790884, 0.4635035644982491, 0.4539554964739555], "TOTAL_ENERGY": [1.960638663714411, 1.3483605681500153, 1.1730142913093717, 1.089853752401976, 1.0442655708616522, 1.016083179427364, 0.9965373910115909]}, "ELEMENT_1713": {}, "ELEMENT_506": {}, "ELEMENT_45": {}, "ELEMENT_1677": {}, "ELEMENT_445": {}, "ELEMENT_1843": {}, "NODE_775": {"MOMENTUM_X": [1.2007097339637512e-19, 2.7635966563558353e-10, 6.677893012655219e-06, 0.02731556542831375, 0.2817938255209279, 0.2390506851932776, 0.2558554111788032], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000025999009, 0.12500627414850893, 0.14423332580415815, 0.28320656969425534, 0.26434444263958323, 0.2755723733143465], "TOTAL_ENERGY": [0.25, 0.2500000007279723, 0.2500175683453965, 0.31119042215685905, 0.9604362072694166, 0.8498556966506581, 0.8809895923552856]}, "ELEMENT_1968": {}, "ELEMENT_734": {}, "ELEMENT_1789": {}, "ELEMENT_1941": {}, "ELEMENT_1002": {}, "NODE_91": {"MOMENTUM_X": [0.0, 0.0, 2.3276901938191586e-41, 4.3201696443223055e-33, 4.801096234661956e-26, 8.261463675817467e-20, 2.2870552892076174e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999979], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999925]}, "ELEMENT_1683": {}, "NODE_471": {"MOMENTUM_X": [0.0005665974202179761, 0.05509594659131398, 0.17637450949665745, 0.2674198016044527, 0.3163525212851578, 0.3427600966907234, 0.35815362149948254], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9995250573355889, 0.9522865579913822, 0.8341447479130083, 0.7256076355979015, 0.6527123094088652, 0.6047197621205882, 0.5715338415680072], "TOTAL_ENERGY": [2.4983382421315614, 2.336608847378093, 1.9590184689867238, 1.6452598291787286, 1.452424592227773, 1.3331696289556152, 1.2542543443124883]}, "ELEMENT_1718": {}, "NODE_572": {"MOMENTUM_X": [0.42608279697988677, 0.40072231104232414, 0.408003449537867, 0.4018829374271575, 0.40312749003979376, 0.40112840782170955, 0.4010071993696253], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3664743021493152, 0.344988794125774, 0.3549846123488335, 0.35359837571214103, 0.35896459293250027, 0.36104434804909946, 0.36448969566627804], "TOTAL_ENERGY": [0.8123847911162427, 0.7888478054180927, 0.8010106285057939, 0.8046992852877133, 0.8121084732148778, 0.8172559900994393, 0.8228410039796407]}, "ELEMENT_1500": {}, "NODE_212": {"MOMENTUM_X": [0.0, 2.012922098604836e-23, 6.710473194684205e-16, 7.654778579874053e-12, 6.975429305976368e-09, 1.1980568287501342e-06, 5.8734526488441694e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999994, 0.9999999999935133, 0.9999999940997903, 0.999998988831828, 0.9999505236604632], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999982, 2.499999999977297, 2.4999999793492664, 2.4999964609133336, 2.4998268370617773]}, "ELEMENT_260": {}, "ELEMENT_117": {}, "NODE_607": {"MOMENTUM_X": [0.09077629477011007, 0.3089533405416842, 0.4177569128844076, 0.4188229822377216, 0.3815392750820544, 0.40501935001058115, 0.40231579280229723], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.17828287554033836, 0.32736520349746734, 0.4473919837381385, 0.44908034855833057, 0.4076962303912863, 0.43355583047116064, 0.43056898534733884], "TOTAL_ENERGY": [0.4500233751555429, 0.9128731806996054, 0.9560367283250596, 0.9542271045825441, 0.9391956847918006, 0.9483028460340441, 0.9473123201138296]}, "NODE_143": {"MOMENTUM_X": [0.0, 5.2343258136081705e-31, 6.157618776881417e-22, 1.3276124057534044e-15, 4.8889859370984776e-12, 2.6610781338551694e-09, 3.670570570280294e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999989, 0.9999999999958786, 0.9999999977565672, 0.9999996905166939], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999996, 2.4999999999855755, 2.499999992147985, 2.4999989168086105]}, "ELEMENT_287": {}, "NODE_295": {"MOMENTUM_X": [4.0990787598470573e-22, 1.4907784569161602e-11, 9.016426768167826e-08, 2.507282341720332e-05, 0.0010317881069593054, 0.011064769196904047, 0.045214651893666066], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999880705, 0.9999999283335695, 0.999980112857218, 0.9991783877913588, 0.9910705066691715, 0.9624041209952624], "TOTAL_ENERGY": [2.5, 2.4999999999582467, 2.499999749167506, 2.499930395858528, 2.497125632984625, 2.468882230425056, 2.370644167712772]}, "NODE_650": {"MOMENTUM_X": [1.440605397996653e-05, 0.16813778796183526, 0.25574072684759674, 0.3033962387504058, 0.3983459197118136, 0.42309220725824936, 0.369535344840381], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12501532467882906, 0.2279744949235421, 0.2795482240785915, 0.33310949040544857, 0.4391811393110639, 0.4663841046476295, 0.40868347129617894], "TOTAL_ENERGY": [0.25004291338338785, 0.6650858142906855, 0.885558718283193, 0.9050434365496015, 0.9406870126377995, 0.9525533571833702, 0.9266556250104566]}, "ELEMENT_746": {}, "ELEMENT_1726": {}, "NODE_404": {"MOMENTUM_X": [2.136706274196396e-09, 8.819338105519545e-05, 0.005542101775040078, 0.04618390825615682, 0.1267203232383087, 0.20299040150101608, 0.2566926552193271], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999982027485, 0.9999259991279843, 0.9953301756950887, 0.960138558559148, 0.8849444833464318, 0.804504385550325, 0.739377504420635], "TOTAL_ENERGY": [2.49999999370962, 2.4997410087543925, 2.4836931306013375, 2.3628868186570178, 2.1162674991297012, 1.8695642870396811, 1.6828300087383132]}, "ELEMENT_1998": {}, "ELEMENT_1916": {}, "NODE_451": {"MOMENTUM_X": [1.113327860111072e-05, 0.009664176916072334, 0.08103920383805059, 0.18803190961524066, 0.26375131875032143, 0.3074612726372447, 0.3331574904017015], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999990774125459, 0.9919269707230579, 0.9291958371467496, 0.822159476237565, 0.7308009219133746, 0.6670350601022048, 0.6227319369591385], "TOTAL_ENERGY": [2.4999677096740713, 2.4718590100144815, 2.259701544533492, 1.92258513236172, 1.6594500163813597, 1.4891992271203833, 1.3773299141050577]}, "NODE_596": {"MOMENTUM_X": [0.180999750233801, 0.35293840366985857, 0.4397772820427115, 0.38923839529741777, 0.3943059279886982, 0.4080965146210761, 0.3949374779957277], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2286024544594205, 0.38102316340784853, 0.4682211099751513, 0.41611678591451945, 0.4206518965119298, 0.43598558630832296, 0.42196739541485156], "TOTAL_ENERGY": [0.6769040671953592, 0.9113229390826882, 0.9692107225580708, 0.9389107316957281, 0.9433234118446421, 0.9486309805143173, 0.9426554261638227]}, "ELEMENT_336": {}, "ELEMENT_174": {}, "ELEMENT_37": {}, "ELEMENT_1851": {}, "NODE_496": {"MOMENTUM_X": [0.03790772752234216, 0.22467317224039313, 0.3124355838257578, 0.3505850002175801, 0.3681439236810948, 0.3773319884583004, 0.38311237091084493], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9664466663277609, 0.7769380733075704, 0.6570126051345287, 0.5893266020096277, 0.5481457708602393, 0.5210543271834039, 0.5026920380456245], "TOTAL_ENERGY": [2.384566668859471, 1.7901394667407313, 1.4624700963483808, 1.2950431170045908, 1.2000621675920913, 1.1402101866505112, 1.0994917126498083]}, "ELEMENT_500": {}, "ELEMENT_232": {}, "ELEMENT_1291": {}, "ELEMENT_285": {}, "ELEMENT_184": {}, "ELEMENT_392": {}, "NODE_129": {"MOMENTUM_X": [0.0, 1.333834174562269e-36, 3.998440405863776e-27, 6.222203676758478e-20, 1.1514109059711878e-14, 1.5338707498422087e-11, 4.698893838632644e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999902, 0.9999999999869873, 0.9999999960211453], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999966, 2.4999999999544555, 2.4999999860740085]}, "ELEMENT_1072": {}, "ELEMENT_271": {}, "ELEMENT_607": {}, "ELEMENT_654": {}, "ELEMENT_375": {}, "ELEMENT_909": {}, "ELEMENT_1011": {}, "ELEMENT_1372": {}, "ELEMENT_1797": {}, "ELEMENT_391": {}, "ELEMENT_1654": {}, "ELEMENT_1342": {}, "ELEMENT_784": {}, "NODE_563": {"MOMENTUM_X": [0.42425567702374484, 0.4039128450993468, 0.39109509298963685, 0.40740439877506524, 0.39490770462547, 0.40036142787196305, 0.39862087496087983], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.40898036284351086, 0.39407167275497945, 0.38085842935282793, 0.3965448916565403, 0.385090784678074, 0.3911321465498759, 0.3902109925424981], "TOTAL_ENERGY": [0.9423166892824151, 0.8769750008976264, 0.8660065265193749, 0.8740510820152821, 0.8676088572333234, 0.8706739360414925, 0.8702760862573353]}, "ELEMENT_1374": {}, "ELEMENT_51": {}, "ELEMENT_1896": {}, "ELEMENT_2": {}, "NODE_115": {"MOMENTUM_X": [0.0, 2.839405127019833e-36, 1.569424170545228e-26, 3.881625604044385e-19, 2.183913275811924e-14, 2.6190994660041862e-11, 7.287726882979144e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999815, 0.9999999999779008, 0.9999999938537144], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999356, 2.499999999922653, 2.4999999784880007]}, "ELEMENT_549": {}, "ELEMENT_1687": {}, "ELEMENT_495": {}, "ELEMENT_1049": {}, "ELEMENT_314": {}, "NODE_647": {"MOMENTUM_X": [0.0006501492410584445, 0.24707401472850077, 0.2799044883098838, 0.36844130568993144, 0.41490489694420035, 0.393694051873871, 0.39024603457270685], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1255861475329264, 0.26789077753789625, 0.3044781556880072, 0.399154780864224, 0.4500848966917922, 0.4269140817056291, 0.4229074576493328], "TOTAL_ENERGY": [0.25164925486208517, 0.868664047148364, 0.8855569116339022, 0.93015708774284, 0.9500653632348032, 0.9407517326764682, 0.9396515024975798]}, "NODE_857": {"MOMENTUM_X": [0.0, 5.7379880113927996e-18, 2.8774089828911465e-12, 5.051152732586448e-08, 0.000337481063131322, 0.14794456814662701, 0.2513154768199731], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000279915, 0.12500004913276036, 0.12532073805731223, 0.2151248109781661, 0.2698349309909023], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000078376, 0.25000013757177186, 0.250899902672073, 0.6093758116587878, 0.8843793403737124]}, "ELEMENT_340": {}, "ELEMENT_1637": {}, "ELEMENT_1165": {}, "ELEMENT_1232": {}, "ELEMENT_454": {}, "NODE_940": {"MOMENTUM_X": [0.0, 4.29371379967021e-31, 3.4395208101298363e-22, 8.286811039525914e-16, 1.5479591877022113e-11, 1.228806027661016e-07, 0.0008196496126448137], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000078, 0.12500000001458353, 0.1250001155724105, 0.1257391983921782], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000216, 0.25000000004083384, 0.2500003236029918, 0.25208033842941624]}, "NODE_684": {"MOMENTUM_X": [1.1310484192662731e-08, 0.00678366318651708, 0.27503307225236273, 0.24128324674436732, 0.29996216975309387, 0.3870077628935396, 0.437937994404856], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000105756394, 0.1301860621594569, 0.27842755270635783, 0.268770553424002, 0.32108180538178066, 0.41759973968320213, 0.47167332597023676], "TOTAL_ENERGY": [0.2500000296117932, 0.2651234694555838, 0.9364088254414012, 0.8435032945926949, 0.9063401507184099, 0.9393525597481568, 0.9652721621968512]}, "NODE_1026": {"MOMENTUM_X": [0.0, 3.820018179439152e-46, 1.257777006136018e-34, 6.408015882220494e-27, 5.330218398878466e-20, 3.750723586850059e-15, 3.59607858960665e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000355, 0.12500000003412676], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001, 0.25000000009555506]}, "ELEMENT_1320": {}, "ELEMENT_338": {}, "NODE_627": {"MOMENTUM_X": [0.05721368077871925, 0.29762854223160273, 0.39814006563224574, 0.42706375528324364, 0.4084841628279433, 0.41498297773318793, 0.4120215638596366], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.15849138088968784, 0.3080561255327871, 0.4181840125895353, 0.4477937361428149, 0.42756450895754006, 0.4347285482109065, 0.43191259709181107], "TOTAL_ENERGY": [0.3691662321060246, 0.9093213324817101, 0.9482938936595424, 0.9637105841901227, 0.9546266847118368, 0.9562246510088891, 0.954052028706617]}, "NODE_564": {"MOMENTUM_X": [0.41112874906925484, 0.39701980286033856, 0.3889264080185267, 0.3989206874232958, 0.3932359022332129, 0.39490033963759164, 0.3953438421815068], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.39363171158911053, 0.38294847063008686, 0.375005869344825, 0.38546041338552356, 0.3809391858534861, 0.38342169766371753, 0.38485483679347665], "TOTAL_ENERGY": [0.9053133067154912, 0.8501993691886701, 0.8452824967946305, 0.853472620940201, 0.8534795456729346, 0.8562942781478577, 0.8587768012759693]}, "ELEMENT_798": {}, "NODE_1019": {"MOMENTUM_X": [0.0, 5.796477931678445e-44, 1.340713745002431e-32, 2.2766599123892345e-24, 4.985718119566178e-18, 9.598468808477036e-14, 6.936808583121571e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000009057, 0.12500000065495562], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000025363, 0.25000000183387583]}, "ELEMENT_1024": {}, "NODE_481": {"MOMENTUM_X": [0.0029121486405089708, 0.10060828510570871, 0.22671739268418567, 0.30054031278791216, 0.33725201600875676, 0.3566882374059432, 0.36798254125869767], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9975443620158743, 0.9099612806341363, 0.7766156444114527, 0.6777572076312475, 0.6155775376947704, 0.5750248246549178, 0.5469660636580661], "TOTAL_ENERGY": [2.491418630798343, 2.197154127163528, 1.7888142011896337, 1.5169881628469501, 1.3595461653073384, 1.2625667220511188, 1.1979285506546709]}, "ELEMENT_1120": {}, "NODE_412": {"MOMENTUM_X": [2.5930119267186855e-08, 0.0003805461577927389, 0.013330335882798732, 0.0739855013649328, 0.16146074155881007, 0.23158889667829718, 0.2779610192737888], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999781089658, 0.9996790571271905, 0.9886600538394609, 0.9348072722487972, 0.8492117429486213, 0.770469006097464, 0.7102387326826126], "TOTAL_ENERGY": [2.4999999233813814, 2.498876912167088, 2.4605224743089673, 2.2780956374148817, 2.004481782468445, 1.7704687672332102, 1.602961610598817]}, "ELEMENT_547": {}, "ELEMENT_1028": {}, "NODE_591": {"MOMENTUM_X": [0.2645531132123438, 0.40216760879607993, 0.41016120040779713, 0.3881890016450101, 0.39817376146048533, 0.39481172861000796, 0.39513454998099057], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2853189307577188, 0.4332234002483709, 0.4389610854530616, 0.4155735635197137, 0.42575934633746887, 0.4215305639022512, 0.42120233683172864], "TOTAL_ENERGY": [0.8616837695225659, 0.9349133392127822, 0.9437978224375222, 0.9320515619709331, 0.9353023193252389, 0.9318895028863237, 0.9305370118062292]}, "ELEMENT_1493": {}, "NODE_414": {"MOMENTUM_X": [2.538786400018738e-08, 0.00037396776112052815, 0.013236076307400355, 0.07385669633319948, 0.16148366686887589, 0.23173496080671616, 0.27813920116527346], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999785941929, 0.9996852166542689, 0.9887626629184878, 0.9350343543245501, 0.8493837805827936, 0.7705143336598673, 0.7101902040409718], "TOTAL_ENERGY": [2.4999999250796763, 2.4988984623310855, 2.4608779337314175, 2.27885348044041, 2.005037976495588, 1.7706435588195633, 1.6028796197030564]}, "NODE_1003": {"MOMENTUM_X": [0.0, 1.3004362279988894e-42, 7.115253465033517e-32, 2.8527465282323313e-24, 1.120409699965737e-17, 1.600639891397685e-13, 1.4790301193484736e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000015166, 0.12500000139704756], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000042466, 0.25000000391173327]}, "NODE_1096": {"MOMENTUM_X": [0.0, 0.0, 9.896237530104682e-44, 7.510152936129667e-35, 1.819632510547086e-27, 2.978706261474511e-21, 4.3093859238359974e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000004], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000011]}, "NODE_758": {"MOMENTUM_X": [2.656864597123222e-16, 4.422902661803332e-08, 0.0006173989781112256, 0.1700643048177093, 0.24983341847374715, 0.25317293923135786, 0.2763400258048474], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000025, 0.12500004309774282, 0.12557740366919204, 0.22729345985582144, 0.2693714969584725, 0.2734556138912697, 0.2992398115132344], "TOTAL_ENERGY": [0.2500000000000007, 0.2500001206737176, 0.251622879550292, 0.6679260513677214, 0.8800374979828607, 0.8787999376365805, 0.8869137850451116]}, "NODE_755": {"MOMENTUM_X": [2.420599289240912e-16, 3.32014453521609e-08, 0.0004068946031599022, 0.16289396769260006, 0.2539372435971029, 0.25377268098893585, 0.2729934060681568], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000022, 0.12500003135759077, 0.12537574594005843, 0.22188068427521665, 0.2710368412381442, 0.273372473765741, 0.2951599310214673], "TOTAL_ENERGY": [0.25000000000000067, 0.25000008780127464, 0.25105473254960353, 0.6446003614916014, 0.8886340980844145, 0.8805807862247159, 0.8860508640088748]}, "ELEMENT_1880": {}, "ELEMENT_884": {}, "NODE_1084": {"MOMENTUM_X": [0.0, 0.0, 3.758568219707953e-42, 1.6153230012795175e-33, 1.851444063149195e-26, 5.172829613784605e-20, 2.802705567940821e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000026], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000074]}, "NODE_893": {"MOMENTUM_X": [0.0, 3.1667568633047975e-25, 2.8531864255267945e-17, 1.949076365440979e-12, 2.355821480890781e-08, 0.00021591559789151658, 0.16308403043988606], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000003, 0.12500000000184416, 0.12500002221578546, 0.12519758664039363, 0.21958590148540774], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.2500000000051636, 0.25000006220420784, 0.2505539524429856, 0.6369772588198195]}, "ELEMENT_1996": {}, "NODE_512": {"MOMENTUM_X": [0.09030534455710373, 0.2860951998940651, 0.34757169874345256, 0.3700574253058309, 0.38081032923820624, 0.3860970634634232, 0.38879921082618546], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9180603131966063, 0.6959773105759027, 0.5923533023663113, 0.5391354962198734, 0.5094311739855417, 0.48977541163203986, 0.4756613519187767], "TOTAL_ENERGY": [2.2242132260525014, 1.5663371272503595, 1.3060484811407604, 1.1820561673962289, 1.1140168762499985, 1.0713830045854198, 1.0421727640687881]}, "NODE_1085": {"MOMENTUM_X": [0.0, 0.0, 4.2466781785458086e-42, 2.617008492451875e-33, 4.33757503162823e-26, 6.11271632514442e-20, 3.389815690987528e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000032], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000894]}, "ELEMENT_469": {}, "ELEMENT_1813": {}, "ELEMENT_1905": {}, "NODE_919": {"MOMENTUM_X": [0.0, 1.3315719439280277e-27, 3.246392993860904e-19, 9.308133161894583e-14, 1.1582939978537117e-09, 7.652624895692809e-06, 0.028522931809055543], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000008768, 0.1250000010910955, 0.12500720898422873, 0.14502249535140954], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000002455, 0.25000000305506753, 0.25002018609485716, 0.31396327550278547]}, "ELEMENT_1945": {}, "NODE_739": {"MOMENTUM_X": [2.4328230846326624e-15, 1.210923421878913e-07, 0.001750067029520221, 0.24129318827302215, 0.2326118486548027, 0.26130690983459676, 0.28562173908629684], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000228, 0.12500011379068912, 0.12648704704773764, 0.26092391664000475, 0.26125749108282387, 0.27778906716690005, 0.3082026298579443], "TOTAL_ENERGY": [0.2500000000000064, 0.2500003186141807, 0.2542085487465409, 0.8455064067813536, 0.8330814902807525, 0.8936412520244439, 0.8917503726797266]}, "NODE_803": {"MOMENTUM_X": [1.9152674300769034e-23, 5.516952435989684e-12, 2.815448832438911e-07, 0.0022796216829648577, 0.20729399194934134, 0.24754245492742807, 0.2542060495269358], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000493244, 0.12500024936082965, 0.12681226562787656, 0.2418719057056987, 0.2644554589167262, 0.26869310231467664], "TOTAL_ENERGY": [0.25, 0.25000000001381095, 0.25000069821162924, 0.2551497374359534, 0.7532329951724012, 0.8670404376778871, 0.8805799601421732]}, "NODE_396": {"MOMENTUM_X": [2.612758690949545e-09, 0.0001112702450953201, 0.006539927119223857, 0.05001473807262207, 0.1296533001735869, 0.2029937711445464, 0.2551623234771607], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999977348265, 0.9999036891635578, 0.9943522420573359, 0.9560409714061231, 0.8808659194592334, 0.8033039229811458, 0.740423699412231], "TOTAL_ENERGY": [2.4999999920718925, 2.4996629314781136, 2.480286123506747, 2.3490138649098165, 2.1032101072418965, 1.8658442100389334, 1.685565599232703]}, "ELEMENT_166": {}, "ELEMENT_845": {}, "NODE_642": {"MOMENTUM_X": [0.0005952752049356189, 0.2534227293050617, 0.2768109940023276, 0.3740376537185932, 0.42036502793443264, 0.39695648178596765, 0.38866832974674403], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12552974259395844, 0.2698261807466697, 0.3025939866022808, 0.40208776959361636, 0.45399300470332915, 0.428495513415326, 0.41959187374302487], "TOTAL_ENERGY": [0.25148987659383937, 0.8810703622117932, 0.8745841194004981, 0.936824247513132, 0.9532624765575564, 0.9435344528816425, 0.9397483977459498]}, "NODE_137": {"MOMENTUM_X": [0.0, 6.420317490444916e-33, 1.7506235705919322e-23, 1.3154298882359542e-16, 7.403896080738343e-13, 5.364321728563272e-10, 9.56590915593614e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999993756, 0.9999999995476394, 0.999999919366414], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999978137, 2.4999999984167367, 2.4999997177824604]}, "ELEMENT_568": {}, "ELEMENT_1003": {}, "ELEMENT_1868": {}, "ELEMENT_1559": {}, "ELEMENT_10": {}, "ELEMENT_590": {}, "NODE_405": {"MOMENTUM_X": [1.7733952454306217e-09, 7.732260798811457e-05, 0.005179406653955169, 0.04509918503744548, 0.1260864376600969, 0.20307674136541365, 0.2570725266747655], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999985093699, 0.9999351651398662, 0.9956441733504802, 0.9611841129267367, 0.8857651187534626, 0.8045914433290727, 0.7389756234920755], "TOTAL_ENERGY": [2.499999994782795, 2.499773086994724, 2.484787223442235, 2.366424901636394, 2.1188945784076547, 1.869861611304846, 1.6817438029826435]}, "ELEMENT_1457": {}, "ELEMENT_1736": {}, "ELEMENT_294": {}, "ELEMENT_265": {}, "ELEMENT_1220": {}, "NODE_1075": {"MOMENTUM_X": [0.0, 1.419545876278948e-54, 1.7810124920571677e-40, 9.895535773447137e-32, 1.6930327933555246e-24, 2.0989171715563088e-18, 3.064406965412308e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002903], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000008127]}, "ELEMENT_860": {}, "ELEMENT_1679": {}, "ELEMENT_1006": {}, "ELEMENT_1570": {}, "ELEMENT_1863": {}, "NODE_756": {"MOMENTUM_X": [2.433913278349796e-16, 3.3989942463296096e-08, 0.00042303828370180894, 0.1630135159870581, 0.2540133853416225, 0.25326104430767665, 0.272672333361304], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000022, 0.12500003220369046, 0.12539154019887105, 0.22223812554620673, 0.2712287361998737, 0.2732071633712113, 0.29512003243754453], "TOTAL_ENERGY": [0.25000000000000067, 0.25000009017035496, 0.25109918048459373, 0.6456776833713558, 0.8894910644610969, 0.879815155437933, 0.8857470443857928]}, "NODE_439": {"MOMENTUM_X": [2.683588563550794e-05, 0.015559291046526692, 0.0963640760357954, 0.19552648368802988, 0.2635896097873804, 0.3044809422354788, 0.32946850500443503], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999978505830694, 0.987450056675332, 0.9173552149824331, 0.8170048904555338, 0.7333206259407672, 0.6726874447425567, 0.6289619746577597], "TOTAL_ENERGY": [2.4999247718412363, 2.4563737348634738, 2.2216813484161024, 1.9096085325207197, 1.6697992443777492, 1.507363040813634, 1.3961306318468854]}, "ELEMENT_580": {}, "ELEMENT_266": {}, "ELEMENT_1010": {}, "ELEMENT_523": {}, "ELEMENT_972": {}, "ELEMENT_1069": {}, "ELEMENT_967": {}, "ELEMENT_480": {}, "NODE_366": {"MOMENTUM_X": [9.152497179221e-13, 8.62768035909023e-07, 0.0002544261975827919, 0.006968358967128385, 0.043773418527575055, 0.11262129153772463, 0.1812686536865803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999999999999227, 0.9999992717597767, 0.9997851203851849, 0.9940839210854716, 0.9620485979074035, 0.8982351146731311, 0.827963820424545], "TOTAL_ENERGY": [2.4999999999972946, 2.499997451160525, 2.499248010801249, 2.479351235916073, 2.369314277694815, 2.158592816926062, 1.939474012280517]}, "ELEMENT_108": {}, "NODE_815": {"MOMENTUM_X": [0.0, 1.568258135478683e-15, 2.4440121477061603e-10, 3.2699418825861607e-06, 0.022098954272795516, 0.2990530714320679, 0.22992330796591173], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000167, 0.12500000026147026, 0.12500348997104474, 0.14163927506276727, 0.29618362975105217, 0.2637880087610708], "TOTAL_ENERGY": [0.25, 0.25000000000000466, 0.2500000007321166, 0.25000977209750175, 0.30152877080872054, 1.0161604408369325, 0.8342896788934954]}, "ELEMENT_483": {}, "NODE_485": {"MOMENTUM_X": [0.012205141162829294, 0.16086254870105776, 0.27210153845367563, 0.32637718557039613, 0.3528626846742243, 0.36732399764393214, 0.37584607388425845], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9893620874828792, 0.8472441282527564, 0.7162325593059496, 0.6335039126362163, 0.5827026011038701, 0.5497160910841242, 0.5266026883466298], "TOTAL_ENERGY": [2.462989337311055, 1.9991206812596234, 1.6195196293587355, 1.4041849234154287, 1.2810358388288239, 1.2039226620004515, 1.1516588939857588]}, "ELEMENT_849": {}, "NODE_931": {"MOMENTUM_X": [0.0, 3.356800016979613e-29, 2.519542255262652e-20, 1.162964760787869e-14, 1.6468660523227325e-10, 1.0767106581124495e-06, 0.005792321834589277], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000001096, 0.12500000015542695, 0.12500101727477123, 0.1297102593017843], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000003075, 0.2500000004351955, 0.25000284838798276, 0.2636581882708756]}, "ELEMENT_636": {}, "NODE_251": {"MOMENTUM_X": [0.0, 9.080036625978587e-16, 4.756292564590203e-11, 6.69336666035859e-08, 1.1157017110681577e-05, 0.0004207466994149843, 0.005129345051898683], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999992, 0.9999999999594782, 0.9999999429079021, 0.9999904882312396, 0.9996414527736683, 0.9956232410259022], "TOTAL_ENERGY": [2.5, 2.4999999999999973, 2.499999999858174, 2.4999998001776635, 2.499966708980555, 2.498745302499139, 2.484711152516235]}, "NODE_390": {"MOMENTUM_X": [1.9313470246998368e-10, 2.181574429086915e-05, 0.0022452006676077093, 0.0271088109121937, 0.09468751170119936, 0.1725894089479409, 0.23269722226300024], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999998369627, 0.9999816180294644, 0.9981038696160567, 0.976760079745375, 0.915525465546154, 0.8374787319952424, 0.7691396164377884], "TOTAL_ENERGY": [2.49999999942937, 2.4999356638685817, 2.4933699844786545, 2.419496519264928, 2.2146493510308747, 1.9684415078107884, 1.7665980755991426]}, "NODE_533": {"MOMENTUM_X": [0.26560365266367536, 0.3742870754473092, 0.3870128244726051, 0.39253509770324274, 0.3936914180330508, 0.3944446940729797, 0.3956402733874789], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.6763498201139448, 0.5219110307422553, 0.4765900551736097, 0.45677077689707696, 0.4439775623260906, 0.4360515685007662, 0.43144561074690624], "TOTAL_ENERGY": [1.5092243974913817, 1.1449564901355982, 1.0459958050680462, 1.0022027116636123, 0.9770049960924919, 0.9612233067588706, 0.9507926836079033]}, "ELEMENT_915": {}, "ELEMENT_1841": {}, "NODE_671": {"MOMENTUM_X": [1.1968131828913245e-05, 0.13941116827138025, 0.2646555683343176, 0.31778269513271784, 0.4046203992743801, 0.4235148433713573, 0.40487526497807386], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12501055785949747, 0.20580428383795848, 0.27661614160203, 0.3354530176780754, 0.42756023745570737, 0.4467247263285977, 0.4265255683745886], "TOTAL_ENERGY": [0.2500295650458143, 0.5748438804998542, 0.8904136670337833, 0.9104075338513927, 0.9519357486403481, 0.9620959351236155, 0.9527346137184823]}, "ELEMENT_1723": {}, "NODE_593": {"MOMENTUM_X": [0.25540410020551446, 0.3995604739068499, 0.3926804890187226, 0.38630540048187567, 0.3909018080806808, 0.3888470574836817, 0.3913087284396537], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2834653545576926, 0.43313105831304566, 0.42461101412579894, 0.41647721360431794, 0.41944916075249145, 0.4151067425739934, 0.41569718580171905], "TOTAL_ENERGY": [0.8439778534687026, 0.9347204430804437, 0.9285553060898394, 0.9235089195443102, 0.9225117421925151, 0.918962842105891, 0.917470858608863]}, "NODE_1023": {"MOMENTUM_X": [0.0, 1.795612323345496e-43, 4.4507123404848877e-32, 4.3206889051990176e-24, 2.0499666710517406e-17, 2.6123403841034114e-13, 1.7963267845658296e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000023181, 0.12500000159135152], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.250000000000649, 0.25000000445578424]}, "ELEMENT_1722": {}, "ELEMENT_1380": {}, "ELEMENT_136": {}, "NODE_192": {"MOMENTUM_X": [0.0, 1.3126545969856856e-24, 1.4469913602774206e-16, 2.2078668564881008e-12, 2.444127026252921e-09, 4.920253023110235e-07, 2.7835522137015916e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999999, 0.9999999999981394, 0.9999999979409044, 0.9999995856547679, 0.9999765712105876], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.499999999993488, 2.4999999927931653, 2.4999985497920205, 2.4999180002109975]}, "NODE_141": {"MOMENTUM_X": [0.0, 6.308780760508309e-31, 7.229396428174238e-22, 1.5268703669402245e-15, 5.592975365906511e-12, 2.98041697589841e-09, 4.024398286078818e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999988, 0.9999999999952809, 0.9999999974835997, 0.9999996600351526], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999956, 2.499999999983482, 2.4999999911925976, 2.4999988101232526]}, "NODE_445": {"MOMENTUM_X": [7.532433583583087e-07, 0.0023864575931950463, 0.04037683007917929, 0.1370775135822634, 0.22690630762074993, 0.28353948529307815, 0.3173742695268352], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999992960875208, 0.997800205887197, 0.9629243413128586, 0.869539222164836, 0.7717787146688808, 0.6998971302303827, 0.6498278655582558], "TOTAL_ENERGY": [2.499997536307548, 2.492308457230307, 2.3721258303326733, 2.065989880547991, 1.7709359196057062, 1.5714492302734437, 1.4413401757297293]}, "ELEMENT_310": {}, "ELEMENT_527": {}, "ELEMENT_1914": {}, "ELEMENT_546": {}, "ELEMENT_169": {}, "ELEMENT_1728": {}, "ELEMENT_462": {}, "ELEMENT_1864": {}, "NODE_896": {"MOMENTUM_X": [0.0, 1.915055393411941e-24, 1.1031801684311508e-16, 6.1169282932120974e-12, 6.118174278367037e-08, 0.00041049680390096207, 0.16632645452870515], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000000001, 0.12500000000576095, 0.12500005754719823, 0.12537706005252583, 0.22343842244337686], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000003, 0.25000000001613065, 0.2500001611322154, 0.25105844059102, 0.6530900372662454]}, "ELEMENT_1295": {}, "ELEMENT_1970": {}, "ELEMENT_348": {}, "NODE_436": {"MOMENTUM_X": [2.147630943684303e-06, 0.004170608164087739, 0.05075055441805282, 0.14688067850378336, 0.23034134687975397, 0.28338920142493, 0.3157751953101046], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999981901339461, 0.996477085381053, 0.9559390947929728, 0.8644045832280749, 0.7721643476384938, 0.702773229046628, 0.6531228647961516], "TOTAL_ENERGY": [2.499993665478762, 2.4876928037344697, 2.348767586684353, 2.0517436434720975, 1.7754753152589922, 1.582988671683968, 1.4532917923128796]}, "ELEMENT_155": {}, "NODE_1013": {"MOMENTUM_X": [0.0, 4.9144274780275686e-45, 5.146960629530831e-34, 6.286895657053018e-26, 1.9272788176169146e-19, 9.801866921070987e-15, 9.458611379835828e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000105, 0.1250000001011114], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000002937, 0.250000000283112]}, "NODE_491": {"MOMENTUM_X": [0.011558789253403586, 0.158804128770048, 0.27383939951595226, 0.3289136370345842, 0.354764980356675, 0.36852065140236523, 0.37652475547656405], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9901684031091621, 0.851641466027226, 0.7159147627981566, 0.6301749228088446, 0.5785575954684317, 0.5455539670260933, 0.5226999504117545], "TOTAL_ENERGY": [2.4657845368276723, 2.0129736727071235, 1.6190356153951913, 1.39629627816383, 1.2716677602081008, 1.19492896720252, 1.143465529809149]}, "NODE_1061": {"MOMENTUM_X": [0.0, 2.8173799247038303e-52, 5.126337868823244e-39, 6.857629428856084e-31, 7.738844625548714e-24, 1.421569192595862e-17, 1.3843214104940297e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000013062], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000003658]}, "ELEMENT_1445": {}, "NODE_930": {"MOMENTUM_X": [0.0, 2.748964056096214e-29, 1.538294026247765e-20, 1.0046669032773899e-14, 1.4793970134043865e-10, 1.0258391554884335e-06, 0.005691428634236208], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000944, 0.12500000013935894, 0.1250009664446653, 0.12963135936524392], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000265, 0.25000000039020515, 0.2500027060619553, 0.2634229256926118]}, "ELEMENT_955": {}, "ELEMENT_1604": {}, "ELEMENT_295": {}, "ELEMENT_586": {}, "ELEMENT_138": {}, "NODE_953": {"MOMENTUM_X": [0.0, 9.139627902095786e-33, 1.4620847272335303e-23, 1.3038716763536057e-16, 2.6326925264118907e-12, 1.951586441740616e-08, 0.00011589174345986032], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000001, 0.12500000000248387, 0.1250000184333906, 0.12510887037484789], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000033, 0.2500000000069549, 0.25000005161349986, 0.2503050519857955]}, "NODE_975": {"MOMENTUM_X": [0.0, 2.1492809682999958e-36, 1.502224237038082e-26, 1.63587406436622e-18, 3.896717612424234e-14, 3.4477451980013115e-10, 2.140457826010851e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000003675, 0.12500000032546593, 0.12500202241349817], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000001029, 0.25000000091130464, 0.25000566283140685]}, "NODE_725": {"MOMENTUM_X": [4.896240660658022e-12, 3.294158974325797e-05, 0.07319564235039291, 0.2649646701846049, 0.25383769031692854, 0.28891410029680326, 0.3606749354571053], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000474618, 0.12503201908304667, 0.1723968846253803, 0.27643811997946166, 0.27519906223373014, 0.3129748829056579, 0.3903927515765417], "TOTAL_ENERGY": [0.25000000001328926, 0.2500896725612381, 0.41874081680243125, 0.9192543340512795, 0.8762572890637497, 0.8926346174296463, 0.9261223763379375]}, "ELEMENT_1865": {}, "ELEMENT_1487": {}, "ELEMENT_1351": {}, "NODE_842": {"MOMENTUM_X": [0.0, 6.452628179701363e-17, 1.841227017785316e-11, 2.5401393195636473e-07, 0.0015355218680656235, 0.21685672451398824, 0.23942462922240296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000006, 0.12500000001733957, 0.1250002392938304, 0.12635688391262917, 0.25015974859876644, 0.2641327280527083], "TOTAL_ENERGY": [0.25, 0.25000000000000017, 0.2500000000485508, 0.2500006700237734, 0.253835849506338, 0.7869339220370667, 0.8521970105200867]}, "ELEMENT_548": {}, "ELEMENT_808": {}, "ELEMENT_1160": {}, "ELEMENT_819": {}, "ELEMENT_418": {}, "NODE_148": {"MOMENTUM_X": [0.0, 3.079642291780158e-35, 7.937119497839246e-26, 6.510909708688526e-19, 4.621320215530964e-14, 5.113594701697591e-11, 1.3374879714876996e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999609, 0.9999999999568338, 0.9999999887314571], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999863, 2.4999999998489177, 2.4999999605600998]}, "ELEMENT_708": {}, "ELEMENT_1924": {}, "ELEMENT_664": {}, "ELEMENT_1809": {}, "NODE_773": {"MOMENTUM_X": [7.440514783416542e-20, 1.6214652362451257e-10, 4.6104465024400695e-06, 0.026374384198976707, 0.28363773554671606, 0.24031487049697656, 0.2554484761362411], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000015313162, 0.12500433014536902, 0.14302951067527475, 0.28319287119591424, 0.26422188653612577, 0.2740419157119888], "TOTAL_ENERGY": [0.25, 0.25000000042876847, 0.2500121247488026, 0.3072413350264883, 0.9628951686666537, 0.8517518352377845, 0.8805649413910325]}, "ELEMENT_1578": {}, "NODE_752": {"MOMENTUM_X": [1.9206263161055867e-16, 2.5557067953801477e-08, 0.0003725578827288999, 0.16398593390122482, 0.25080203170218474, 0.25577142089575045, 0.27345593187107486], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000017, 0.12500002400675458, 0.1253407236077371, 0.22194521227971165, 0.26931871576878313, 0.2737646243128436, 0.29522933717659167], "TOTAL_ENERGY": [0.2500000000000005, 0.2500000672189247, 0.2509562286345172, 0.6461372360854215, 0.8801873842132594, 0.8850876812005597, 0.885401763359607]}, "NODE_375": {"MOMENTUM_X": [1.4374458165447901e-11, 4.7718083184810636e-06, 0.0008409118672280734, 0.015087639390361016, 0.06822582963821892, 0.14324959750837368, 0.20764136047909312], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999878121, 0.9999959374171865, 0.999282943922022, 0.9870428481554204, 0.9397594364463261, 0.8675386134295074, 0.7982966515658695], "TOTAL_ENERGY": [2.4999999999573426, 2.4999857809988497, 2.497491249702173, 2.454914468942913, 2.29443900521103, 2.061189776591892, 1.8510301065618988]}, "NODE_779": {"MOMENTUM_X": [1.2296868929435377e-19, 3.470517734842167e-10, 8.199927777362268e-06, 0.031177794418697734, 0.2730309721116535, 0.24408128040559457, 0.2534111857409924], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000033105338, 0.1250078419817043, 0.14671378768522103, 0.2799996166447249, 0.2671479430035912, 0.27496334905818587], "TOTAL_ENERGY": [0.25, 0.2500000009269495, 0.2500219586691215, 0.3198047634192993, 0.9403287248926068, 0.8645170107679097, 0.8764617662835362]}, "NODE_152": {"MOMENTUM_X": [0.0, 2.7823314684406614e-29, 2.1904305141964768e-20, 1.1081491815547655e-14, 2.8953900218453996e-11, 1.1968400537817085e-08, 1.2891588638955737e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999907, 0.9999999999755683, 0.9999999898946039, 0.9999989110654013], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999967, 2.4999999999144897, 2.499999964631114, 2.499996188731122]}, "ELEMENT_1910": {}, "ELEMENT_1740": {}, "ELEMENT_258": {}, "ELEMENT_23": {}, "ELEMENT_1779": {}, "ELEMENT_1156": {}, "NODE_226": {"MOMENTUM_X": [0.0, 6.8607856898902136e-18, 1.8844630653733653e-12, 5.306649749707204e-09, 1.5262486814391288e-06, 9.097255785512755e-05, 0.001657639313665363], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999984976, 0.9999999957877591, 0.9999987903422352, 0.9999277820037312, 0.9986762628348339], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999994742, 2.4999999852571566, 2.4999957662010472, 2.4997472472704607, 2.4953700506724945]}, "NODE_181": {"MOMENTUM_X": [0.0, 1.7305576214324545e-24, 2.798985105939264e-16, 4.1522175023710975e-12, 4.347193656171013e-09, 8.08774923796328e-07, 4.170700045623177e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999998, 0.9999999999963979, 0.9999999962379703, 0.999999302467805, 0.9999641715014584], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999999, 2.4999999999873923, 2.4999999868328957, 2.4999975586382353, 2.4998746024701246]}, "ELEMENT_1766": {}, "ELEMENT_651": {}, "ELEMENT_419": {}, "NODE_828": {"MOMENTUM_X": [0.0, 4.1958937881828167e-16, 8.334967528012605e-11, 1.1827107785341456e-06, 0.008977242983306712, 0.2724970868573689, 0.233848781919201], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000042, 0.12500000007889916, 0.12500111349459683, 0.13178770580668964, 0.277385480456119, 0.26096330179092114], "TOTAL_ENERGY": [0.25, 0.2500000000000011, 0.25000000022091756, 0.25000311780708584, 0.27003201235890334, 0.9328987416653817, 0.836339584407489]}, "NODE_382": {"MOMENTUM_X": [1.215713368799848e-11, 3.950287356717671e-06, 0.0007279817451533756, 0.013848631694559577, 0.06575903032977297, 0.14190626966907952, 0.207861198654642], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999897715, 0.9999966847662906, 0.9993887056943216, 0.9882714320607028, 0.9425875029800476, 0.8697822690095101, 0.7989319417155788], "TOTAL_ENERGY": [2.4999999999641997, 2.499988396707864, 2.497861165899399, 2.459169775197051, 2.3038979311460257, 2.0683322715841435, 1.8530590637666513]}, "ELEMENT_1659": {}, "NODE_324": {"MOMENTUM_X": [1.589442357565572e-18, 4.728300859085714e-10, 1.0929373110190803e-06, 0.0001527130919310988, 0.003676784016412961, 0.025733830539109912, 0.07718880885673339], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999996015864, 0.9999990795838914, 0.9998713489940723, 0.9968924763952453, 0.977964077336594, 0.9319053016402877], "TOTAL_ENERGY": [2.5, 2.4999999986055514, 2.499996778545504, 2.4995497524493433, 2.4891395396217284, 2.423605177276772, 2.268335310269253]}, "ELEMENT_1344": {}, "ELEMENT_1602": {}, "ELEMENT_1246": {}, "ELEMENT_1297": {}, "NODE_527": {"MOMENTUM_X": [0.1831620773105657, 0.3436106196529273, 0.3742235070602706, 0.38346233300477245, 0.388170722394206, 0.3903994687799688, 0.3917528483187517], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.8306927506912976, 0.6075249835975991, 0.5307076169430767, 0.4930264091739502, 0.472709179251568, 0.45942284683356155, 0.4502934381274021], "TOTAL_ENERGY": [1.9519779740588799, 1.3394241568149252, 1.160623559840096, 1.0794491169872988, 1.0353449699413733, 1.007825510117017, 0.9891732047188041]}, "ELEMENT_1235": {}, "ELEMENT_552": {}, "NODE_119": {"MOMENTUM_X": [0.0, 1.4414688434074068e-32, 2.881263972005528e-23, 3.028832182213233e-16, 1.5663731877637769e-12, 1.0519015639628912e-09, 1.7124787185152292e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999986426, 0.9999999990905696, 0.999999852377763], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.4999999999952487, 2.4999999968169933, 2.4999994833222114]}, "ELEMENT_778": {}, "NODE_595": {"MOMENTUM_X": [0.15626948250123027, 0.3235077136676281, 0.4273114393549558, 0.38267675874667445, 0.3686469598821105, 0.39430780494436, 0.3805323693583491], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.21997382290962975, 0.35800395795355355, 0.4686568778614138, 0.4239094639862116, 0.40731112524269497, 0.43564472733031834, 0.42019414636295754], "TOTAL_ENERGY": [0.6292782914857182, 0.8965248672674941, 0.9553567343457757, 0.9260734796346867, 0.9249487145832681, 0.9363248395275773, 0.9310454757253626]}, "ELEMENT_1237": {}, "NODE_913": {"MOMENTUM_X": [0.0, 1.7276749605914552e-25, 3.345453093289702e-17, 2.356790397380788e-12, 2.428270662416742e-08, 0.00016237937678317146, 0.1189264668515509], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000003, 0.1250000000020953, 0.12500002150888728, 0.12514119174258492, 0.1950120908824648], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000001, 0.2500000000058669, 0.2500000602248938, 0.25039574181618907, 0.5230679715635023]}, "ELEMENT_721": {}, "ELEMENT_123": {}, "ELEMENT_826": {}, "ELEMENT_1527": {}, "NODE_154": {"MOMENTUM_X": [0.0, 1.1225164739481803e-35, 3.3659872887170094e-26, 3.542484899515864e-19, 2.5967306624258373e-14, 3.1236202068599256e-11, 8.815263725045321e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999754, 0.9999999999705037, 0.999999991743232], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999134, 2.499999999896763, 2.499999971101312]}, "ELEMENT_1516": {}, "NODE_1005": {"MOMENTUM_X": [0.0, 4.423537810133199e-42, 2.6500155195294947e-31, 9.963018473298833e-24, 2.458444106978945e-17, 3.8766410653061904e-13, 3.2868846742565606e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000036657, 0.12500000309667528], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000102635, 0.25000000867069094]}, "ELEMENT_1950": {}, "ELEMENT_1515": {}, "NODE_877": {"MOMENTUM_X": [0.0, 3.990553425911255e-21, 2.1461907579993154e-14, 5.98600541436185e-10, 4.215935698259823e-06, 0.018303206753629415, 0.27339420125703495], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000000203, 0.12500000056715227, 0.12500399981941238, 0.1384224979025943, 0.2795110484139684], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000005684, 0.2500000015880263, 0.2500111997808957, 0.2912682454267455, 0.9396587926764813]}, "ELEMENT_1164": {}, "ELEMENT_182": {}, "NODE_126": {"MOMENTUM_X": [0.0, 1.3383012790981747e-34, 5.754498353100807e-25, 1.3083622910166233e-17, 1.2963804573110198e-13, 1.2085812949431275e-10, 2.6942306201934185e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998908, 0.9999999998980542, 0.9999999772835769], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999617, 2.499999999643189, 2.499999920492519]}, "ELEMENT_1311": {}, "ELEMENT_1357": {}, "ELEMENT_1408": {}, "NODE_644": {"MOMENTUM_X": [0.0006100066486787215, 0.253435918703835, 0.2761563841088918, 0.37183676099986535, 0.4240203780002325, 0.39781859141192605, 0.3844627257288767], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1255464757404126, 0.2700546275749008, 0.3022126405349041, 0.400628074881513, 0.4580772412036467, 0.429591187837734, 0.41534465320825875], "TOTAL_ENERGY": [0.25153710204457397, 0.8812853662788163, 0.8745174344878608, 0.9350661066584788, 0.9559236006635727, 0.944319551476877, 0.9377182926334817]}, "ELEMENT_85": {}, "ELEMENT_374": {}, "NODE_78": {"MOMENTUM_X": [0.0, 1.285241919903584e-43, 9.555808086891214e-33, 8.066957491547794e-25, 4.747029666321358e-18, 3.034922057864892e-14, 2.1094703137628574e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999745, 0.9999999999821604], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999103, 2.499999999937561]}, "ELEMENT_1788": {}, "NODE_583": {"MOMENTUM_X": [0.37246953827917495, 0.4237542775862228, 0.4110082234546987, 0.413451919229424, 0.4071750760868066, 0.4071212030040149, 0.4041203753297689], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3612037289946495, 0.40730719010641614, 0.3907781815701286, 0.39136280922646083, 0.3851732850205623, 0.38553451337934425, 0.3835417839306588], "TOTAL_ENERGY": [0.8955290947359422, 0.8909402743208078, 0.8766288920180418, 0.8714636724457618, 0.8643394335118645, 0.8624359969539352, 0.8601301019070394]}, "ELEMENT_1317": {}, "ELEMENT_578": {}, "NODE_265": {"MOMENTUM_X": [0.0, 9.503804408266403e-15, 2.825749973220217e-10, 2.7000784425047736e-07, 3.282394256131968e-05, 0.0009448411003614595, 0.009085453120681711], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999919, 0.9999999997609219, 0.9999997712964828, 0.9999721829929825, 0.9991982538208198, 0.9922552764022555], "TOTAL_ENERGY": [2.5, 2.499999999999972, 2.4999999991632267, 2.4999991995378017, 2.4999026419181134, 2.4971949614875175, 2.472985600996359]}, "ELEMENT_566": {}, "ELEMENT_1807": {}, "ELEMENT_1592": {}, "ELEMENT_415": {}, "ELEMENT_1421": {}, "ELEMENT_476": {}, "ELEMENT_692": {}, "NODE_268": {"MOMENTUM_X": [0.0, 8.48054411393798e-15, 2.5064438544658025e-10, 2.4259015958941947e-07, 3.0060793114042073e-05, 0.0008836125244103361, 0.00868456689962622], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999929, 0.9999999997889156, 0.9999997956917008, 0.9999746839971835, 0.9992547325032048, 0.9926359785184077], "TOTAL_ENERGY": [2.5, 2.4999999999999747, 2.4999999992612043, 2.499999284921042, 2.499911395191091, 2.497392497151168, 2.474309735371232]}, "NODE_1104": {"MOMENTUM_X": [0.0, 0.0, 1.865405570373161e-45, 1.3606459800022448e-36, 1.9425868521728303e-29, 1.0535375840636441e-22, 3.442758413228647e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "ELEMENT_1274": {}, "NODE_394": {"MOMENTUM_X": [1.3892290903524274e-10, 1.6827303739630998e-05, 0.0019409331173634574, 0.02558626466369174, 0.09326910432550078, 0.17247511614341154, 0.2333627690693899], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999998831709, 0.9999858824323079, 0.9983704213207467, 0.9782223524953939, 0.9173155990652226, 0.8382241913434842, 0.7688888389633312], "TOTAL_ENERGY": [2.499999999591098, 2.4999505889589577, 2.494301221904878, 2.4245148117052384, 2.220518745897145, 1.9708080718491499, 1.7660029845491672]}, "ELEMENT_1787": {}, "ELEMENT_1955": {}, "NODE_360": {"MOMENTUM_X": [4.258779879749482e-14, 1.2244826513396937e-07, 6.438985175128003e-05, 0.0028336393374844343, 0.025745711821154822, 0.08414688390556355, 0.15409649880251014], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999999999999964, 0.9999998971257085, 0.9999459586727923, 0.9976163036631829, 0.9780424817180452, 0.9257022719465665, 0.8573201718788968], "TOTAL_ENERGY": [2.4999999999998743, 2.4999996399400066, 2.4998108612103085, 2.491666730963386, 2.4238846460995593, 2.2479309111519874, 2.0294069829815813]}, "NODE_703": {"MOMENTUM_X": [1.864436287509429e-09, 0.0021560881447468304, 0.2128697581109032, 0.24980287788421598, 0.28069252836008773, 0.3520388594951669, 0.40860597280263816], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000181425502, 0.12689565801426686, 0.2500979273991495, 0.27155300758167134, 0.3037496368414561, 0.3813268554397828, 0.4427095423719889], "TOTAL_ENERGY": [0.25000000507991416, 0.2553809354817473, 0.7822501613360925, 0.8728058318864841, 0.8903011032499585, 0.9218224147208385, 0.9476023921044624]}, "ELEMENT_701": {}, "NODE_24": {"MOMENTUM_X": [0.0, 2.5156366448215965e-45, 3.177140902331808e-33, 1.9777302683615106e-25, 8.652831321237122e-19, 2.853771733919681e-14, 2.062419319275853e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999775, 0.9999999999836917], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999921, 2.4999999999429208]}, "ELEMENT_666": {}, "NODE_386": {"MOMENTUM_X": [1.97673298628112e-10, 2.302730751473329e-05, 0.0023795247623473177, 0.028251094750864517, 0.09640178886877475, 0.17326333661795856, 0.23241864704032686], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999998323233, 0.9999803960350026, 0.9979692765891677, 0.9755728002854143, 0.9134604345700547, 0.8362421149289343, 0.7690498950648931], "TOTAL_ENERGY": [2.4999999994131312, 2.4999313869847732, 2.492899756202427, 2.415418857883965, 2.2078741566394076, 1.9645920317090437, 1.7662562413418457]}, "ELEMENT_1876": {}, "NODE_929": {"MOMENTUM_X": [0.0, 2.167195451098584e-29, 1.3163104299205713e-20, 8.065710385907675e-15, 1.2512560141315174e-10, 9.43822235250847e-07, 0.005676196293186815], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000076, 0.1250000001178301, 0.12500088718414074, 0.12960212074471045], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000002126, 0.25000000032992425, 0.25000248412988885, 0.26333877263590577]}, "NODE_433": {"MOMENTUM_X": [2.1797875889039563e-06, 0.004213053409180014, 0.05094443864623262, 0.1469538104791074, 0.2301365489025668, 0.2830765958079006, 0.31547667760749126], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999981599955774, 0.9964309310093236, 0.9556389983483288, 0.8640089305828768, 0.7719967451469235, 0.7028213869299377, 0.6533124708355315], "TOTAL_ENERGY": [2.499993559994809, 2.4875318510484727, 2.3477518372092847, 2.0504696118991363, 1.7749137121964806, 1.5830193109861281, 1.4536724104675272]}, "NODE_1025": {"MOMENTUM_X": [0.0, 1.3312163245930945e-46, 5.237374399684697e-35, 3.5329970226412965e-27, 3.475171544916628e-20, 2.2717155929955373e-15, 2.2429587430668705e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000214, 0.12500000002122094], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.250000000000006, 0.2500000000594187]}, "NODE_661": {"MOMENTUM_X": [1.1139291764403502e-06, 0.08041622058740946, 0.281089867916936, 0.2685912416684854, 0.3546909383726458, 0.42751762117698244, 0.3961890291546464], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500119197731024, 0.17754737873242327, 0.2886886266535324, 0.2982304026439775, 0.3903997174345381, 0.4709785145096904, 0.43738653847739967], "TOTAL_ENERGY": [0.25000333756368603, 0.43799912938585983, 0.9619703787705884, 0.8791047276968619, 0.9233153089823851, 0.9544046352056589, 0.9391419979027679]}, "ELEMENT_210": {}, "ELEMENT_938": {}, "ELEMENT_767": {}, "ELEMENT_1099": {}, "ELEMENT_1658": {}, "NODE_675": {"MOMENTUM_X": [3.386720632651439e-07, 0.042330553177943674, 0.28111664934005054, 0.2643635495689212, 0.34118079555791225, 0.41182959587137596, 0.41125002959517093], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500031818046525, 0.15324199168709737, 0.2838124875795872, 0.2888328209214497, 0.36724699804534094, 0.44461283985298095, 0.4440105863503072], "TOTAL_ENERGY": [0.2500008909079442, 0.3442590672873824, 0.955086747490857, 0.870494468720401, 0.9203306381067501, 0.9499728774284832, 0.9501200333152465]}, "ELEMENT_1118": {}, "NODE_696": {"MOMENTUM_X": [1.062238240868697e-09, 0.001223992537708672, 0.21650709151660774, 0.2441172790330764, 0.2810229790983588, 0.3513814537201117, 0.42432744564720365], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000009987221, 0.12606326571242368, 0.2490279078179189, 0.2676140117240546, 0.29994908437488493, 0.37825387680737255, 0.4561501505330861], "TOTAL_ENERGY": [0.2500000027964219, 0.25300050993486406, 0.7827373234885247, 0.8568763708387415, 0.8979261899620217, 0.922501907074562, 0.9581677139989201]}, "NODE_175": {"MOMENTUM_X": [0.0, 3.278906852417673e-26, 1.1674787969579781e-17, 4.806467516601025e-13, 6.842259347508155e-10, 1.694542037141767e-07, 1.1534372783883838e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999995947, 0.9999999994226081, 0.9999998569114202, 0.9999902582952833], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999985816, 2.499999997979129, 2.4999994991900114, 2.499965904204814]}, "ELEMENT_15": {}, "ELEMENT_560": {}, "ELEMENT_1814": {}, "NODE_197": {"MOMENTUM_X": [0.0, 4.404146479820947e-27, 6.248382076487123e-19, 1.256861055684515e-13, 2.265190755343518e-10, 7.035740495619197e-08, 5.919175712896292e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999998938, 0.9999999998089559, 0.9999999407848511, 0.9999950292547779], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999628, 2.4999999993313455, 2.4999997927469852, 2.499982602436179]}, "ELEMENT_1794": {}, "NODE_465": {"MOMENTUM_X": [0.0006177917032298874, 0.056349730590106374, 0.17630656118189048, 0.26611276608480033, 0.3149332423712259, 0.34154005818602795, 0.35722025150579234], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9994778720730955, 0.9506711907161198, 0.8328944683354019, 0.7259264176406093, 0.6538595232624252, 0.6061124561037325, 0.5730881614767502], "TOTAL_ENERGY": [2.498173210535394, 2.3311824375368206, 1.9550416254411631, 1.6458500522621375, 1.4552767240572149, 1.3368872316122629, 1.25831156386546]}, "ELEMENT_1895": {}, "ELEMENT_542": {}, "ELEMENT_635": {}, "NODE_780": {"MOMENTUM_X": [1.2844106929228998e-19, 4.1561674476077144e-10, 1.042404737036806e-05, 0.037165655549462044, 0.2664390578748431, 0.24633959987454943, 0.2544781716458798], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000040470183, 0.12501014066821933, 0.1505401827828874, 0.2769166910223897, 0.2678832607369811, 0.27564233698482876], "TOTAL_ENERGY": [0.25, 0.2500000011331651, 0.2500283957033066, 0.3334554429493067, 0.9239015745585277, 0.8698287917165413, 0.8766215111954198]}, "NODE_1021": {"MOMENTUM_X": [0.0, 5.846102509987598e-44, 1.457135758543566e-32, 2.478537792974135e-24, 1.162524636379645e-17, 1.2490900459638033e-13, 8.514705564484641e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000011918, 0.12500000081366708], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000003337, 0.2500000022782678]}, "ELEMENT_1157": {}, "ELEMENT_562": {}, "ELEMENT_1921": {}, "ELEMENT_1554": {}, "ELEMENT_320": {}, "NODE_820": {"MOMENTUM_X": [0.0, 1.3721810436600224e-14, 1.5403573057631737e-09, 1.448810450410223e-05, 0.04234915332698581, 0.28169909264458864, 0.24107153021853084], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000001293, 0.12500000145084136, 0.12501364511302618, 0.15357373142184166, 0.28326212533910583, 0.2650651226861827], "TOTAL_ENERGY": [0.25, 0.2500000000000362, 0.2500000040623559, 0.25003820968830476, 0.34518791830888035, 0.9604113766246294, 0.856073521462163]}, "ELEMENT_1082": {}, "ELEMENT_1606": {}, "ELEMENT_1938": {}, "NODE_1": {"MOMENTUM_X": [0.0, 0.0, 5.437217047589688e-41, 2.349156062188448e-32, 3.421106273961438e-25, 9.209664284792042e-19, 1.0901753867420337e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999915], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999702]}, "ELEMENT_390": {}, "ELEMENT_1908": {}, "ELEMENT_1284": {}, "ELEMENT_491": {}, "NODE_306": {"MOMENTUM_X": [2.869453193989645e-20, 1.2164255596194342e-10, 4.4022293821662806e-07, 8.219640501597745e-05, 0.002411087784167331, 0.01934351194601692, 0.06356302675424473], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999027481, 0.9999996502623324, 0.9999347693046543, 0.9980753452706539, 0.9842722580660398, 0.9463934404314437], "TOTAL_ENERGY": [2.5, 2.499999999659618, 2.4999987759184705, 2.4997717015262673, 2.4932705118713385, 2.4453632451643825, 2.316837215274394]}, "ELEMENT_458": {}, "ELEMENT_456": {}, "ELEMENT_1462": {}, "ELEMENT_359": {}, "ELEMENT_648": {}, "NODE_41": {"MOMENTUM_X": [0.0, 8.844949996800192e-46, 6.7796581877978355e-34, 5.42612403994647e-26, 4.904702535543232e-19, 1.091803537352527e-14, 8.557570835221674e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999907, 0.9999999999927696], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999676, 2.499999999974693]}, "ELEMENT_1145": {}, "ELEMENT_1364": {}, "ELEMENT_1962": {}, "NODE_704": {"MOMENTUM_X": [3.4815531010146094e-09, 0.003975027650648037, 0.22336917454873353, 0.25493348660222026, 0.29638807995335215, 0.376080377282563, 0.4239454482878827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000313109821, 0.1280186322981303, 0.25004740011794896, 0.27113523797960604, 0.31333225359475586, 0.39824970914779845, 0.44866814114630793], "TOTAL_ENERGY": [0.2500000087670754, 0.2586765657338189, 0.7956586759862534, 0.8737401945843766, 0.9002308539983435, 0.9376545432447184, 0.9611021478549281]}, "NODE_620": {"MOMENTUM_X": [0.031309565538330614, 0.29467336765325686, 0.36131949642722144, 0.4221130165101141, 0.396197677387704, 0.38929962662636464, 0.39969567227413993], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1459016719567708, 0.30382437791759165, 0.3910218914593723, 0.45462626870054385, 0.4273901343351667, 0.4198611539883395, 0.43107681417444943], "TOTAL_ENERGY": [0.3182896521125138, 0.9394343083732414, 0.9211087723744918, 0.9554945187172582, 0.9420871172219342, 0.9394784254644066, 0.9444334064668948]}, "ELEMENT_1272": {}, "ELEMENT_1183": {}, "NODE_967": {"MOMENTUM_X": [0.0, 1.4982325042858865e-34, 1.5748243966519265e-24, 1.9301960890207088e-17, 5.014417503208719e-13, 3.939376722817143e-09, 2.4412332374754194e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000048733, 0.12500000382908993, 0.1250237102328753], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000136446, 0.250000010721452, 0.2500663984042339]}, "ELEMENT_67": {}, "ELEMENT_853": {}, "ELEMENT_974": {}, "ELEMENT_474": {}, "ELEMENT_582": {}, "ELEMENT_1599": {}, "ELEMENT_497": {}, "ELEMENT_1033": {}, "ELEMENT_8": {}, "ELEMENT_1614": {}, "ELEMENT_1453": {}, "NODE_791": {"MOMENTUM_X": [1.4380579077566468e-21, 3.709379617781605e-11, 1.3198110469566753e-06, 0.008355361533356852, 0.2468785973138694, 0.24361607189295295, 0.25096786137899985], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000003610584, 0.12500128447174838, 0.13162659718510572, 0.26733758705682037, 0.2663942350352051, 0.2715022684967884], "TOTAL_ENERGY": [0.25, 0.2500000001010963, 0.2500035965506817, 0.26945511552095636, 0.8725971730338029, 0.8639523070663646, 0.8760935576450245]}, "ELEMENT_11": {}, "NODE_710": {"MOMENTUM_X": [8.628420633201596e-11, 0.0001872256994198187, 0.13496609257983022, 0.2622609495414899, 0.2620259864647578, 0.3115547679014688, 0.38846873444689745], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000008146764, 0.12517445010257894, 0.2066373020858278, 0.2753761466463525, 0.28333450021390627, 0.33660475211416174, 0.41968739093014934], "TOTAL_ENERGY": [0.2500000002281094, 0.2504890416291093, 0.5719313836820507, 0.9077252749303637, 0.881077829359751, 0.9045583315101317, 0.9400830165229674]}, "ELEMENT_300": {}, "NODE_1015": {"MOMENTUM_X": [0.0, 3.6527532375862075e-44, 4.539987009382769e-33, 1.8417755295072012e-25, 1.5002725305665387e-18, 3.146953933027881e-14, 2.899960111471234e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002992, 0.12500000027491887], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000838, 0.2500000007697728]}, "NODE_391": {"MOMENTUM_X": [2.870952632956135e-12, 1.48915707217487e-06, 0.0003869620834089074, 0.0098456688944012, 0.056798032097162734, 0.13468159513774083, 0.204464229405262], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999973161, 0.9999986011917035, 0.9996422131650213, 0.9910282046348262, 0.9479994176018873, 0.8728563370145529, 0.7988599943996876], "TOTAL_ENERGY": [2.4999999999906066, 2.499995104174795, 2.4987479510988266, 2.4687125244313948, 2.3216167423356735, 2.076517209994021, 1.8503951233440976]}, "ELEMENT_1712": {}, "ELEMENT_1858": {}, "NODE_925": {"MOMENTUM_X": [0.0, 1.4268134382012952e-30, 1.56029436808386e-21, 1.1225031218941896e-15, 2.1662639742319776e-11, 2.0276740311888701e-07, 0.0018245989097958445], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000117, 0.12500000002316972, 0.1250002165137514, 0.12675447391522723], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000034, 0.2500000000648754, 0.2500006062391899, 0.2549638338465612]}, "NODE_186": {"MOMENTUM_X": [0.0, 2.1316017951004214e-26, 5.98304640782259e-18, 2.7219697914800806e-13, 4.263534693962107e-10, 1.1636184552993511e-07, 8.684308611532915e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999997701, 0.9999999996402352, 0.9999999019090853, 0.9999926892029795], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999991953, 2.4999999987408232, 2.4999996566818172, 2.4999744123068077]}, "NODE_221": {"MOMENTUM_X": [0.0, 4.720898054095836e-20, 1.2118836601562196e-13, 5.231512211074639e-10, 2.217564474793593e-07, 1.9232433805589407e-05, 0.0005062807526829871], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999998979, 0.9999999995586906, 0.999999812814414, 0.9999837607958837, 0.9995719862884953], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999642, 2.499999998455416, 2.49999934485052, 2.4999431632691893, 2.4985022580355256]}, "ELEMENT_1777": {}, "ELEMENT_1063": {}, "ELEMENT_83": {}, "ELEMENT_863": {}, "NODE_96": {"MOMENTUM_X": [0.0, 3.492599757265195e-46, 1.213290977993404e-34, 3.405931380386293e-27, 3.402506406610071e-20, 2.4882196694490462e-15, 2.4304503969371786e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999998, 0.9999999999979461], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999925, 2.4999999999928106]}, "ELEMENT_490": {}, "ELEMENT_164": {}, "NODE_959": {"MOMENTUM_X": [0.0, 3.3739184828376044e-35, 9.09560496664258e-26, 1.885244426510843e-18, 6.802752168639811e-14, 7.247769142118144e-10, 6.546516767073522e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000006445, 0.12500000068474124, 0.12500613888797543], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000018047, 0.2500000019172755, 0.2500171895500365]}, "ELEMENT_1447": {}, "NODE_560": {"MOMENTUM_X": [0.4023931408459783, 0.38819007864232563, 0.3920044832098893, 0.3906256539833451, 0.39327174656298125, 0.39260276143066863, 0.39388130321584575], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.348346315545908, 0.34882103040968426, 0.35853168249949013, 0.36204707029931893, 0.36857436856713244, 0.37142167617923116, 0.3755752370018079], "TOTAL_ENERGY": [0.7894115188185787, 0.793294588656455, 0.806784075240545, 0.8163517772904182, 0.8267851670062464, 0.8340166978460071, 0.841130827845122]}, "ELEMENT_1412": {}, "ELEMENT_1100": {}, "NODE_1081": {"MOMENTUM_X": [0.0, 0.0, 1.2975602899254553e-42, 3.2142889376089786e-34, 4.183651825545736e-27, 1.6017407874887786e-20, 1.0137197079011964e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125000000000001], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000266]}, "ELEMENT_1403": {}, "ELEMENT_1168": {}, "NODE_345": {"MOMENTUM_X": [3.002804097831969e-17, 1.456937954745708e-09, 2.5367708350527775e-06, 0.00029826840850169067, 0.006188734777578538, 0.037307143640164894, 0.09854132211343511], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.99999999877721, 0.9999978760037074, 0.9997506100135346, 0.9948067223683074, 0.9680983756981477, 0.9124190332939021], "TOTAL_ENERGY": [2.5, 2.4999999957202346, 2.4999925660225455, 2.4991272475453674, 2.4818668269588757, 2.38985603733096, 2.2044382787963115]}, "ELEMENT_964": {}, "ELEMENT_1999": {}, "ELEMENT_443": {}, "ELEMENT_691": {}, "ELEMENT_668": {}, "ELEMENT_1894": {}, "ELEMENT_794": {}, "ELEMENT_1631": {}, "ELEMENT_193": {}, "ELEMENT_1101": {}, "ELEMENT_1397": {}, "ELEMENT_393": {}, "ELEMENT_1953": {}, "ELEMENT_243": {}, "NODE_870": {"MOMENTUM_X": [0.0, 1.5357258908639386e-22, 2.0084737815315496e-15, 7.836035856312717e-11, 8.125795534348415e-07, 0.006848564866780935, 0.2882988013623069], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000214, 0.12500000008381465, 0.12500086749300313, 0.13088950227747534, 0.2911036063208776], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000000006, 0.25000000023468094, 0.2500024289914163, 0.26711796154071216, 0.9888611425878377]}, "NODE_190": {"MOMENTUM_X": [0.0, 1.344661046619118e-26, 1.631919900498074e-18, 1.9318522813447429e-13, 3.218927278996013e-10, 9.310694679962653e-08, 7.335578490953837e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999998359, 0.9999999997273763, 0.9999999212974962, 0.9999938138169945], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999994262, 2.499999999045818, 2.49999972454125, 2.499978348428282]}, "ELEMENT_1198": {}, "ELEMENT_273": {}, "ELEMENT_896": {}, "ELEMENT_1224": {}, "NODE_856": {"MOMENTUM_X": [0.0, 4.624919304947577e-18, 2.394068684436246e-12, 4.050080821063652e-08, 0.0002568381043115594, 0.14122008642355932, 0.25510054062294024], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000228284, 0.12500003872431803, 0.125241860459714, 0.21073977706854075, 0.27182090860219216], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000006392, 0.25000010842811776, 0.25067826849918706, 0.5897626204820041, 0.8940563361970717]}, "ELEMENT_1431": {}, "ELEMENT_1146": {}, "ELEMENT_1890": {}, "NODE_6": {"MOMENTUM_X": [0.0, 5.587026858489855e-52, 6.190671909347282e-38, 1.1441937721524395e-29, 1.534378494138466e-22, 1.4487473824913055e-16, 2.204649079970371e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998258], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999993903]}, "NODE_20": {"MOMENTUM_X": [0.0, 5.596964460652614e-50, 6.101336173786542e-37, 9.754065356335904e-29, 1.0146220088029318e-21, 4.1504096498665036e-16, 4.712914359930224e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 0.9999999999996004], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999987, 2.499999999998602]}, "ELEMENT_1705": {}, "ELEMENT_1930": {}, "ELEMENT_1369": {}, "NODE_612": {"MOMENTUM_X": [0.09571469381174864, 0.31490478338344513, 0.4047756418992502, 0.41358291601118097, 0.3860722938866479, 0.3959845639809985, 0.3965345529230704], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.18319468947164602, 0.333702876434133, 0.43700664371375736, 0.44592770942245, 0.4162702549558572, 0.4272469485788932, 0.4278679657561569], "TOTAL_ENERGY": [0.46978166209855554, 0.9207048157802608, 0.9440912424770636, 0.9501249571655647, 0.93756313013076, 0.9416659671155715, 0.9420599290762629]}, "ELEMENT_723": {}, "NODE_993": {"MOMENTUM_X": [0.0, 2.8413604350590252e-40, 5.297644459233568e-30, 1.4267893458917267e-22, 1.5565080021781789e-16, 2.1448791000715397e-12, 1.8861130453690998e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000017, 0.1250000000020377, 0.12500001783509115], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.25000000000570544, 0.2500000499382608]}, "NODE_1050": {"MOMENTUM_X": [0.0, 4.843253990316195e-50, 2.0505050895579226e-37, 2.0382455633116492e-29, 1.884794484093908e-22, 1.1236851505632527e-16, 1.097155680487563e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000008, 0.1250000000010349], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000003, 0.25000000000289774]}, "ELEMENT_871": {}, "NODE_736": {"MOMENTUM_X": [2.1078157474925834e-13, 3.8120446884265476e-06, 0.023650120020707436, 0.2630330411499769, 0.2474037525446441, 0.26961191441687155, 0.32737235226179207], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000000002039, 0.12500371472362024, 0.14196400393561673, 0.27536016506252037, 0.2696402444531071, 0.2919570449694005, 0.3543305067981583], "TOTAL_ENERGY": [0.25000000000057093, 0.25001040148955433, 0.3031009388363288, 0.9151328756404553, 0.8687236221941717, 0.8840841926418528, 0.9107892131234083]}, "ELEMENT_1436": {}, "NODE_633": {"MOMENTUM_X": [0.00541217305079449, 0.2845489826544421, 0.3100851950260647, 0.40958456210799354, 0.4153352929907414, 0.38449351702339574, 0.3938223819458644], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1292839599013038, 0.28908784875746124, 0.3389709999309386, 0.4411305732834788, 0.4485824765556889, 0.4151174616854706, 0.42532602959180177], "TOTAL_ENERGY": [0.2624599351759041, 0.9501339862909071, 0.8901107028406913, 0.9523027981454836, 0.95150627201309, 0.9377896309213748, 0.9418729705790927]}, "ELEMENT_727": {}, "ELEMENT_787": {}, "ELEMENT_34": {}, "NODE_1034": {"MOMENTUM_X": [0.0, 1.7587275403615335e-45, 1.1225908398884886e-33, 1.639043042185902e-25, 2.209049091349814e-18, 3.338490387579384e-14, 2.404078415861035e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002962, 0.12500000021304544], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.250000000000083, 0.2500000005965273]}, "ELEMENT_935": {}, "NODE_984": {"MOMENTUM_X": [0.0, 3.1218794760128626e-38, 4.272950447695996e-28, 1.275765566998355e-20, 3.037026781256858e-15, 3.325848643572258e-11, 2.470381219438927e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000286, 0.1250000000313372, 0.12500023230782167], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.250000000000008, 0.2500000000877441, 0.2500006504628808]}, "NODE_878": {"MOMENTUM_X": [0.0, 4.05321851494463e-21, 2.3202026393263266e-14, 6.58095680301428e-10, 4.717559269897185e-06, 0.02034192195372982, 0.26899525732121143], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000000221, 0.12500000062856245, 0.12500451316116565, 0.1397574177073926, 0.2779543376013844], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000619, 0.2500000017599749, 0.2500126372127502, 0.2956951066884128, 0.9297135079786272]}, "ELEMENT_1855": {}, "NODE_1107": {"MOMENTUM_X": [0.0, 0.0, 4.3587293617724906e-45, 4.0913763921994703e-36, 1.4347863764510964e-28, 2.1383239707104588e-22, 7.667321751132719e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000002]}, "NODE_457": {"MOMENTUM_X": [0.00010874752106447754, 0.027251170998661076, 0.12732813074647398, 0.2285027926644922, 0.2902871470757658, 0.32502533417772794, 0.3455339166673508], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999082603397965, 0.9766116081237545, 0.8838347864201623, 0.7741239036589983, 0.6926197699548915, 0.6373638281675781, 0.5988735916752457], "TOTAL_ENERGY": [2.4996789332107734, 2.4190489430195723, 2.1130712456423373, 1.7812352351729424, 1.5559287247401796, 1.413402284170882, 1.318955473924723]}, "NODE_1077": {"MOMENTUM_X": [0.0, 1.4195594280011695e-54, 2.1832147953205123e-40, 1.2520928159678782e-31, 2.289668589531321e-24, 3.683140740366662e-18, 4.47896871989702e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000004352], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001218]}, "ELEMENT_437": {}, "ELEMENT_985": {}, "ELEMENT_412": {}, "ELEMENT_282": {}, "ELEMENT_407": {}, "ELEMENT_903": {}, "ELEMENT_63": {}, "ELEMENT_1175": {}, "ELEMENT_1142": {}, "ELEMENT_1776": {}, "ELEMENT_1208": {}, "ELEMENT_3": {}, "ELEMENT_717": {}, "ELEMENT_877": {}, "ELEMENT_61": {}, "ELEMENT_368": {}, "NODE_354": {"MOMENTUM_X": [5.244263192330034e-14, 1.5202988144062536e-07, 7.568874983127128e-05, 0.0031270231882777493, 0.02702745028216733, 0.08565549198972659, 0.15460636037861109], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999557, 0.9999998713521335, 0.9999358978498284, 0.9973433141946696, 0.9767289298433478, 0.9237736439274319, 0.8560647984348524], "TOTAL_ENERGY": [2.499999999999845, 2.49999954973251, 2.499775650713099, 2.4907135342919084, 2.4193717153731216, 2.24155402681554, 2.0254183514590802]}, "ELEMENT_754": {}, "NODE_259": {"MOMENTUM_X": [0.0, 6.506729201279048e-16, 3.4271313864245435e-11, 4.9726407972790505e-08, 8.708741549239147e-06, 0.00034778107539580204, 0.0045025257166114874], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999994, 0.9999999999711515, 0.9999999581521434, 0.9999926760601938, 0.9997073425239399, 0.996199140865628], "TOTAL_ENERGY": [2.5, 2.4999999999999982, 2.4999999998990297, 2.499999853532505, 2.4999743663134786, 2.498975846150085, 2.486719788824813]}, "ELEMENT_766": {}, "NODE_759": {"MOMENTUM_X": [4.923601946963951e-16, 7.818103237719719e-08, 0.0011302645693310562, 0.1858785179631882, 0.24986579954987884, 0.2591858265702984, 0.2896024668527866], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000044, 0.12500006944511252, 0.1259323619490138, 0.23082065460771767, 0.2656133567384298, 0.27384605343534874, 0.306892202815218], "TOTAL_ENERGY": [0.2500000000000013, 0.2500001944464267, 0.25262985466581817, 0.696611931485065, 0.8718838232179928, 0.8831486158764845, 0.8958160798224771]}, "ELEMENT_1129": {}, "ELEMENT_1548": {}, "NODE_497": {"MOMENTUM_X": [0.036705665035916435, 0.22482181071354948, 0.3143288702609907, 0.35231597604108994, 0.3695038409306267, 0.378120100572005, 0.3833041796706142], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.968072265749892, 0.7785650200910739, 0.6553336252668049, 0.586852602818357, 0.5459490448899756, 0.5189377353385621, 0.5004793437155538], "TOTAL_ENERGY": [2.390103552746472, 1.7951144127377778, 1.4581238824676959, 1.2883636337339481, 1.1938470133257328, 1.1349019201545771, 1.0950048259844598]}, "ELEMENT_259": {}, "NODE_637": {"MOMENTUM_X": [0.007278496581644743, 0.2697808701989701, 0.3194258784827755, 0.40269811738987976, 0.39909944477937237, 0.38538203766380646, 0.3925138106655609], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1306547999050547, 0.2832822664810726, 0.3474157507645296, 0.43724292669622855, 0.4341697969856111, 0.41990547467829037, 0.42776772851468636], "TOTAL_ENERGY": [0.26663194425280223, 0.9166096792347991, 0.9037512635788024, 0.9435057484663358, 0.9409749485061534, 0.9344273527322722, 0.9381978385860779]}, "NODE_377": {"MOMENTUM_X": [3.772860215614314e-13, 4.3664998401560847e-07, 0.0001625644376218266, 0.005503558432459754, 0.03988361949200516, 0.10990049625122095, 0.18115538183258345], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999996843, 0.9999996347714721, 0.9998642760735182, 0.9953898412645993, 0.965883650475235, 0.9016788667078218, 0.8289760040745779], "TOTAL_ENERGY": [2.499999999998895, 2.4999987217004733, 2.4995250017482955, 2.4838995307936953, 2.382336428008982, 2.1697242958370446, 1.9426407419420761]}, "ELEMENT_714": {}, "NODE_774": {"MOMENTUM_X": [1.0854313413075284e-19, 2.271072116876709e-10, 5.9185539183863685e-06, 0.027424910244526896, 0.28141776120007617, 0.23995090850571418, 0.25576105323940523], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000021356145, 0.12500554779894912, 0.14409625628288775, 0.2828102895701236, 0.2644554295799894, 0.2750597850050607], "TOTAL_ENERGY": [0.25, 0.2500000005979721, 0.2500155344074167, 0.3108156074923335, 0.9590134385121943, 0.8516112750179258, 0.8807666268440546]}, "ELEMENT_561": {}, "ELEMENT_1681": {}, "NODE_44": {"MOMENTUM_X": [0.0, 0.0, 1.5612841852914673e-41, 5.314590519968947e-33, 6.627617082818647e-26, 7.582747461134813e-20, 2.131859503744325e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999982], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999994]}, "NODE_1092": {"MOMENTUM_X": [0.0, 0.0, 2.9003453821331583e-44, 1.0895584448700177e-35, 1.5948881015633068e-28, 7.216613988502399e-22, 1.2069963188859628e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000001], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000033]}, "ELEMENT_693": {}, "ELEMENT_264": {}, "ELEMENT_901": {}, "NODE_312": {"MOMENTUM_X": [1.3792543210011208e-20, 6.061432027242637e-11, 2.3251296026597734e-07, 4.8215661828120273e-05, 0.0016236984297394346, 0.015121979025941014, 0.056057544184906875], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999489292, 0.9999998041655284, 0.9999593958051283, 0.9986297978703976, 0.9871294149803145, 0.9511625437915989], "TOTAL_ENERGY": [2.5, 2.499999999821252, 2.4999993145794366, 2.4998578884965257, 2.4952074633652046, 2.4552072570597137, 2.332532751161096]}, "NODE_273": {"MOMENTUM_X": [0.0, 1.1195111599538571e-13, 2.044787506418389e-09, 1.3422670250359347e-06, 0.00011611245378556032, 0.0024165295867487517, 0.017145911993320356], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999029, 0.9999999982254666, 0.9999988393375029, 0.9999000519879636, 0.9979265065710217, 0.9852350822903263], "TOTAL_ENERGY": [2.5, 2.49999999999966, 2.4999999937891326, 2.499995937683985, 2.499650199658312, 2.492749659943725, 2.448648500390895]}, "ELEMENT_1861": {}, "ELEMENT_521": {}, "NODE_987": {"MOMENTUM_X": [0.0, 3.4115484224876796e-38, 5.102262996470406e-28, 4.781908498675675e-20, 5.21035723895624e-15, 4.984775221144743e-11, 3.0734995990175627e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000494, 0.12500000004722636, 0.12500029167133442], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000138, 0.2500000001322338, 0.25000081668126006]}, "ELEMENT_1458": {}, "ELEMENT_1680": {}, "ELEMENT_706": {}, "ELEMENT_207": {}, "ELEMENT_827": {}, "NODE_149": {"MOMENTUM_X": [0.0, 3.0192180931232034e-31, 4.961764498231512e-22, 1.0703702719502306e-15, 4.0665657171684366e-12, 2.2873324927598248e-09, 3.257227816238583e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999991, 0.9999999999965702, 0.9999999980716775, 0.9999997255190791], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999997, 2.499999999987996, 2.499999993250871, 2.4999990393169202]}, "ELEMENT_1477": {}, "ELEMENT_885": {}, "ELEMENT_981": {}, "ELEMENT_404": {}, "ELEMENT_980": {}, "ELEMENT_1363": {}, "ELEMENT_1097": {}, "ELEMENT_106": {}, "NODE_245": {"MOMENTUM_X": [0.0, 5.401163916355296e-19, 3.928081138284688e-13, 1.3503685475512872e-09, 4.920856224810256e-07, 3.779597047577537e-05, 0.0008864999885365117], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999996673, 0.9999999988579225, 0.9999995846678901, 0.9999681707053103, 0.9992538408392907], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999988356, 2.4999999960027286, 2.4999985463379573, 2.4998885992810647, 2.4973893567957153]}, "NODE_284": {"MOMENTUM_X": [2.391334221226314e-24, 1.7113018222475618e-12, 1.731130825201139e-08, 7.136770859686548e-06, 0.0004101630055757701, 0.005893119593485701, 0.03043824589194396], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999986292, 0.9999999862342885, 0.9999943406177222, 0.9996739352432105, 0.9952697567075361, 0.9749852021513711], "TOTAL_ENERGY": [2.5, 2.4999999999952025, 2.4999999518200107, 2.499980192233553, 2.4988589799633107, 2.4834831091616363, 2.413453305576212]}, "ELEMENT_444": {}, "ELEMENT_1314": {}, "ELEMENT_1245": {}, "ELEMENT_1976": {}, "ELEMENT_1710": {}, "ELEMENT_430": {}, "ELEMENT_1231": {}, "ELEMENT_161": {}, "ELEMENT_1667": {}, "NODE_1087": {"MOMENTUM_X": [0.0, 0.0, 4.4767329092802026e-42, 3.500758298353771e-33, 8.191492453802501e-26, 1.2525755593073535e-19, 4.627331070545442e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000044], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000124]}, "NODE_831": {"MOMENTUM_X": [0.0, 9.690012800903182e-16, 1.7172396079266752e-10, 1.9331520708170573e-06, 0.009837232730234296, 0.2692593622291539, 0.23522948665304108], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000092, 0.1250000001617273, 0.12500182098213147, 0.13265160916353252, 0.27688914780500473, 0.2622685243685213], "TOTAL_ENERGY": [0.25, 0.25000000000000255, 0.2500000004528364, 0.2500050988102984, 0.2726652373794602, 0.9271263499258399, 0.841431031478553]}, "ELEMENT_588": {}, "ELEMENT_1288": {}, "ELEMENT_369": {}, "ELEMENT_957": {}, "NODE_881": {"MOMENTUM_X": [0.0, 4.5053958520221466e-24, 1.7018887586159205e-16, 8.86056700381295e-12, 9.992502368333343e-08, 0.0008898045129897847, 0.22958400168155993], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000017, 0.12500000000948328, 0.12500010669594758, 0.12589001996709986, 0.2609924668467985], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000005, 0.25000000002655326, 0.25000029874882, 0.25250464146833906, 0.8303685775518561]}, "ELEMENT_326": {}, "ELEMENT_970": {}, "ELEMENT_1573": {}, "NODE_422": {"MOMENTUM_X": [2.5324843154871895e-07, 0.001351249287717839, 0.027604514756103767, 0.10814608830819705, 0.19639012048295984, 0.258417918516817, 0.29760768932866705], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999997861264086, 0.9988576937047327, 0.9762830030919619, 0.9025178723060805, 0.8112289594027277, 0.7364611684876488, 0.6814975473279186], "TOTAL_ENERGY": [2.4999992514425795, 2.4960044796558534, 2.417882705053819, 2.1725746761031095, 1.8895014397913579, 1.674658998158985, 1.5264928439087704]}, "NODE_134": {"MOMENTUM_X": [0.0, 6.852023542973398e-31, 8.045121813183349e-22, 2.330345921196879e-15, 8.306985624004408e-12, 4.328298907979193e-09, 5.625705812616483e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.999999999999998, 0.9999999999928025, 0.9999999962593197, 0.9999995153295588], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999993, 2.4999999999748086, 2.4999999869076186, 2.4999983036538893]}, "NODE_198": {"MOMENTUM_X": [0.0, 9.712342141023293e-25, 1.0481474751153029e-16, 1.7283234192118685e-12, 2.002789855789955e-09, 4.216108109206177e-07, 2.4863915054596503e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999999, 0.999999999998541, 0.999999998310756, 0.9999996447656201, 0.9999790758708719], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.4999999999948934, 2.499999994087646, 2.4999987566799144, 2.4999267663237843]}, "ELEMENT_522": {}, "NODE_1055": {"MOMENTUM_X": [0.0, 4.992481847972206e-50, 3.523802969436846e-37, 1.1035612905450705e-28, 2.1221146072751293e-21, 3.144353361933635e-16, 2.560798233803402e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000028, 0.12500000000248737], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000083, 0.2500000000069646]}, "NODE_927": {"MOMENTUM_X": [0.0, 8.319815672388341e-30, 4.536098331380704e-21, 3.884287695170708e-15, 6.744999549535462e-11, 6.02430410613657e-07, 0.005009371952301109], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000037, 0.1250000000639626, 0.12500056782884955, 0.12897929165910668], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000103, 0.25000000017909524, 0.2500015899265203, 0.2614920683762726]}, "NODE_840": {"MOMENTUM_X": [0.0, 4.102520618724394e-17, 1.2361258880931196e-11, 1.950396179207646e-07, 0.0014595848401141398, 0.2180529429669571, 0.23727901297083626], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000003, 0.12500000001164754, 0.1250001832754238, 0.12627590959312163, 0.25037044876207015, 0.2628591799370733], "TOTAL_ENERGY": [0.25, 0.2500000000000001, 0.25000000003261313, 0.2500005131718004, 0.2536054873070934, 0.7892111231097769, 0.8461981893134063]}, "ELEMENT_1039": {}, "NODE_310": {"MOMENTUM_X": [8.007281030896189e-21, 6.526218857063901e-11, 2.503691741446959e-07, 5.1371081371786296e-05, 0.001705319546502577, 0.015619154338834484, 0.05699177039351471], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999448066, 0.9999997880162189, 0.9999564739493777, 0.9985522482179056, 0.9866364703224355, 0.9501394260786014], "TOTAL_ENERGY": [2.5, 2.4999999998068234, 2.4999992580568686, 2.499847662459016, 2.494936386278935, 2.453500224407848, 2.3290849528015047]}, "ELEMENT_751": {}, "ELEMENT_2000": {}, "NODE_659": {"MOMENTUM_X": [7.476844140159839e-05, 0.19161578267592788, 0.2644979998403472, 0.332740676263921, 0.40468022536610915, 0.400186964917357, 0.38599124056006495], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12507206232923865, 0.23893442720723782, 0.28583360221552884, 0.36060538421064214, 0.4391707679976408, 0.43493564606205065, 0.4200976667346173], "TOTAL_ENERGY": [0.2502018928817938, 0.7258713478096908, 0.8853727528766345, 0.9133487856454233, 0.9449069791407415, 0.9422630733551998, 0.9354887927692558]}, "NODE_50": {"MOMENTUM_X": [0.0, 1.3339818161985204e-43, 2.5976102243709e-32, 1.3527771739702096e-24, 9.954560295977665e-18, 5.919237894721475e-14, 3.736954960798461e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.99999999999995, 0.9999999999684275], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999825, 2.499999999889496]}, "ELEMENT_675": {}, "ELEMENT_349": {}, "NODE_358": {"MOMENTUM_X": [4.8542767043187384e-14, 1.3783744833177762e-07, 6.987485485645829e-05, 0.0029619903069577147, 0.026218156601834627, 0.08459721341743535, 0.15419136225734306], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999999999999959, 0.9999998840324558, 0.9999412573905253, 0.9975031493228097, 0.9775870216970427, 0.9251494412590667, 0.8570284885374507], "TOTAL_ENERGY": [2.499999999999857, 2.49999959411363, 2.499794407803272, 2.4912716318566632, 2.4223205976141804, 2.246105860203222, 2.028478418371835]}, "ELEMENT_1982": {}, "ELEMENT_365": {}, "ELEMENT_1042": {}, "ELEMENT_1093": {}, "ELEMENT_1859": {}, "ELEMENT_219": {}, "NODE_480": {"MOMENTUM_X": [0.002940513814332452, 0.10061110616852312, 0.22647128215782428, 0.30029859093973393, 0.33712494779994523, 0.35666774533456047, 0.36797617765878127], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9975147441747925, 0.9097737727933043, 0.7766059793842467, 0.6778860851903766, 0.6158620585279984, 0.5754248149157649, 0.5473400522525406], "TOTAL_ENERGY": [2.4913153029605875, 2.196537131677746, 1.7887260528939921, 1.517196910730976, 1.359968989543034, 1.2631628704927527, 1.198623227678347]}, "NODE_29": {"MOMENTUM_X": [0.0, 9.061229238217704e-46, 6.702331898734849e-34, 6.633471943998379e-26, 5.747524379978379e-19, 1.471304225396506e-14, 1.1332736696129183e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999876, 0.9999999999903314], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999956, 2.49999999996616]}, "NODE_1041": {"MOMENTUM_X": [0.0, 6.493066015368805e-48, 1.0112905511069272e-35, 2.70048298035594e-27, 1.226487386740755e-20, 1.4805062074933816e-15, 1.2108971749404068e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000142, 0.12500000001142977], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000039, 0.25000000003200323]}, "ELEMENT_649": {}, "NODE_33": {"MOMENTUM_X": [0.0, 8.855345689748645e-46, 7.624068382744699e-34, 6.00830322228649e-26, 5.210370439903712e-19, 1.2687657153321375e-14, 9.803013483536943e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999893, 0.9999999999916911], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999623, 2.4999999999709184]}, "NODE_601": {"MOMENTUM_X": [0.1822684662925034, 0.35515761338741575, 0.4242165257602066, 0.3933557499113138, 0.390438903931603, 0.3984986727422482, 0.3941585088067925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2321789138916322, 0.38288147129260636, 0.45604457157859746, 0.42358257716298214, 0.4204903869822218, 0.42954850783693294, 0.4250492762052759], "TOTAL_ENERGY": [0.6859559605801633, 0.9182028637349913, 0.9548046153577223, 0.9391103387810474, 0.9384777071134458, 0.9420939182502147, 0.9406046677036102]}, "ELEMENT_704": {}, "ELEMENT_55": {}, "ELEMENT_279": {}, "ELEMENT_744": {}, "ELEMENT_1587": {}, "ELEMENT_1027": {}, "ELEMENT_927": {}, "ELEMENT_1546": {}, "ELEMENT_1281": {}, "ELEMENT_604": {}, "ELEMENT_962": {}, "ELEMENT_1": {}, "NODE_1111": {"MOMENTUM_X": [0.0, 0.0, 7.826703263893685e-45, 1.064392959932349e-35, 2.2817869096944754e-28, 2.1998124032504106e-21, 2.0643243956924215e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000005]}, "ELEMENT_667": {}, "ELEMENT_809": {}, "NODE_68": {"MOMENTUM_X": [0.0, 1.1639551109081292e-45, 3.265266190076699e-34, 3.1748013885781176e-26, 2.7228386927860916e-19, 5.4540029347672475e-15, 4.6983423221043526e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999953, 0.9999999999960248], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999984, 2.4999999999860876]}, "ELEMENT_1423": {}, "ELEMENT_322": {}, "ELEMENT_1994": {}, "ELEMENT_535": {}, "ELEMENT_1885": {}, "ELEMENT_1749": {}, "NODE_960": {"MOMENTUM_X": [0.0, 7.014708492779063e-35, 1.6831556726354446e-25, 2.884658544890668e-18, 1.119222876543712e-13, 1.1480638566915529e-09, 9.952006157241779e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000010644, 0.12500000108743894, 0.12500934205664602], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000029793, 0.2500000030448289, 0.2500261593253368]}, "ELEMENT_1960": {}, "ELEMENT_1050": {}, "ELEMENT_536": {}, "NODE_459": {"MOMENTUM_X": [0.00010550829085488847, 0.027007361571632083, 0.12733264679305217, 0.22886459209150783, 0.2907021569032715, 0.3253553808036213, 0.3457580468206223], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999113230049352, 0.9769163893265961, 0.8841940891606647, 0.7741945536352314, 0.6924635065636516, 0.637042510921234, 0.5984302578100947], "TOTAL_ENERGY": [2.4996896510592377, 2.420093167115096, 2.1142429418341617, 1.7815372664094844, 1.5556506219204709, 1.4127792074326881, 1.3180873607832857]}, "ELEMENT_931": {}, "ELEMENT_1140": {}, "ELEMENT_658": {}, "ELEMENT_312": {}, "NODE_476": {"MOMENTUM_X": [0.0029499849014276327, 0.1008868229595929, 0.22638810191325406, 0.2998305790949341, 0.3367137856095916, 0.3564173571902103, 0.3677570823657902], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9975023281422165, 0.9092697308473856, 0.7762111561596476, 0.6780092200447854, 0.6163426096747201, 0.5761212014854222, 0.5479963358506861], "TOTAL_ENERGY": [2.4912719728319765, 2.194883416436005, 1.7875061857271775, 1.5173361209821898, 1.3608114980117296, 1.2643586576803143, 1.2000211822089246]}, "NODE_54": {"MOMENTUM_X": [0.0, 1.2603224681336196e-41, 1.08709403296656e-30, 3.0940913930184364e-23, 1.3435513823077167e-16, 3.554747074205438e-13, 1.7808378354733188e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999996988, 0.9999999998490496], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999998946, 2.499999999471674]}, "NODE_342": {"MOMENTUM_X": [2.64154946614202e-15, 2.5252756511554785e-08, 2.129564341462166e-05, 0.0013219240180277173, 0.015767342912201048, 0.06251889077206878, 0.12856990749010486], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999978, 0.9999999784945669, 0.9999818506374394, 0.9988724543756827, 0.9864622262176435, 0.9450179041819391, 0.8823732534441606], "TOTAL_ENERGY": [2.499999999999992, 2.4999999247309854, 2.499936477909472, 2.4960557919817923, 2.452900264644902, 2.3119411686754305, 2.1078642062120583]}, "ELEMENT_1922": {}, "NODE_723": {"MOMENTUM_X": [4.313892275847773e-12, 2.390163388858045e-05, 0.06202066939728186, 0.27678313248006886, 0.2509428578273202, 0.2846303069922962, 0.3537104629766858], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000407807, 0.12502262299705147, 0.16539634623741406, 0.2816124543169485, 0.2733381573974953, 0.30782619155379365, 0.3825557015973092], "TOTAL_ENERGY": [0.2500000000114186, 0.25006335419315223, 0.39105179409070956, 0.9477857758249253, 0.8699223177952189, 0.8918928505997661, 0.9237426150056381]}, "NODE_205": {"MOMENTUM_X": [0.0, 2.1120372950691818e-21, 2.0838120068156642e-14, 1.3358327713699498e-10, 7.609571186556033e-08, 8.350501964113202e-06, 0.0002667189691235977], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999818, 0.9999999998841643, 0.9999999342045459, 0.9999928097055804, 0.9997711709355034], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999365, 2.4999999995945745, 2.4999997697159184, 2.4999748340634897, 2.4991991853539317]}, "ELEMENT_1747": {}, "ELEMENT_743": {}, "ELEMENT_453": {}, "NODE_944": {"MOMENTUM_X": [0.0, 7.36165249749412e-31, 1.6920714985480944e-21, 1.5267500704738354e-15, 2.570252745322162e-11, 1.7277636671176064e-07, 0.0010243230457890407], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000147, 0.12500000002453632, 0.1250001652855511, 0.12592903143717052], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000405, 0.25000000006870166, 0.250000462800028, 0.25261778953501585]}, "NODE_904": {"MOMENTUM_X": [0.0, 7.29772328281191e-27, 2.054649676869417e-18, 2.1171969007351742e-13, 2.8774026051425823e-09, 2.6113191651572927e-05, 0.07840094042418103], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000020048, 0.12500000271632059, 0.12502438449737152, 0.17283315060133508], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000005613, 0.2500000076056976, 0.25006828711012447, 0.4233751848051489]}, "NODE_488": {"MOMENTUM_X": [0.001608230969009567, 0.08589250304229715, 0.21995121644826593, 0.30090824839553676, 0.33997144970458837, 0.3601404343405293, 0.37162749273977375], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9985172753267019, 0.9194175113979832, 0.7783096182489815, 0.6736311397084187, 0.6105822801089555, 0.5708380131595583, 0.5437573834850951], "TOTAL_ENERGY": [2.494814585933692, 2.2268192746904503, 1.78928680906329, 1.5007653484778913, 1.3426203153581049, 1.2488158278302355, 1.1874082550706049]}, "ELEMENT_848": {}, "ELEMENT_1052": {}, "NODE_168": {"MOMENTUM_X": [0.0, 6.235485054030848e-26, 2.7952023533711173e-17, 1.0745322458530172e-12, 1.437010098731128e-09, 3.2677626845872004e-07, 2.005918587363623e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999991457, 0.9999999988609253, 0.9999997411498079, 0.9999840932761674], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999970104, 2.4999999960132393, 2.4999990940244747, 2.499944326968581]}, "ELEMENT_1675": {}, "ELEMENT_1746": {}, "ELEMENT_883": {}, "NODE_1088": {"MOMENTUM_X": [0.0, 0.0, 5.154155754219995e-42, 4.130999933988916e-33, 8.76382787817832e-26, 1.7815766671658647e-19, 5.851137964059887e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000572], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001593]}, "NODE_368": {"MOMENTUM_X": [9.017125688077137e-13, 8.453099503633327e-07, 0.0002504281875854207, 0.006896875688961685, 0.04353102385400967, 0.11240139192308217, 0.18124974487460285], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999992388, 0.9999992876612352, 0.9997889463502664, 0.9941579591155857, 0.9623373993817816, 0.8986013060673892, 0.8281769686961248], "TOTAL_ENERGY": [2.499999999997336, 2.499997506815573, 2.4992613985869836, 2.479609040759013, 2.370296285213138, 2.159785572571827, 1.940148403773804]}, "NODE_1091": {"MOMENTUM_X": [0.0, 0.0, 1.1569284249172447e-44, 5.8576960696876384e-36, 9.649405960543542e-29, 2.004308011109963e-22, 7.506329244737597e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000002]}, "ELEMENT_1767": {}, "NODE_955": {"MOMENTUM_X": [0.0, 1.0348978070470369e-32, 3.464331223691086e-23, 1.5835634423149766e-16, 3.2629397059775727e-12, 2.3353302977174174e-08, 0.00013882957625670992], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000017, 0.12500000000311368, 0.12500002233228155, 0.12513172273066708], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000044, 0.2500000000087183, 0.2500000625303973, 0.25036913472440375]}, "ELEMENT_735": {}, "ELEMENT_1628": {}, "ELEMENT_488": {}, "ELEMENT_420": {}, "ELEMENT_1169": {}, "ELEMENT_1178": {}, "NODE_263": {"MOMENTUM_X": [0.0, 9.923098085122498e-15, 2.994548793564824e-10, 2.885520432923379e-07, 3.504983321954228e-05, 0.0009990867379958792, 0.009448585084862446], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999916, 0.9999999997448219, 0.9999997538739798, 0.9999701209637122, 0.9991484999474716, 0.9919217493299044], "TOTAL_ENERGY": [2.5, 2.4999999999999702, 2.4999999991068758, 2.499999138559057, 2.4998954250218888, 2.497020950624944, 2.471825817378894]}, "ELEMENT_74": {}, "ELEMENT_1867": {}, "ELEMENT_512": {}, "ELEMENT_731": {}, "ELEMENT_674": {}, "ELEMENT_1214": {}, "NODE_274": {"MOMENTUM_X": [0.0, 9.923094204274893e-14, 1.7832303583271474e-09, 1.174280722713074e-06, 0.00010356528470683286, 0.0022225878530569843, 0.016317947893523053], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999156, 0.9999999984801281, 0.9999989985250991, 0.9999117160031319, 0.9981049020193941, 0.986002524311983], "TOTAL_ENERGY": [2.5, 2.4999999999997047, 2.4999999946804485, 2.49999649483992, 2.49969102004823, 2.4933729714997668, 2.4513030713038675]}, "ELEMENT_1103": {}, "ELEMENT_681": {}, "ELEMENT_1195": {}, "ELEMENT_111": {}, "ELEMENT_1014": {}, "ELEMENT_1022": {}, "ELEMENT_591": {}, "ELEMENT_540": {}, "ELEMENT_1629": {}, "ELEMENT_1211": {}, "ELEMENT_319": {}, "ELEMENT_438": {}, "ELEMENT_1958": {}, "ELEMENT_1877": {}, "ELEMENT_886": {}, "NODE_714": {"MOMENTUM_X": [1.0102815622560053e-10, 0.0002736802791837856, 0.14452905329521915, 0.25503727480280675, 0.2639004910984837, 0.3173491515625858, 0.3905834986482732], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000000981214, 0.12526088099789232, 0.21333427556093543, 0.27238710822254003, 0.2854661232500295, 0.34375936067894647, 0.42290159664393906], "TOTAL_ENERGY": [0.2500000002747399, 0.2507317409291552, 0.6007479691808828, 0.8916440548365218, 0.8829083616511251, 0.9057825577626909, 0.9397113635404557]}, "ELEMENT_632": {}, "ELEMENT_68": {}, "ELEMENT_893": {}, "ELEMENT_1733": {}, "ELEMENT_94": {}, "ELEMENT_97": {}, "ELEMENT_1240": {}, "ELEMENT_1056": {}, "ELEMENT_1517": {}, "NODE_529": {"MOMENTUM_X": [0.2679703022954689, 0.37467664591698513, 0.3891389200366004, 0.39439882853935304, 0.3949146207901456, 0.39565774249608665, 0.3968667626656224], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.6772185310175102, 0.5306419239937141, 0.4850856201367298, 0.4633554267620528, 0.4484750109210167, 0.4397338714195683, 0.43455897897147283], "TOTAL_ENERGY": [1.5117447178191286, 1.1596828780876856, 1.0615979001714169, 1.0143500408523374, 0.9867339040399534, 0.9689907761334016, 0.9571555006874432]}, "NODE_886": {"MOMENTUM_X": [0.0, 9.268555601487709e-23, 1.6182559979405071e-15, 6.211532537857359e-11, 5.16008132568098e-07, 0.0029859128013759, 0.23890021575898912], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000000015, 0.1250000000585013, 0.125000486115222, 0.1275429832218572, 0.2615352335311174], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000042, 0.2500000001638036, 0.25000136112690224, 0.2572541386922978, 0.8459143975627135]}, "ELEMENT_1662": {}, "ELEMENT_177": {}, "ELEMENT_1638": {}, "ELEMENT_1013": {}, "ELEMENT_105": {}, "ELEMENT_402": {}, "NODE_652": {"MOMENTUM_X": [4.7030843817133675e-05, 0.1914877735912976, 0.2617652467727193, 0.33373517110646345, 0.41706425664384417, 0.41340782376650975, 0.3830596595114287], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12504346459416968, 0.23597164678497856, 0.2822980397677606, 0.357492278210892, 0.4488169213893447, 0.44446349252277323, 0.41238880324635135], "TOTAL_ENERGY": [0.25012174406532, 0.7162402645109006, 0.8789380505139722, 0.9196069845261725, 0.9534544432500637, 0.952993243570906, 0.9377066746984296]}, "ELEMENT_1978": {}, "ELEMENT_1388": {}, "ELEMENT_811": {}, "NODE_691": {"MOMENTUM_X": [2.657718700104178e-08, 0.010933543931563197, 0.25927035698640066, 0.25247734328720944, 0.3019465320387979, 0.3795987929375008, 0.41360855654238593], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500002529134283, 0.13340047035791416, 0.2734175594482873, 0.2763497590477971, 0.3273466956141571, 0.41202125883750346, 0.4490600429572619], "TOTAL_ENERGY": [0.25000007081577785, 0.27502493583817095, 0.9035845520680305, 0.8685916616967899, 0.8998825043445358, 0.9343617018100769, 0.9497590181192768]}, "ELEMENT_603": {}, "NODE_1039": {"MOMENTUM_X": [0.0, 6.374987178385159e-48, 7.898534011654079e-36, 5.821596124851016e-28, 4.961240932938969e-21, 9.374369082842323e-16, 8.648636184590376e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000009, 0.12500000000815326], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000025, 0.2500000000228291]}, "NODE_851": {"MOMENTUM_X": [0.0, 2.604010222094027e-18, 1.2366712956779338e-12, 2.411868877191989e-08, 0.0001905947737669936, 0.1384818700175225, 0.25398283133194055], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000011659, 0.12500002268811106, 0.1251763237074261, 0.20799208160151544, 0.27050111311010316], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000032646, 0.2500000635267205, 0.2504942829880257, 0.5796455206065965, 0.8889645566919133]}, "ELEMENT_1912": {}, "ELEMENT_1947": {}, "ELEMENT_1717": {}, "NODE_240": {"MOMENTUM_X": [0.0, 6.014582473872068e-17, 7.15916732773677e-12, 1.4694150072384144e-08, 3.3494208352238195e-06, 0.00016650440446487505, 0.002612288613575259], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999999, 0.9999999999939017, 0.9999999874675415, 0.9999971439444495, 0.9998581082980357, 0.9977733610902801], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999978657, 2.499999956136397, 2.4999900038213743, 2.499503413924445, 2.492214628891753]}, "NODE_524": {"MOMENTUM_X": [0.1878336742528726, 0.3410617161960671, 0.3747148216166922, 0.3845136130043178, 0.3887692613191219, 0.3917337097620082, 0.3929486491079607], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.8332240719645484, 0.6128352266203176, 0.5373564547844388, 0.4984797489722263, 0.47637596593098186, 0.46320448786886464, 0.4534056535095008], "TOTAL_ENERGY": [1.9610757917750097, 1.3493683461605053, 1.1722952431054463, 1.0897082645906428, 1.0439140914241412, 1.0153572227667904, 0.9955629028476506]}, "ELEMENT_698": {}, "NODE_1051": {"MOMENTUM_X": [0.0, 4.910424874824303e-50, 2.493120796875016e-37, 6.080669689784844e-29, 2.7640938224011563e-22, 1.420624127403561e-16, 1.3602744423573798e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000014, 0.12500000000128236], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.2500000000035907]}, "ELEMENT_209": {}, "ELEMENT_360": {}, "ELEMENT_1525": {}, "NODE_191": {"MOMENTUM_X": [0.0, 1.799446779707864e-22, 4.165540814626956e-15, 3.71220477758502e-11, 2.6990138399333322e-08, 3.625792946974139e-06, 0.0001381547085963623], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999967, 0.9999999999705097, 0.9999999786074523, 0.9999971270535335, 0.9998902370081992], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999885, 2.4999999998967843, 2.499999925126085, 2.499989944704695, 2.4996158524867993]}, "NODE_58": {"MOMENTUM_X": [0.0, 1.4746899891955476e-39, 1.0179241632170863e-28, 2.287493163440174e-21, 2.1678022469222227e-15, 3.783515532121926e-12, 1.4196149359430851e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999983, 0.9999999999970045, 0.9999999988770671], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999942, 2.499999999989516, 2.4999999960697354]}, "ELEMENT_1054": {}, "ELEMENT_429": {}, "ELEMENT_1590": {}, "ELEMENT_1121": {}, "NODE_555": {"MOMENTUM_X": [0.41650914318730725, 0.3873825533083481, 0.3969840037711285, 0.39544934880264476, 0.39418032613576753, 0.3965022801558789, 0.39485932091755294], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3554358219171879, 0.3488516433314857, 0.3659124445977594, 0.3684589899609204, 0.3704554090868023, 0.3751657894719686, 0.37564656925696205], "TOTAL_ENERGY": [0.7928880160216293, 0.8024287227686934, 0.8191773969185837, 0.8290563654198896, 0.83452928807345, 0.840795937798592, 0.8439996174065066]}, "ELEMENT_1567": {}, "NODE_619": {"MOMENTUM_X": [0.03087654422422111, 0.2938011772221119, 0.36635293930830337, 0.4260954566833251, 0.3918421980458734, 0.39127597510025586, 0.4022443329974401], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.14519664259455123, 0.3025309952310742, 0.39497602664011555, 0.45752393268142766, 0.4212656108937726, 0.42120770520476697, 0.433245629711081], "TOTAL_ENERGY": [0.31590783242353526, 0.9371971714856948, 0.9254585759644264, 0.958376526690832, 0.9414905195337394, 0.9405047832975701, 0.9456722335986153]}, "ELEMENT_1816": {}, "ELEMENT_595": {}, "NODE_683": {"MOMENTUM_X": [4.930856270247006e-09, 0.003512379470217021, 0.27072012398471884, 0.23116045184618816, 0.2836460034859467, 0.3616319632941964, 0.42932752246356093], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000052464796, 0.12820490202356705, 0.2826362410339032, 0.2664192169072777, 0.31015476034896927, 0.3986793340510361, 0.4722768451249875], "TOTAL_ENERGY": [0.2500000146901435, 0.2591556116446023, 0.9415453931887461, 0.8290589106867019, 0.899411358759158, 0.9241573340530455, 0.9564447551537854]}, "ELEMENT_377": {}, "ELEMENT_1742": {}, "ELEMENT_1486": {}, "ELEMENT_1897": {}, "ELEMENT_874": {}, "NODE_210": {"MOMENTUM_X": [0.0, 1.6226463849039428e-21, 1.5528126862628056e-14, 9.768175115764205e-11, 5.617420980152562e-08, 6.358621081919609e-06, 0.00021312819925364135], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.999999999999987, 0.9999999999176065, 0.9999999525862105, 0.9999946315120425, 0.9998198883069351], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999543, 2.4999999997116222, 2.4999998340517413, 2.4999812103461005, 2.4993696643631163]}, "ELEMENT_912": {}, "ELEMENT_1171": {}, "NODE_936": {"MOMENTUM_X": [0.0, 2.8135224258133664e-32, 4.3581441992253944e-23, 1.1230970871715457e-16, 2.566552081119011e-12, 2.494093775228653e-08, 0.00022455331087795972], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000001, 0.12500000000274675, 0.1250000266365687, 0.12523420506108907], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000033, 0.2500000000076909, 0.2500000745824027, 0.25065660079607]}, "ELEMENT_135": {}, "ELEMENT_1048": {}, "NODE_331": {"MOMENTUM_X": [6.251450623480112e-19, 2.8126302529920596e-10, 7.319506869407454e-07, 0.00011689660399403037, 0.0031627912364611327, 0.024036065663210378, 0.07536852300176648], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999997627963, 0.9999993836436794, 0.9999017516938918, 0.9973387981743455, 0.979537718741879, 0.9338700583119075], "TOTAL_ENERGY": [2.5, 2.4999999991697863, 2.4999978427537086, 2.4996561488850966, 2.4906974425519297, 2.429014476120488, 2.2748542058585537]}, "NODE_522": {"MOMENTUM_X": [0.18780943471804076, 0.34046835103717343, 0.3747710854824554, 0.3846186374765064, 0.3888928710720075, 0.39196088599725903, 0.3930424073061746], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.8332155997246022, 0.6125237918256521, 0.5373085625180394, 0.49866305656734755, 0.4765618774085693, 0.46350688861968836, 0.45356900879666767], "TOTAL_ENERGY": [1.9610418263327043, 1.3482971192547104, 1.1726296533405207, 1.0895735159860997, 1.043924889518858, 1.0155606245987483, 0.9958351807546487]}, "NODE_923": {"MOMENTUM_X": [0.0, 1.712571329212351e-27, 1.7406696652129303e-18, 1.5785518739672397e-13, 1.890817855578077e-09, 1.2148321433912777e-05, 0.03918799434437381], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000015346, 0.12500000183814156, 0.12501180754202876, 0.15177418751254673], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000004297, 0.2500000051467965, 0.2500330635340984, 0.33800736191487707]}, "NODE_479": {"MOMENTUM_X": [0.00294497788196767, 0.1006050951228154, 0.22641992450868909, 0.3002206590606751, 0.3370876189606776, 0.3566892675359185, 0.3679864765782232], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9975095006345646, 0.9097229710041692, 0.7765597872130254, 0.6778783334788632, 0.6159414533400366, 0.5755991092188688, 0.5474963710377235], "TOTAL_ENERGY": [2.4912970110720467, 2.196368384824367, 1.788568774727363, 1.517101024651774, 1.3599652148863448, 1.2632656778286062, 1.1988139929706818]}, "ELEMENT_1926": {}, "NODE_173": {"MOMENTUM_X": [0.0, 3.402508110938319e-26, 1.04532661793258e-17, 5.268739154639466e-13, 7.45445814982648e-10, 1.8289726820117844e-07, 1.2310326295733569e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999995542, 0.9999999993687433, 0.9999998449816225, 0.9999895649692981], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999984404, 2.4999999977906024, 2.499999457435728, 2.4999634775882833]}, "ELEMENT_895": {}, "NODE_112": {"MOMENTUM_X": [0.0, 4.94042709831071e-38, 2.3205812054246397e-28, 1.242746585063164e-20, 2.6374135395372145e-15, 4.2697886550638294e-12, 1.545847657299074e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999977, 0.9999999999963896, 0.9999999986943183], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999992, 2.499999999987364, 2.499999995430114]}, "NODE_717": {"MOMENTUM_X": [1.592896876264139e-12, 1.0939505435230444e-05, 0.05359299321085192, 0.2858564296130354, 0.24844813200032365, 0.2794324724058889, 0.3530565101294902], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000149242, 0.1250102169527267, 0.15878941169857735, 0.2846087316560908, 0.27052510139053515, 0.3008929950420493, 0.3806751748808239], "TOTAL_ENERGY": [0.2500000000041787, 0.2500286094118792, 0.36594650862419775, 0.9671978225895735, 0.8662383709719438, 0.8908013174291058, 0.9244548362238558]}, "ELEMENT_1352": {}, "ELEMENT_1720": {}, "ELEMENT_82": {}, "ELEMENT_613": {}, "NODE_299": {"MOMENTUM_X": [5.104120309053629e-25, 4.272452901915034e-13, 5.08141075545998e-09, 2.628401807854552e-06, 0.00019519443991019615, 0.0036220352422575985, 0.02327060199533089], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999996391, 0.9999999957102603, 0.9999977860733525, 0.9998358439176154, 0.9969498883276987, 0.980188361877066], "TOTAL_ENERGY": [2.5, 2.4999999999987366, 2.4999999849859122, 2.499992251266606, 2.499425501541941, 2.4893395593828043, 2.431247065267059]}, "NODE_520": {"MOMENTUM_X": [0.07366189380264267, 0.2845990381823516, 0.3529556778934431, 0.3766256195999184, 0.3862301869507673, 0.39103367541182243, 0.39374297119948], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9308816816947703, 0.6949053131908145, 0.585577657587361, 0.5331763938024223, 0.5037313798694478, 0.4853134491564425, 0.47272555385145903], "TOTAL_ENERGY": [2.2651237752955584, 1.5553624525399077, 1.2797538379167992, 1.1608566008361632, 1.0983384695385758, 1.059946118344912, 1.03390419069811]}, "NODE_1054": {"MOMENTUM_X": [0.0, 4.92879259650888e-50, 2.8482361454505548e-37, 1.0224938795345215e-28, 1.8430798214108648e-21, 2.485462014431902e-16, 2.045202021801629e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000022, 0.12500000000195224], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000067, 0.2500000000054663]}, "ELEMENT_252": {}, "ELEMENT_618": {}, "ELEMENT_1444": {}, "NODE_1074": {"MOMENTUM_X": [0.0, 1.418485955381543e-54, 1.7264767792325422e-40, 8.79104881870409e-32, 1.021510307904085e-24, 1.842340495236304e-18, 2.6543981767832697e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002504], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000007017]}, "ELEMENT_311": {}, "ELEMENT_852": {}, "NODE_157": {"MOMENTUM_X": [0.0, 1.5682377279498857e-33, 2.2383220101479415e-24, 1.520323173631451e-17, 2.7357060127718485e-13, 2.3535879564017597e-10, 4.926831271804339e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999997689, 0.9999999998014363, 0.9999999585136512], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999991904, 2.499999999305027, 2.4999998547977818]}, "ELEMENT_1655": {}, "NODE_854": {"MOMENTUM_X": [0.0, 3.933179361843996e-18, 2.0863863331879287e-12, 3.487978743704114e-08, 0.00021579701711712352, 0.13762029582405533, 0.2574414173954889], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000196806, 0.12500003294053524, 0.12520155820399068, 0.20807381585099471, 0.27239541616085017], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000551054, 0.25000009223351866, 0.25056510494956835, 0.5788382874263033, 0.8983760607439543]}, "NODE_283": {"MOMENTUM_X": [0.0, 1.1371383852389309e-15, 5.064872400331549e-11, 6.946930080386898e-08, 1.1942614115677851e-05, 0.0004710638006429421, 0.005943472265576084], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999988, 0.9999999999519307, 0.9999999346790639, 0.9999889124868024, 0.9995684490372168, 0.9946211999680903], "TOTAL_ENERGY": [2.5, 2.4999999999999964, 2.4999999998317577, 2.4999997713767312, 2.499961193900807, 2.4984898452908944, 2.4812141838635857]}, "ELEMENT_825": {}, "NODE_308": {"MOMENTUM_X": [8.086572994022051e-21, 6.763245284386806e-11, 2.633150894084131e-07, 5.428094759956044e-05, 0.0017898945333343539, 0.01614004003493196, 0.0579401910174701], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999424428, 0.9999997754919018, 0.999953723553174, 0.9984734384589863, 0.9861481108736575, 0.9492084675133918], "TOTAL_ENERGY": [2.5, 2.49999999979855, 2.499999214221771, 2.4998380365074495, 2.49466091351122, 2.4518097011928686, 2.3259529736078615]}, "ELEMENT_1464": {}, "ELEMENT_1131": {}, "NODE_1052": {"MOMENTUM_X": [0.0, 4.925873652358318e-50, 2.686352973251245e-37, 8.915652543556613e-29, 4.685910613161678e-22, 1.7378344405865838e-16, 1.5850660980982833e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000017, 0.12500000000149614], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000044, 0.2500000000041891]}, "ELEMENT_1506": {}, "ELEMENT_1229": {}, "ELEMENT_1253": {}, "ELEMENT_690": {}, "NODE_289": {"MOMENTUM_X": [7.80581782833372e-25, 8.674682025752948e-13, 9.139754791687221e-09, 4.0746667788073e-06, 0.0002618153592394931, 0.004300675074483316, 0.025302875249121278], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999992683, 0.9999999922884466, 0.9999965615492118, 0.999778809866086, 0.9963543501099708, 0.9782931627037652], "TOTAL_ENERGY": [2.5, 2.499999999997439, 2.499999973009563, 2.4999879654463384, 2.4992259215534336, 2.487261500206702, 2.4247276871567256]}, "ELEMENT_1456": {}, "ELEMENT_630": {}, "ELEMENT_30": {}, "ELEMENT_1806": {}, "ELEMENT_422": {}, "ELEMENT_1706": {}, "ELEMENT_1104": {}, "NODE_267": {"MOMENTUM_X": [0.0, 3.526377806553806e-16, 2.0415367564026358e-11, 3.305786547322341e-08, 6.454377474120819e-06, 0.00028451198381970787, 0.004000609779423205], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999997, 0.9999999999827298, 0.9999999720801627, 0.9999945623818138, 0.9997606094430336, 0.9966287636692219], "TOTAL_ENERGY": [2.5, 2.499999999999999, 2.4999999999395546, 2.499999902280571, 2.499980968392599, 2.499162231395862, 2.488218623213625]}, "ELEMENT_1874": {}, "ELEMENT_1872": {}, "ELEMENT_783": {}, "ELEMENT_1255": {}, "ELEMENT_1575": {}, "ELEMENT_685": {}, "ELEMENT_1918": {}, "ELEMENT_953": {}, "NODE_545": {"MOMENTUM_X": [0.40044494446268486, 0.40439460261168114, 0.399000183570435, 0.3968952287954985, 0.39824531665886376, 0.3965843582627617, 0.396969720033355], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.5438289260038098, 0.4464821087947557, 0.42594970688388684, 0.41687218829639133, 0.4149790509199463, 0.4115166458508999, 0.41077214559377706], "TOTAL_ENERGY": [1.1858438785982777, 0.983014632873514, 0.9377819206430283, 0.9231301943261149, 0.9166850543674255, 0.9119273886309553, 0.909737083811212]}, "ELEMENT_1544": {}, "ELEMENT_1206": {}, "ELEMENT_1070": {}, "ELEMENT_946": {}, "ELEMENT_757": {}, "NODE_742": {"MOMENTUM_X": [6.70947441187585e-15, 2.870213779234649e-07, 0.002866189938692323, 0.23685912889087035, 0.23922127395978512, 0.2608200304928987, 0.29340007578684674], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000000633, 0.1250002699030778, 0.1274387658443507, 0.2605148458514666, 0.26457320717438826, 0.27978884854065555, 0.3170705479280832], "TOTAL_ENERGY": [0.2500000000000177, 0.2500007557300949, 0.2569521047896684, 0.840200708439397, 0.8497888828954662, 0.8871514166757938, 0.8951865868294094]}, "NODE_452": {"MOMENTUM_X": [0.00011775691942836408, 0.029286803591976333, 0.13036036894527078, 0.2282571736961946, 0.28845844046387814, 0.3231360825923641, 0.34400031411628806], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9998979605007127, 0.9743652150027705, 0.8795655281766025, 0.7731120980230104, 0.6944031642773006, 0.640269335141966, 0.6020533352336203], "TOTAL_ENERGY": [2.4996428882857167, 2.411342113259202, 2.099403340867646, 1.7781278949075052, 1.5604841474891218, 1.4205197767412414, 1.3264299294725033]}, "ELEMENT_86": {}, "ELEMENT_1617": {}, "NODE_453": {"MOMENTUM_X": [0.0001102882736279726, 0.027897891928408913, 0.12858655335793148, 0.22842692363822997, 0.2894603856438534, 0.32415640630956927, 0.3448500944051631], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999064117074333, 0.9758617517249019, 0.8819425867538191, 0.7734397468483442, 0.6932341829784879, 0.6386091549573498, 0.6004036969230586], "TOTAL_ENERGY": [2.4996724637819576, 2.416474070300521, 2.106992818747922, 1.7791337379052947, 1.5574299159578495, 1.4163846652998242, 1.3224124033072642]}, "NODE_730": {"MOMENTUM_X": [1.5273035443330102e-13, 2.3216950603457373e-06, 0.01672431215526988, 0.27704211221908676, 0.24016745847569745, 0.27006633190953316, 0.3233944867636514], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000014375, 0.1250021769325054, 0.13721852463802867, 0.2806756761771822, 0.26562646160307396, 0.2900075170135115, 0.34890581930147285], "TOTAL_ENERGY": [0.2500000000004025, 0.2500060955044179, 0.28736322194527075, 0.9471280951816083, 0.8489753399641002, 0.8890321488781618, 0.9092696573733008]}, "NODE_98": {"MOMENTUM_X": [0.0, 5.69391087430965e-51, 2.894700909326586e-38, 2.36107802675373e-30, 2.5305244319857433e-23, 2.498983748833752e-17, 6.235245641481194e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999409], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997935]}, "NODE_765": {"MOMENTUM_X": [6.952891411650598e-18, 3.2272316056757535e-09, 5.360215427405975e-05, 0.08307853567271925, 0.2739574141956609, 0.24709691712225018, 0.26134202875517243], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000304148165, 0.12505038483763345, 0.1775236292029325, 0.27992499627168516, 0.2688090313509644, 0.28241250777773386], "TOTAL_ENERGY": [0.25, 0.25000000851614873, 0.25014112407169736, 0.44155510542016363, 0.9401674831168568, 0.8684488991430481, 0.8810018506879781]}, "ELEMENT_899": {}, "ELEMENT_204": {}, "ELEMENT_1124": {}, "ELEMENT_1126": {}, "ELEMENT_1818": {}, "NODE_264": {"MOMENTUM_X": [0.0, 3.1365978452128102e-18, 1.0105312000992348e-12, 2.9402093598627023e-09, 9.456240844039021e-07, 6.532348889330026e-05, 0.0013867945204581289], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999990385, 0.9999999972244836, 0.9999991169746806, 0.9999397712372428, 0.9987376940533464], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999996635, 2.4999999902856924, 2.499996909412679, 2.499789204852376, 2.4955841936691363]}, "ELEMENT_963": {}, "ELEMENT_611": {}, "ELEMENT_626": {}, "ELEMENT_890": {}, "ELEMENT_14": {}, "NODE_336": {"MOMENTUM_X": [9.203240615619781e-17, 3.1857717693950945e-09, 4.5075491156593635e-06, 0.00043209346056156787, 0.00755081178500164, 0.0405181067405075, 0.10100203328885914], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999999, 0.9999999973194187, 0.9999962110242522, 0.9996365446762482, 0.9936158363655914, 0.9650797456859873, 0.90971541765961], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999906179657, 2.4999867386157675, 2.498728145976354, 2.477720718049414, 2.3795855974811944, 2.1956449229981305]}, "ELEMENT_251": {}, "ELEMENT_1092": {}, "NODE_623": {"MOMENTUM_X": [0.031199371879618625, 0.2957207879381703, 0.35966640818821477, 0.42404836320809963, 0.3964209277513039, 0.3881713086504102, 0.39860426392717846], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.14598380360938973, 0.30428398568118786, 0.39022079828724565, 0.4572526756470044, 0.42776677108768296, 0.4190663544888353, 0.4304196780650075], "TOTAL_ENERGY": [0.3184908841885349, 0.9427253096538326, 0.9191746104295485, 0.9564352348995749, 0.942841551008876, 0.9386680126539425, 0.9434874239217034]}, "ELEMENT_1215": {}, "NODE_556": {"MOMENTUM_X": [0.4160682651755381, 0.3876904909391364, 0.39693706826028036, 0.39497285328273596, 0.3947737145186999, 0.3961828434917206, 0.39508995679856407], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3549830573550709, 0.3489248040660957, 0.36548397908425717, 0.36777106907844354, 0.3707408522144806, 0.3745408978231888, 0.37555052896770574], "TOTAL_ENERGY": [0.7916650993551917, 0.8019051284348965, 0.8190497125494667, 0.828105466627348, 0.8343076974841293, 0.8400151303311892, 0.8434558736621593]}, "ELEMENT_1313": {}, "ELEMENT_1496": {}, "NODE_222": {"MOMENTUM_X": [0.0, 2.2686134501303856e-24, 1.75868436562442e-16, 2.883837314672712e-12, 3.1409813017488696e-09, 6.341457302734557e-07, 3.611504074518612e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999998, 0.9999999999972612, 0.9999999970417208, 0.9999994087530163, 0.999966720422507], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.4999999999904152, 2.4999999896460237, 2.499997930636126, 2.4998835231510803]}, "ELEMENT_1647": {}, "ELEMENT_1483": {}, "ELEMENT_1737": {}, "NODE_694": {"MOMENTUM_X": [2.8001164900192233e-10, 0.00042588913651719695, 0.19732066632198167, 0.23951238088238763, 0.26626292122276235, 0.3193103748539736, 0.40879472833246316], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000029691827, 0.125436179370581, 0.244004934563463, 0.2686619829592814, 0.2904869585545729, 0.3523517276430544, 0.4494999698988692], "TOTAL_ENERGY": [0.25000000083137114, 0.25122429814236324, 0.7432546722160378, 0.8551442484589274, 0.8945614701058339, 0.9047959327722213, 0.9476110417983773]}, "ELEMENT_1319": {}, "ELEMENT_1650": {}, "ELEMENT_103": {}, "ELEMENT_1585": {}, "ELEMENT_790": {}, "NODE_145": {"MOMENTUM_X": [0.0, 3.3846573195895607e-29, 3.08611063640775e-20, 1.6317564252106557e-14, 4.232481830473618e-11, 1.7088955793184155e-08, 1.7697777561597603e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999859, 0.9999999999633372, 0.9999999852370914, 0.9999984763899148], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999503, 2.49999999987168, 2.4999999483298203, 2.4999946673689206]}, "NODE_829": {"MOMENTUM_X": [0.0, 6.37356334963419e-16, 1.1894688582099774e-10, 1.5550581622736099e-06, 0.00976063081893184, 0.2696647452193056, 0.2350281203970483], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000000006, 0.12500000011201126, 0.12500145933766468, 0.1324780830914951, 0.27677114209198744, 0.2618214467902437], "TOTAL_ENERGY": [0.25, 0.25000000000000167, 0.2500000003136315, 0.25000408618428255, 0.2721543878005134, 0.9275891016350418, 0.8401260071331883]}, "ELEMENT_1259": {}, "ELEMENT_1644": {}, "ELEMENT_1418": {}, "ELEMENT_241": {}, "ELEMENT_1823": {}, "NODE_559": {"MOMENTUM_X": [0.41833844372234064, 0.3904431478722883, 0.39793975791026015, 0.3941761631165474, 0.39651932296997067, 0.39542334426818376, 0.39598230305616794], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.35769906587931366, 0.35351875116659165, 0.3666843680626047, 0.36676693201706856, 0.3717802175692256, 0.3732644219995362, 0.3760987122652736], "TOTAL_ENERGY": [0.8039111627305403, 0.8044155534158098, 0.8220670841509753, 0.8277516628660512, 0.8345266066223973, 0.8388371439287137, 0.8435784009990813]}, "ELEMENT_1105": {}, "NODE_679": {"MOMENTUM_X": [3.769260521537577e-07, 0.043067198970060346, 0.27911675922386964, 0.2656032098139299, 0.3370960873827325, 0.41022596990592197, 0.41350782215082305], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500035647672234, 0.1539522277667849, 0.283299742192129, 0.2895793232933653, 0.3642635816069415, 0.4435219142309435, 0.44692568011807465], "TOTAL_ENERGY": [0.2500009981381227, 0.3466861854948954, 0.9510657622069958, 0.8750939019946599, 0.9166874174022595, 0.949941569913782, 0.9516039534087287]}, "NODE_835": {"MOMENTUM_X": [0.0, 1.3421096496346248e-15, 2.5528967096912184e-10, 2.961038261462628e-06, 0.014913201111872252, 0.25731285587677194, 0.24388592756682093], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000000013, 0.12500000024840924, 0.12500287977289418, 0.13618739722834314, 0.2724799971938519, 0.26636546340240197], "TOTAL_ENERGY": [0.25, 0.25000000000000366, 0.2500000006955459, 0.25000806350930294, 0.28384927748247224, 0.9001943273557197, 0.8648459553849412]}, "ELEMENT_228": {}, "NODE_1079": {"MOMENTUM_X": [0.0, 0.0, 1.804786338078186e-43, 9.604411937332364e-35, 9.85131226284776e-28, 2.1563008034105983e-21, 3.198051534232997e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000036], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000094]}, "NODE_395": {"MOMENTUM_X": [4.233899816551174e-09, 0.0001561368509606441, 0.008076023504910147, 0.05562087027670808, 0.1358739907799462, 0.20716068110504465, 0.2574219142896475], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999965843287, 0.9998758267081777, 0.9935240571935992, 0.9536398631155876, 0.879159006041573, 0.8029616452951553, 0.7406898419147421], "TOTAL_ENERGY": [2.499999988045151, 2.4995654298209025, 2.477412341833567, 2.3412308667579556, 2.0992063784374753, 1.8673044059342856, 1.689231019762786]}, "NODE_231": {"MOMENTUM_X": [0.0, 1.866042370938923e-18, 9.581026967988046e-13, 2.837207378803497e-09, 8.802097359817789e-07, 5.785982652589494e-05, 0.001180440837279348], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999991899, 0.9999999975980602, 0.9999992541735496, 0.9999509512516628, 0.9989982020109843], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999971645, 2.49999999159321, 2.4999973896085352, 2.4998283336799685, 2.496495342594718]}, "NODE_802": {"MOMENTUM_X": [6.922459841654686e-24, 3.130035381878652e-12, 1.6298548401969937e-07, 0.0012492624820112008, 0.19443058155966025, 0.24606967900212995, 0.2499671446283287], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000030455, 0.12500015864123276, 0.12613671396338105, 0.2402932630134783, 0.2674667758420523, 0.2698622286358185], "TOTAL_ENERGY": [0.25, 0.2500000000085274, 0.2500004441959134, 0.2532072481346549, 0.7326379579429156, 0.8707132437360925, 0.8774638569640194]}, "ELEMENT_1491": {}, "ELEMENT_1558": {}, "ELEMENT_1942": {}, "ELEMENT_70": {}, "NODE_849": {"MOMENTUM_X": [0.0, 8.980968439466665e-19, 5.030969370713275e-13, 1.1185381391605344e-08, 0.00010508905477333623, 0.13256956721211072, 0.25287401014526056], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000047584, 0.12500001054866539, 0.12509714995596818, 0.20297156528534127, 0.2698589695389045], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000013323, 0.250000029536265, 0.2502721888107367, 0.5577428014486021, 0.8848997101414157]}, "ELEMENT_211": {}, "ELEMENT_27": {}, "ELEMENT_1649": {}, "NODE_558": {"MOMENTUM_X": [0.41647582632200786, 0.38715939898073287, 0.39692056071416615, 0.3936299844266217, 0.3954996624263965, 0.3953791490648289, 0.3953379159494399], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.35489545385225285, 0.3496224220055487, 0.365567480227909, 0.3666955463118608, 0.37155300807998376, 0.37387148584690355, 0.3759004348862479], "TOTAL_ENERGY": [0.7926882710284633, 0.7994936890443054, 0.8207608579697511, 0.827768724526973, 0.8347253962669489, 0.8394452602016437, 0.8433805675693576]}, "ELEMENT_1798": {}, "ELEMENT_131": {}, "ELEMENT_1755": {}, "NODE_530": {"MOMENTUM_X": [0.2647077041010226, 0.3730937755128198, 0.3862796688427589, 0.3922059442960131, 0.3941570290781045, 0.3945635657104026, 0.39552376688500557], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.6757058971545972, 0.5222318618962488, 0.47699414723490163, 0.45751185655366006, 0.4453998450619311, 0.4369866063793824, 0.431988224401538], "TOTAL_ENERGY": [1.506995384481252, 1.146714576979186, 1.0484303183422747, 1.0044937945269885, 0.9796362739188058, 0.9634568869204396, 0.9526942077594249]}, "ELEMENT_1017": {}, "ELEMENT_1944": {}, "ELEMENT_793": {}, "ELEMENT_261": {}, "NODE_823": {"MOMENTUM_X": [0.0, 1.6146820445784323e-14, 1.8599062305518341e-09, 1.7359683100030813e-05, 0.047441386444127716, 0.27315816693863176, 0.2451272837275731], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000001535, 0.12500000177638623, 0.12501659927988748, 0.15671364482882463, 0.2800733319834581, 0.267314910082566], "TOTAL_ENERGY": [0.25, 0.250000000000043, 0.25000000497388153, 0.2500464828955149, 0.356794248504575, 0.9406490979882174, 0.8679436257481833]}, "ELEMENT_1686": {}, "ELEMENT_984": {}, "ELEMENT_1704": {}, "ELEMENT_1399": {}, "ELEMENT_170": {}, "NODE_82": {"MOMENTUM_X": [0.0, 2.1739164892232086e-50, 1.081493623213858e-37, 5.383225281054221e-30, 5.541228724290631e-23, 5.4940154440376936e-17, 1.0453067181590073e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999116], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999996905]}, "ELEMENT_1854": {}, "NODE_116": {"MOMENTUM_X": [0.0, 2.4013941880090837e-34, 1.002437122099989e-24, 1.527270139915146e-17, 1.851318342005928e-13, 1.6341776047215127e-10, 3.449480459668885e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998438, 0.9999999998620267, 0.9999999708596751], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999994533, 2.4999999995170934, 2.4999998980088645]}, "ELEMENT_1822": {}, "ELEMENT_60": {}, "ELEMENT_1937": {}, "ELEMENT_129": {}, "NODE_966": {"MOMENTUM_X": [0.0, 1.3922375432185212e-34, 8.956133467251421e-25, 1.751568455696519e-17, 4.065562161042217e-13, 3.1459665296562793e-09, 1.8780910334627256e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000038783, 0.12500000300693176, 0.12501796018441427], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000010859, 0.25000000841940917, 0.2500502942385284]}, "NODE_1108": {"MOMENTUM_X": [0.0, 0.0, 4.63812166028612e-45, 4.826554178172326e-36, 1.8909696791212456e-28, 2.999698775296124e-22, 9.9138082634306e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000008], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000003]}, "ELEMENT_1016": {}, "ELEMENT_25": {}, "NODE_40": {"MOMENTUM_X": [0.0, 8.502242819611691e-48, 1.5334870126866128e-35, 2.1067532843409046e-27, 2.619128338018179e-20, 1.6110816220818249e-15, 1.6054294521704426e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999986, 0.9999999999986445], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999995, 2.4999999999952562]}, "ELEMENT_1494": {}, "ELEMENT_1492": {}, "ELEMENT_851": {}, "NODE_92": {"MOMENTUM_X": [0.0, 3.9348172185662123e-36, 3.885514498580468e-26, 1.3727402506301373e-18, 4.95577328718888e-14, 5.516787190113959e-11, 1.4021004525502696e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999957, 0.9999999999522731, 0.9999999879020565], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999998495, 2.4999999998329554, 2.4999999576571974]}, "ELEMENT_1495": {}, "ELEMENT_1454": {}, "NODE_489": {"MOMENTUM_X": [0.011567322542497309, 0.15870882946266068, 0.2736620614236704, 0.32869660822240815, 0.3545176807394109, 0.3683310503085798, 0.3764974075023396], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9901568904782344, 0.8514221566819965, 0.715788329198432, 0.6301203947333451, 0.5784668679740913, 0.5455449615039731, 0.5229185297835517], "TOTAL_ENERGY": [2.4657447095360547, 2.012246161948967, 1.6186347655766404, 1.39620294846034, 1.2716947163872119, 1.1951142397376475, 1.1438652117254575]}, "NODE_685": {"MOMENTUM_X": [1.79972513396624e-08, 0.008951146423488158, 0.26966466585206594, 0.2464677083379167, 0.3066520202137199, 0.3914309753912673, 0.4285966716530132], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500001690757584, 0.13175871007931006, 0.27642970907665065, 0.2719045425082918, 0.32815228930830237, 0.4212735666999118, 0.4607513929005673], "TOTAL_ENERGY": [0.2500000473412201, 0.2699543428380846, 0.9249152617419771, 0.85211708004458, 0.9076880491754437, 0.9414304487109992, 0.9601333027249712]}, "ELEMENT_181": {}, "ELEMENT_358": {}, "ELEMENT_230": {}, "ELEMENT_1153": {}, "ELEMENT_247": {}, "ELEMENT_1303": {}, "NODE_248": {"MOMENTUM_X": [0.0, 3.333429005209799e-19, 2.515768842800414e-13, 9.466086094679427e-10, 3.7400811930585317e-07, 3.093068430043892e-05, 0.0007750913913901107], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999997876, 0.9999999992026063, 0.9999996856694817, 0.9999740625268134, 0.9993501363883941], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999257, 2.4999999972091227, 2.4999988998433826, 2.499909220048549, 2.4977261713143895]}, "ELEMENT_1379": {}, "ELEMENT_88": {}, "ELEMENT_156": {}, "NODE_1048": {"MOMENTUM_X": [0.0, 2.511288857189357e-50, 8.89935199205225e-38, 7.874498081561044e-30, 8.050786782910194e-23, 5.3848217617252504e-17, 5.507869226852033e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000052366], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000146616]}, "ELEMENT_1361": {}, "ELEMENT_147": {}, "ELEMENT_189": {}, "ELEMENT_589": {}, "ELEMENT_291": {}, "ELEMENT_1753": {}, "ELEMENT_1481": {}, "ELEMENT_87": {}, "ELEMENT_1034": {}, "ELEMENT_1078": {}, "ELEMENT_910": {}, "ELEMENT_1744": {}, "ELEMENT_1703": {}, "ELEMENT_781": {}, "ELEMENT_1714": {}, "ELEMENT_538": {}, "ELEMENT_923": {}, "NODE_151": {"MOMENTUM_X": [0.0, 3.0645146356585026e-33, 3.085973522800594e-24, 3.374202936758962e-17, 4.102105920833627e-13, 3.291178243938323e-10, 6.463413160587857e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999996516, 0.9999999997211116, 0.9999999453342627], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999987814, 2.499999999023891, 2.4999998086699255]}, "ELEMENT_1523": {}, "ELEMENT_745": {}, "NODE_72": {"MOMENTUM_X": [0.0, 0.0, 4.0656890637040224e-42, 7.561604450016211e-34, 9.111746981462077e-27, 2.585862592441357e-20, 9.86846994585547e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999992], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999973]}, "NODE_349": {"MOMENTUM_X": [2.0514628452998365e-15, 1.905982898262972e-08, 1.678130014135401e-05, 0.0011159508948851476, 0.01428267414142766, 0.05982600668603623, 0.12686501587437254], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999982, 0.999999983981383, 0.9999859140237082, 0.9990623185214149, 0.9878989299066525, 0.9479507663710118, 0.8848017114118599], "TOTAL_ENERGY": [2.499999999999994, 2.499999943934841, 2.4999506994946477, 2.496719659104442, 2.457875097686863, 2.3217872741254872, 2.1156602196297825]}, "ELEMENT_297": {}, "NODE_314": {"MOMENTUM_X": [2.551021934257776e-20, 5.5006832706238153e-11, 2.1457051262319433e-07, 4.561011932585659e-05, 0.0015712666551303245, 0.014877244463900912, 0.055689917306663284], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999537106, 0.9999998195260154, 0.9999616577319804, 0.998676809711083, 0.9873656740391178, 0.9515810527967393], "TOTAL_ENERGY": [2.5, 2.4999999998379874, 2.499999368341128, 2.499865804893424, 2.4953717927705186, 2.4560252558334517, 2.333943034554157]}, "NODE_891": {"MOMENTUM_X": [0.0, 2.377144486349053e-22, 4.4257698089687065e-15, 1.6818938021262403e-10, 1.3923740563345737e-06, 0.00843364794612729, 0.23974816088363007], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000394, 0.1250000001493438, 0.12500123006508984, 0.13107064724121273, 0.25835374292596963], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000001105, 0.2500000004181626, 0.2500034442125129, 0.2678847648721751, 0.8397170911244326]}, "ELEMENT_1621": {}, "ELEMENT_516": {}, "ELEMENT_149": {}, "NODE_804": {"MOMENTUM_X": [1.7817300197711148e-27, 2.236034545770933e-14, 2.2814192433857455e-09, 2.658397097879555e-05, 0.07965660182058865, 0.27687491101590633, 0.24631092350288952], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000000000239, 0.12500000243943626, 0.12502829162597517, 0.1770668469894155, 0.2853840017459255, 0.27168934310727355], "TOTAL_ENERGY": [0.25, 0.250000000000067, 0.2500000068304217, 0.2500792283020732, 0.43605594172346884, 0.9554732477418414, 0.8763680887366263]}, "ELEMENT_388": {}, "NODE_635": {"MOMENTUM_X": [0.005481948673866292, 0.2820052164652386, 0.3132461756600625, 0.4069858441032534, 0.41399905197671233, 0.38900940158595537, 0.39588266835596797], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12933891123098662, 0.2879608839779438, 0.3404551673542694, 0.4391818278364706, 0.44701941081608476, 0.4199908773302003, 0.4275477094339523], "TOTAL_ENERGY": [0.2626255367342628, 0.9446373486306495, 0.8971674570378851, 0.9486759943269008, 0.9512322258553597, 0.9397197521535271, 0.9426732117835219]}, "ELEMENT_943": {}, "NODE_426": {"MOMENTUM_X": [2.3501659003336215e-07, 0.0012834568591030622, 0.027087129403650573, 0.10775167584244891, 0.19665376038202897, 0.25901511693348556, 0.2982346768232689], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999998023922855, 0.9989215887448165, 0.9768729163985244, 0.9033767365366171, 0.8116315892243451, 0.7363719731432451, 0.6811086984475546], "TOTAL_ENERGY": [2.499999308373127, 2.496227833254423, 2.4199061476393404, 2.175382754770832, 1.890812983847084, 1.6745628122439622, 1.525608131846756]}, "NODE_450": {"MOMENTUM_X": [0.00017149807024138033, 0.03485953203810625, 0.13933707321694683, 0.23350685710354843, 0.2903863215945022, 0.32321821698585407, 0.3431147089761553], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9998627156724086, 0.9714744310644192, 0.8763478454773914, 0.7726530878091008, 0.6951925695856278, 0.6411944406982508, 0.6028139314441686], "TOTAL_ENERGY": [2.4995195588212824, 2.401619630461909, 2.0910376239418, 1.7805542517052604, 1.5668082047712608, 1.426591083145254, 1.3312208220555497]}, "NODE_446": {"MOMENTUM_X": [1.6477562134968875e-05, 0.011477659795810086, 0.08446871489267826, 0.18792595329910144, 0.2617535175230792, 0.30540581526663335, 0.3315207228548431], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999861015839893, 0.990242143730088, 0.9250474893690798, 0.8207604367874953, 0.7322615270515455, 0.6696720440284909, 0.6256360491907543], "TOTAL_ENERGY": [2.4999513560892677, 2.4660144464746616, 2.246036452400678, 1.9181891389480463, 1.6631878650046674, 1.4957779338726918, 1.3843375372799926]}, "NODE_705": {"MOMENTUM_X": [1.4278244592683102e-11, 4.900879588389896e-05, 0.10649535648647682, 0.2689559175853824, 0.2529696106518771, 0.2865692307434949, 0.3707889823344732], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000001508096, 0.12505197994939024, 0.19293905945372786, 0.2819892032169053, 0.2785778526408304, 0.3164154885055025, 0.407886126994602], "TOTAL_ENERGY": [0.2500000000422266, 0.25014558529426845, 0.5035162228904847, 0.9334770404950302, 0.8804796325296168, 0.8901435227216232, 0.930303925343957]}, "NODE_1046": {"MOMENTUM_X": [0.0, 2.1572518472954458e-51, 1.1172519262084694e-38, 2.5434786954159132e-30, 1.201886205299527e-23, 1.3934371870367825e-17, 1.7521376975230198e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000018754], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000005252]}, "NODE_1089": {"MOMENTUM_X": [0.0, 0.0, 1.0348711675383344e-41, 6.97828379218815e-33, 1.243501283397152e-25, 5.571884769208536e-19, 9.840996457555883e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000872], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000244]}, "ELEMENT_1541": {}, "NODE_863": {"MOMENTUM_X": [0.0, 1.239397070269356e-19, 1.5703681630313504e-13, 3.6486289697631085e-09, 2.735605252321827e-05, 0.062088179548096235, 0.2766300733568803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000014788, 0.12500000343279583, 0.12502568057270363, 0.16526089633068974, 0.2809570486424071], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000041406, 0.25000000961182856, 0.25007191758261255, 0.3909097825929889, 0.9474308778789808]}, "NODE_610": {"MOMENTUM_X": [0.09566180538847163, 0.3140061025994613, 0.40529033386576246, 0.4146350162428691, 0.38462714766067607, 0.3959311713337483, 0.39997110058295476], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1831278708302563, 0.3332253424605636, 0.43690312417934873, 0.4467973596475624, 0.41456403023326016, 0.4267927789328641, 0.4312322469041257], "TOTAL_ENERGY": [0.46955655163987353, 0.9185628379355056, 0.9455566937505202, 0.9504655951317572, 0.9366358439589959, 0.9420397427471545, 0.9439009846405447]}, "ELEMENT_1384": {}, "ELEMENT_1328": {}, "ELEMENT_1574": {}, "ELEMENT_494": {}, "ELEMENT_1827": {}, "ELEMENT_199": {}, "ELEMENT_1144": {}, "NODE_1057": {"MOMENTUM_X": [0.0, 1.096930373577391e-53, 2.9084789435540453e-40, 8.551857336012685e-32, 5.234121255021603e-25, 1.2901709472468521e-18, 2.1403344986619808e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002293], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000642]}, "NODE_102": {"MOMENTUM_X": [0.0, 7.783697999690228e-49, 1.0402632474486906e-36, 5.636102950364968e-29, 6.22590705628543e-22, 2.3027238570503305e-16, 3.090375909226828e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999997077], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.499999999998977]}, "ELEMENT_288": {}, "ELEMENT_1758": {}, "ELEMENT_911": {}, "ELEMENT_1643": {}, "ELEMENT_293": {}, "NODE_883": {"MOMENTUM_X": [0.0, 3.662523940472163e-23, 6.36777896773688e-16, 2.8349086577786553e-11, 2.972820474645724e-07, 0.0025289631006196653, 0.24228108150857924], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000000006, 0.1250000000268772, 0.12500028038860583, 0.1271132073573526, 0.2620334665759109], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000167, 0.25000000007525613, 0.25000078508949536, 0.25601189944451447, 0.8516557333443469]}, "NODE_64": {"MOMENTUM_X": [0.0, 1.4564426943825959e-39, 3.426620589455025e-29, 1.0769358575116507e-21, 1.0602299310494641e-15, 2.044563075032516e-12, 8.179756976494591e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999991, 0.9999999999982561, 0.9999999993021987], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.4999999999938964, 2.4999999975576954]}, "ELEMENT_1266": {}, "ELEMENT_465": {}, "ELEMENT_299": {}, "NODE_323": {"MOMENTUM_X": [7.240492922776302e-21, 2.2604486432227574e-11, 1.0826184018468654e-07, 2.826378444779349e-05, 0.0011706296737218481, 0.012814360817023527, 0.052515696650826345], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.999999999980993, 0.9999999091328473, 0.9999763411451102, 0.9990200754563734, 0.9891952419179905, 0.9546468617574875], "TOTAL_ENERGY": [2.5, 2.4999999999334754, 2.499999681964984, 2.499917195078887, 2.4965718871008167, 2.4623632865014926, 2.34426146356857]}, "ELEMENT_489": {}, "NODE_380": {"MOMENTUM_X": [1.65078049323091e-13, 2.540500096793881e-07, 0.00011136470080074691, 0.0043423402680311755, 0.03519246227063643, 0.10382290470250155, 0.17673778470902757], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999998461, 0.9999997606686105, 0.9998966374188529, 0.9960334369139018, 0.9679740362061798, 0.9034673575124333, 0.8294236315416259], "TOTAL_ENERGY": [2.4999999999994613, 2.4999991623402535, 2.4996382486288957, 2.4861398143722058, 2.3892944178641686, 2.1745261900312527, 1.9419651641067195]}, "ELEMENT_1734": {}, "NODE_140": {"MOMENTUM_X": [0.0, 6.720524712242282e-35, 1.1053104602316765e-25, 1.220245677910891e-18, 7.012459487748121e-14, 7.242824460128813e-11, 1.7779137082574943e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999405, 0.9999999999385898, 0.999999984953959], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999997917, 2.4999999997850644, 2.499999947338857]}, "ELEMENT_683": {}, "ELEMENT_276": {}, "NODE_956": {"MOMENTUM_X": [0.0, 1.0995786083825744e-32, 5.584781421792806e-23, 1.8991746436248307e-16, 4.025473431059954e-12, 2.9401251702397913e-08, 0.00018253638223971486], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000002, 0.12500000000391223, 0.12500002858370846, 0.12517527322442765], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000005, 0.2500000000109541, 0.2500000800343978, 0.25049130583496765]}, "ELEMENT_1113": {}, "NODE_579": {"MOMENTUM_X": [0.34512881765570647, 0.4173273923453425, 0.39036177290736346, 0.3943247120969814, 0.39775410182326004, 0.3944884856474513, 0.3964204691196408], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.3479090631103018, 0.43655260108128363, 0.40157209778276737, 0.40409571104231856, 0.4058984144697354, 0.40127250587578517, 0.40228139749676955], "TOTAL_ENERGY": [0.9387530221464833, 0.9134160979611666, 0.9029885268307649, 0.8990185336445629, 0.8964087058076418, 0.8923610566811947, 0.8913403950130699]}, "NODE_442": {"MOMENTUM_X": [1.6729912169691074e-05, 0.011818316614732788, 0.08591419201093167, 0.1884743862893455, 0.26118361510879584, 0.30452807376874974, 0.33068214910733174], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999858061926827, 0.989865292864721, 0.9232130074143854, 0.8194280960129846, 0.7323692738215883, 0.6706110760254048, 0.6268917758862231], "TOTAL_ENERGY": [2.499950322240732, 2.464706640327364, 2.2399700286483424, 1.9140756068217084, 1.6633630508317896, 1.4981491105170888, 1.3875172067018493]}, "NODE_709": {"MOMENTUM_X": [8.285852501956495e-11, 0.00018445612577094877, 0.13504342695302582, 0.26154813371231467, 0.2626581876210466, 0.3123563339550796, 0.3881868560314776], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000007812118, 0.12517145610583225, 0.20662887871678054, 0.27501276845306716, 0.28361003383470224, 0.33735989107415104, 0.4193547365755142], "TOTAL_ENERGY": [0.2500000002187393, 0.2504806406542226, 0.5720418310531645, 0.9059457722912283, 0.8821798357494423, 0.9046969900152376, 0.9395380064322653]}, "ELEMENT_1518": {}, "NODE_561": {"MOMENTUM_X": [0.3875155923576724, 0.40092128391755993, 0.40060116808882157, 0.4016767612431127, 0.401946169792198, 0.4012375540518268, 0.40148098104047364], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.29334998000581003, 0.3380045912805384, 0.3523290444449562, 0.36306227055428836, 0.3702321497345454, 0.37468666527729244, 0.3788564157837337], "TOTAL_ENERGY": [0.6816223064171278, 0.7694345694248921, 0.799452498858894, 0.8189358642863833, 0.8322851950226042, 0.8412702357388813, 0.848503546667153]}, "NODE_503": {"MOMENTUM_X": [0.03638656666515007, 0.2244348716050236, 0.315438220442946, 0.3530391180568876, 0.3697649492516853, 0.3783698539240777, 0.38351620605783066], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9685453036765539, 0.7792593816114016, 0.6545704978820925, 0.5849913513158209, 0.543656985409189, 0.5169629266799299, 0.49872694183092237], "TOTAL_ENERGY": [2.3917142303464587, 1.7971138743984607, 1.4566755070968884, 1.2847887042671662, 1.1897207651924266, 1.1306783327365404, 1.0908217186468832]}, "NODE_183": {"MOMENTUM_X": [0.0, 1.1222865555619499e-24, 2.1928982588656906e-16, 3.5233839964337164e-12, 3.702049320024555e-09, 6.988360807386089e-07, 3.688291241327748e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999998, 0.9999999999969972, 0.999999996842257, 0.9999994039856905, 0.9999685759465764], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999999, 2.49999999998949, 2.4999999889479, 2.4999979139505992, 2.4998900175402055]}, "ELEMENT_79": {}, "ELEMENT_697": {}, "ELEMENT_673": {}, "ELEMENT_1732": {}, "ELEMENT_214": {}, "ELEMENT_513": {}, "ELEMENT_576": {}, "NODE_438": {"MOMENTUM_X": [1.8140748527752414e-06, 0.0038095964370094973, 0.04941577921794052, 0.14649360692894364, 0.23094136516149502, 0.2842117967235373, 0.3165121737561695], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999984785341479, 0.9968009020664874, 0.9573727813505836, 0.8653755133000364, 0.7720397532593102, 0.702009750953453, 0.6520949512397235], "TOTAL_ENERGY": [2.4999946748764605, 2.488822086362753, 2.3536016199509704, 2.054835967071357, 1.7752419622401987, 1.5810489953304885, 1.4507249878201771]}, "ELEMENT_1135": {}, "ELEMENT_1571": {}, "ELEMENT_80": {}, "ELEMENT_145": {}, "NODE_597": {"MOMENTUM_X": [0.183220039144625, 0.3567452534600083, 0.42673172611002935, 0.3895272795259896, 0.39430607703229265, 0.4005720148681447, 0.39394919245648274], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.23166260015471785, 0.3847029365089527, 0.45595459809308336, 0.4185722319723722, 0.42352168224108583, 0.43081465656351825, 0.42397135409753767], "TOTAL_ENERGY": [0.686489719458443, 0.9159862266109943, 0.9596199232446065, 0.9367889511474777, 0.940605374781782, 0.943116109197211, 0.9403629328308235]}, "ELEMENT_719": {}, "NODE_728": {"MOMENTUM_X": [6.618363106551067e-14, 1.1757927449291983e-06, 0.012412397316200294, 0.28658865802587385, 0.23550387550795765, 0.26611678243178344, 0.31455522393587254], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000006203, 0.12500110260383576, 0.13400099707274873, 0.28406902308796766, 0.2631429240707096, 0.28502528352298506, 0.3392214364036099], "TOTAL_ENERGY": [0.2500000000001737, 0.25000308731378745, 0.2769865821106548, 0.967774931922639, 0.838632452010076, 0.8893122671779733, 0.9060396942696318]}, "ELEMENT_682": {}, "NODE_257": {"MOMENTUM_X": [0.0, 7.742910375130642e-16, 3.9213433435039885e-11, 5.5408125375118214e-08, 9.42310269099038e-06, 0.0003664140327210505, 0.004643060478229764], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999993, 0.9999999999669755, 0.9999999533336997, 0.999992065050317, 0.9996911261446697, 0.996072655441744], "TOTAL_ENERGY": [2.5, 2.499999999999998, 2.4999999998844147, 2.499999836667954, 2.499972227796939, 2.4989191055474036, 2.486278600359071]}, "NODE_866": {"MOMENTUM_X": [0.0, 1.506238571102067e-19, 2.2275465168510163e-13, 4.741526054827563e-09, 3.091996025500536e-05, 0.06403940414167772, 0.27443701962557177], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.1250000000002107, 0.12500000449448637, 0.12502930333725026, 0.16653263661734036, 0.2802934298811783], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000005901, 0.2500000125845624, 0.250082064730348, 0.39569765401466583, 0.942685044712594]}, "NODE_43": {"MOMENTUM_X": [0.0, 1.337430498912259e-43, 2.925824578169511e-32, 1.4856625293947398e-24, 1.0643413396966269e-17, 6.824140998794224e-14, 4.2514636626944256e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999423, 0.9999999999639638], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997975, 2.4999999998738733]}, "ELEMENT_1084": {}, "ELEMENT_1162": {}, "ELEMENT_1184": {}, "NODE_1012": {"MOMENTUM_X": [0.0, 1.475208960521953e-41, 1.8646653166485664e-30, 1.1799299251611286e-22, 1.66557619012938e-16, 2.0186735112181273e-12, 1.3426909257028747e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000017, 0.12500000000179065, 0.12500001188912974], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.2500000000050138, 0.2500000332895661]}, "ELEMENT_84": {}, "NODE_39": {"MOMENTUM_X": [0.0, 1.8723994894913333e-52, 1.2536254530488848e-38, 2.911078298131393e-30, 3.158563115812068e-23, 1.4592899618756333e-17, 5.6103433430554e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999526], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999834]}, "NODE_510": {"MOMENTUM_X": [0.09035397776720408, 0.28605551786583083, 0.34734928554648287, 0.36998385811521844, 0.38087227182765204, 0.3861834353570184, 0.38870084765622176], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9179248531450954, 0.6959465611361225, 0.5926531622828702, 0.5396110745608753, 0.5099749855695088, 0.4902881152904369, 0.47590386179580785], "TOTAL_ENERGY": [2.223763984905981, 1.5662550449208308, 1.3064919844624538, 1.1826951033759907, 1.1148258917674603, 1.0722910858731207, 1.0430876766240134]}, "ELEMENT_1653": {}, "ELEMENT_1489": {}, "ELEMENT_1769": {}, "ELEMENT_140": {}, "ELEMENT_750": {}, "NODE_1076": {"MOMENTUM_X": [0.0, 1.4195534203788953e-54, 1.8142768129690538e-40, 1.1040998111508823e-31, 2.1112991328113926e-24, 2.769022320399574e-18, 3.5577618304183766e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000003392], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000951]}, "NODE_602": {"MOMENTUM_X": [0.18187192085988096, 0.35746412627105933, 0.4227277593136304, 0.3942778560784502, 0.39238587004399356, 0.3977254666979612, 0.3941716660469236], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.23208099915308236, 0.3838810594610089, 0.45467379615552056, 0.42453316903479754, 0.4226363629722538, 0.42882069685013186, 0.42530347830194387], "TOTAL_ENERGY": [0.6854264256655702, 0.9232867593257453, 0.9530727622980883, 0.9394069786418623, 0.9391552721605168, 0.941543722959739, 0.9403227582961615]}, "NODE_1100": {"MOMENTUM_X": [0.0, 0.0, 2.368731980676529e-43, 2.2246436676430063e-34, 4.199316427296775e-27, 3.159984219411825e-20, 1.2779071570641774e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000114], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000316]}, "ELEMENT_1057": {}, "ELEMENT_585": {}, "ELEMENT_1503": {}, "ELEMENT_1605": {}, "ELEMENT_1579": {}, "ELEMENT_400": {}, "ELEMENT_858": {}, "NODE_776": {"MOMENTUM_X": [1.222269670795742e-19, 3.053135626826137e-10, 7.018574823657148e-06, 0.027286584917909012, 0.28200359186453045, 0.23916948462043885, 0.25563985942098266], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.1250000002877, 0.12500661122923348, 0.14425642329016503, 0.28333773948886404, 0.26450015286940626, 0.27557674011156963], "TOTAL_ENERGY": [0.25, 0.2500000008055601, 0.2500185122486892, 0.3112389318024477, 0.9609843230645195, 0.8503294772751306, 0.8806015898822989]}, "NODE_664": {"MOMENTUM_X": [4.536461315512628e-06, 0.1092033421950259, 0.27142183501151296, 0.29271681413034273, 0.37931937866000853, 0.42062072882634605, 0.3965340975235574], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500425719999114, 0.19192803993130203, 0.2817790981745116, 0.31642686091790345, 0.40899837333002365, 0.4541086968115687, 0.4281879560332856], "TOTAL_ENERGY": [0.25001192060138033, 0.505420439499094, 0.9221826291554254, 0.8934472525218298, 0.9362245468597882, 0.9542137755132821, 0.9432918850291319]}, "ELEMENT_307": {}, "ELEMENT_1597": {}, "NODE_729": {"MOMENTUM_X": [1.1341813187603035e-13, 1.810231736233692e-06, 0.01582400353897532, 0.27972690875177614, 0.23965509289783968, 0.26923220474288256, 0.3233012797854148], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000000001068, 0.12500170012826065, 0.13636759413733754, 0.2812465849042878, 0.2648505207525261, 0.2882225309769315, 0.34786220481757835], "TOTAL_ENERGY": [0.25000000000029904, 0.2500047604150273, 0.2846378167976527, 0.95214082812318, 0.8474713849523263, 0.8891792039100003, 0.909811797283673]}, "ELEMENT_804": {}, "ELEMENT_1977": {}, "NODE_402": {"MOMENTUM_X": [4.411948918009793e-11, 7.997661659209635e-06, 0.0012220235580182063, 0.020211668229933373, 0.08473262386732405, 0.16676113810313967, 0.23085938778267867], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999586934, 0.9999925127350804, 0.9988746479478708, 0.9815886173265373, 0.9216197816164524, 0.839662822849868, 0.7681522943657703], "TOTAL_ENERGY": [2.499999999855427, 2.499973794678695, 2.4960632311305764, 2.436029269498441, 2.233847650927904, 1.973131854371103, 1.7610263526605576]}, "NODE_905": {"MOMENTUM_X": [0.0, 2.1282128272766992e-26, 3.4251493648058016e-18, 3.501540374945263e-13, 4.5343733398708915e-09, 3.930212086481893e-05, 0.0856815968688277], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000003325, 0.125000004290542, 0.12503672051470086, 0.17770677482168287], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.250000000000931, 0.25000001201351796, 0.25010284181569137, 0.44383289973455153]}, "ELEMENT_154": {}, "ELEMENT_559": {}, "NODE_551": {"MOMENTUM_X": [0.3890834663707991, 0.40489275762286364, 0.40389708846717703, 0.4049333408946127, 0.40337833483508617, 0.40327547142887293, 0.4024237173648316], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.518104060158445, 0.4299415044654997, 0.41707479908132267, 0.4147001041801774, 0.4118544268338302, 0.4112794868513246, 0.4102545035435788], "TOTAL_ENERGY": [1.1037996056516461, 0.937352325285389, 0.9192999766378788, 0.9147934656638853, 0.9118218338506949, 0.9103983715241165, 0.9090457680134948]}, "NODE_123": {"MOMENTUM_X": [0.0, 2.5742418757901076e-36, 6.690028703891857e-27, 2.742307433237548e-19, 1.6464633874513522e-14, 2.0684478394841747e-11, 6.0079525713122734e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999986, 0.9999999999825178, 0.9999999949275671], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999951, 2.4999999999388125, 2.4999999822464845]}, "ELEMENT_983": {}, "NODE_1008": {"MOMENTUM_X": [0.0, 5.1017085630488555e-42, 4.516289223708148e-31, 6.732278920701224e-23, 5.739261475238479e-17, 7.563208331819215e-13, 5.207599296752435e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000071373, 0.12500000491818444], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000199846, 0.25000001377091685]}, "NODE_367": {"MOMENTUM_X": [1.9834721356311698e-14, 7.050075419799323e-08, 4.4131037022815364e-05, 0.002278712840173976, 0.02335354829951821, 0.0815652979193763, 0.15326878518915557], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999833, 0.999999940953603, 0.9999631285581966, 0.9980942281725117, 0.9802128391132154, 0.9283615531534634, 0.8584470318603061], "TOTAL_ENERGY": [2.499999999999942, 2.499999793337619, 2.4998709526639264, 2.4933359831158, 2.43134385243563, 2.2566867190596147, 2.032909035614881]}, "ELEMENT_1353": {}, "NODE_328": {"MOMENTUM_X": [1.9504970671488864e-16, 6.597348825427223e-09, 8.51327856138855e-06, 0.0007061087554910985, 0.010419238137476172, 0.048072727579510796, 0.10885141257420192], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999999, 0.9999999947343057, 0.999993242738385, 0.9994384330175192, 0.9916076361836809, 0.9600064557143823, 0.904905776737725], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999815700695, 2.4999763496920484, 2.498035138591029, 2.4707488577904195, 2.3625644261672343, 2.1808321576799696]}, "ELEMENT_1449": {}, "ELEMENT_122": {}, "ELEMENT_303": {}, "ELEMENT_41": {}, "ELEMENT_275": {}, "ELEMENT_59": {}, "ELEMENT_227": {}, "ELEMENT_439": {}, "NODE_303": {"MOMENTUM_X": [1.6010449237988512e-22, 6.5244169749564664e-12, 4.222380727015939e-08, 1.327368451315257e-05, 0.0006381782928570291, 0.00809081974068421, 0.03818238515919181], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999945091, 0.9999999644795342, 0.9999888418682856, 0.9994629966358594, 0.9931564349452713, 0.9671372306639605], "TOTAL_ENERGY": [2.5, 2.4999999999807816, 2.4999998756783723, 2.49996094678564, 2.498120988697955, 2.476121079302846, 2.3865705676797235]}, "ELEMENT_1995": {}, "NODE_127": {"MOMENTUM_X": [0.0, 1.3233156974395393e-32, 2.6735078285528596e-23, 1.7373521217929174e-16, 1.0377540894701116e-12, 7.120489486934334e-10, 1.2030802815190516e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999991244, 0.9999999993988189, 0.9999998983663716], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999969353, 2.499999997895866, 2.4999996442823202]}, "ELEMENT_1354": {}, "ELEMENT_629": {}, "ELEMENT_534": {}, "NODE_689": {"MOMENTUM_X": [2.5750967862199465e-08, 0.009673087916336108, 0.26594756352219734, 0.24943816094197288, 0.30334337039482545, 0.38288050562549886, 0.42397295025912135], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500002432703158, 0.13250851790206675, 0.2757184632693705, 0.27450643296286203, 0.3270718441712018, 0.41383295894101263, 0.45806010220591115], "TOTAL_ENERGY": [0.25000006811570497, 0.27224063137512405, 0.9178150490225186, 0.8590122304385968, 0.9030310878900768, 0.9373114356037621, 0.9567429078160362]}, "ELEMENT_350": {}, "ELEMENT_1530": {}, "ELEMENT_396": {}, "NODE_894": {"MOMENTUM_X": [0.0, 8.78743248279731e-25, 5.0765329615454215e-17, 3.1900451892572165e-12, 3.678819476846937e-08, 0.00031901845849762443, 0.16796063563398198], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000006, 0.12500000000302694, 0.12500003476130048, 0.12529083828506596, 0.22305295443655324], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000001, 0.25000000000847544, 0.2500000973316628, 0.25081593550682735, 0.6534938677607196]}, "ELEMENT_1682": {}, "ELEMENT_346": {}, "NODE_384": {"MOMENTUM_X": [3.5118528149241314e-10, 3.6669130081887174e-05, 0.003295175088541137, 0.033763821753066386, 0.10418570553021575, 0.17854318516088696, 0.2349787152147582], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999997161023, 0.9999708407987395, 0.9973703005713315, 0.97231814462348, 0.9096838703296738, 0.8348029047331068, 0.7694193369927326], "TOTAL_ENERGY": [2.4999999990063575, 2.4998979448987324, 2.4908094970955674, 2.404394793719689, 2.1964661068997717, 1.9621981581510513, 1.7699618400059378]}, "NODE_215": {"MOMENTUM_X": [0.0, 2.3265046317562533e-19, 2.5887756651008857e-13, 1.0658821157441084e-09, 4.185578091889229e-07, 3.281775785315908e-05, 0.0007672603743111143], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999997936, 0.9999999991537362, 0.9999996682481415, 0.9999739701310548, 0.9993886152635474], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999992775, 2.4999999970380764, 2.4999988388687435, 2.4999088968217746, 2.49786083605534]}, "NODE_399": {"MOMENTUM_X": [9.336808073307115e-11, 1.2950209308432636e-05, 0.0016675575558202575, 0.023957617739300857, 0.09153690745132, 0.172163736712673, 0.2338952118311917], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999220411, 0.9999892004078935, 0.9986083101485147, 0.9797243315173123, 0.919189007859741, 0.8388000255756672, 0.7683651670489321], "TOTAL_ENERGY": [2.4999999997271445, 2.4999622016875707, 2.4951325533308504, 2.429674717203358, 2.2266364768075846, 1.972562040036273, 1.76451063017615]}, "ELEMENT_1980": {}, "NODE_320": {"MOMENTUM_X": [1.8349954068359066e-20, 3.455486592793583e-11, 1.4910575224288578e-07, 3.5408869640307713e-05, 0.0013486105401305365, 0.013790092993596004, 0.054059773514593665], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999708387, 0.9999998743190968, 0.9999702235986073, 0.9988660788831939, 0.9883258087326675, 0.9531659626221941], "TOTAL_ENERGY": [2.5, 2.4999999998979363, 2.499999560116875, 2.499895784291206, 2.496033446324782, 2.459350207037083, 2.33927780702274]}, "NODE_934": {"MOMENTUM_X": [0.0, 3.813639625481904e-29, 5.085968196904757e-20, 1.7386257450602285e-14, 2.4659420139192667e-10, 1.6314236657222772e-06, 0.009005614025003907], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000169, 0.12500000023969382, 0.1250015861670643, 0.1320873015644213], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000004735, 0.25000000067114264, 0.2500044413114022, 0.2708756892386217]}, "ELEMENT_1648": {}, "NODE_508": {"MOMENTUM_X": [0.09070830346768355, 0.2855746569019407, 0.34657547895193186, 0.36921111326750083, 0.38007231584671536, 0.385750525135838, 0.38865534357197273], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9172993217576733, 0.6958598327238885, 0.5933998039725809, 0.5402226942877842, 0.5103435544735243, 0.49095263820237733, 0.4769048090603108], "TOTAL_ENERGY": [2.2217029490046225, 1.5659224701205796, 1.3086285760307863, 1.1853482381058367, 1.1172897188802164, 1.0746012814504118, 1.0452600693432688]}, "ELEMENT_1381": {}, "ELEMENT_364": {}, "NODE_748": {"MOMENTUM_X": [1.482648816400492e-14, 7.48182215264401e-07, 0.00784419146341241, 0.2384445061115674, 0.24937485703953663, 0.26689793728207667, 0.31556862579465567], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000001354, 0.12500066289851056, 0.1306759912422902, 0.2576856845625088, 0.26610277555621004, 0.2823799660792424, 0.33446623660360036], "TOTAL_ENERGY": [0.25000000000003786, 0.25000185612569004, 0.26667201601929896, 0.8360092052726579, 0.8691443567918474, 0.8858078254541482, 0.9082687444066567]}, "ELEMENT_1132": {}, "ELEMENT_873": {}, "NODE_466": {"MOMENTUM_X": [0.0006168460203430912, 0.05614982308153735, 0.17615538217155688, 0.2663110245580508, 0.31522790565158376, 0.34180201406150856, 0.35741517073982315], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9994791288012957, 0.9509421972221983, 0.8333226286684009, 0.7259634266700458, 0.6536229727614864, 0.605765149465729, 0.5726835147093464], "TOTAL_ENERGY": [2.498177606417579, 2.332096546095732, 1.9563785880075697, 1.6460032962791993, 1.4547113258373576, 1.3360471588838894, 1.25736856957688]}, "ELEMENT_1192": {}, "NODE_569": {"MOMENTUM_X": [0.41530734100845046, 0.39688058292638173, 0.38930694704829366, 0.39680890715601547, 0.3924752606334609, 0.3949217252033327, 0.39389805285588625], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.39346123485342677, 0.3810406807286906, 0.3714733453308927, 0.3784247946038351, 0.37458327948593223, 0.37735236205531014, 0.3768365741352127], "TOTAL_ENERGY": [0.912100943622305, 0.840511806794929, 0.8387242119743775, 0.842477185796565, 0.8409946060923786, 0.8435322321493511, 0.8442187651953622]}, "NODE_7": {"MOMENTUM_X": [0.0, 0.0, 4.152654876775358e-40, 1.3306310919020009e-31, 1.90492067780317e-24, 1.2032423303949297e-17, 2.3540321766987524e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999798], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999993]}, "ELEMENT_510": {}, "ELEMENT_1180": {}, "NODE_477": {"MOMENTUM_X": [0.0002978147041333626, 0.04401240209131878, 0.1659657146134368, 0.2646673160609151, 0.31725602162381766, 0.34499413855842714, 0.36088141400627544], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9997243384380312, 0.9593460399000512, 0.8387032871689457, 0.7239564663845786, 0.6492166263399928, 0.6014739616921301, 0.5689993916631708], "TOTAL_ENERGY": [2.4990353378396657, 2.3600356428621576, 1.969982133416247, 1.6357704700514533, 1.4386594746069337, 1.3213129354547124, 1.2451654178106628]}, "ELEMENT_496": {}, "ELEMENT_763": {}, "NODE_69": {"MOMENTUM_X": [0.0, 1.409106499559591e-41, 6.9975036349229445e-31, 3.125451796766484e-23, 1.0904781917780785e-16, 2.635202612328907e-13, 1.3689694666110125e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999997776, 0.9999999998844832], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999999222, 2.499999999595691]}, "ELEMENT_1004": {}, "NODE_1082": {"MOMENTUM_X": [0.0, 0.0, 2.0226136241975957e-42, 6.053344905407902e-34, 6.70350073171575e-27, 3.2492486501777534e-20, 1.5456709813702655e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000144], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000041]}, "ELEMENT_1230": {}, "ELEMENT_1886": {}, "ELEMENT_1849": {}, "ELEMENT_290": {}, "ELEMENT_621": {}, "ELEMENT_305": {}, "ELEMENT_1404": {}, "ELEMENT_372": {}, "NODE_200": {"MOMENTUM_X": [0.0, 3.7957008606014e-23, 1.6706401639910596e-15, 1.5582347161578708e-11, 1.235722997044003e-08, 1.8554583601030854e-06, 8.040205878336967e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999987, 0.9999999999868735, 0.9999999895886112, 0.9999984367318167, 0.9999322351507275], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999995, 2.4999999999540568, 2.4999999635601395, 2.4999945285660266, 2.4997628310240203]}, "ELEMENT_309": {}, "NODE_502": {"MOMENTUM_X": [0.036412151976605786, 0.2244456919758494, 0.31531585222771785, 0.35308800138358926, 0.36992022174232786, 0.3784363761779228, 0.3835917138345594], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9684686660268297, 0.7794220603429438, 0.6547019547365778, 0.585335534821628, 0.5441241690968376, 0.5172821824402087, 0.49903970982442514], "TOTAL_ENERGY": [2.3914540876361796, 1.797616500524648, 1.456794034144105, 1.285092362386718, 1.1902209064891818, 1.1312759345478383, 1.0914987744854177]}, "NODE_674": {"MOMENTUM_X": [2.740840286921258e-07, 0.041620587837634254, 0.28241089212809956, 0.2639315385876475, 0.34340415477131436, 0.42069414561018637, 0.41331743524090236], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500025718560365, 0.15224730503213887, 0.2836916558503396, 0.2874381375916658, 0.36851570751240303, 0.45255808422918803, 0.4444758212261155], "TOTAL_ENERGY": [0.2500007201213704, 0.34081804224321605, 0.9571216066491524, 0.8711368499125314, 0.9221414822604799, 0.955611884210598, 0.9526385339114158]}, "ELEMENT_569": {}, "ELEMENT_54": {}, "ELEMENT_641": {}, "ELEMENT_810": {}, "ELEMENT_726": {}, "ELEMENT_1534": {}, "ELEMENT_178": {}, "ELEMENT_1879": {}, "NODE_401": {"MOMENTUM_X": [2.3708793175638276e-09, 9.603756021866066e-05, 0.005775905451319185, 0.046784394391969186, 0.1269498641044249, 0.20272371739985962, 0.2562290155041833], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999999997998469, 0.9999190507865362, 0.9951097374498228, 0.9594341149449824, 0.884328073326954, 0.8043236942551933, 0.7395352301103092], "TOTAL_ENERGY": [2.499999992994642, 2.4997166919289615, 2.4829251998890607, 2.3605012583917646, 2.1142729809676335, 1.86894779509667, 1.6831702157746538]}, "ELEMENT_1671": {}, "NODE_617": {"MOMENTUM_X": [0.01499430156886068, 0.2956876464672811, 0.33026517304161096, 0.42665397608291555, 0.3906723315682645, 0.3649451753452967, 0.3941807089773196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.13645030612140702, 0.30151858990286723, 0.36764591349078346, 0.4695105991733321, 0.43204670873728374, 0.4040149150314873, 0.4358086149337036], "TOTAL_ENERGY": [0.28475586098956124, 0.9776933847382568, 0.89987537162062, 0.9550150175827502, 0.9351411361958134, 0.9242341969166054, 0.9385486644122674]}, "NODE_400": {"MOMENTUM_X": [2.3883656550788265e-09, 9.692507166038073e-05, 0.00581342045970938, 0.04695908235376287, 0.1271021400819074, 0.2026888521866716, 0.25608113521824677], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999979825217, 0.9999181794327747, 0.9950687803524523, 0.9592081240824383, 0.884017679541127, 0.8041594274991722, 0.7395287353881281], "TOTAL_ENERGY": [2.4999999929388257, 2.499713642495021, 2.4827824859601333, 2.359734175987094, 2.113269434098078, 1.868427210550324, 1.683109805008198]}, "ELEMENT_1601": {}, "ELEMENT_567": {}, "NODE_903": {"MOMENTUM_X": [0.0, 2.796124140086031e-27, 1.1943915564640928e-18, 1.054148876409195e-13, 1.492750146241613e-09, 1.3383635987770832e-05, 0.05715341613600344], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000011294, 0.1250000015949407, 0.1250142741469754, 0.163603123125958], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000003163, 0.25000000446583404, 0.250039970598502, 0.3818170066014231]}, "ELEMENT_902": {}, "NODE_531": {"MOMENTUM_X": [0.1630021690081458, 0.34375106585419674, 0.379237738452153, 0.3904031438139986, 0.39518193797425516, 0.39696882440771886, 0.39799297920426235], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.8402380383728506, 0.6024521950559809, 0.5245704440874798, 0.48995140075230864, 0.47127700618877744, 0.4588556489463312, 0.4504679875587546], "TOTAL_ENERGY": [1.9760096553607525, 1.3182454529358318, 1.1418117655635374, 1.0686618188682946, 1.029822247025908, 1.0053382659826213, 0.9885218458936695]}, "ELEMENT_1668": {}, "ELEMENT_1439": {}, "NODE_1032": {"MOMENTUM_X": [0.0, 6.543951315144365e-46, 4.077100770630932e-34, 9.18026419496579e-26, 6.834176575233173e-19, 1.5904770990416943e-14, 1.1453707904301645e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001515, 0.12500000010940499], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000004247, 0.25000000030633396]}, "NODE_1063": {"MOMENTUM_X": [0.0, 2.8482428744000642e-52, 6.895936306890715e-39, 2.9119532597259596e-30, 2.223795871338765e-23, 1.9262552672110696e-17, 2.0598809585753834e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000019446], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000005444]}, "NODE_230": {"MOMENTUM_X": [0.0, 3.9169936752064635e-20, 7.172690696653861e-14, 3.367291499268702e-10, 1.5676725337472307e-07, 1.4901416809993114e-05, 0.000425492141645365], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999394, 0.9999999997161171, 0.9999998679539419, 0.9999874650769592, 0.9996420614312606], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999788, 2.499999999006411, 2.4999995378388324, 2.499956128057028, 2.4987474295768686]}, "NODE_362": {"MOMENTUM_X": [1.6954229820889095e-12, 1.5058479685100877e-06, 0.0004005311447424579, 0.0094721495930061, 0.0514741164709142, 0.12063192084901489, 0.1859526080838508], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999986228, 0.999998801240113, 0.9996816929501546, 0.992386984916908, 0.9571446358349112, 0.8938173188089175, 0.8264255638736123], "TOTAL_ENERGY": [2.4999999999951794, 2.4999958043442767, 2.4988861392042856, 2.473457867530285, 2.352952360779918, 2.1454275710658504, 1.9367198044200986]}, "ELEMENT_1510": {}, "NODE_862": {"MOMENTUM_X": [0.0, 9.077852605674096e-20, 1.1898322210796353e-13, 2.9341227713661834e-09, 2.4488378263900044e-05, 0.06252098654378263, 0.27517178453336194], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000011222, 0.12500000276248302, 0.12502292329683373, 0.16519134942156527, 0.2800884606287143], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000031425, 0.25000000773495273, 0.250064194803776, 0.3909431749772316, 0.9432982265538806]}, "ELEMENT_428": {}, "NODE_1097": {"MOMENTUM_X": [0.0, 0.0, 1.0406776177569904e-43, 8.756408443351713e-35, 2.4790556396554635e-27, 3.82995936719259e-21, 5.0676729207890905e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000044], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000133]}, "ELEMENT_289": {}, "ELEMENT_335": {}, "ELEMENT_1591": {}, "ELEMENT_975": {}, "ELEMENT_133": {}, "ELEMENT_1538": {}, "ELEMENT_688": {}, "ELEMENT_1580": {}, "ELEMENT_1098": {}, "ELEMENT_1138": {}, "ELEMENT_446": {}, "NODE_304": {"MOMENTUM_X": [1.2723581877611386e-25, 1.3262851438724123e-13, 2.041146250253641e-09, 1.311320599581214e-06, 0.00011839817354408374, 0.002614956803277782, 0.019386807079823827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999998738, 0.9999999980687095, 0.9999987732209409, 0.9998907566005384, 0.9976203841006868, 0.9824945228662312], "TOTAL_ENERGY": [2.5, 2.4999999999995586, 2.4999999932404835, 2.499995706275879, 2.499617666468426, 2.4916793807951647, 2.4391450336796563]}, "NODE_809": {"MOMENTUM_X": [8.814989961789903e-26, 1.8276554315270645e-13, 1.3309322344411197e-08, 0.0001073959710835123, 0.10923863999073768, 0.265798590674754, 0.2485590859820829], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000017217, 0.12500001253776613, 0.1251006690229072, 0.19228471597362476, 0.2761420390296832, 0.26871303765523513], "TOTAL_ENERGY": [0.25, 0.2500000000004821, 0.2500000351057482, 0.25028205746467724, 0.506330194462896, 0.9194026059764792, 0.8745772779866825]}, "NODE_813": {"MOMENTUM_X": [8.841648677372108e-26, 2.4960731863782504e-13, 1.9558955942245038e-08, 0.00016767974300985498, 0.12180839313756082, 0.2561447566462728, 0.24930910384525054], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000024278, 0.12500001903694996, 0.12516121768173713, 0.20052326385217958, 0.27209861767022026, 0.2690643289512896], "TOTAL_ENERGY": [0.25, 0.2500000000006798, 0.2500000533034667, 0.25045186746980297, 0.5412429970553151, 0.8968141549571224, 0.8775019063911088]}, "ELEMENT_1907": {}, "ELEMENT_1037": {}, "NODE_964": {"MOMENTUM_X": [0.0, 1.363365627553848e-34, 5.119529532959028e-25, 1.5236038481451235e-17, 3.2364384589365887e-13, 2.6036009254612676e-09, 1.5766533532377435e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000030528, 0.12500000245842477, 0.125014892997756], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000008549, 0.2500000068835896, 0.2500417043847359]}, "NODE_587": {"MOMENTUM_X": [0.26633209344051834, 0.3998433204417747, 0.4122133776652241, 0.38638404094977663, 0.39883630949783455, 0.397771453635254, 0.3941589483376494], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2861067665864854, 0.43152360765046854, 0.44020420743121536, 0.41371663268679554, 0.42629763337046744, 0.4248512435005146, 0.42071335875512467], "TOTAL_ENERGY": [0.8650015568286363, 0.930722130120913, 0.9473124168366552, 0.9311880624837096, 0.9370615579758327, 0.9360756011767188, 0.933902037637672]}, "ELEMENT_284": {}, "NODE_1006": {"MOMENTUM_X": [0.0, 4.8127649791885644e-42, 3.8038379973529884e-31, 1.3522191156982455e-23, 3.485827365757365e-17, 5.230242252526809e-13, 4.128457595892657e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000049336, 0.12500000388594662], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000013813, 0.25000001088065077]}, "ELEMENT_159": {}, "ELEMENT_1133": {}, "ELEMENT_617": {}, "ELEMENT_645": {}, "ELEMENT_758": {}, "ELEMENT_570": {}, "NODE_584": {"MOMENTUM_X": [0.24793439998564348, 0.3777967428296041, 0.41631101248858604, 0.3613362226774016, 0.3881027820381739, 0.38664496743164567, 0.3790854499835735], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.2746582498675007, 0.42065293932954256, 0.45638020726763956, 0.3999485866443411, 0.42842977697244183, 0.42686972411074314, 0.4181726321753031], "TOTAL_ENERGY": [0.8572749330291835, 0.9089258876673304, 0.9475510504318362, 0.9163581577500832, 0.9324358658022216, 0.932336843780063, 0.9306744642200454]}, "ELEMENT_1761": {}, "ELEMENT_879": {}, "ELEMENT_995": {}, "ELEMENT_1176": {}, "NODE_150": {"MOMENTUM_X": [0.0, 2.762755715529391e-29, 2.4702675418114415e-20, 1.2344942244160086e-14, 3.195255974599173e-11, 1.3078041273083915e-08, 1.392141300872353e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999895, 0.9999999999729491, 0.9999999889175627, 0.9999988197801882], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999636, 2.4999999999053215, 2.4999999612114694, 2.499995869233253]}, "ELEMENT_1537": {}, "ELEMENT_424": {}, "ELEMENT_1096": {}, "ELEMENT_976": {}, "ELEMENT_954": {}, "NODE_169": {"MOMENTUM_X": [0.0, 4.4744443836328326e-26, 1.2597827310501267e-17, 6.84443860494035e-13, 9.695640606053746e-10, 2.3397741572118098e-07, 1.5266410859499044e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999994061, 0.9999999991606463, 0.9999997980704168, 0.9999868767880098], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999979217, 2.4999999970622615, 2.499999293246537, 2.4999540690605637]}, "ELEMENT_353": {}, "ELEMENT_875": {}, "NODE_926": {"MOMENTUM_X": [0.0, 4.237300231659919e-30, 2.6995614728089682e-21, 2.2978421329754046e-15, 4.20645987247873e-11, 3.9042821031606955e-07, 0.003609557382570257], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000022, 0.12500000003977593, 0.12500036747122895, 0.12791921041008508], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000061, 0.2500000001113726, 0.2500010289218083, 0.2583567356771331]}, "ELEMENT_1711": {}, "NODE_277": {"MOMENTUM_X": [0.0, 4.074806208834705e-15, 1.358840297047317e-10, 1.5075761736220827e-07, 2.1420616364887943e-05, 0.0007110002731607725, 0.0077002072168043615], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999966, 0.9999999998851269, 0.9999998727714993, 0.9999819669630577, 0.9994018673902291, 0.9934991029723569], "TOTAL_ENERGY": [2.5, 2.499999999999988, 2.4999999995979443, 2.4999995547002816, 2.499936884975861, 2.49790713668605, 2.4773123657212555]}, "ELEMENT_855": {}, "NODE_957": {"MOMENTUM_X": [0.0, 2.777055990387971e-32, 9.225786552065766e-23, 3.259106011141986e-16, 6.7618174409022905e-12, 4.984802993555874e-08, 0.00033003062120501455], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.1250000000000003, 0.12500000000600206, 0.12500004412633878, 0.12528366906688734], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000008, 0.2500000000168057, 0.2500001235537874, 0.250795935442734]}, "ELEMENT_1536": {}, "NODE_351": {"MOMENTUM_X": [5.675901474502369e-14, 1.7599897975650915e-07, 8.824416745820087e-05, 0.003535213291225455, 0.029012316193523034, 0.0881163427595052, 0.1557072084341772], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999999999999951, 0.9999998472256079, 0.9999237615589162, 0.9969564100760278, 0.9748140220433648, 0.9212009881961312, 0.854719397545214], "TOTAL_ENERGY": [2.4999999999998286, 2.4999994652896858, 2.499733176761375, 2.489362750478839, 2.412799220908538, 2.2330916109374668, 2.0212445827070202]}, "ELEMENT_1991": {}, "ELEMENT_1323": {}, "ELEMENT_817": {}, "ELEMENT_1951": {}, "ELEMENT_35": {}, "ELEMENT_670": {}, "ELEMENT_1529": {}, "ELEMENT_680": {}, "ELEMENT_1694": {}, "ELEMENT_550": {}, "ELEMENT_408": {}, "ELEMENT_1582": {}, "ELEMENT_1083": {}, "ELEMENT_1045": {}, "NODE_989": {"MOMENTUM_X": [0.0, 3.6516800191848335e-38, 1.0672463641108289e-27, 5.422063122706864e-20, 7.323585770068308e-15, 6.989906421439913e-11, 4.3980636448358796e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000713, 0.12500000006791992, 0.12500042760125205], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000001993, 0.2500000001901758, 0.25000119728667697]}, "NODE_701": {"MOMENTUM_X": [1.590910679037373e-09, 0.0015008249788673292, 0.2120632718856658, 0.2501527825053116, 0.27801656178399303, 0.34534957765585406, 0.41222218067283894], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000150452095, 0.1263269997006577, 0.24835010998001297, 0.27139927705858563, 0.3000027941834445, 0.37358165296433393, 0.4457105326353966], "TOTAL_ENERGY": [0.25000000421265867, 0.2537515693179789, 0.7756358055183026, 0.8729654949719076, 0.8909252744826884, 0.9196371666497533, 0.9509937030442832]}, "ELEMENT_1695": {}, "ELEMENT_627": {}, "ELEMENT_229": {}, "ELEMENT_1282": {}, "ELEMENT_1946": {}, "NODE_218": {"MOMENTUM_X": [0.0, 9.297232623441573e-24, 4.006851330072129e-16, 5.12389188860761e-12, 5.054459553553166e-09, 9.331662281869148e-07, 4.8885318186370654e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999997, 0.9999999999956748, 0.999999995742715, 0.9999992157520616, 0.9999589895527276], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999987, 2.499999999984861, 2.499999985099502, 2.4999972551333802, 2.499856466357711]}, "ELEMENT_1043": {}, "ELEMENT_1213": {}, "ELEMENT_1347": {}, "ELEMENT_1321": {}, "ELEMENT_773": {}, "ELEMENT_951": {}, "ELEMENT_1008": {}, "ELEMENT_1026": {}, "ELEMENT_1411": {}, "ELEMENT_1159": {}, "ELEMENT_1701": {}, "NODE_199": {"MOMENTUM_X": [0.0, 4.567056038279785e-23, 1.8875291441529948e-15, 1.7390308693902e-11, 1.3545442770679358e-08, 1.995332101796156e-06, 8.491692816290841e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999984, 0.9999999999853325, 0.9999999885679622, 0.9999983152824954, 0.9999282573686086], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999947, 2.4999999999486633, 2.499999959987867, 2.4999941034941524, 2.4997489097368146]}, "ELEMENT_612": {}, "ELEMENT_655": {}, "ELEMENT_1119": {}, "ELEMENT_248": {}, "ELEMENT_1917": {}, "ELEMENT_1112": {}, "NODE_94": {"MOMENTUM_X": [0.0, 4.372401164285588e-36, 3.427583413805473e-26, 1.200677327939707e-18, 4.08372485356902e-14, 4.581907734764192e-11, 1.1823244142699705e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999653, 0.9999999999609172, 0.9999999899145762], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999878, 2.49999999986321, 2.4999999647010167]}, "ELEMENT_1721": {}, "ELEMENT_325": {}, "ELEMENT_577": {}, "ELEMENT_1842": {}, "ELEMENT_1036": {}, "ELEMENT_198": {}, "NODE_319": {"MOMENTUM_X": [1.6353797560319618e-18, 5.222575782763901e-10, 1.2235763130008404e-06, 0.00016986543300397895, 0.004000534808779586, 0.02711529500061228, 0.0790477008439536], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.999999999555432, 0.9999989569059642, 0.9998551785093373, 0.9965847046025145, 0.9766002242617723, 0.9298727485482777], "TOTAL_ENERGY": [2.5, 2.499999998444012, 2.4999963491732697, 2.4994931634668247, 2.4880653724452264, 2.418917064503662, 2.2615900610503936]}, "NODE_718": {"MOMENTUM_X": [2.6811207271895497e-12, 1.650566666416005e-05, 0.06020013524290614, 0.27897280557460086, 0.25093825219251054, 0.28555192027032383, 0.3612759157689528], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000000252368, 0.12501544181450486, 0.1632295538977702, 0.2815859075533395, 0.2719757135420932, 0.3068750240993672, 0.3885817288097244], "TOTAL_ENERGY": [0.25000000000706635, 0.2500432416197835, 0.38338101118100093, 0.9507250660761912, 0.8693706478758229, 0.8933294517261655, 0.928011935625335]}, "ELEMENT_807": {}, "ELEMENT_1743": {}, "ELEMENT_1294": {}, "ELEMENT_91": {}, "ELEMENT_1969": {}, "NODE_1098": {"MOMENTUM_X": [0.0, 0.0, 1.0525164180740359e-43, 1.073831309723999e-34, 2.7599720309964465e-27, 4.983900013622567e-21, 5.974096024372638e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000056], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000016]}, "NODE_909": {"MOMENTUM_X": [0.0, 6.71142381754408e-26, 1.3942478428117176e-17, 9.478345081065485e-13, 9.676837815360037e-09, 5.827744266578054e-05, 0.08608615512651416], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000089403, 0.12500000913801787, 0.12505492340979324, 0.17924178937938923], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.2500000000025033, 0.2500000255864515, 0.25015383996569557, 0.44889578135729336]}, "ELEMENT_1989": {}, "NODE_429": {"MOMENTUM_X": [2.3757974305739626e-06, 0.0046812230671845825, 0.05403826322769989, 0.14927653805584762, 0.22981034684689708, 0.28165367859431734, 0.3139564977159475], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999979400803579, 0.9959483428721406, 0.9522734466378888, 0.8607211894476693, 0.7716375634825302, 0.7044173297796131, 0.655693150112151], "TOTAL_ENERGY": [2.499992790293861, 2.485848674795234, 2.3363904642859814, 2.040116626020623, 1.7737802710833501, 1.587223661796632, 1.4596748925282828]}, "ELEMENT_406": {}, "ELEMENT_351": {}, "ELEMENT_918": {}, "ELEMENT_940": {}, "NODE_258": {"MOMENTUM_X": [0.0, 9.244869972637447e-18, 1.8920482715780843e-12, 4.888614541800341e-09, 1.4172272798278291e-06, 8.898719353963477e-05, 0.0017293605329837607], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.999999999998404, 0.9999999958850626, 0.999998810013087, 0.9999254116187166, 0.9985495215902379], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999994414, 2.4999999855977184, 2.499995835048554, 2.499738950426866, 2.4949267164767543]}, "ELEMENT_994": {}, "ELEMENT_729": {}, "NODE_19": {"MOMENTUM_X": [0.0, 0.0, 4.608438872696712e-40, 1.3979492025302997e-31, 1.6290035808899818e-24, 2.198813168178659e-18, 1.6931607574794813e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999858], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999503]}, "NODE_472": {"MOMENTUM_X": [0.00047518745104654534, 0.05261305804818929, 0.17592212553991765, 0.2687648750734102, 0.31769177952458777, 0.34368035566622895, 0.35870386586471714], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9996069809946072, 0.9549547129203689, 0.8356416962992813, 0.724532141316619, 0.6506414479478573, 0.602540820116274, 0.5695361364753596], "TOTAL_ENERGY": [2.4986248025040783, 2.345568768187901, 1.9636607368590404, 1.6425141235115213, 1.4473668281680225, 1.3281436245062277, 1.2498792576723436]}, "NODE_409": {"MOMENTUM_X": [1.2278557970381343e-09, 6.120159215413467e-05, 0.004574658983831428, 0.04305789007098705, 0.12481924368553506, 0.20324669963552652, 0.2578035798488778], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999989759863, 0.9999490169428172, 0.9961772860661059, 0.96315638301536, 0.887324284777977, 0.8046431515155836, 0.7381197634388985], "TOTAL_ENERGY": [2.4999999964159527, 2.4998215648553863, 2.486645674577844, 2.373105103089945, 2.123853318225996, 1.870023044376736, 1.6793895725651367]}, "ELEMENT_1432": {}, "ELEMENT_286": {}, "ELEMENT_39": {}, "ELEMENT_347": {}, "NODE_334": {"MOMENTUM_X": [2.664975290425681e-19, 1.8782901357736571e-10, 5.426492440501421e-07, 9.534946663431346e-05, 0.0028033752639894357, 0.022705974965176796, 0.07389463393831065], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999998422078, 0.9999995450523907, 0.9999202369652239, 0.9976517223608475, 0.9807467895088164, 0.9353479893753239], "TOTAL_ENERGY": [2.5, 2.499999999447726, 2.4999984076838184, 2.4997208412211314, 2.491790111785449, 2.4331740540779303, 2.2797461116753404]}, "NODE_615": {"MOMENTUM_X": [0.10482415572728476, 0.3122907952204856, 0.400941990950751, 0.3965535318125583, 0.38523774135050376, 0.3916537630605951, 0.38842336146057055], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.18922972040657393, 0.3360258097197232, 0.4355250414362841, 0.4319195975106348, 0.41995406131166885, 0.4269936028973168, 0.4233363405014845], "TOTAL_ENERGY": [0.4957622585852036, 0.9115953907996718, 0.9415998307839767, 0.9379567107705216, 0.9333535474539237, 0.936706993739079, 0.9357748517634956]}, "NODE_676": {"MOMENTUM_X": [3.65488179218309e-07, 0.04207413521523516, 0.28188254327850865, 0.2634005373802832, 0.33886203153773903, 0.4106525703447619, 0.41589225482121256], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250003444296105, 0.1533073718948202, 0.28437927114605316, 0.2886111625223975, 0.36519762509572695, 0.4437256303827154, 0.4491531120703972], "TOTAL_ENERGY": [0.25000096440600333, 0.3443523464106933, 0.9571751083862148, 0.8686858174453442, 0.9193937836884531, 0.9496528823548489, 0.9527063410399097]}, "ELEMENT_1204": {}, "NODE_982": {"MOMENTUM_X": [0.0, 1.9534618853143353e-38, 1.7379260148713353e-28, 4.245180022570677e-21, 1.4357197608725739e-15, 1.749822628491341e-11, 1.522780660521985e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000014, 0.1250000000166088, 0.12500014374673518], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000383, 0.25000000004650463, 0.2500004024912258]}, "NODE_1045": {"MOMENTUM_X": [0.0, 1.2360626622473858e-47, 2.75499696636663e-35, 5.604319409176748e-27, 6.422871351752212e-20, 4.211951071785362e-15, 3.2139878819020255e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000372, 0.12500000002848843], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001044, 0.2500000000797677]}, "ELEMENT_463": {}, "ELEMENT_519": {}, "ELEMENT_857": {}, "ELEMENT_1416": {}, "ELEMENT_1540": {}, "ELEMENT_1526": {}, "ELEMENT_987": {}, "ELEMENT_1425": {}, "NODE_887": {"MOMENTUM_X": [0.0, 1.0315267538105501e-22, 1.826527330720095e-15, 6.865126014976655e-11, 5.426872950844251e-07, 0.0030386053500515526, 0.2379885494866022], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.12500000000000172, 0.12500000006477605, 0.125000512673667, 0.1275880352917613, 0.2612407283276859], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000483, 0.25000000018137297, 0.2500014354910076, 0.25738473423844765, 0.8439288198727085]}, "ELEMENT_1191": {}, "NODE_908": {"MOMENTUM_X": [0.0, 6.142822346211714e-26, 9.283361656351617e-18, 8.371227616026945e-13, 8.9472730296154e-09, 5.674633485794555e-05, 0.08559992946742401], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.12500000000078854, 0.12500000842871423, 0.1250533421818343, 0.17891970069073634], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.2500000000022079, 0.2500000236004012, 0.25014940964076177, 0.44765187218779545]}, "ELEMENT_76": {}, "ELEMENT_1499": {}, "ELEMENT_868": {}, "ELEMENT_1386": {}, "ELEMENT_928": {}, "ELEMENT_969": {}, "NODE_461": {"MOMENTUM_X": [7.847582599013322e-05, 0.0243383836353612, 0.12519516983827036, 0.22996051045821578, 0.292584188209338, 0.3269272232445275, 0.3469013318117574], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.999935051114191, 0.9795020219998538, 0.8873852980522459, 0.7740306465650715, 0.6902709290188308, 0.6342854072668314, 0.595741773834248], "TOTAL_ENERGY": [2.4997726897526933, 2.4289585226403383, 2.124432646276432, 1.781277024173511, 1.5500738168661574, 1.4060657520408377, 1.3117379734452344]}, "NODE_715": {"MOMENTUM_X": [1.874728556243404e-10, 0.0005076764749282916, 0.1626303905439491, 0.25441350737232005, 0.2747767344023905, 0.33884443285165344, 0.4108262866023326], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12500000016921683, 0.12542986277048393, 0.2185660959384918, 0.2683716669331368, 0.2902945880553251, 0.35894118568534866, 0.43520204584134375], "TOTAL_ENERGY": [0.2500000004738072, 0.2512076960156044, 0.6355890173316604, 0.8797045023971745, 0.8903478102614455, 0.9195251285534605, 0.9543747620676454]}, "ELEMENT_1651": {}, "ELEMENT_1278": {}, "NODE_355": {"MOMENTUM_X": [5.2143128656095714e-14, 1.4973051569036554e-07, 7.425257901949323e-05, 0.003068770466767955, 0.026669141991265168, 0.08512073940226449, 0.15433635519533592], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9999999999999559, 0.9999998735998156, 0.999937316939162, 0.9974012342618823, 0.9770995742527447, 0.9244039007525877, 0.8565056401288512], "TOTAL_ENERGY": [2.4999999999998455, 2.499999557599396, 2.4997806171896255, 2.4909157863662457, 2.4206456035592097, 2.2436367880913792, 2.026807608086542]}, "ELEMENT_989": {}, "ELEMENT_610": {}, "ELEMENT_1878": {}, "NODE_727": {"MOMENTUM_X": [2.630618394203967e-14, 5.840185977629285e-07, 0.00674807370982159, 0.2874478739560221, 0.22536450714507597, 0.2585921971291177, 0.29513416617442856], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.1250000000000275, 0.12500062453917204, 0.13081547846708205, 0.29080890255511155, 0.2619402469944513, 0.28296076333720094, 0.32549337712341553], "TOTAL_ENERGY": [0.25000000000007705, 0.25000174871585945, 0.2668911058014093, 0.9862214123167519, 0.8204023498456431, 0.8870895464247588, 0.8948137015534504]}, "ELEMENT_95": {}, "NODE_655": {"MOMENTUM_X": [5.76239996797128e-05, 0.18960962797537692, 0.26506569350696485, 0.3279064903170457, 0.4100877671217058, 0.41663853286783004, 0.3849853371301507], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.12505390041589856, 0.2361043398018703, 0.2849223788972916, 0.3539734947772613, 0.4429102708988724, 0.4500059422887109, 0.4159639340009075], "TOTAL_ENERGY": [0.25015098776721373, 0.7144285778152644, 0.8865646155689805, 0.9129695895308464, 0.9502124803537223, 0.9531381186841853, 0.9380996047341826]}, "ELEMENT_22": {}, "ELEMENT_1811": {}, "ELEMENT_1299": {}, "ELEMENT_1482": {}, "ELEMENT_1422": {}, "ELEMENT_653": {}, "NODE_638": {"MOMENTUM_X": [0.013515369362179232, 0.274534832126788, 0.3490445169378199, 0.4265060047148656, 0.4144345435680977, 0.4095047472593957, 0.41464024569805585], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.13387923527398624, 0.28225060024978615, 0.3677564972916853, 0.44860539120005855, 0.43486915540859117, 0.42965730938348595, 0.43519029965044015], "TOTAL_ENERGY": [0.27714785807235526, 0.9027401881005386, 0.9232692351541973, 0.9632818757576214, 0.9582973035651559, 0.954547110339331, 0.9562716084262255]}, "NODE_1001": {"MOMENTUM_X": [0.0, 1.2356171209727461e-39, 6.940572382328038e-29, 3.6309860437437856e-21, 1.4491641420031083e-15, 1.5440052948209368e-11, 1.0053330841614715e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000128, 0.12500000001369269, 0.1250000889511559], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000036, 0.2500000000383395, 0.25000024906339424]}, "NODE_187": {"MOMENTUM_X": [0.0, 1.3674237723906171e-24, 1.961519623242452e-16, 2.9565239776234456e-12, 3.114856591815131e-09, 5.955738739577574e-07, 3.209777504654851e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999998, 0.9999999999975064, 0.9999999973713364, 0.9999994970982217, 0.9999728875333667], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.4999999999912728, 2.499999990799678, 2.499998239844269, 2.499905107669346]}, "NODE_500": {"MOMENTUM_X": [0.036434965339189634, 0.22471807460943516, 0.3151845485574406, 0.35300758081929207, 0.3698560715942899, 0.37831203692393184, 0.38352117395979346], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.9684663269119851, 0.7795097240012183, 0.6546719864617209, 0.5853953872214182, 0.5442208961266677, 0.5172988340425766, 0.4991324768241907], "TOTAL_ENERGY": [2.3914474513572217, 1.7979640576050355, 1.4565808860520078, 1.2851012649334645, 1.1902936961860253, 1.131452584504684, 1.0918394001873997]}, "ELEMENT_718": {}, "NODE_1078": {"MOMENTUM_X": [0.0, 2.3146795242569322e-54, 4.285082743864699e-40, 2.14331906924736e-31, 3.287571901865996e-24, 9.733372064146823e-18, 7.510376398479502e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006659], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000018646]}, "ELEMENT_657": {}, "NODE_26": {"MOMENTUM_X": [0.0, 7.032297003537337e-48, 2.0175403348320375e-35, 2.4641564058913166e-27, 2.845319277034767e-20, 2.288502269394569e-15, 2.1851484616552008e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999998, 0.9999999999981479], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999933, 2.4999999999935176]}, "ELEMENT_1750": {}, "ELEMENT_1608": {}, "ELEMENT_1786": {}, "ELEMENT_1939": {}, "ELEMENT_432": {}, "ELEMENT_1490": {}, "ELEMENT_907": {}, "ELEMENT_1702": {}, "ELEMENT_1985": {}, "ELEMENT_1553": {}, "ELEMENT_1716": {}, "ELEMENT_1697": {}, "NODE_196": {"MOMENTUM_X": [0.0, 5.406773598386682e-23, 2.0379360010578535e-15, 1.8825609802541855e-11, 1.457838955229491e-08, 2.1288013605992836e-06, 8.963685689885898e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 0.9999999999999982, 0.999999999984071, 0.999999987650988, 0.99999819576838, 0.9999239994889098], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999942, 2.499999999944249, 2.4999999567784594, 2.4999936851955225, 2.499734008206399]}, "ELEMENT_968": {}, "NODE_8": {"MOMENTUM_X": [0.0, 1.8306812975746042e-52, 2.2213997674271534e-38, 5.352539576828073e-30, 7.219931769140037e-23, 9.883874253434535e-17, 1.44087557343518e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998754], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999999564]}, "NODE_805": {"MOMENTUM_X": [1.4655545988352195e-26, 4.941991710643247e-14, 4.522094315440296e-09, 5.196398346633563e-05, 0.10291899911373215, 0.2653639183298741, 0.25389987154733196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000004668, 0.12500000426365374, 0.1250483206852585, 0.18660781144127733, 0.2754312712033532, 0.27075773941478276], "TOTAL_ENERGY": [0.25, 0.2500000000001307, 0.2500000119382308, 0.2501353393802573, 0.48300565786697225, 0.9161408402137659, 0.8869150550828565]}, "NODE_249": {"MOMENTUM_X": [0.0, 1.7598836584375058e-15, 8.557495115793312e-11, 1.124373024027539e-07, 1.7177789338831932e-05, 0.0005858973769320304, 0.0064281448075145155], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999986, 0.9999999999318534, 0.9999999107856754, 0.9999863802977438, 0.9995337017646586, 0.9948313891886013], "TOTAL_ENERGY": [2.5, 2.499999999999995, 2.499999999761487, 2.4999996877498836, 2.499952331432121, 2.4983683640486434, 2.481955526887165]}, "ELEMENT_1846": {}, "NODE_307": {"MOMENTUM_X": [8.593924670110488e-21, 7.617667884878896e-11, 2.9942402964990447e-07, 6.0995753331970394e-05, 0.001954828373304911, 0.01700971943748127, 0.05931083039389259], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.99999999993383, 0.9999997404719373, 0.99994738720075, 0.998320187343881, 0.98533514726157, 0.9478655997247826], "TOTAL_ENERGY": [2.5, 2.499999999768405, 2.499999091651929, 2.499815860365999, 2.4941252924481874, 2.448997444887246, 2.3214457409582767]}, "NODE_32": {"MOMENTUM_X": [0.0, 5.77622831530746e-50, 4.651420223947948e-37, 8.455219203210718e-29, 9.179526527629353e-22, 2.59310122877317e-16, 3.410024339463531e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 0.999999999999712], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.499999999998992]}, "ELEMENT_1417": {}, "NODE_158": {"MOMENTUM_X": [0.0, 1.2044439675687696e-27, 4.3259958139565386e-19, 1.080416046879757e-13, 2.069334533048807e-10, 6.464825985594619e-08, 5.321679908876621e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 1.0, 1.0, 0.9999999999999063, 0.9999999998207999, 0.9999999441767625, 0.9999954221345326], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999672, 2.4999999993727995, 2.4999998046186747, 2.499983977508318]}, "NODE_244": {"MOMENTUM_X": [0.0, 5.262814149580924e-17, 6.350357213234288e-12, 1.2917074140237028e-08, 2.9558978137586844e-06, 0.000149145057072806, 0.0023981552260700376], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [1.0, 0.9999999999999999, 0.9999999999946445, 0.9999999891012693, 0.9999975051026998, 0.9998740018549205, 0.9979695176877033], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999812563, 2.4999999618544435, 2.499991267871664, 2.499559034362034, 2.492899924807957]}, "ELEMENT_1640": {}, "ELEMENT_991": {}, "ELEMENT_862": {}, "ELEMENT_1460": {}, "ELEMENT_1044": {}, "ELEMENT_341": {}, "NODE_985": {"MOMENTUM_X": [0.0, 3.320768940745319e-38, 4.838117319461649e-28, 3.4350830324722356e-20, 3.8712263401611275e-15, 3.9994025231899244e-11, 2.72738076676263e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000364, 0.12500000003768402, 0.12500025697555656], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000102, 0.25000000010551526, 0.2500007195327538]}, "ELEMENT_1792": {}, "ELEMENT_75": {}, "ELEMENT_920": {}, "NODE_844": {"MOMENTUM_X": [0.0, 7.264761268202191e-17, 2.1192291985771833e-11, 2.7995719370391827e-07, 0.001644824877724195, 0.21509222706762796, 0.24240776179052617], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "DENSITY": [0.125, 0.12500000000000006, 0.12500000002006184, 0.12500026555451693, 0.12645380548409765, 0.24978785461066672, 0.26572489132557414], "TOTAL_ENERGY": [0.25, 0.25000000000000017, 0.2500000000561732, 0.2500007435539287, 0.2541125186593977, 0.7836666428222064, 0.8605365831717939]}} \ No newline at end of file +{"TIME": [0.030000000000000002, 0.05999999999999999, 0.085, 0.11000000000000003, 0.13500000000000004, 0.16000000000000006, 0.18500000000000008], "NODE_1": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999916], "MOMENTUM_X": [0.0, 0.0, 5.452732466247142e-41, 2.349336771669251e-32, 3.4219344950552734e-25, 9.046562889786252e-19, 1.0913745016912803e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999997]}, "NODE_2": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999932], "MOMENTUM_X": [0.0, 0.0, 3.2790276104857987e-41, 1.439044116526064e-32, 2.2530131612807904e-25, 7.854986244701417e-19, 7.794541768628902e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999977]}, "NODE_3": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999639], "MOMENTUM_X": [0.0, 0.0, 1.531408181989104e-39, 4.130211695012263e-31, 6.04678034529802e-24, 1.752065643394449e-17, 4.569651843900088e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999874]}, "NODE_4": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999744], "MOMENTUM_X": [0.0, 0.0, 5.981654642784674e-40, 1.9561380627864553e-31, 2.8001342662065404e-24, 1.2647212876581195e-17, 2.961225406866153e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999103]}, "NODE_5": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999947], "MOMENTUM_X": [0.0, 0.0, 2.397820075767127e-41, 1.0091909098907419e-32, 1.6046886772549502e-25, 7.067016251167766e-19, 6.139525335067936e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999982]}, "NODE_6": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998255], "MOMENTUM_X": [0.0, 5.600186921675581e-52, 6.203784335854638e-38, 1.1436070049847157e-29, 1.5348087572212872e-22, 1.437430142469123e-16, 2.2091554628198207e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999999389]}, "NODE_7": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999798], "MOMENTUM_X": [0.0, 0.0, 4.158916298439216e-40, 1.3318403044281456e-31, 1.9054083240150477e-24, 1.2041946587973226e-17, 2.35873138293219e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999993]}, "NODE_8": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998751], "MOMENTUM_X": [0.0, 1.834858382873778e-52, 2.2248585622911282e-38, 5.354327514175434e-30, 7.221219202684309e-23, 9.993337860419099e-17, 1.4437245830173899e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999999563]}, "NODE_9": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999999011], "MOMENTUM_X": [0.0, 1.9247451318598288e-52, 1.4373771048458388e-38, 3.545599206747462e-30, 4.330575403649968e-23, 8.727895349520923e-17, 1.1600603465960038e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999996536]}, "NODE_10": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999993, 0.9999999999991811], "MOMENTUM_X": [0.0, 1.5528675118329978e-49, 2.3705633777124754e-36, 3.1379368838368833e-28, 3.5335350923772714e-21, 9.204889556425231e-16, 1.035855139196368e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.4999999999971334]}, "NODE_11": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999957], "MOMENTUM_X": [0.0, 0.0, 2.71327569993035e-41, 1.0903583441522428e-32, 1.3894141302961196e-25, 6.282988885612447e-19, 5.256653151129617e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999985]}, "NODE_12": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999994, 0.9999999999994094], "MOMENTUM_X": [0.0, 5.843324419975939e-50, 8.406829599447242e-37, 1.5059057147915805e-28, 1.7349556505938823e-21, 5.877695854819572e-16, 6.830285611419211e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.4999999999979328]}, "NODE_13": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999831], "MOMENTUM_X": [0.0, 0.0, 5.015407885667351e-40, 1.3813663424124928e-31, 1.736983119540797e-24, 8.955108612210586e-18, 1.992554033633462e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999941]}, "NODE_14": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 0.9999999999995287], "MOMENTUM_X": [0.0, 5.854137214614905e-50, 4.978386007398538e-37, 9.846264652127921e-29, 1.0777399302158226e-21, 4.759784166774946e-16, 5.522546519250223e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999987, 2.499999999998351]}, "NODE_15": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999999163], "MOMENTUM_X": [0.0, 1.7450839134266486e-52, 1.784669062128182e-38, 3.58676617284867e-30, 4.0077436579899286e-23, 7.196914758757514e-17, 9.858877879570938e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999708]}, "NODE_16": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999959, 0.9999999999962812], "MOMENTUM_X": [0.0, 2.071472150848277e-47, 8.744233616373306e-35, 8.043465547563619e-27, 6.408285376312881e-20, 5.248856586886481e-15, 4.703351585877224e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999853, 2.4999999999869837]}, "NODE_17": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999964], "MOMENTUM_X": [0.0, 0.0, 2.556825531531063e-41, 1.1067916038812746e-32, 1.2766594276758034e-25, 3.466738568335501e-19, 4.432040368076951e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999987]}, "NODE_18": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999972, 0.9999999999972943], "MOMENTUM_X": [0.0, 7.400623278104436e-48, 3.227897273324041e-35, 3.9134644381508716e-27, 4.196917616653882e-20, 3.337637366756775e-15, 3.1295819113691976e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999999, 2.4999999999905294]}, "NODE_19": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999857], "MOMENTUM_X": [0.0, 0.0, 4.621475604414157e-40, 1.4010610997988252e-31, 1.6292732604112235e-24, 2.1998447135466214e-18, 1.6945379257940425e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999995]}, "NODE_20": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 0.9999999999995998], "MOMENTUM_X": [0.0, 5.619187653709046e-50, 6.113395895208733e-37, 9.760819175685896e-29, 1.0149247777289352e-21, 4.1526071064184306e-16, 4.722025277981032e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999987, 2.4999999999985993]}, "NODE_21": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999978, 0.9999999999978284], "MOMENTUM_X": [0.0, 7.251203024999825e-48, 1.7445863700523403e-35, 2.5293911909986174e-27, 2.9727589000492063e-20, 2.6903436243319638e-15, 2.5454458422941274e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999992, 2.499999999992399]}, "NODE_22": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999287], "MOMENTUM_X": [0.0, 1.8342504577658632e-52, 1.6207143572545452e-38, 3.537594095773474e-30, 3.7345769851603e-23, 3.3665115418522824e-17, 8.429965436587937e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999751]}, "NODE_23": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999997], "MOMENTUM_X": [0.0, 0.0, 2.2791886524272867e-41, 1.008769672423268e-32, 1.206617321496743e-25, 1.8237681048221706e-19, 3.635345094157328e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999893]}, "NODE_24": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999775, 0.9999999999836637], "MOMENTUM_X": [0.0, 2.52287091200754e-45, 3.1802890448874024e-33, 1.9773792960462513e-25, 8.656101074974751e-19, 2.860074926429021e-14, 2.0659797079931938e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999205, 2.499999999942822]}, "NODE_25": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 0.9999999999996563], "MOMENTUM_X": [0.0, 5.724305855751495e-50, 5.513687617596481e-37, 9.168794991051722e-29, 9.563695547583873e-22, 3.544313130341976e-16, 4.064900865699262e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.499999999998798]}, "NODE_26": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999998, 0.9999999999981446], "MOMENTUM_X": [0.0, 7.064376877933978e-48, 2.0221770502317976e-35, 2.46562073171874e-27, 2.846138865769749e-20, 2.2912735732558897e-15, 2.1891482060333637e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999933, 2.4999999999935056]}, "NODE_27": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999882], "MOMENTUM_X": [0.0, 0.0, 4.042772637489476e-40, 1.312865965213967e-31, 1.5559665226695044e-24, 1.1461207806093488e-18, 1.403301703328681e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999587]}, "NODE_28": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999842, 0.9999999999880066], "MOMENTUM_X": [0.0, 9.342453361791535e-46, 1.2656077859876548e-33, 1.0081762254385254e-25, 5.840303638538477e-19, 1.830873284813822e-14, 1.3875522785782494e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999445, 2.4999999999580234]}, "NODE_29": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999873, 0.9999999999903143], "MOMENTUM_X": [0.0, 9.089262713053064e-46, 6.712189342289083e-34, 6.63697588500715e-26, 5.746508982961875e-19, 1.479661794562411e-14, 1.135265416367454e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999956, 2.4999999999661]}, "NODE_30": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999407], "MOMENTUM_X": [0.0, 1.9122828388952096e-52, 1.3894878934348734e-38, 3.338324097048178e-30, 3.574756375894287e-23, 1.801382565669326e-17, 7.034002990292251e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999792]}, "NODE_31": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999983, 0.9999999999983964], "MOMENTUM_X": [0.0, 7.137761055860793e-48, 1.8237419521014392e-35, 2.2516048899631863e-27, 2.713478516169752e-20, 1.9617473717997696e-15, 1.8978899629147835e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999942, 2.4999999999943876]}, "NODE_32": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999997116], "MOMENTUM_X": [0.0, 5.793338804621785e-50, 4.660551186954487e-37, 8.482764090075294e-29, 9.181168383751267e-22, 2.597591828605479e-16, 3.4168213748912224e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.49999999999899]}, "NODE_33": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999893, 0.9999999999916763], "MOMENTUM_X": [0.0, 8.871918105583937e-46, 7.641057580000259e-34, 6.011636618721585e-26, 5.212293721207727e-19, 1.2718381680491878e-14, 9.82033725417511e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999623, 2.499999999970867]}, "NODE_34": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999977], "MOMENTUM_X": [0.0, 0.0, 2.01373126769885e-41, 8.486110575927632e-33, 1.0486542560779995e-25, 1.26064932144347e-19, 2.8247661962098297e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999916]}, "NODE_35": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999998804, 0.9999999999306388], "MOMENTUM_X": [0.0, 2.908134208868496e-43, 1.0659704710754993e-31, 4.586323446274485e-24, 2.09935215299158e-17, 1.5091108235224586e-13, 8.770948674513833e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999995817, 2.499999999757236]}, "NODE_36": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999906], "MOMENTUM_X": [0.0, 0.0, 3.650086055435662e-40, 1.1314776157564054e-31, 1.372093516878407e-24, 8.6417019434759645e-19, 1.1074298535425062e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999967]}, "NODE_37": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999157, 0.9999999999486097], "MOMENTUM_X": [0.0, 1.3864857566437756e-43, 4.6792696546414715e-32, 2.693325954743879e-24, 1.1311019165591967e-17, 9.744189606526896e-14, 5.947341034288418e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997042, 2.499999999820133]}, "NODE_38": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999324, 0.9999999999582388], "MOMENTUM_X": [0.0, 1.355603863011123e-43, 2.5736398569018256e-32, 1.8656335349444278e-24, 1.1297839882011078e-17, 7.918179767565523e-14, 4.895024841003692e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997633, 2.4999999998538356]}, "NODE_39": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999524], "MOMENTUM_X": [0.0, 1.875419175153411e-52, 1.2494601667643577e-38, 2.9233992001197596e-30, 3.160012247767623e-23, 1.4718952231420373e-17, 5.6224262669244256e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999834]}, "NODE_40": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999986, 0.999999999998642], "MOMENTUM_X": [0.0, 7.147433555623955e-48, 1.5367509064818663e-35, 2.1116365601837258e-27, 2.6194302641749666e-20, 1.615758856669287e-15, 1.6084155416048933e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999995, 2.4999999999952474]}, "NODE_41": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999907, 0.9999999999927565], "MOMENTUM_X": [0.0, 8.921543197190905e-46, 6.794351690204191e-34, 5.431382778906014e-26, 4.90699886455102e-19, 1.09469273680258e-14, 8.572795772865966e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999676, 2.4999999999746483]}, "NODE_42": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999997672], "MOMENTUM_X": [0.0, 5.7361119221452855e-50, 4.070314553906856e-37, 7.517880218246715e-29, 7.765252222200862e-22, 2.0709349576034182e-16, 2.7565876858064947e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999991847]}, "NODE_43": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999942, 0.9999999999639015], "MOMENTUM_X": [0.0, 1.3378830938570044e-43, 2.931707257943892e-32, 1.4864369577944954e-24, 1.0646993399321075e-17, 6.841274934007121e-14, 4.258831272310749e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999797, 2.499999999873655]}, "NODE_44": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999981], "MOMENTUM_X": [0.0, 0.0, 1.5643902262128778e-41, 5.314607728603829e-33, 6.628221047874976e-26, 7.590187936571872e-20, 2.1258424585842023e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999994]}, "NODE_45": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999993904, 0.9999999997156246], "MOMENTUM_X": [0.0, 2.1678818116445066e-41, 3.317488490797522e-30, 9.685050135578617e-23, 3.0852977114420714e-16, 7.698086688051513e-13, 3.5956045927072033e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.4999999999978666, 2.499999999004686]}, "NODE_46": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999993], "MOMENTUM_X": [0.0, 0.0, 2.9135213421916953e-40, 7.331651074380538e-32, 8.569805545225258e-25, 6.51999006804454e-19, 8.36072901730243e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999975]}, "NODE_47": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999922, 0.9999999999938165], "MOMENTUM_X": [0.0, 8.827983051850723e-46, 5.4454239642622554e-34, 5.173404535817751e-26, 4.680240005416976e-19, 9.135937900627222e-15, 7.32506615184718e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999734, 2.4999999999783586]}, "NODE_48": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999995658, 0.9999999997873167], "MOMENTUM_X": [0.0, 1.560318081166179e-41, 1.6032855607526733e-30, 5.854477891457665e-23, 1.7675003354300581e-16, 5.016227006985337e-13, 2.462151857490606e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.49999999999848, 2.499999999255608]}, "NODE_49": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999999, 0.9999999999988937], "MOMENTUM_X": [0.0, 8.415949290637177e-48, 1.2863047313561842e-35, 1.8853042840295205e-27, 2.3536919708060264e-20, 1.266059229820973e-15, 1.3094899400037605e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999964, 2.499999999996128]}, "NODE_50": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999499, 0.9999999999683723], "MOMENTUM_X": [0.0, 1.340432454397658e-43, 2.601499010504973e-32, 1.3537866020373624e-24, 9.959025541827426e-18, 5.939013801988997e-14, 3.743481212075619e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999998246, 2.499999999889303]}, "NODE_51": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999996504, 0.9999999998260789], "MOMENTUM_X": [0.0, 1.7780914593756234e-41, 9.491101031944612e-31, 4.127162449170304e-23, 1.43890763742385e-16, 4.0991172685053147e-13, 2.0386689781302574e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999998776, 2.4999999993912763]}, "NODE_52": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999639], "MOMENTUM_X": [0.0, 1.5096182357828502e-52, 1.0271740071519462e-38, 1.943907405739315e-30, 1.9831025497552124e-23, 1.1549471483234297e-17, 4.266939069420318e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999998734]}, "NODE_53": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998211], "MOMENTUM_X": [0.0, 4.92892373738541e-50, 3.4224839004297793e-37, 5.087535202569352e-29, 4.316515380998537e-22, 1.4068014606491422e-16, 2.1127042928685243e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999999374]}, "NODE_54": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999996981, 0.9999999998487927], "MOMENTUM_X": [0.0, 1.2604652038037856e-41, 1.0893845202277665e-30, 3.0959998619094903e-23, 1.3440997569793517e-16, 3.561630755969367e-13, 1.7838658026669712e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999998944, 2.499999999470776]}, "NODE_55": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999938, 0.9999999999949164], "MOMENTUM_X": [0.0, 1.0068514997777626e-45, 3.999970189961718e-34, 4.623066271076451e-26, 4.23164189388189e-19, 7.279620788826456e-15, 6.019025160304904e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999787, 2.499999999982207]}, "NODE_56": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999577, 0.9999999999727818], "MOMENTUM_X": [0.0, 1.3230253386641925e-43, 1.9758365762179516e-32, 1.3091629663879944e-24, 9.21355260608604e-18, 5.0020063008678813e-14, 3.225002472046669e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999998526, 2.499999999904737]}, "NODE_57": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999987], "MOMENTUM_X": [0.0, 0.0, 9.997549439431021e-42, 1.3838472193248641e-33, 1.7525758166724392e-26, 4.9169679943144286e-20, 1.4784281573775157e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999956]}, "NODE_58": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999983, 0.9999999999969988, 0.9999999988752508], "MOMENTUM_X": [0.0, 1.4846218711707484e-39, 1.0184729660056777e-28, 2.2879626641195563e-21, 2.169058852422448e-15, 3.79057365084514e-12, 1.4219099130013154e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999942, 2.4999999999894964, 2.499999996063378]}, "NODE_59": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999995], "MOMENTUM_X": [0.0, 0.0, 1.920324058021843e-40, 1.825337361829278e-32, 1.9182758957213591e-25, 4.442513650026559e-19, 5.926678106445463e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999827]}, "NODE_60": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999992, 0.9999999999991419], "MOMENTUM_X": [0.0, 1.0189208541339606e-47, 1.0784952685289713e-35, 1.2920626342856481e-27, 1.446947083674975e-20, 9.254247980960003e-16, 1.013711263796693e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.499999999996997]}, "NODE_61": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999989, 0.9999999999978421, 0.9999999991506746], "MOMENTUM_X": [0.0, 1.2333107912131892e-39, 5.21380629318253e-29, 1.4593334255136607e-21, 1.3512330078619157e-15, 2.4930324267305246e-12, 9.835716389999035e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999996, 2.499999999992447, 2.499999997027361]}, "NODE_62": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999997375, 0.9999999998666224], "MOMENTUM_X": [0.0, 1.5116678277184005e-41, 9.664985400727914e-31, 3.2249506039353745e-23, 1.2180923552421658e-16, 3.1101677242594053e-13, 1.5787573605348715e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999990807, 2.4999999995331774]}, "NODE_63": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999974], "MOMENTUM_X": [0.0, 1.194418079823381e-52, 6.96144155126074e-39, 4.7443803157146385e-31, 4.7907385097610954e-24, 8.002460023527881e-18, 3.057310044245009e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999094]}, "NODE_64": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999991, 0.9999999999982527, 0.9999999993010478], "MOMENTUM_X": [0.0, 1.4576227728779525e-39, 3.4317025697290993e-29, 1.0775426582262279e-21, 1.0589280843852344e-15, 2.0483870466821097e-12, 8.193250342359631e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.499999999993885, 2.4999999975536675]}, "NODE_65": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999966, 0.9999999999774151], "MOMENTUM_X": [0.0, 1.3775540662342071e-43, 1.233668610085829e-32, 1.1761456865250088e-24, 7.985351730889622e-18, 4.011336454059386e-14, 2.6748636457285313e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999998814, 2.499999999920953]}, "NODE_66": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.99999999999987], "MOMENTUM_X": [0.0, 3.7165347595187814e-50, 2.4065820186823744e-37, 1.2157088109527898e-29, 1.1425674331146155e-22, 9.497165485537269e-17, 1.5291811306817694e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999995453]}, "NODE_67": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999992, 0.999999999998484, 0.9999999993888503], "MOMENTUM_X": [0.0, 9.498904699016624e-40, 3.9006888865190526e-29, 7.016043809405185e-22, 9.288213827445935e-16, 1.7897057330768128e-12, 7.209813544781493e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.4999999999946945, 2.499999997860977]}, "NODE_68": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999953, 0.9999999999960177], "MOMENTUM_X": [0.0, 1.1644159284287574e-45, 3.2736244633854394e-34, 3.174448088017989e-26, 2.7230502857339445e-19, 5.458229310703553e-15, 4.706849771586931e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999984, 2.499999999986062]}, "NODE_69": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999997773, 0.9999999998842836], "MOMENTUM_X": [0.0, 1.360581564828866e-41, 7.025876169434656e-31, 3.127356795790214e-23, 1.0905929163641889e-16, 2.6405792922129644e-13, 1.3713348800139901e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.49999999999922, 2.4999999995949924]}, "NODE_70": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999994, 0.9999999999993703], "MOMENTUM_X": [0.0, 7.700677816718525e-48, 7.848827314103823e-36, 3.0698931243866393e-28, 2.6309852374947696e-21, 6.523874674786606e-16, 7.411648374622752e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.499999999997796]}, "NODE_71": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999993, 0.9999999999986713, 0.9999999994572865], "MOMENTUM_X": [0.0, 1.1936709442999996e-39, 3.5009080160777807e-29, 7.633395735557637e-22, 8.068915181261728e-16, 1.573597999516944e-12, 6.4241927354056e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999998, 2.4999999999953495, 2.4999999981005026]}, "NODE_72": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999992], "MOMENTUM_X": [0.0, 0.0, 4.0677245117421346e-42, 7.567816823855381e-34, 9.114073401313619e-27, 2.5869679161161187e-20, 9.918271047509358e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999973]}, "NODE_73": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999895, 0.9999999999857444, 0.9999999957130518], "MOMENTUM_X": [0.0, 9.165492324770859e-38, 2.7120493286922444e-27, 9.092483273759397e-20, 1.3251337030869417e-14, 1.8006438616475244e-11, 5.41858636188362e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999963, 2.4999999999501052, 2.4999999849956813]}, "NODE_74": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999967], "MOMENTUM_X": [0.0, 0.0, 8.064610238424907e-41, 9.241408390457197e-33, 1.0434346296421355e-25, 2.508783488717406e-19, 3.946476055518021e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999885]}, "NODE_75": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999928, 0.9999999999896546, 0.9999999967307116], "MOMENTUM_X": [0.0, 7.424263615953594e-38, 1.4554502622112467e-27, 4.296611485900991e-20, 8.346386484982951e-15, 1.1954872229636905e-11, 3.787447166610808e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999747, 2.499999999963791, 2.499999988557491]}, "NODE_76": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999942, 0.9999999999915766, 0.9999999972922107], "MOMENTUM_X": [0.0, 8.63668046393397e-38, 1.125552164852845e-27, 3.333959677461903e-20, 6.804157980645152e-15, 9.875729407424528e-12, 3.174236739263598e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999796, 2.4999999999705174, 2.499999990522736]}, "NODE_77": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999825], "MOMENTUM_X": [0.0, 1.0334307246113969e-52, 3.0255984801796134e-39, 2.2216790557987897e-31, 2.297533736051844e-24, 3.882573151733233e-18, 2.0701993866704447e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999387]}, "NODE_78": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999744, 0.9999999999821284], "MOMENTUM_X": [0.0, 1.2851938320781406e-43, 9.578074233837803e-33, 8.066578880149438e-25, 4.74748602079345e-18, 3.03932608999005e-14, 2.1132179227708945e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999103, 2.49999999993745]}, "NODE_79": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998193, 0.9999999999030819], "MOMENTUM_X": [0.0, 1.289581686396543e-41, 3.8020841730494715e-31, 2.8200327646224464e-23, 9.757400476293101e-17, 2.139233758587193e-13, 1.1481972777032146e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999993676, 2.499999999660787]}, "NODE_80": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999968, 0.9999999999970466], "MOMENTUM_X": [0.0, 8.069116547513903e-46, 2.4449752782308677e-34, 7.477358868091795e-27, 6.315546489657645e-20, 3.7733079537004425e-15, 3.478291677922e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999989, 2.499999999989663]}, "NODE_81": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999994, 0.9999999999988637, 0.9999999995253154], "MOMENTUM_X": [0.0, 1.0492160154011524e-39, 2.580206628204966e-29, 7.355261065889528e-22, 6.910613475552836e-16, 1.3469389500394318e-12, 5.626290681664952e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999998, 2.4999999999960227, 2.499999998338604]}, "NODE_82": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999114], "MOMENTUM_X": [0.0, 2.179741224932595e-50, 1.0820787986506063e-37, 5.388254106303038e-30, 5.542834623153564e-23, 5.4964446533839066e-17, 1.0474058492724345e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999969]}, "NODE_83": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999995, 0.9999999999926512, 0.9999999976189257], "MOMENTUM_X": [0.0, 5.494109428165113e-38, 1.2505874939635169e-27, 1.9710858741312792e-20, 5.950931858138511e-15, 8.67573993346288e-12, 2.8088646165160675e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999822, 2.4999999999742792, 2.49999999166624]}, "NODE_84": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999956, 0.9999999999935145, 0.9999999978714881], "MOMENTUM_X": [0.0, 6.986329346788612e-38, 1.1346127693760516e-27, 2.0607994382898174e-20, 5.2139651883372255e-15, 7.680920145946349e-12, 2.519613501497712e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999845, 2.4999999999773013, 2.499999992550209]}, "NODE_85": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 0.9999999999995661], "MOMENTUM_X": [0.0, 3.5504223409531864e-48, 3.690737105563993e-36, 1.3704056611551623e-28, 1.3212071343002624e-21, 4.4236912804890045e-16, 5.132027032890804e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.499999999998481]}, "NODE_86": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999998616, 0.9999999999225175], "MOMENTUM_X": [0.0, 1.0943953985184907e-41, 2.777571428699753e-31, 1.9569072520232466e-23, 7.230535041611717e-17, 1.6356478359063323e-13, 9.165809893689225e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999995155, 2.499999999728811]}, "NODE_87": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999818, 0.9999999999866025], "MOMENTUM_X": [0.0, 6.706696471766156e-44, 7.241793349896443e-33, 1.8323378938214622e-25, 1.4660691487541205e-18, 2.1489567292604976e-14, 1.5786915768419602e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999936, 2.499999999953109]}, "NODE_88": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999994], "MOMENTUM_X": [0.0, 0.0, 1.8869549892774342e-42, 5.107845892077435e-34, 5.701689319935875e-27, 1.3668827985174257e-20, 6.727709062230101e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999998]}, "NODE_89": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999938, 0.9999999999347345, 0.9999999842718695], "MOMENTUM_X": [0.0, 5.6027791728404695e-36, 7.269606612274148e-26, 2.3030441844427806e-18, 7.805298424775353e-14, 8.24380891061802e-11, 1.9875584751842053e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999997833, 2.4999999997715707, 2.4999999449515435]}, "NODE_90": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 0.99999999999907, 0.9999999995986728], "MOMENTUM_X": [0.0, 9.552111942426425e-40, 1.348950704762647e-29, 6.626060942941045e-22, 5.6773540173621725e-16, 1.1017306005330871e-12, 4.755943196001219e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.499999999996745, 2.4999999985953547]}, "NODE_91": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999979], "MOMENTUM_X": [0.0, 0.0, 2.3301708199325294e-41, 4.325511242832735e-33, 4.8015477848223686e-26, 8.263873738948129e-20, 2.2870745545032695e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999925]}, "NODE_92": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999569, 0.9999999999521881, 0.9999999878832069], "MOMENTUM_X": [0.0, 3.942485510669917e-36, 3.8873950764634845e-26, 1.372958346572477e-18, 4.9664630447825165e-14, 5.5265982055789313e-11, 1.4042850895790027e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999849, 2.4999999998326583, 2.4999999575912235]}, "NODE_93": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999883], "MOMENTUM_X": [0.0, 2.9730946321620874e-53, 8.15750843265673e-40, 1.0165805701110234e-31, 1.1367468702280111e-24, 1.5573800413893622e-18, 1.2192344971821602e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999596]}, "NODE_94": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999965, 0.9999999999608468, 0.9999999898986629], "MOMENTUM_X": [0.0, 4.378894884343206e-36, 3.432021552490204e-26, 1.201017873785526e-18, 4.092288646585067e-14, 4.5901096991016015e-11, 1.1841902681123707e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999998783, 2.4999999998629647, 2.499999964645321]}, "NODE_95": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999962, 0.9999999999944074, 0.9999999981231544], "MOMENTUM_X": [0.0, 6.067537137444058e-38, 8.66782771893915e-28, 1.9762320145532614e-20, 4.398405663661001e-15, 6.630132130167333e-12, 2.2248887387912603e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999987, 2.4999999999804254, 2.499999993431041]}, "NODE_96": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999979, 0.999999999997942], "MOMENTUM_X": [0.0, 3.499642531996479e-46, 1.2141247927731587e-34, 3.408650929621264e-27, 3.40323699608749e-20, 2.4958602322814242e-15, 2.4348224219441356e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999925, 2.4999999999927973]}, "NODE_97": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999696, 0.9999999999656587, 0.9999999910675195], "MOMENTUM_X": [0.0, 2.9471614010914234e-36, 3.6846003626267565e-26, 7.800673658460104e-19, 3.606479345741555e-14, 4.053987741028409e-11, 1.0536768314272767e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999893, 2.4999999998798046, 2.4999999687363172]}, "NODE_98": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999409], "MOMENTUM_X": [0.0, 5.714547889561201e-51, 2.8953511341052817e-38, 2.364375031244789e-30, 2.530740782812643e-23, 2.499357129785847e-17, 6.244871304269765e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997926]}, "NODE_99": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 0.9999999999992799, 0.9999999996757878], "MOMENTUM_X": [0.0, 7.760012580749035e-40, 8.06686387497594e-30, 4.551019909220535e-22, 4.185776084069769e-16, 8.514818530315131e-13, 3.836877124167614e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999987, 2.4999999999974793, 2.4999999988652566]}, "NODE_100": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999002, 0.9999999999412739], "MOMENTUM_X": [0.0, 5.049595161674224e-42, 2.044130148611653e-31, 4.442212679389307e-24, 2.787036855018188e-17, 1.1719649405538867e-13, 6.923725160824238e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999996514, 2.4999999997944595]}, "NODE_101": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999731, 0.9999999999694886, 0.99999999196254], "MOMENTUM_X": [0.0, 3.6084992379263025e-36, 3.382298622274292e-26, 4.5682516005012e-19, 3.181568415074751e-14, 3.613734969317087e-11, 9.514371967108815e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999063, 2.4999999998932108, 2.4999999718688906]}, "NODE_102": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999997071], "MOMENTUM_X": [0.0, 7.817004911028556e-49, 1.040195688398598e-36, 5.643324641751137e-29, 6.226405111172783e-22, 2.3031075356540374e-16, 3.0960254667570467e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.4999999999989746]}, "NODE_103": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999879, 0.9999999999905593], "MOMENTUM_X": [0.0, 3.013993729002391e-44, 3.952329128642203e-33, 8.705067188068229e-26, 6.48764855038684e-19, 1.4234465308619085e-14, 1.1175888737529568e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999958, 2.4999999999669575]}, "NODE_104": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999997, 0.9999999999953785, 0.9999999983980876], "MOMENTUM_X": [0.0, 5.590863197433064e-38, 4.766633284037177e-28, 1.8060434011957934e-20, 3.527825631204438e-15, 5.4758580943394384e-12, 1.8988894276228256e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999893, 2.499999999983824, 2.499999994393306]}, "NODE_105": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999996486, 0.9999999997123288, 0.9999999445232842], "MOMENTUM_X": [0.0, 3.952474560491898e-34, 2.686768029108841e-24, 5.265775941948919e-17, 4.430368479212975e-13, 3.633579849390886e-10, 7.00878648772505e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999987703, 2.4999999989931507, 2.499999805831502]}, "NODE_106": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999997533, 0.99999999978721, 0.999999956812594], "MOMENTUM_X": [0.0, 2.613337088120822e-34, 1.0826913657207288e-24, 2.962788010465573e-17, 2.8465317983335523e-13, 2.46041945081295e-10, 5.007434482925008e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999991367, 2.499999999255235, 2.499999848844083]}, "NODE_107": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999771, 0.9999999999734678, 0.9999999928554202], "MOMENTUM_X": [0.0, 3.1256032358859745e-36, 2.711976811865737e-26, 4.266167067281811e-19, 2.711642063723593e-14, 3.1458709376379255e-11, 8.470577411864881e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.49999999999992, 2.4999999999071374, 2.49999997499397]}, "NODE_108": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999986, 0.9999999999985958], "MOMENTUM_X": [0.0, 9.275836827847856e-47, 3.7117230824034545e-35, 1.3856037197013681e-27, 1.7812628925951624e-20, 1.4575156055590074e-15, 1.4858800077060032e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999995, 2.4999999999950857]}, "NODE_109": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999997988, 0.9999999998247422, 0.999999963756688], "MOMENTUM_X": [0.0, 2.713846296623148e-34, 1.0384169474904125e-24, 2.5796927333086055e-17, 2.358094118071804e-13, 2.0545914278014114e-10, 4.249074841307116e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999992966, 2.499999999386598, 2.4999998731484108]}, "NODE_110": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999994761, 0.9999999997515033], "MOMENTUM_X": [0.0, 3.4124790642964265e-40, 5.662589872235816e-30, 1.0146752217655948e-22, 2.6918426511008873e-16, 6.169972973733031e-13, 2.9313646721330707e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.499999999998166, 2.499999999130261]}, "NODE_111": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999333, 0.9999999999581369], "MOMENTUM_X": [0.0, 2.2897881921515776e-42, 1.2159073124018928e-31, 2.3485357418541587e-24, 1.6956923189549433e-17, 7.880833268450827e-14, 4.958258778740673e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999997664, 2.4999999998534794]}, "NODE_112": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999977, 0.9999999999963831, 0.999999998692102], "MOMENTUM_X": [0.0, 4.945318848897348e-38, 2.324495982110465e-28, 1.242809147568603e-20, 2.644391103443704e-15, 4.277802916603811e-12, 1.5484730483699985e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999992, 2.4999999999873403, 2.4999999954223564]}, "NODE_113": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998233, 0.9999999998454617, 0.9999999677719023], "MOMENTUM_X": [0.0, 2.1710248084512937e-34, 1.0758844033634957e-24, 1.9499493655877454e-17, 2.0888324515040064e-13, 1.8241795028277562e-10, 3.801419421830364e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999993814, 2.4999999994591158, 2.499999887201659]}, "NODE_114": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999922, 0.9999999999934864], "MOMENTUM_X": [0.0, 9.571000070053229e-45, 1.3106337151564283e-33, 3.4624947208373476e-26, 3.3508243361953726e-19, 8.185052059407615e-15, 6.90158767972842e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999973, 2.499999999977203]}, "NODE_115": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999815, 0.9999999999778605, 0.9999999938435336], "MOMENTUM_X": [0.0, 2.8067385518292444e-36, 1.6124593283624075e-26, 3.8821409741288113e-19, 2.187995003194068e-14, 2.6238701858804643e-11, 7.299804262515023e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999935, 2.499999999922512, 2.4999999784523683]}, "NODE_116": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998436, 0.9999999998617819, 0.9999999708134377], "MOMENTUM_X": [0.0, 2.4044756209344397e-34, 1.0049638343884218e-24, 1.5276522076349744e-17, 1.855153462738673e-13, 1.6370765164319141e-10, 3.454956038902054e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999994524, 2.4999999995162367, 2.4999998978470335]}, "NODE_117": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999997, 0.9999999999980805, 0.9999999987806594, 0.9999998121253418], "MOMENTUM_X": [0.0, 1.9660175669163213e-32, 8.794031722789191e-23, 4.898978315721732e-16, 2.4204129787801446e-12, 1.5400839144748802e-09, 2.372899659517904e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999987, 2.4999999999932814, 2.4999999957323076, 2.499999342438772]}, "NODE_118": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999984, 0.9999999999973385, 0.999999998985999], "MOMENTUM_X": [0.0, 2.396502264493042e-38, 1.527245419428275e-28, 2.5638449758485935e-21, 1.8010163490079357e-15, 3.1354533803712317e-12, 1.1968226813800993e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999947, 2.499999999990685, 2.499999996450997]}, "NODE_119": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999986399, 0.99999999908903, 0.9999998521590284], "MOMENTUM_X": [0.0, 1.4440988081215336e-32, 2.882745377751403e-23, 3.031238279407748e-16, 1.5695387867244058e-12, 1.0536824531696353e-09, 1.7150161040282223e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.4999999999952394, 2.499999996811605, 2.4999994825566407]}, "NODE_120": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999996448, 0.9999999998207454], "MOMENTUM_X": [0.0, 1.6048752033532934e-40, 3.625218669798472e-30, 5.405813877922447e-23, 1.5888442255458343e-16, 4.200277665242579e-13, 2.124199675963988e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999998757, 2.499999999372609]}, "NODE_121": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998657, 0.9999999998788017, 0.9999999738467571], "MOMENTUM_X": [0.0, 1.9662408851258796e-34, 8.574960739237848e-25, 1.4251341770458923e-17, 1.5939510970360125e-13, 1.437245771033227e-10, 3.101080528823318e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999995297, 2.499999999575805, 2.499999908463651]}, "NODE_122": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999988864, 0.9999999992453321, 0.9999998750871086], "MOMENTUM_X": [0.0, 1.4453292347699045e-32, 2.3975205257204522e-23, 2.5704123184714927e-16, 1.306224588476201e-12, 8.846964718808376e-10, 1.4645706588757946e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.4999999999961027, 2.4999999973586626, 2.4999995628049105]}, "NODE_123": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999986, 0.9999999999824858, 0.99999999491909], "MOMENTUM_X": [0.0, 2.5786575001225132e-36, 6.699898963641578e-27, 2.74254065866128e-19, 1.650938395385148e-14, 2.072228395075033e-11, 6.017998071026078e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999951, 2.4999999999387, 2.499999982216815]}, "NODE_124": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999566, 0.9999999999707869], "MOMENTUM_X": [0.0, 8.583067802233301e-43, 4.415783529453685e-32, 9.181829040184701e-25, 1.0127542009542068e-17, 4.577740460086269e-14, 3.0995321404260436e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999848, 2.4999999998977542]}, "NODE_125": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999990158, 0.9999999993310676, 0.9999998883114133], "MOMENTUM_X": [0.0, 1.2660212444485596e-32, 2.840031056236406e-23, 1.9588595109102624e-16, 1.1628841089900529e-12, 7.895454724016358e-10, 1.3173460198294207e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999965548, 2.499999997658736, 2.499999609089969]}, "NODE_126": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998904, 0.9999999998978713, 0.9999999772466087], "MOMENTUM_X": [0.0, 1.332847357884204e-34, 5.900905334391896e-25, 1.3090694467495168e-17, 1.2990981501021928e-13, 1.2107477682001128e-10, 2.6986175928509937e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999996163, 2.499999999642549, 2.4999999203631313]}, "NODE_127": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999991227, 0.999999999397774, 0.9999998982085911], "MOMENTUM_X": [0.0, 1.3243471588681e-32, 2.6822035335429406e-23, 1.7380032031492735e-16, 1.0397355204827532e-12, 7.132867730140114e-10, 1.2049488291291974e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999996929, 2.4999999978922087, 2.4999996437300886]}, "NODE_128": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999991, 0.9999999999981748, 0.9999999992595877], "MOMENTUM_X": [0.0, 1.0889944000167733e-38, 1.0768269824424058e-28, 1.364630712961561e-21, 1.1415269056326108e-15, 2.1598778934635868e-12, 8.778663802712018e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.4999999999936113, 2.499999997408557]}, "NODE_129": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999901, 0.9999999999869635, 0.9999999960144464], "MOMENTUM_X": [0.0, 1.3348372372974924e-36, 4.0055017216205496e-27, 6.222712683724109e-20, 1.153532605011898e-14, 1.536683849664673e-11, 4.706808944219256e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999654, 2.4999999999543716, 2.4999999860505615]}, "NODE_130": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.999999999999766, 0.9999999998734411], "MOMENTUM_X": [0.0, 6.230070027134307e-41, 1.3966822471840327e-30, 2.333856784390114e-23, 9.085905866326941e-17, 2.4694586941479276e-13, 1.3447131691304153e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999991807, 2.4999999995570437]}, "NODE_131": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999992405, 0.9999999994675196, 0.9999999080590637], "MOMENTUM_X": [0.0, 1.081274868589411e-32, 2.368015871436301e-23, 1.5350903772693483e-16, 9.010772912055266e-13, 6.315336344039135e-10, 1.0903004452422515e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999973412, 2.4999999981363183, 2.4999996782067395]}, "NODE_132": {"DENSITY": [1.0, 1.0, 1.0, 0.999999999999997, 0.9999999999899172, 0.9999999950360173, 0.999999390041433], "MOMENTUM_X": [0.0, 9.63383240085863e-31, 2.560640716821088e-21, 3.785605890095262e-15, 1.2715183578865704e-11, 6.269246676087956e-09, 7.701832998101115e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.49999999999999, 2.4999999999647105, 2.4999999826260604, 2.499997865145795]}, "NODE_133": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999162, 0.9999999999183179, 0.999999981015485], "MOMENTUM_X": [0.0, 1.22201197864824e-34, 2.684144158655597e-25, 8.943473817844434e-18, 9.922275719818769e-14, 9.668625323131743e-11, 2.249524555655792e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999997065, 2.499999999714112, 2.4999999335541974]}, "NODE_134": {"DENSITY": [1.0, 1.0, 1.0, 0.999999999999998, 0.9999999999927885, 0.999999996253147, 0.9999995146306178], "MOMENTUM_X": [0.0, 6.864272068983e-31, 8.04918766799065e-22, 2.3366265819443044e-15, 8.323039339878683e-12, 4.335442111522263e-09, 5.633818811351076e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999993, 2.4999999999747597, 2.499999986886014, 2.499998301207598]}, "NODE_135": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999983, 0.9999999999940669, 0.9999999968776511, 0.9999995870430046], "MOMENTUM_X": [0.0, 6.784291451328977e-31, 6.144084350789453e-22, 1.965853455110166e-15, 6.9583589587274345e-12, 3.6602604125455626e-09, 4.842531019567273e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999942, 2.499999999979234, 2.499999989071779, 2.499998554650837]}, "NODE_136": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999984, 0.9999999999947301, 0.9999999972181128, 0.9999996287317556], "MOMENTUM_X": [0.0, 6.1794609379881185e-31, 7.926636384748147e-22, 1.7208950361637642e-15, 6.2253539909803586e-12, 3.2831643320574378e-09, 4.379017405373193e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999995, 2.499999999981556, 2.499999990263395, 2.499998700561406]}, "NODE_137": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999993743, 0.9999999995468423, 0.9999999192376281], "MOMENTUM_X": [0.0, 6.420640282220929e-33, 1.7901961158328088e-23, 1.3168214622986986e-16, 7.418595600378373e-13, 5.373774443459282e-10, 9.581197482693664e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999978093, 2.4999999984139474, 2.49999971733171]}, "NODE_138": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999994, 0.9999999999987829, 0.9999999994709272], "MOMENTUM_X": [0.0, 3.8223262077067757e-39, 4.266815454957028e-29, 5.746722197261695e-22, 6.276245764212095e-16, 1.2856590318582207e-12, 5.629989954349216e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999998, 2.4999999999957394, 2.499999998148245]}, "NODE_139": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999936, 0.9999999999909496, 0.9999999970531687], "MOMENTUM_X": [0.0, 5.9567650565758926e-37, 2.9346153876790567e-27, 3.9157127876293455e-20, 7.498800194909961e-15, 1.0715032770054591e-11, 3.4957660749492415e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999978, 2.499999999968324, 2.4999999896860907]}, "NODE_140": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999404, 0.9999999999384791, 0.9999999849290137], "MOMENTUM_X": [0.0, 6.726316810639487e-35, 1.1066272259118755e-25, 1.220240100105719e-18, 7.029229281735796e-14, 7.255904014065067e-11, 1.7808630336222577e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999997913, 2.499999999784676, 2.4999999472515473]}, "NODE_141": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999988, 0.9999999999952714, 0.9999999974793166, 0.9999996595195075], "MOMENTUM_X": [0.0, 6.312702200363128e-31, 7.255324462157033e-22, 1.5280282172721533e-15, 5.603840139419719e-12, 2.985490539562114e-09, 4.030505452564627e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999956, 2.49999999998345, 2.4999999911776087, 2.4999988083184976]}, "NODE_142": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999995159, 0.9999999996335065, 0.9999999318648679], "MOMENTUM_X": [0.0, 5.298337959438068e-33, 9.177407363433467e-24, 9.241066112411948e-17, 5.728768921392015e-13, 4.3400232576795957e-10, 8.076922549705963e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.499999999998305, 2.4999999987172714, 2.499999761527045]}, "NODE_143": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999989, 0.9999999999958706, 0.9999999977527144, 0.9999996900394257], "MOMENTUM_X": [0.0, 5.236402596517835e-31, 6.230608851155051e-22, 1.3294489985067474e-15, 4.898444848796782e-12, 2.6656494166029997e-09, 3.6762348092160803e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999996, 2.4999999999855476, 2.499999992134501, 2.4999989151381734]}, "NODE_144": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999792, 0.9999999999491355, 0.9999999806166535, 0.9999981047163106], "MOMENTUM_X": [0.0, 4.141284285473041e-29, 6.194189786455474e-20, 2.6165650007062966e-14, 6.41548477297213e-11, 2.4477303355201148e-08, 2.392505888910789e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999927, 2.4999999998219744, 2.499999932158288, 2.499993366514485]}, "NODE_145": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999859, 0.999999999963268, 0.9999999852133614, 0.9999984742552172], "MOMENTUM_X": [0.0, 3.389535478263495e-29, 3.0871672026851705e-20, 1.6378946898050673e-14, 4.2404634497503705e-11, 1.7116426889342798e-08, 1.7722574991741092e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999503, 2.499999999871438, 2.499999948246766, 2.499994659897491]}, "NODE_146": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999961, 0.9999999999938919, 0.9999999978680914], "MOMENTUM_X": [0.0, 2.1729699309238965e-37, 1.2282578673987688e-27, 1.558165403327203e-20, 4.1416698989486655e-15, 6.459680462544448e-12, 2.272248164038422e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999986, 2.4999999999786207, 2.4999999925383185]}, "NODE_147": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999883, 0.9999999999696303, 0.9999999876036135, 0.9999986925252855], "MOMENTUM_X": [0.0, 2.9586023343158266e-29, 1.8810333198506222e-20, 1.3740559305769054e-14, 3.561359676537104e-11, 1.453187487188581e-08, 1.5335909913239194e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999959, 2.4999999998937064, 2.4999999566126485, 2.4999954238416553]}, "NODE_148": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999608, 0.9999999999567553, 0.9999999887126441], "MOMENTUM_X": [0.0, 3.078925067147943e-35, 7.940733674139037e-26, 6.513802561205483e-19, 4.627520920756501e-14, 5.1228655066229915e-11, 1.3397218848170426e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999863, 2.4999999998486437, 2.499999960494254]}, "NODE_149": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999991, 0.9999999999965636, 0.9999999980683401, 0.9999997250893792], "MOMENTUM_X": [0.0, 3.0248555131287254e-31, 5.048098476186707e-22, 1.0726903834003595e-15, 4.0744880282819994e-12, 2.2912925864488007e-09, 3.26233090179955e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999997, 2.4999999999879727, 2.4999999932391903, 2.4999990378129713]}, "NODE_150": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999895, 0.9999999999728976, 0.9999999888993223, 0.9999988180671237], "MOMENTUM_X": [0.0, 2.7655616426156194e-29, 2.4727396237162975e-20, 1.2363783898319257e-14, 3.201325164812263e-11, 1.3099570472194838e-08, 1.3941628439977022e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999636, 2.499999999905142, 2.499999961147629, 2.499995863237535]}, "NODE_151": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999996512, 0.9999999997206156, 0.9999999452450905], "MOMENTUM_X": [0.0, 3.067328549905425e-33, 3.0884650688374243e-24, 3.374232030395959e-17, 4.110355506849446e-13, 3.297033621527363e-10, 6.473963418698033e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999987788, 2.4999999990221546, 2.4999998083578228]}, "NODE_152": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999907, 0.999999999975522, 0.9999999898777767, 0.9999989094545517], "MOMENTUM_X": [0.0, 2.783622400805239e-29, 2.1962359647808206e-20, 1.1096147314960759e-14, 2.9009021967633514e-11, 1.1988335842389798e-08, 1.2910670289538674e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999967, 2.499999999914327, 2.499999964572219, 2.4999961830931543]}, "NODE_153": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999993, 0.9999999999973107, 0.9999999984199679, 0.9999997654562566], "MOMENTUM_X": [0.0, 2.3212080909989476e-31, 2.815757081343173e-22, 8.062653583828251e-16, 3.1826977278398274e-12, 1.8718851425668292e-09, 2.7815991597836785e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999998, 2.499999999990588, 2.499999994469888, 2.499999179097003]}, "NODE_154": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999752, 0.9999999999704499, 0.9999999917293722], "MOMENTUM_X": [0.0, 1.1238896399960931e-35, 3.3664448043226453e-26, 3.5429931446654204e-19, 2.5990000200368772e-14, 3.1293036088759075e-11, 8.830072866242285e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999134, 2.4999999998965747, 2.499999971052803]}, "NODE_155": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999919, 0.9999999999784418, 0.9999999909011485, 0.9999989994806668], "MOMENTUM_X": [0.0, 2.398809919083936e-29, 1.8417823989824353e-20, 9.61308480977799e-15, 2.5577707208495803e-11, 1.0793846086224557e-08, 1.1868827715434605e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999716, 2.499999999924546, 2.4999999681540195, 2.4999964981842067]}, "NODE_156": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999998634, 0.9999999997538539, 0.999999927508683, 0.9999943738656362], "MOMENTUM_X": [0.0, 1.5209384513460797e-27, 1.0308725490969027e-18, 1.7150286006310015e-13, 3.1049901721577736e-10, 9.152849596042514e-08, 7.099332543111145e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999995226, 2.499999999138489, 2.4999997462804027, 2.4999803085937327]}, "NODE_157": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999997682, 0.9999999998010815, 0.999999958445451], "MOMENTUM_X": [0.0, 1.5685576578946635e-33, 2.2392121023531163e-24, 1.520870135250583e-17, 2.7413423393253267e-13, 2.357793555177791e-10, 4.934934766592244e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999991886, 2.499999999303785, 2.4999998545590816]}, "NODE_158": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999061, 0.9999999998204716, 0.9999999440894345, 0.9999954159157715], "MOMENTUM_X": [0.0, 1.2061708397086603e-27, 4.3292201177963674e-19, 1.0826070201975159e-13, 2.0731299062504488e-10, 6.474940057727114e-08, 5.328908872463669e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999671, 2.4999999993716497, 2.4999998043130263, 2.4999839557427537]}, "NODE_159": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999223, 0.9999999998508301, 0.9999999528380477, 0.9999960423258031], "MOMENTUM_X": [0.0, 9.975409145495012e-28, 2.096771276795338e-19, 9.123059033233543e-14, 1.7491175538318804e-10, 5.52869586355298e-08, 4.6435074174492415e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999997278, 2.499999999477905, 2.4999998349331713, 2.4999861481687233]}, "NODE_160": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999933, 0.9999999999818753, 0.999999992100301, 0.9999991040355626], "MOMENTUM_X": [0.0, 1.5464219755572732e-29, 1.6064621997722318e-20, 7.864019503637847e-15, 2.1496289568395323e-11, 9.372938207914658e-09, 1.0636045587127072e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999977, 2.4999999999365636, 2.4999999723510533, 2.499996864125968]}, "NODE_161": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999996, 0.9999999999980387, 0.99999999878055, 0.9999998091450271], "MOMENTUM_X": [0.0, 1.3211660982844e-31, 7.995985252745574e-23, 5.161915994764872e-16, 2.31161677689136e-12, 1.4399382929406659e-09, 2.2580058858329864e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999987, 2.4999999999931353, 2.499999995731925, 2.4999993320076643]}, "NODE_162": {"DENSITY": [1.0, 1.0, 1.0, 0.99999999999993, 0.9999999998662603, 0.9999999575566444, 0.9999964026767263], "MOMENTUM_X": [0.0, 9.145441937074278e-28, 3.955697487332201e-19, 8.270230608434333e-14, 1.5795362069210577e-10, 5.008079203328311e-08, 4.243718679143052e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999997553, 2.4999999995319118, 2.4999998514482593, 2.4999874093922254]}, "NODE_163": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999368, 0.9999999998784349, 0.9999999610575963, 0.9999966610021668], "MOMENTUM_X": [0.0, 9.222279302906382e-28, 5.049942423915856e-19, 7.494534604928099e-14, 1.4406412166344824e-10, 4.611970141174833e-08, 3.9533895065254975e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999779, 2.499999999574522, 2.49999986370159, 2.499988313528072]}, "NODE_164": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998518, 0.9999999998623345, 0.9999999691489861], "MOMENTUM_X": [0.0, 5.673197162122931e-34, 9.327101417521138e-25, 7.666899568104827e-18, 1.5600105188028262e-13, 1.4599796440109316e-10, 3.2997678679626784e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999994813, 2.4999999995181703, 2.499999892021453]}, "NODE_165": {"DENSITY": [1.0, 1.0, 1.0, 0.999999999999995, 0.9999999999856526, 0.9999999934635393, 0.9999992268739917], "MOMENTUM_X": [0.0, 1.2189942580553713e-29, 9.996150858985499e-21, 5.945970213349948e-15, 1.6988089772752577e-11, 7.747174032763435e-09, 9.173746273270321e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999822, 2.4999999999497837, 2.499999977122387, 2.4999972940600843]}, "NODE_166": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 0.9999999999986804, 0.9999999991202406, 0.9999998531698231], "MOMENTUM_X": [0.0, 6.920275138105994e-32, 5.311012646274059e-23, 2.853506491737934e-16, 1.561836591884535e-12, 1.0433941240531918e-09, 1.7447398732640058e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.499999999995381, 2.499999996920842, 2.499999486094421]}, "NODE_167": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999448, 0.9999999998920241, 0.9999999647086214, 0.9999969132471962], "MOMENTUM_X": [0.0, 8.663184039743732e-28, 4.260420594927381e-19, 6.540074666011101e-14, 1.281230648577511e-10, 4.186949114190159e-08, 3.662531232965437e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999998073, 2.499999999622085, 2.499999876480178, 2.499989196382715]}, "NODE_168": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999991438, 0.999999998858914, 0.9999997407606495, 0.9999840726700556], "MOMENTUM_X": [0.0, 6.264904447119907e-26, 2.6983194949820096e-17, 1.0768670742207365e-12, 1.4395468424544244e-09, 3.272671363446758e-07, 2.0085125509647277e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999997004, 2.4999999960062, 2.4999990926624216, 2.4999442548484723]}, "NODE_169": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999994049, 0.9999999991591508, 0.9999997977633139, 0.9999868595431818], "MOMENTUM_X": [0.0, 4.480554480664335e-26, 1.2619171189138081e-17, 6.858801624618589e-13, 9.712915506948124e-10, 2.343332859524327e-07, 1.528646790986257e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999997917, 2.4999999970570284, 2.499999292171678, 2.4999540087044485]}, "NODE_170": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999966, 0.9999999999894045, 0.9999999948910571, 0.9999993627949118], "MOMENTUM_X": [0.0, 7.321933908172654e-30, 2.3067730600297925e-21, 4.075209218443618e-15, 1.2495073875783254e-11, 6.036350008301754e-09, 7.544131618705905e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999988, 2.4999999999629154, 2.4999999821186996, 2.499997769782945]}, "NODE_171": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999995058, 0.9999999992978169, 0.9999998283242508, 0.9999885670307176], "MOMENTUM_X": [0.0, 3.677665746697463e-26, 8.745626884100312e-18, 5.799967063387114e-13, 8.23285335386679e-10, 2.012628127285212e-07, 1.3417238475087443e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999982703, 2.4999999975423597, 2.4999993991349356, 2.4999599848404195]}, "NODE_172": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999546, 0.9999999999082836, 0.999999969049993, 0.9999972092174416], "MOMENTUM_X": [0.0, 6.891940362289508e-28, 3.79583030909254e-19, 5.3820331726805965e-14, 1.0880879006945176e-10, 3.673144093460985e-08, 3.3142526965841183e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999841, 2.4999999996789923, 2.4999998916749773, 2.4999902322753598]}, "NODE_173": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999995532, 0.9999999993676039, 0.9999998447389156, 0.9999895506982132], "MOMENTUM_X": [0.0, 3.406430096418785e-26, 1.0460740405622682e-17, 5.280372995047021e-13, 7.467915050020003e-10, 1.8318369653738707e-07, 1.2327166136216723e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999998437, 2.499999997786614, 2.499999456586253, 2.499963427640013]}, "NODE_174": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999991449, 0.9999999993831108, 0.9999998895017512], "MOMENTUM_X": [0.0, 2.6262190778924745e-32, 2.4429424152828688e-23, 1.2880164660986663e-16, 9.011398673044173e-13, 6.552417865866273e-10, 1.1841788693411984e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.4999999999970077, 2.4999999978408884, 2.4999996132561497]}, "NODE_175": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999995938, 0.9999999994215604, 0.9999998566839785, 0.9999902446770582], "MOMENTUM_X": [0.0, 3.281681861369771e-26, 1.1691676531073369e-17, 4.816927247779602e-13, 6.854679748828893e-10, 1.6972365238671414e-07, 1.1550504063316771e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999985785, 2.4999999979754612, 2.499999498393966, 2.4999658565415]}, "NODE_176": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999654, 0.9999999999265424, 0.9999999740900966, 0.9999975641110418], "MOMENTUM_X": [0.0, 5.409887037145959e-28, 2.5281375926732895e-19, 4.1135767483408725e-14, 8.701530464944918e-11, 3.072233835278248e-08, 2.8920541913694336e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999998783, 2.499999999742898, 2.499999909315339, 2.499991474399526]}, "NODE_177": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999979, 0.9999999999927763, 0.99999999626381, 0.9999995028439099], "MOMENTUM_X": [0.0, 2.9280204415265816e-30, 1.4319680367054931e-21, 2.5443682011435425e-15, 8.554218715651086e-12, 4.4337528872182935e-09, 5.911383353646292e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999925, 2.499999999974717, 2.499999986923335, 2.499998259954144]}, "NODE_178": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999996427, 0.9999999994818748, 0.999999869073112, 0.9999909145014351], "MOMENTUM_X": [0.0, 3.0989677695300626e-26, 1.0353641375044503e-17, 4.242044878743723e-13, 6.14866825062242e-10, 1.5534554844315397e-07, 1.0781557817939142e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999987494, 2.4999999981865613, 2.4999995417559253, 2.499968200904229]}, "NODE_179": {"DENSITY": [1.0, 1.0, 0.9999999999999997, 0.9999999999948568, 0.9999999949400208, 0.9999991151266071, 0.9999570769333493], "MOMENTUM_X": [0.0, 4.029240550163303e-24, 4.793813197674963e-16, 6.472347636661015e-12, 6.383832526506933e-09, 1.1169306620283268e-06, 5.40821604419512e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999987, 2.4999999999819984, 2.499999982290072, 2.4999969029448, 2.499849772849985]}, "NODE_180": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999756, 0.9999999999450566, 0.999999979484801, 0.9999979659794004], "MOMENTUM_X": [0.0, 3.3185878739207565e-28, 5.556949337359808e-20, 2.877632410819119e-14, 6.483268912839448e-11, 2.4254299284057594e-08, 2.410089165090073e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999143, 2.4999999998076983, 2.499999928196805, 2.499992880935461]}, "NODE_181": {"DENSITY": [1.0, 1.0, 0.9999999999999998, 0.9999999999963901, 0.999999996231464, 0.9999993014379259, 0.9999641260830793], "MOMENTUM_X": [0.0, 1.7342398391025325e-24, 2.795250952187209e-16, 4.161068341524651e-12, 4.354713460657501e-09, 8.099692062818036e-07, 4.175985343541314e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999999, 2.4999999999873657, 2.4999999868101237, 2.499997555033662, 2.4998744435113265]}, "NODE_182": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999997027, 0.9999999995553129, 0.9999998840165832, 0.9999917075045452], "MOMENTUM_X": [0.0, 2.916083315521851e-26, 8.923874828779327e-18, 3.527652112837347e-13, 5.277025231918339e-10, 1.376853967107909e-07, 9.850881765996196e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999998959, 2.4999999984435957, 2.4999995940580684, 2.499970976390133]}, "NODE_183": {"DENSITY": [1.0, 1.0, 0.9999999999999998, 0.9999999999969906, 0.9999999968367491, 0.9999994030922255, 0.9999685353110177], "MOMENTUM_X": [0.0, 1.1240231637541167e-24, 2.1945300942987582e-16, 3.5308952159115706e-12, 3.7085070446407323e-09, 6.9988393168475e-07, 3.693060308252939e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999999, 2.4999999999894675, 2.499999988928623, 2.4999979108234753, 2.4998898753201533]}, "NODE_184": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999988, 0.9999999999952578, 0.9999999973445026, 0.9999996205759629], "MOMENTUM_X": [0.0, 1.1518489095489637e-30, 7.10846225143077e-22, 1.3066657340120805e-15, 5.004528369574585e-12, 2.825266798480991e-09, 4.074879070548072e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999956, 2.499999999983402, 2.499999990705759, 2.4999986720161003]}, "NODE_185": {"DENSITY": [1.0, 1.0, 0.9999999999999998, 0.99999999999727, 0.9999999971385778, 0.9999994575279197, 0.9999710827763811], "MOMENTUM_X": [0.0, 1.4203395554574702e-24, 2.1481389397103702e-16, 3.22719332857917e-12, 3.378528872332454e-09, 6.400187276440206e-07, 3.411081210624645e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.4999999999904445, 2.499999989985022, 2.4999981013482895, 2.499898791192508]}, "NODE_186": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999997696, 0.9999999996395754, 0.9999999017470034, 0.9999926783538945], "MOMENTUM_X": [0.0, 2.1341916248963187e-26, 5.969608890600592e-18, 2.72728845750503e-13, 4.271355340626192e-10, 1.1655424279624789e-07, 8.697210151319484e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999991935, 2.4999999987385135, 2.49999965611453, 2.4999743743352925]}, "NODE_187": {"DENSITY": [1.0, 1.0, 0.9999999999999998, 0.9999999999975011, 0.9999999973666802, 0.9999994963187718, 0.9999728508334444], "MOMENTUM_X": [0.0, 1.3715545150917689e-24, 1.9705649935243067e-16, 2.96275452266145e-12, 3.120374688263538e-09, 5.964973650877146e-07, 3.214123658753002e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.4999999999912546, 2.499999990783382, 2.4999982371161966, 2.4999049792230976]}, "NODE_188": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999843, 0.9999999999620308, 0.999999984785664, 0.9999983898404428], "MOMENTUM_X": [0.0, 1.1659903632042047e-28, 2.964406362343271e-20, 1.8445970906083773e-14, 4.499091290071735e-11, 1.8065854057395294e-08, 1.9159638627736896e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999454, 2.499999999867108, 2.4999999467498246, 2.4999943644462905]}, "NODE_189": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 0.9999999999977826, 0.9999999976214685, 0.9999995362125733, 0.9999745325167874], "MOMENTUM_X": [0.0, 1.3204797626683332e-24, 1.7213493141459336e-16, 2.631884790810919e-12, 2.8228796136664758e-09, 5.503618310745448e-07, 3.0220797918785534e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.4999999999922395, 2.49999999167514, 2.4999983767444256, 2.499910864959811]}, "NODE_190": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999998356, 0.999999999726875, 0.9999999211662396, 0.9999938044970151], "MOMENTUM_X": [0.0, 1.3456879255720325e-26, 1.632703569147416e-18, 1.935590673416455e-13, 3.2248452183466735e-10, 9.32623236086439e-08, 7.346643272210215e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999994253, 2.499999999044063, 2.4999997240818503, 2.4999783158085562]}, "NODE_191": {"DENSITY": [1.0, 1.0, 0.9999999999999967, 0.9999999999704493, 0.9999999785719205, 0.9999971229963042, 0.9998901054250212], "MOMENTUM_X": [0.0, 1.8042131288466283e-22, 4.192722516619705e-15, 3.7198084411781453e-11, 2.703494792651409e-08, 3.6309078089383742e-06, 0.00013831992619549885], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999885, 2.499999999896573, 2.499999925001723, 2.4999899305044404, 2.499615391999867]}, "NODE_192": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 0.9999999999981355, 0.9999999979372126, 0.9999995849921207, 0.9999765380288215], "MOMENTUM_X": [0.0, 1.3063492664168793e-24, 1.448808344650861e-16, 2.2124303723686507e-12, 2.448510227836881e-09, 4.928127738931142e-07, 2.7874978632031763e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.499999999993474, 2.499999992780244, 2.499998547472757, 2.499917884077542]}, "NODE_193": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999907, 0.9999999999747342, 0.9999999890342699, 0.9999987531338757], "MOMENTUM_X": [0.0, 5.128702246121561e-29, 1.8575916575716927e-20, 9.879865146613311e-15, 2.6699709295163904e-11, 1.1687478702266519e-08, 1.3422855854498147e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999967, 2.4999999999115694, 2.4999999616199444, 2.4999956359710156]}, "NODE_194": {"DENSITY": [1.0, 1.0, 0.9999999999999978, 0.9999999999790568, 0.9999999838632344, 0.9999977003007406, 0.9999069100608418], "MOMENTUM_X": [0.0, 5.948678913631452e-23, 2.543681146368788e-15, 2.414641887913301e-11, 1.865427779036667e-08, 2.668607045241304e-06, 0.00010843384535336924], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999992, 2.4999999999266986, 2.499999943521321, 2.499991951062389, 2.499674199893945]}, "NODE_195": {"DENSITY": [1.0, 1.0, 0.9999999999999981, 0.9999999999824742, 0.999999986383499, 0.999998021409427, 0.9999176618800834], "MOMENTUM_X": [0.0, 3.445883865748478e-23, 2.1870511681403674e-15, 2.056052305700202e-11, 1.5962538531536594e-08, 2.3205261693683166e-06, 9.66516495756581e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999994, 2.49999999993866, 2.4999999523422467, 2.4999930749403707, 2.4997118282138238]}, "NODE_196": {"DENSITY": [1.0, 1.0, 0.9999999999999982, 0.9999999999840382, 0.9999999876298563, 0.9999981930965254, 0.9999239026383059], "MOMENTUM_X": [0.0, 5.415524349988189e-23, 2.0420846469387694e-15, 1.8864374998112473e-11, 1.4603339077872352e-08, 2.131954968208187e-06, 8.975108570059281e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999942, 2.499999999944134, 2.499999956704498, 2.4999936758440486, 2.4997336692544017]}, "NODE_197": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999998936, 0.9999999998086034, 0.9999999406853455, 0.9999950216747171], "MOMENTUM_X": [0.0, 4.406729058367731e-27, 6.25612322267096e-19, 1.2594531331993862e-13, 2.2693678558298471e-10, 7.047569050936664e-08, 5.928211470104126e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999996274, 2.4999999993301123, 2.499999792398716, 2.4999825759061003]}, "NODE_198": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 0.9999999999985378, 0.9999999983077141, 0.9999996441900527, 0.9999790456440205], "MOMENTUM_X": [0.0, 9.721687756538938e-25, 1.0473490864961903e-16, 1.7318323548486836e-12, 2.0063968293106245e-09, 4.2229448716352233e-07, 2.4899871742264502e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.499999999994883, 2.499999994077, 2.4999987546654303, 2.499926660532019]}, "NODE_199": {"DENSITY": [1.0, 1.0, 0.9999999999999984, 0.9999999999853021, 0.9999999885482128, 0.9999983127409807, 0.9999281636523548], "MOMENTUM_X": [0.0, 4.589252911032768e-23, 1.8964513788488717e-15, 1.742598373371554e-11, 1.3568847326750028e-08, 1.99834366662426e-06, 8.50278770261465e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999947, 2.499999999948558, 2.499999959918746, 2.499994094598868, 2.4997485817529883]}, "NODE_200": {"DENSITY": [1.0, 1.0, 0.9999999999999987, 0.9999999999868467, 0.9999999895704667, 0.999998434330116, 0.9999321444005441], "MOMENTUM_X": [0.0, 3.806440422535586e-23, 1.6781411212142949e-15, 1.561420250013999e-11, 1.2378772436044494e-08, 1.8583109283635663e-06, 8.050978582467077e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999995, 2.4999999999539626, 2.4999999634966326, 2.4999945201600875, 2.499762513419519]}, "NODE_201": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999989435, 0.9999999987003356, 0.9999997106120756, 0.9999820282914531], "MOMENTUM_X": [0.0, 5.683648860927993e-25, 4.595941228489295e-17, 1.2458634176404798e-12, 1.5355142091076844e-09, 3.425950894088875e-07, 2.132407570317935e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999963025, 2.499999995451175, 2.4999989871424266, 2.499937099590903]}, "NODE_202": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999344, 0.9999999998708479, 0.9999999566266817, 0.9999960862610963], "MOMENTUM_X": [0.0, 1.8813931193198e-27, 2.5211817398482506e-19, 6.87643125460694e-14, 1.3668091203816502e-10, 4.631635482131396e-08, 4.224276095628916e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999771, 2.499999999547968, 2.4999998481933887, 2.499986301937645]}, "NODE_203": {"DENSITY": [1.0, 1.0, 0.9999999999999989, 0.9999999999888215, 0.9999999908598066, 0.9999985848978206, 0.9999369162728301], "MOMENTUM_X": [0.0, 3.7513254444518565e-23, 1.3789301342956538e-15, 1.326817616272889e-11, 1.0852007588410302e-08, 1.6810469322639972e-06, 7.495114048381803e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999996, 2.499999999960875, 2.499999968009323, 2.4999950471461903, 2.499779213885031]}, "NODE_204": {"DENSITY": [1.0, 1.0, 0.9999999999999729, 0.9999999998378833, 0.999999913493092, 0.9999911087227127, 0.9997333015759489], "MOMENTUM_X": [0.0, 8.608193128445728e-21, 3.391565919143137e-14, 2.041327535201315e-10, 1.0914174596386296e-07, 1.1217004107923645e-05, 0.00033524692134305397], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999054, 2.4999999994325917, 2.4999996972258396, 2.4999688806920326, 2.49906668823153]}, "NODE_205": {"DENSITY": [1.0, 1.0, 0.9999999999999818, 0.9999999998839335, 0.9999999340974944, 0.9999927997552839, 0.9997709040128518], "MOMENTUM_X": [0.0, 2.1157078227562273e-21, 2.0890797519790382e-14, 1.338493684206371e-10, 7.621954274259819e-08, 8.3620575980287e-06, 0.000267029910894115], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999365, 2.499999999593767, 2.499999769341239, 2.4999747992377093, 2.4991982513246196]}, "NODE_206": {"DENSITY": [1.0, 1.0, 0.9999999999999846, 0.9999999999024985, 0.9999999440863335, 0.999993760274941, 0.9997955670359796], "MOMENTUM_X": [0.0, 1.2760963132096578e-21, 1.798309073019281e-14, 1.1436733157974399e-10, 6.554464414524946e-08, 7.319936122396506e-06, 0.0002399908431300485], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999467, 2.4999999996587454, 2.499999804302174, 2.499978161034215, 2.499284554960653]}, "NODE_207": {"DENSITY": [1.0, 1.0, 0.9999999999999859, 0.9999999999108704, 0.999999948991365, 0.9999942739252413, 0.9998099779211614], "MOMENTUM_X": [0.0, 1.8914170118971037e-21, 1.6743157427274587e-14, 1.0532041689374254e-10, 6.020801796297229e-08, 6.756474527122264e-06, 0.00022407307491912552], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999503, 2.4999999996880464, 2.4999998214697823, 2.4999799587994724, 2.4993349839848356]}, "NODE_208": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999993058, 0.9999999990760455, 0.9999997789906967, 0.9999853356759035], "MOMENTUM_X": [0.0, 2.3554689964350675e-25, 2.1320292606155284e-17, 8.219785483791624e-13, 1.0962359748696464e-09, 2.627729707475678e-07, 1.747257690787125e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.49999999999757, 2.4999999967661592, 2.4999992264675326, 2.4999486752460798]}, "NODE_209": {"DENSITY": [1.0, 1.0, 0.9999999999999991, 0.999999999991126, 0.9999999924086216, 0.9999987719399712, 0.9999430111607824], "MOMENTUM_X": [0.0, 2.870212954555532e-23, 1.0275191975831173e-15, 1.0516694862057487e-11, 9.004405838643886e-09, 1.4583807821745593e-06, 6.773481311501689e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999997, 2.499999999968941, 2.499999973430175, 2.499995701792766, 2.4998005447126013]}, "NODE_210": {"DENSITY": [1.0, 1.0, 0.999999999999987, 0.9999999999174422, 0.9999999525063873, 0.9999946236459483, 0.999819662207557], "MOMENTUM_X": [0.0, 1.6295630816205213e-21, 1.5579365011512102e-14, 9.787657733485283e-11, 5.6268803060865484e-08, 6.367941612132146e-06, 0.00021339576321125734], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999543, 2.499999999711047, 2.4999998337723603, 2.499981182814927, 2.4993688731522328]}, "NODE_211": {"DENSITY": [1.0, 1.0, 0.9999999999999883, 0.9999999999254908, 0.9999999563928565, 0.9999949734812861, 0.9998285181872717], "MOMENTUM_X": [0.0, 1.3339960015714365e-21, 1.3896220034914152e-14, 8.84550818055251e-11, 5.17600329052065e-08, 5.967074192112612e-06, 0.0002034171891761634], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999959, 2.499999999739218, 2.499999847375002, 2.4999824072318364, 2.4993998638719424]}, "NODE_212": {"DENSITY": [1.0, 1.0, 0.9999999999999994, 0.9999999999935002, 0.9999999940893122, 0.9999989872079106, 0.9999504530033938], "MOMENTUM_X": [0.0, 2.030157259300074e-23, 6.714385362662506e-16, 7.670136107183818e-12, 6.987819697852747e-09, 1.19998287688454e-06, 5.881850931320214e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999982, 2.499999999977251, 2.499999979312593, 2.4999964552296285, 2.499826589774024]}, "NODE_213": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999995667, 0.9999999993674703, 0.9999998359507004, 0.9999882901076887], "MOMENTUM_X": [0.0, 6.880325663017266e-26, 7.503822227082619e-18, 4.557005401470447e-13, 6.704570555270495e-10, 1.7554522309426655e-07, 1.2673077745220464e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999998484, 2.4999999977861465, 2.4999994258274962, 2.4999590155870326]}, "NODE_214": {"DENSITY": [1.0, 1.0, 0.9999999999999902, 0.9999999999359978, 0.9999999613809645, 0.9999954116165192, 0.9998391604073842], "MOMENTUM_X": [0.0, 1.253677773380008e-21, 1.1599237487887248e-14, 7.598468482386242e-11, 4.5862774031028206e-08, 5.452699294953061e-06, 0.0001910841530460648], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999966, 2.4999999997759925, 2.499999864833379, 2.4999839406972146, 2.4994371056195304]}, "NODE_215": {"DENSITY": [1.0, 1.0, 0.999999999999793, 0.9999999991521235, 0.9999996677314199, 0.9999739358931798, 0.9993879492817436], "MOMENTUM_X": [0.0, 2.3298497738096386e-19, 2.5954331816132197e-13, 1.0679136438776874e-09, 4.1920933316142216e-07, 3.286084855072152e-05, 0.000768093106041587], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999992757, 2.499999997032432, 2.499998837060218, 2.499908776992739, 2.4978585065825087]}, "NODE_216": {"DENSITY": [1.0, 1.0, 0.9999999999998598, 0.9999999993865283, 0.9999997437890131, 0.9999786045207664, 0.9994665644383292], "MOMENTUM_X": [0.0, 6.518721026609857e-20, 1.614995141778988e-13, 7.076579228842975e-10, 2.9649036780235576e-07, 2.48656882696228e-05, 0.000622128227191994], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999995093, 2.4999999978528495, 2.499999103261677, 2.4999251166381273, 2.4981334399438686]}, "NODE_217": {"DENSITY": [1.0, 1.0, 0.9999999999998814, 0.9999999994826185, 0.999999781382598, 0.9999813173904615, 0.9995195508613777], "MOMENTUM_X": [0.0, 4.060493893300776e-20, 1.3936982607295147e-13, 6.067870307830847e-10, 2.562799947011277e-07, 2.1920173964439435e-05, 0.0005640222776488619], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999585, 2.499999998189165, 2.49999923483919, 2.499934611498171, 2.4983188089200166]}, "NODE_218": {"DENSITY": [1.0, 1.0, 0.9999999999999997, 0.999999999995666, 0.9999999957351182, 0.9999992144801175, 0.9999589300947817], "MOMENTUM_X": [0.0, 9.301006589025331e-24, 4.0112373875307633e-16, 5.13412210577581e-12, 5.063479598549849e-09, 9.346809952379257e-07, 4.8956268052980945e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999987, 2.499999999984831, 2.4999999850729138, 2.49999725068158, 2.499856258263269]}, "NODE_219": {"DENSITY": [1.0, 1.0, 0.99999999999989, 0.999999999525362, 0.9999997997416568, 0.9999827711652213, 0.9995507889673174], "MOMENTUM_X": [0.0, 5.42007592034011e-20, 1.3008482682900584e-13, 5.607568031749111e-10, 2.363469537001285e-07, 2.0327470845478485e-05, 0.000529558257133464], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999615, 2.4999999983387675, 2.4999992990958817, 2.4999396996202927, 2.4984280969471193]}, "NODE_220": {"DENSITY": [1.0, 1.0, 0.9999999999999925, 0.9999999999485534, 0.999999967521472, 0.9999959691352516, 0.9998530453635395], "MOMENTUM_X": [0.0, 1.0152981383909437e-21, 8.870169259433051e-15, 6.099650549050758e-11, 3.8541039210519355e-08, 4.789716161087628e-06, 0.00017468882423248504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999974, 2.499999999819938, 2.499999886325155, 2.4999858920037092, 2.499485695640758]}, "NODE_221": {"DENSITY": [1.0, 1.0, 0.9999999999998975, 0.9999999995578358, 0.9999998125076072, 0.9999837377416246, 0.9995714725720428], "MOMENTUM_X": [0.0, 4.738448481625867e-20, 1.2151437189658175e-13, 5.241643278923641e-10, 2.221200162603398e-07, 1.9259743803278822e-05, 0.0005068882981214683], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999641, 2.4999999984524255, 2.4999993437766976, 2.4999430825806375, 2.4985004607525867]}, "NODE_222": {"DENSITY": [1.0, 1.0, 0.9999999999999998, 0.999999999997256, 0.999999997036416, 0.9999994077872197, 0.9999666716546417], "MOMENTUM_X": [0.0, 2.2709423383998764e-24, 1.7633210851914667e-16, 2.889584878333039e-12, 3.1466168991157525e-09, 6.351829692434349e-07, 3.616807466906156e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.4999999999903957, 2.499999989627456, 2.499997927255839, 2.4998833524683817]}, "NODE_223": {"DENSITY": [1.0, 1.0, 0.9999999999999948, 0.9999999999617931, 0.9999999743535007, 0.9999966281391053, 0.9998704679526516], "MOMENTUM_X": [0.0, 7.270456617372581e-22, 6.1198562897792995e-15, 4.511551225674898e-11, 3.034040002714967e-08, 3.998566336079342e-06, 0.000153834960893346], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999982, 2.4999999998662763, 2.4999999102372543, 2.499988198508006, 2.49954666643586]}, "NODE_224": {"DENSITY": [1.0, 1.0, 0.999999999999908, 0.9999999995976054, 0.9999998264730742, 0.9999846854027659, 0.9995899244836762], "MOMENTUM_X": [0.0, 3.633079384135891e-20, 1.0930825065076133e-13, 4.777404706956446e-10, 2.059843240601069e-07, 1.818050204243935e-05, 0.00048627824871608335], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999996776, 2.499999998591619, 2.499999392655821, 2.4999463993402555, 2.4985650172089344]}, "NODE_225": {"DENSITY": [1.0, 1.0, 0.9999999999999221, 0.9999999996506215, 0.9999998447043076, 0.9999858835031443, 0.9996120786531942], "MOMENTUM_X": [0.0, 3.337310095619768e-20, 9.243942385540701e-14, 4.148896776544934e-10, 1.8447160487708526e-07, 1.6779078024985995e-05, 0.00046077312451622376], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999997273, 2.499999998777175, 2.499999456465127, 2.4999505926265746, 2.498642527372984]}, "NODE_226": {"DENSITY": [1.0, 1.0, 0.999999999998494, 0.9999999957800201, 0.9999987885211649, 0.9999276907404592, 0.9986749009892796], "MOMENTUM_X": [0.0, 6.870808090982081e-18, 1.8890793795435625e-12, 5.316399537060209e-09, 1.528544742427232e-06, 9.108728133882171e-05, 0.0016593365748814692], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999947287, 2.4999999852300703, 2.499995759827311, 2.499746927874509, 2.4953652905518457]}, "NODE_227": {"DENSITY": [1.0, 1.0, 0.9999999999989699, 0.999999996912819, 0.9999990538449686, 0.999939794767971, 0.9988277047993753], "MOMENTUM_X": [0.0, 2.2088179104655983e-18, 1.186136276212067e-12, 3.5622971470302255e-09, 1.095715111476997e-06, 7.001820897598258e-05, 0.001367790853556669], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999963953, 2.4999999891948677, 2.49999668845913, 2.499789288012665, 2.495899168026486]}, "NODE_228": {"DENSITY": [1.0, 1.0, 0.9999999999999968, 0.999999999974142, 0.9999999812083704, 0.9999973426495006, 0.9998908832045523], "MOMENTUM_X": [0.0, 3.2420866243625457e-22, 3.771133390667361e-15, 3.0652576194420505e-11, 2.23255923623069e-08, 3.1646667063964077e-06, 0.00013011416334520753], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999989, 2.4999999999094977, 2.4999999342292982, 2.4999906992863874, 2.4996181115342857]}, "NODE_229": {"DENSITY": [1.0, 1.0, 0.9999999999991268, 0.9999999973857471, 0.9999991878121947, 0.9999470050963323, 0.9989338163961281], "MOMENTUM_X": [0.0, 1.7472637794185078e-18, 1.025543631634719e-12, 3.0655677625296004e-09, 9.522511134752384e-07, 6.218359198426622e-05, 0.0012514501075863162], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999969433, 2.4999999908501143, 2.4999971573439863, 2.4998145228109245, 2.496270196449071]}, "NODE_230": {"DENSITY": [1.0, 1.0, 0.9999999999999393, 0.9999999997155697, 0.9999998677296688, 0.9999874461399417, 0.9996415952193836], "MOMENTUM_X": [0.0, 3.927867228234087e-20, 7.189109650575947e-14, 3.373786233401116e-10, 1.570336718263408e-07, 1.4923952538529616e-05, 0.0004260469056527953], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999997877, 2.4999999990044945, 2.499999537053876, 2.4999560617783243, 2.4987457983873287]}, "NODE_231": {"DENSITY": [1.0, 1.0, 0.9999999999991878, 0.9999999975935635, 0.9999992530031475, 0.9999508855355621, 0.9989970917969447], "MOMENTUM_X": [0.0, 1.872386711604985e-18, 9.604747026707175e-13, 2.842518944784752e-09, 8.815913543412151e-07, 5.7937346211594195e-05, 0.0011817479565129948], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999971574, 2.4999999915774724, 2.4999973855121316, 2.4998281036849646, 2.496491460419774]}, "NODE_232": {"DENSITY": [1.0, 1.0, 0.9999999999992392, 0.9999999977458195, 0.999999296902244, 0.9999534050919363, 0.999038441281134], "MOMENTUM_X": [0.0, 1.752208853697889e-18, 9.022801630099401e-13, 2.671951229815147e-09, 8.329593297333849e-07, 5.5171123901974364e-05, 0.0011367311727783272], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999997337, 2.499999992110368, 2.499997539158845, 2.4998369217183587, 2.496636057925375]}, "NODE_233": {"DENSITY": [1.0, 1.0, 0.9999999999999981, 0.9999999999833797, 0.9999999867385693, 0.9999979638613345, 0.9999099640177492], "MOMENTUM_X": [0.0, 7.754541925061874e-23, 1.909096390974891e-15, 1.7523995575326525e-11, 1.410629998182234e-08, 2.1895846366271105e-06, 9.79868533111094e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999994, 2.49999999994183, 2.4999999535849935, 2.4999928735213057, 2.499684886117838]}, "NODE_234": {"DENSITY": [1.0, 1.0, 0.9999999999999573, 0.9999999997857465, 0.9999998940334593, 0.9999893456913452, 0.9996796964247168], "MOMENTUM_X": [0.0, 2.8824399069649176e-20, 5.053880146137824e-14, 2.5315991355070245e-10, 1.2544941341791522e-07, 1.264413078880925e-05, 0.00038051363912931183], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999998503, 2.499999999250113, 2.4999996291171307, 2.499962710126829, 2.4988791091250433]}, "NODE_235": {"DENSITY": [1.0, 1.0, 0.9999999999993102, 0.9999999979316552, 0.9999993441966181, 0.9999558148432284, 0.9990743142190421], "MOMENTUM_X": [0.0, 1.3942876656934322e-18, 8.187258676353359e-13, 2.4557276110300777e-09, 7.785750574971693e-07, 5.2446753126757924e-05, 0.0010970876750214158], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999975864, 2.499999992760793, 2.499997704689026, 2.4998453554603284, 2.496761505641732]}, "NODE_236": {"DENSITY": [1.0, 1.0, 0.9999999999994104, 0.9999999981847248, 0.9999994069452878, 0.9999588826280553, 0.9991171732911208], "MOMENTUM_X": [0.0, 8.856311398308902e-19, 6.999555109696124e-13, 2.156139065909662e-09, 7.047024058717775e-07, 4.8874817068235444e-05, 0.0010481685897410751], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999979368, 2.499999993646538, 2.499997924309212, 2.4998560922357647, 2.4969113863997032]}, "NODE_237": {"DENSITY": [1.0, 1.0, 0.999999999999973, 0.9999999998527577, 0.9999999211126599, 0.9999914637482595, 0.9997256836613255], "MOMENTUM_X": [0.0, 1.2083968435313738e-20, 3.1831279667155576e-14, 1.7466845681452425e-10, 9.379011043005918e-08, 1.0173726631924758e-05, 0.0003271747993435428], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999906, 2.499999999484652, 2.499999723894322, 2.4999701232519627, 2.499040018843469]}, "NODE_238": {"DENSITY": [1.0, 0.9999999999999999, 0.9999999999895878, 0.9999999800516005, 0.9999958173996746, 0.9998106327665909, 0.9972993145627443], "MOMENTUM_X": [0.0, 1.4439034947276575e-16, 1.3067829785730705e-11, 2.5136445627858468e-08, 5.2770152175908665e-06, 0.0002382811490806613, 0.0033720830095110036], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999996, 2.4999999999635576, 2.499999930180603, 2.4999853609365394, 2.499337283580372, 2.4905603467255473]}, "NODE_239": {"DENSITY": [1.0, 0.9999999999999999, 0.999999999992808, 0.9999999852366324, 0.9999966891279713, 0.9998399711473194, 0.9975740136542183], "MOMENTUM_X": [0.0, 6.997768233559354e-17, 8.282984842984152e-12, 1.7041841577083547e-08, 3.837567972171889e-06, 0.00018624153741996033, 0.002830795510745314], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999996, 2.4999999999748272, 2.4999999483282136, 2.4999884119687383, 2.49943994276815, 2.4915183013497892]}, "NODE_240": {"DENSITY": [1.0, 0.9999999999999999, 0.9999999999938872, 0.9999999874449716, 0.99999713967317, 0.9998579298789791, 0.9977711022675982], "MOMENTUM_X": [0.0, 6.023396944151077e-17, 7.1761864686944574e-12, 1.472061348837729e-08, 3.3544311663492446e-06, 0.00016671372719599616, 0.0026149337431803903], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999786064, 2.4999999560574024, 2.499989988871943, 2.4995027895440867, 2.4922067387442848]}, "NODE_241": {"DENSITY": [1.0, 1.0, 0.9999999999995345, 0.9999999985029586, 0.9999994883449652, 0.9999629859627645, 0.9991754421270481], "MOMENTUM_X": [0.0, 7.254303511518813e-19, 5.519299004581228e-13, 1.7765032688074e-09, 6.077764230253931e-07, 4.401430999622684e-05, 0.0009799584409639372], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999998371, 2.4999999947603553, 2.499998209207901, 2.499870453327375, 2.497115163996883]}, "NODE_242": {"DENSITY": [1.0, 0.9999999999999999, 0.9999999999943002, 0.9999999884053093, 0.9999973586449854, 0.9998676607604584, 0.9978902876043625], "MOMENTUM_X": [0.0, 5.713310805850382e-17, 6.739117570452102e-12, 1.3693112410543233e-08, 3.1174247010266054e-06, 0.0001560770779284699, 0.002483945073536717], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999800515, 2.499999959418584, 2.499990755271092, 2.499536843268922, 2.4926231149639277]}, "NODE_243": {"DENSITY": [1.0, 1.0, 0.9999999999999842, 0.9999999999038808, 0.999999943427423, 0.9999933480810496, 0.999769717509703], "MOMENTUM_X": [0.0, 2.4795903578152303e-21, 1.6404244732285096e-14, 1.0149191388147643e-10, 6.029703632981474e-08, 7.173255796206662e-06, 0.00025137884455406], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999454, 2.499999999663583, 2.499999801995986, 2.499976718353353, 2.4991940889533057]}, "NODE_244": {"DENSITY": [1.0, 0.9999999999999999, 0.9999999999946321, 0.9999999890814046, 0.9999975012436023, 0.9998738355752714, 0.997967332016836], "MOMENTUM_X": [0.0, 5.2701865126276184e-17, 6.3651602552578856e-12, 1.294062108958916e-08, 2.960471518845122e-06, 0.00014934187934700457, 0.002400732997078093], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999812124, 2.499999961784917, 2.49999125436486, 2.4995584524557724, 2.492892289010637]}, "NODE_245": {"DENSITY": [1.0, 1.0, 0.9999999999996665, 0.9999999988557694, 0.9999995839701706, 0.9999681231134386, 0.999252888347626], "MOMENTUM_X": [0.0, 5.439812472050698e-19, 3.9368500292959863e-13, 1.3529137533408663e-09, 4.929129238970761e-07, 3.785255193619869e-05, 0.0008876329321472807], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999998833, 2.499999995995193, 2.49999854389594, 2.4998884327148643, 2.4973860253794444]}, "NODE_246": {"DENSITY": [1.0, 1.0, 0.9999999999950953, 0.999999989900489, 0.9999976517191003, 0.9998795679121065, 0.9980321611881725], "MOMENTUM_X": [0.0, 4.730707939758767e-17, 5.823825179215982e-12, 1.199129754971783e-08, 2.788433687812725e-06, 0.00014291727997175617, 0.0023300348107976087], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999828333, 2.4999999646517117, 2.4999917810276746, 2.4995785131965946, 2.493118790048493]}, "NODE_247": {"DENSITY": [1.0, 1.0, 0.9999999999957618, 0.9999999910401406, 0.9999978543632543, 0.9998868921631455, 0.9981088702837461], "MOMENTUM_X": [0.0, 3.688844707285404e-17, 5.033971799675514e-12, 1.0644539482110486e-08, 2.55056981640006e-06, 0.00013443868474646392, 0.0022434768829679786], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999985166, 2.4999999686404926, 2.4999924902804107, 2.4996041450671793, 2.493386802512216]}, "NODE_248": {"DENSITY": [1.0, 1.0, 0.9999999999997872, 0.9999999992011014, 0.9999996851370857, 0.9999740231825568, 0.9993492889345272], "MOMENTUM_X": [0.0, 3.334639976550163e-19, 2.5210952949915274e-13, 9.483946814743047e-10, 3.746419669217891e-07, 3.097765119731399e-05, 0.0007761031671582519], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999992553, 2.499999997203855, 2.4999988979799963, 2.4999090823472554, 2.497723207012762]}, "NODE_249": {"DENSITY": [1.0, 0.9999999999999986, 0.9999999999316993, 0.9999999106335888, 0.9999863612467325, 0.9995331652059761, 0.9948267543945901], "MOMENTUM_X": [0.0, 1.7618000945340573e-15, 8.576855212679709e-11, 1.1262893237731056e-07, 1.7201784778636797e-05, 0.0005865693921293896, 0.006433856710405587], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999995, 2.4999999997609477, 2.4999996872175805, 2.4999522647546524, 2.498366487016224, 2.481939385710881]}, "NODE_250": {"DENSITY": [1.0, 0.9999999999999991, 0.999999999952329, 0.999999933050498, 0.9999890494412518, 0.9995993085275036, 0.995281248973123], "MOMENTUM_X": [0.0, 1.0532061996311037e-15, 5.4908529090865756e-11, 7.731711302982094e-08, 1.2702996247239159e-05, 0.0004666339396309178, 0.0055032995267505855], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999997, 2.4999999998331512, 2.499999765676752, 2.4999616732672623, 2.4985978483349744, 2.4835187546204938]}, "NODE_251": {"DENSITY": [1.0, 0.9999999999999992, 0.9999999999593863, 0.9999999428086446, 0.9999904744987527, 0.9996410222443873, 0.9956190960265247], "MOMENTUM_X": [0.0, 9.118657830922323e-16, 4.7670808764571024e-11, 6.705004035805961e-08, 1.117312661178905e-05, 0.0004212517102837438, 0.005134186787414987], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999973, 2.4999999998578515, 2.4999997998302628, 2.4999666609173365, 2.4987437961614543, 2.4846967007258183]}, "NODE_252": {"DENSITY": [1.0, 1.0, 0.9999999999966095, 0.9999999925131987, 0.9999981246865249, 0.9998969425198488, 0.9982151570886681], "MOMENTUM_X": [0.0, 2.7972019693128327e-17, 4.022650878191122e-12, 8.888279909895621e-09, 2.2290347957994228e-06, 0.00012256875366479608, 0.0021199297338812474], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999881335, 2.4999999737961955, 2.4999934364097047, 2.4996393174743567, 2.493758179269599]}, "NODE_253": {"DENSITY": [1.0, 0.9999999999999993, 0.9999999999620364, 0.9999999470174107, 0.9999911680398396, 0.9996638423906253, 0.9958268396044898], "MOMENTUM_X": [0.0, 8.852032971785983e-16, 4.487955677457485e-11, 6.255966784719339e-08, 1.042350038899185e-05, 0.0003963359285005102, 0.00490670150956779], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999973, 2.499999999867127, 2.4999998145609434, 2.499969088288454, 2.4988236414145377, 2.485421204991067]}, "NODE_254": {"DENSITY": [1.0, 1.0, 0.999999999999874, 0.9999999994700406, 0.9999997703969096, 0.9999794005425403, 0.9994439374897398], "MOMENTUM_X": [0.0, 7.767221667038099e-20, 1.3238320619550505e-13, 5.604529667297501e-10, 2.4526159244173294e-07, 2.2276866786540643e-05, 0.0006089346865343347], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999559, 2.4999999981451415, 2.4999991963892723, 2.4999279025560814, 2.4980542272474935]}, "NODE_255": {"DENSITY": [1.0, 0.9999999999999993, 0.9999999999640646, 0.9999999498552665, 0.9999916045339977, 0.9996780168077931, 0.9959600520181447], "MOMENTUM_X": [0.0, 8.473321647188956e-16, 4.260706772306104e-11, 5.942382519270894e-08, 9.946493164570703e-06, 0.0003809838747987892, 0.00476424089685621], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999998, 2.499999999874227, 2.4999998244934383, 2.4999706160041613, 2.498873236738636, 2.485885839312492]}, "NODE_256": {"DENSITY": [1.0, 1.0, 0.9999999999975343, 0.9999999941913466, 0.9999984517942944, 0.9999099211799963, 0.9983607055535505], "MOMENTUM_X": [0.0, 1.947736006829061e-17, 2.9129767657457102e-12, 6.872726625783843e-09, 1.8360150228320315e-06, 0.00010701703284706796, 0.0019470787864990207], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.49999999999137, 2.4999999796697128, 2.4999945812846853, 2.499684738351276, 2.4942667960121883]}, "NODE_257": {"DENSITY": [1.0, 0.9999999999999993, 0.999999999966902, 0.9999999532505729, 0.9999920529228046, 0.9996907249504182, 0.9960685665200911], "MOMENTUM_X": [0.0, 7.766864348515784e-16, 3.930069264986231e-11, 5.550685373357841e-08, 9.437510873929943e-06, 0.0003668899904479758, 0.0046478827433607825], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999998, 2.4999999998841576, 2.49999983637701, 2.49997218535101, 2.498917701787841, 2.4862643391387613]}, "NODE_258": {"DENSITY": [1.0, 1.0, 0.9999999999984005, 0.9999999958774448, 0.99999880803585, 0.9999253015889631, 0.998547717905665], "MOMENTUM_X": [0.0, 9.254243842666003e-18, 1.896114116280664e-12, 4.8976619727237045e-09, 1.419584071927811e-06, 8.911861149104498e-05, 0.0017315123241237133], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999994402, 2.4999999855710575, 2.4999958281282355, 2.4997385653511492, 2.494920411909541]}, "NODE_259": {"DENSITY": [1.0, 0.9999999999999994, 0.9999999999710879, 0.9999999580770896, 0.999992664646812, 0.9997069517744009, 0.996195050460372], "MOMENTUM_X": [0.0, 6.509581791599972e-16, 3.434651894863995e-11, 4.981562385499139e-08, 8.72232333162115e-06, 0.0003482456754992365, 0.004507362603984795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999982, 2.4999999998988085, 2.4999998532698187, 2.49997432636696, 2.4989744789149175, 2.4867055209032802]}, "NODE_260": {"DENSITY": [1.0, 0.999999999999985, 0.999999999575677, 0.9999996215315585, 0.9999581052543156, 0.9989197455122556, 0.9906933425906822], "MOMENTUM_X": [0.0, 1.8667779937390098e-14, 5.331196207256236e-10, 4.770885304005856e-07, 5.280750336909818e-05, 0.0013546652166541052, 0.011512559793468614], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999476, 2.4999999985148693, 2.499998675360792, 2.4998533719879976, 2.496221245177314, 2.467571571093941]}, "NODE_261": {"DENSITY": [1.0, 0.9999999999999903, 0.9999999997005985, 0.9999997127809247, 0.9999658558645931, 0.9990576618756101, 0.9913825123050628], "MOMENTUM_X": [0.0, 1.1242839185106465e-14, 3.449191174832268e-10, 3.3189337856294997e-07, 3.9637337559804775e-05, 0.0010980019388902335, 0.010035494047047965], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999966, 2.4999999989520942, 2.499998994733407, 2.499880497642499, 2.4967032698576874, 2.469951513343876]}, "NODE_262": {"DENSITY": [1.0, 0.9999999999999996, 0.9999999999765622, 0.9999999644991777, 0.9999935047216308, 0.9997297965025191, 0.9963733218220412], "MOMENTUM_X": [0.0, 5.039880541029539e-16, 2.7819399742740868e-11, 4.216491736241764e-08, 7.724848141447603e-06, 0.000321372312258923, 0.00430221439759615], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999987, 2.499999999917967, 2.4999998757471245, 2.4999772666063325, 2.4990544132441443, 2.4873273931899083]}, "NODE_263": {"DENSITY": [1.0, 0.9999999999999915, 0.999999999744267, 0.9999997534611946, 0.9999700794173392, 0.9991475293303032, 0.9919146672901789], "MOMENTUM_X": [0.0, 9.95713941710295e-15, 3.00105516602053e-10, 2.8903604807865914e-07, 3.509856894361777e-05, 0.0010002247014626268, 0.009456821291953502], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999702, 2.4999999991049346, 2.4999991371143104, 2.499895279614091, 2.497017556159977, 2.471801202833025]}, "NODE_264": {"DENSITY": [1.0, 1.0, 0.9999999999990365, 0.9999999972193212, 0.9999991154968766, 0.9999396813733072, 0.9987360961455025], "MOMENTUM_X": [0.0, 3.1347577965510717e-18, 1.012665763190842e-12, 2.945678644475993e-09, 9.47208682074736e-07, 6.542116458161075e-05, 0.0013885558614469696], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999996628, 2.499999990267624, 2.4999969042403687, 2.499788890344838, 2.495578606651007]}, "NODE_265": {"DENSITY": [1.0, 0.9999999999999919, 0.999999999760404, 0.9999997709091143, 0.9999721435463965, 0.9991973152765826, 0.9922482618708149], "MOMENTUM_X": [0.0, 9.556756808795955e-15, 2.831872522957765e-10, 2.7046520782454903e-07, 3.287048702734956e-05, 0.0009459463925476739, 0.009093638527874443], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999716, 2.4999999991614135, 2.4999991981820116, 2.4999025038590865, 2.4971916790579, 2.472961214986508]}, "NODE_266": {"DENSITY": [1.0, 0.9999999999999923, 0.9999999997721181, 0.9999997821447911, 0.9999733993240061, 0.999227659692325, 0.9924611307946202], "MOMENTUM_X": [0.0, 9.170608284959391e-15, 2.7016101857902393e-10, 2.5814683460103284e-07, 3.150874875684564e-05, 0.0009133367594240953, 0.008868889073420889], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999973, 2.4999999992024127, 2.4999992375068705, 2.499906898958593, 2.4972978092081033, 2.4737015849393913]}, "NODE_267": {"DENSITY": [1.0, 0.9999999999999997, 0.9999999999826932, 0.9999999720296562, 0.9999945536323432, 0.9997602737891466, 0.996624901375621], "MOMENTUM_X": [0.0, 3.539488064987376e-16, 2.0458718277844946e-11, 3.3117672410429074e-08, 6.4647744931740475e-06, 0.0002849114391941124, 0.004005191819076564], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999999, 2.499999999939426, 2.499999902103799, 2.4999809377696307, 2.499161056879522, 2.4882051458539824]}, "NODE_268": {"DENSITY": [1.0, 0.9999999999999929, 0.9999999997884632, 0.9999997953382053, 0.9999746465300233, 0.9992538093304585, 0.9926288498704071], "MOMENTUM_X": [0.0, 8.508524716973958e-15, 2.511818405530523e-10, 2.4301004842489546e-07, 3.010529442862802e-05, 0.0008847066780853256, 0.008692933943491576], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999747, 2.4999999992596202, 2.499999283683807, 2.4999112640595316, 2.4973892683275754, 2.4742849455006217]}, "NODE_269": {"DENSITY": [1.0, 0.9999999999999998, 0.999999999988585, 0.9999999798087137, 0.9999957316428959, 0.9997976075489503, 0.9969587211967693], "MOMENTUM_X": [0.0, 1.9281555523955515e-16, 1.3541817788931215e-11, 2.4006188735620775e-08, 5.08837045370833e-06, 0.0002415437423803089, 0.0036225019318695587], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999996, 2.499999999960048, 2.4999999293304995, 2.499985060784804, 2.4992916967943293, 2.48937014606339]}, "NODE_270": {"DENSITY": [1.0, 0.9999999999999937, 0.9999999998132056, 0.9999998144919733, 0.9999763655177402, 0.999286998061663, 0.9928203149927326], "MOMENTUM_X": [0.0, 7.418240429531271e-15, 2.2194692889866903e-10, 2.204843649375061e-07, 2.8105889931481646e-05, 0.0008469473492649017, 0.008484735852405261], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999782, 2.4999999993462194, 2.49999935072198, 2.499917280357827, 2.4975053480491054, 2.4749508817693107]}, "NODE_271": {"DENSITY": [1.0, 0.9999999999998517, 0.9999999975085705, 0.9999984891078928, 0.999879128442467, 0.9976599713389046, 0.984268634566142], "MOMENTUM_X": [0.0, 1.8492167168663674e-13, 3.131742622074406e-09, 1.9051070919915895e-06, 0.00015222607853312113, 0.0029264813664856425, 0.019321034927839827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999994813, 2.4999999912799975, 2.499994711882862, 2.499576978720459, 2.491819675372753, 2.4453456023090423]}, "NODE_272": {"DENSITY": [1.0, 0.999999999999995, 0.9999999998465168, 0.9999998407704895, 0.9999787983555211, 0.9993349174133349, 0.9930940964230832], "MOMENTUM_X": [0.0, 5.870259789017302e-15, 1.822498089736831e-10, 1.8921003081969474e-07, 2.5224387426307298e-05, 0.0007908879303578874, 0.008174210888974624], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999827, 2.499999999462809, 2.4999994426967675, 2.499925795083976, 2.4976729545216645, 2.475903210582313]}, "NODE_273": {"DENSITY": [1.0, 0.9999999999999024, 0.9999999982217782, 0.9999988374839553, 0.9998999212373343, 0.9979243388875048, 0.9852235963320182], "MOMENTUM_X": [0.0, 1.1231807467972798e-13, 2.0490387953981513e-09, 1.344411519332367e-06, 0.0001162643169288199, 0.0024190510951232107, 0.017159110772551108], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999996585, 2.4999999937762234, 2.499995931196578, 2.4996497420765875, 2.4927420872282022, 2.44860880000876]}, "NODE_274": {"DENSITY": [1.0, 0.9999999999999153, 0.9999999984769672, 0.9999989969064204, 0.999911598142437, 0.9981028657464219, 0.9859912595476963], "MOMENTUM_X": [0.0, 9.953569830598682e-14, 1.7869383484584086e-09, 1.1761791710537402e-06, 0.00010370353521154925, 0.002224972425889721, 0.016330955376105467], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999704, 2.499999994669386, 2.4999964891745514, 2.499690607572641, 2.493365856853898, 2.4512641124885546]}, "NODE_275": {"DENSITY": [1.0, 0.9999999999999999, 0.9999999999930054, 0.9999999861429952, 0.9999967742725614, 0.999833463294019, 0.9973037138424244], "MOMENTUM_X": [0.0, 6.918256253571647e-17, 7.360480426742651e-12, 1.4706636201062846e-08, 3.4642314954895675e-06, 0.00018118747308540513, 0.002971402945806757], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999996, 2.499999999975519, 2.499999951500484, 2.499988709970957, 2.499417163009318, 2.490573181909072]}, "NODE_276": {"DENSITY": [1.0, 0.9999999999999191, 0.9999999985700171, 0.9999990651118824, 0.9999173469186119, 0.9982033333457703, 0.9864830480177017], "MOMENTUM_X": [0.0, 9.573349160714476e-14, 1.689799546076937e-09, 1.1037174970187943e-06, 9.750531082578123e-05, 0.0021156837482618172, 0.015800326331987274], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999997167, 2.49999999499506, 2.499996727893411, 2.499710726632786, 2.4937169318510266, 2.4529663375526796]}, "NODE_277": {"DENSITY": [1.0, 0.9999999999999966, 0.9999999998848891, 0.9999998725461076, 0.9999819386513664, 0.9994010617754028, 0.9934921371814163], "MOMENTUM_X": [0.0, 4.095174728228747e-15, 1.361650509148552e-10, 1.5102478252854154e-07, 2.145428470782985e-05, 0.0007119591051004167, 0.007708440523102241], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999988, 2.499999999597112, 2.499999553911411, 2.499936785886815, 2.497904318632201, 2.4772881243423654]}, "NODE_278": {"DENSITY": [1.0, 0.9999999999999221, 0.9999999986337602, 0.9999991069724293, 0.9999207319035284, 0.9982636202298051, 0.986796376382333], "MOMENTUM_X": [0.0, 9.229955403865564e-14, 1.6195059209292044e-09, 1.0582092351569813e-06, 9.386457954080728e-05, 0.0020514778863306798, 0.01547511521341683], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999997278, 2.4999999952181615, 2.4999968744051713, 2.499722573132141, 2.4939276101659, 2.454051245847079]}, "NODE_279": {"DENSITY": [1.0, 0.9999999999999273, 0.9999999987220494, 0.9999991548537616, 0.9999239580875684, 0.9983133571157226, 0.987035213792435], "MOMENTUM_X": [0.0, 8.615649365647359e-14, 1.5174290872494986e-09, 1.0036370276215695e-06, 9.027223385891676e-05, 0.0019978895154188973, 0.015231640973089246], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999746, 2.4999999955271726, 2.4999970419896593, 2.4997338638751763, 2.4941014208248347, 2.454878292538743]}, "NODE_280": {"DENSITY": [1.0, 0.9999999999999979, 0.9999999999227676, 0.9999999063554588, 0.9999855826117416, 0.9994849638727569, 0.9940374050016655], "MOMENTUM_X": [0.0, 2.480103138808415e-15, 9.169483769367322e-11, 1.1142985319099301e-07, 1.720070092841035e-05, 0.00061474876643853, 0.007088420904720737], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999993, 2.499999999729687, 2.4999996722441247, 2.499949539528119, 2.4981978195498904, 2.479186065430829]}, "NODE_281": {"DENSITY": [1.0, 0.9999999999999363, 0.9999999988592775, 0.9999992257809255, 0.9999284328943637, 0.9983756884199294, 0.9873006816803362], "MOMENTUM_X": [0.0, 7.571541855487885e-14, 1.3556162110034795e-09, 9.204933480059192e-07, 8.51014707938197e-05, 0.001927910174859558, 0.01495146411101755], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999777, 2.4999999960074715, 2.4999972902344902, 2.499749524487264, 2.4943192454830796, 2.455797456418765]}, "NODE_282": {"DENSITY": [1.0, 0.9999999999999488, 0.9999999990498065, 0.9999993262943263, 0.9999349659764275, 0.998467894012533, 0.9876844901042905], "MOMENTUM_X": [0.0, 6.086129479941518e-14, 1.128743541719939e-09, 8.010220424238715e-07, 7.738896820875067e-05, 0.0018208837333761664, 0.0145251523564531], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999998206, 2.499999996674322, 2.499997642031084, 2.499772388630953, 2.4946414871062705, 2.4571264263730908]}, "NODE_283": {"DENSITY": [1.0, 0.9999999999999988, 0.9999999999518314, 0.9999999345620958, 0.9999888946865474, 0.9995678463650217, 0.9946151317113029], "MOMENTUM_X": [0.0, 1.137734655398035e-15, 5.0753067925374944e-11, 6.959375618985653e-08, 1.1961819090666329e-05, 0.00047172353786580285, 0.005950195754196513], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999964, 2.499999999831411, 2.4999997709673436, 2.499961131600537, 2.498487736691733, 2.481193034275312]}, "NODE_284": {"DENSITY": [1.0, 0.999999999998625, 0.9999999862072418, 0.9999943320574765, 0.999673535936853, 0.995265261677724, 0.9749680262261795], "MOMENTUM_X": [2.396966932549643e-24, 1.7165091916508606e-12, 1.7345333532665832e-08, 7.1475570252256354e-06, 0.0004106639234904703, 0.005898672084078861, 0.030458589208326326], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999995188, 2.4999999517253477, 2.499980162272906, 2.4988575828880863, 2.483467449401674, 2.4133945457049797]}, "NODE_285": {"DENSITY": [1.0, 0.9999999999990857, 0.9999999900353514, 0.9999955742966802, 0.9997251414076189, 0.9957283629053568, 0.9761757318629573], "MOMENTUM_X": [7.853478698429014e-25, 1.0527956611931207e-12, 1.1485629317825034e-08, 5.12284802314767e-06, 0.00031954263491217245, 0.004976343340498415, 0.027538217910954073], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999968, 2.49999996512373, 2.4999845100769993, 2.4990381254974885, 2.485077888577819, 2.4174511856128067]}, "NODE_286": {"DENSITY": [1.0, 0.9999999999992059, 0.9999999914399029, 0.999996159184681, 0.9997550928039247, 0.996053456502968, 0.9771879728161028], "MOMENTUM_X": [8.238207936947946e-25, 9.335553327912716e-13, 1.0041531183460498e-08, 4.504591681332589e-06, 0.00028729848145049526, 0.00462377837002113, 0.026459641125081458], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999997221, 2.49999997003966, 2.4999865571760704, 2.499142930076855, 2.4862117545421283, 2.420927452302871]}, "NODE_287": {"DENSITY": [1.0, 0.9999999999992399, 0.999999991946851, 0.999996409660325, 0.9997699984591313, 0.9962398797281445, 0.9778521493477021], "MOMENTUM_X": [7.469230033765565e-25, 8.989921071961335e-13, 9.514351332558009e-09, 4.238876394278906e-06, 0.0002712456209069212, 0.004421735202389402, 0.025752468188894963], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.49999999999734, 2.4999999718139785, 2.499987433837325, 2.499195088288332, 2.486862115315308, 2.423210766518455]}, "NODE_288": {"DENSITY": [1.0, 0.9999999999999634, 0.9999999992759062, 0.9999994518890541, 0.9999437022788663, 0.9985997508392467, 0.9882587880177884], "MOMENTUM_X": [0.0, 4.323827987417263e-14, 8.571195451934548e-10, 6.500582534137314e-07, 6.69117130983663e-05, 0.0016641741804299154, 0.0138619670667943], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999872, 2.4999999974656726, 2.49999808161231, 2.49980296373859, 2.495102349011635, 2.4591156375623884]}, "NODE_289": {"DENSITY": [1.0, 0.999999999999266, 0.999999992273081, 0.9999965560458091, 0.9997785139703893, 0.9963504583040806, 0.9782760546842788], "MOMENTUM_X": [7.850876684600685e-25, 8.70013407494786e-13, 9.15796904926755e-09, 4.081189473513929e-06, 0.00026216548571951655, 0.004305253681770249, 0.025322534776614666], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999997431, 2.499999972955784, 2.499987946184505, 2.4992248861477484, 2.487247923718685, 2.424668902684781]}, "NODE_290": {"DENSITY": [1.0, 0.9999999999993111, 0.999999992718759, 0.9999967177079573, 0.9997862424584437, 0.9964375505559152, 0.978589090231492], "MOMENTUM_X": [8.18486738857389e-25, 8.179747633989413e-13, 8.645360121834266e-09, 3.8984477119382836e-06, 0.00025366964124922325, 0.004213308461069952, 0.025015355885422388], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999997588, 2.4999999745156556, 2.4999885119998067, 2.4992519299995846, 2.48755178822925, 2.4257458573914485]}, "NODE_291": {"DENSITY": [1.0, 0.9999999999999776, 0.9999999995055231, 0.9999995898142351, 0.9999541995184694, 0.9987732204476814, 0.9890699441771899], "MOMENTUM_X": [0.0, 2.6608488674026698e-14, 5.875512900039608e-10, 4.885521886847554e-07, 5.467480383698681e-05, 0.0014639586879566019, 0.012950623374687529], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999214, 2.4999999982693306, 2.499998564350169, 2.499839702131794, 2.495708747012772, 2.461926789132552]}, "NODE_292": {"DENSITY": [1.0, 0.9999999999993882, 0.9999999934304317, 0.9999969616471625, 0.9997969727216858, 0.9965444883705773, 0.9789259622147652], "MOMENTUM_X": [8.027085185519682e-25, 7.267737294832043e-13, 7.808299807281129e-09, 3.6137144929822273e-06, 0.00024137591832094468, 0.004095429283833133, 0.02467436518316771], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999997859, 2.499999977006511, 2.4999893657838475, 2.4992894779480745, 2.4879248883045717, 2.4269045389471415]}, "NODE_293": {"DENSITY": [1.0, 0.9999999999999878, 0.9999999996859197, 0.999999707899509, 0.9999640136776002, 0.998949661607355, 0.989949553003279], "MOMENTUM_X": [0.0, 1.2876940518417841e-14, 3.314103469198443e-10, 3.113803432071861e-07, 3.88783918018125e-05, 0.0011504103520952544, 0.011125788432748385], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999574, 2.499999998900719, 2.4999989776484317, 2.499874049905887, 2.4963254083831194, 2.464961357072327]}, "NODE_294": {"DENSITY": [1.0, 0.9999999999995015, 0.999999994451367, 0.9999973193681941, 0.9998131453099696, 0.9967062661295524, 0.9794163709012385], "MOMENTUM_X": [6.461400382797957e-25, 5.921423590721749e-13, 6.593917526546943e-09, 3.189310717080014e-06, 0.00022236853928439836, 0.003909770107487001, 0.02414575235391771], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999998255, 2.499999980579785, 2.499990617803241, 2.499346070701191, 2.488489364182138, 2.4285911317894224]}, "NODE_295": {"DENSITY": [1.0, 0.9999999999880363, 0.9999999281993893, 0.9999800840423094, 0.9991774352075994, 0.9910626813658858, 0.9623808020837887], "MOMENTUM_X": [4.1158420788548386e-22, 1.4950662491336358e-11, 9.033312122874667e-08, 2.5109107022057137e-05, 0.0010329799465774478, 0.011074343936351665, 0.04524165525001611], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999958127, 2.499999748697876, 2.4999302950087867, 2.497122301847252, 2.468855075348963, 2.370565266338669]}, "NODE_296": {"DENSITY": [1.0, 0.9999999999919542, 0.9999999474520931, 0.9999842030188071, 0.9992951552713253, 0.9918001307032087, 0.963775270316724], "MOMENTUM_X": [1.670881931905355e-22, 9.262909392115327e-12, 6.059220496433047e-08, 1.8300307168154435e-05, 0.0008199502671018518, 0.009539074000245366, 0.04158904804198224], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.49999999997184, 2.4999998160823327, 2.4999447110446837, 2.4975338807231, 2.4714038067189144, 2.375123186276348]}, "NODE_297": {"DENSITY": [1.0, 0.9999999999930083, 0.999999954710122, 0.9999862031405364, 0.9993659869275376, 0.9923398203680259, 0.9649946844917081], "MOMENTUM_X": [1.6355219477550135e-22, 8.217904800944819e-12, 5.312034618758741e-08, 1.6183258937188268e-05, 0.0007436724009300648, 0.008956669088887176, 0.04031297590677012], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999975529, 2.4999998414854314, 2.499951711364464, 2.4977816413567977, 2.4732802779903356, 2.379269546643598]}, "NODE_298": {"DENSITY": [1.0, 0.9999999999933011, 0.9999999573125039, 0.99998706371155, 0.99940174934656, 0.9926561113884753, 0.9658159300102459], "MOMENTUM_X": [1.6161003390780082e-22, 7.922362627664082e-12, 5.042317720132205e-08, 1.5271625565457193e-05, 0.0007052116075438701, 0.008615978874797517, 0.03945486272322526], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999976554, 2.4999998505937677, 2.499954723321113, 2.4979067398271404, 2.4743804578397213, 2.382066398312926]}, "NODE_299": {"DENSITY": [1.0, 0.9999999999996381, 0.9999999957018492, 0.9999977823197141, 0.9998356009497407, 0.9969461809459349, 0.9801702736896082], "MOMENTUM_X": [5.112294787688106e-25, 4.283194833181172e-13, 5.0913679147239974e-09, 2.6328622673841183e-06, 0.00019548373569446069, 0.003626437563766259, 0.023291630636040905], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999998733, 2.4999999849564722, 2.4999922381289035, 2.499424651294081, 2.4893266194740944, 2.431184819370765]}, "NODE_300": {"DENSITY": [1.0, 0.9999999999935074, 0.9999999588795782, 0.9999875429032529, 0.9994216472339804, 0.9928423989700152, 0.9663426547123816], "MOMENTUM_X": [1.6208242592777821e-22, 7.695033457788242e-12, 4.872915147706691e-08, 1.4760576714793218e-05, 0.0006841903506882986, 0.008422496747501607, 0.03893710673678703], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999977276, 2.4999998560785266, 2.4999564004690966, 2.4979763446068923, 2.4750285672546535, 2.3838618053141856]}, "NODE_301": {"DENSITY": [1.0, 0.9999999999938627, 0.999999960974107, 0.9999880486675631, 0.9994387170262945, 0.9929823076484042, 0.966720334856068], "MOMENTUM_X": [1.6151091478923814e-22, 7.284748732095943e-12, 4.633518850941088e-08, 1.419475206809746e-05, 0.0006657209117833634, 0.008278631990191616, 0.03858493208408122], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999785185, 2.4999998634093776, 2.4999581706198204, 2.498036056168075, 2.4755153220153554, 2.385149667787529]}, "NODE_302": {"DENSITY": [1.0, 0.9999999999997731, 0.9999999970106698, 0.9999983082304039, 0.9998636076242341, 0.997273921742153, 0.9812654360702221], "MOMENTUM_X": [4.423243917781958e-25, 2.6918649308277926e-13, 3.5550070681687583e-09, 2.0172127892247835e-06, 0.00016289640143173236, 0.0032503530402327972, 0.02208234217521117], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999992064, 2.4999999895373444, 2.499994078812173, 2.4995226597375284, 2.4904706823562948, 2.434954804144441]}, "NODE_303": {"DENSITY": [1.0, 0.9999999999944942, 0.9999999644113214, 0.9999888239741586, 0.9994622711550369, 0.9931491621187922, 0.9671118619231402], "MOMENTUM_X": [1.6073150387633252e-22, 6.54186432809413e-12, 4.2304920732238637e-08, 1.329498441314525e-05, 0.0006390405793483427, 0.008099382651391925, 0.03821124635204903], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999807305, 2.4999998754396295, 2.4999608841569763, 2.498118450848792, 2.476095778965922, 2.3864842075305943]}, "NODE_304": {"DENSITY": [1.0, 0.9999999999998734, 0.9999999980649225, 0.9999987711079985, 0.9998905900068235, 0.9976173530400768, 0.9824775573930058], "MOMENTUM_X": [1.2725306530484905e-25, 1.3298175793580538e-13, 2.045146312652303e-09, 1.3135816575333282e-06, 0.00011857912320868656, 0.0026182981286294368, 0.019405560270847205], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999995572, 2.4999999932272283, 2.4999956988805883, 2.499617083445587, 2.4916687923042398, 2.4390864519419906]}, "NODE_305": {"DENSITY": [1.0, 0.99999999999545, 0.9999999695170315, 0.9999900026498404, 0.9994989314238021, 0.9934065722778816, 0.9676830201409176], "MOMENTUM_X": [1.4271456840182986e-22, 5.406797498673251e-12, 3.624022607685899e-08, 1.1900498367268895e-05, 0.0005962210962993296, 0.0078088761124472114, 0.03762141259939313], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999984075, 2.4999998933096133, 2.4999650094718175, 2.498246695391667, 2.4769913279563047, 2.3884301613775754]}, "NODE_306": {"DENSITY": [1.0, 0.9999999999024848, 0.9999996496388697, 0.9999346789991123, 0.99807324829453, 0.9842596588508806, 0.9463634977784584], "MOMENTUM_X": [2.880975937375596e-20, 1.2197244782065368e-10, 4.410078263952703e-07, 8.23100084096658e-05, 0.0024137009279436303, 0.019358718652077146, 0.06359673874378782], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999996586966, 2.4999987737363525, 2.499771385481189, 2.4932631870248128, 2.4453197939645377, 2.3167373025255733]}, "NODE_307": {"DENSITY": [1.0, 0.9999999999336497, 0.9999997400035822, 0.9999473131045139, 0.9983183130133966, 0.9853230408734008, 0.9478355973936394], "MOMENTUM_X": [8.635777398399533e-21, 7.638417160340487e-11, 2.9996465250265575e-07, 6.108165833373333e-05, 0.001957006244611035, 0.01702361570292035, 0.05934371619858809], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999767774, 2.4999990900126874, 2.4998156010434243, 2.494118742467753, 2.448955601225517, 2.3213451906802267]}, "NODE_308": {"DENSITY": [1.0, 0.9999999999422873, 0.9999997750842209, 0.9999536571954386, 0.9984716881307407, 0.986136262648948, 0.9491780390921488], "MOMENTUM_X": [8.121764951767505e-21, 6.781521986744122e-11, 2.6379326735315975e-07, 5.43587884678672e-05, 0.0017919446396075568, 0.016153719033386048, 0.05797372271569128], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999798005, 2.499999212794888, 2.49983780426683, 2.4946547961171617, 2.4517687245027844, 2.3258508896141543]}, "NODE_309": {"DENSITY": [1.0, 0.9999999999966392, 0.9999999759858353, 0.9999915864847092, 0.999551909329862, 0.9938026387175484, 0.9685827856762079], "MOMENTUM_X": [1.0507108398098259e-22, 3.979538623302222e-12, 2.846690474071407e-08, 9.997993158075288e-06, 0.0005329661368993095, 0.007345733006122383, 0.03662890456807803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999882383, 2.499999915950426, 2.4999705528355314, 2.49843203028142, 2.478369626348237, 2.3914964123416977]}, "NODE_310": {"DENSITY": [1.0, 0.9999999999446587, 0.999999787629402, 0.99995641043711, 0.9985505431175066, 0.9866246349582365, 0.9501083060735966], "MOMENTUM_X": [8.05276243000679e-21, 6.543731784154913e-11, 2.508260300066252e-07, 5.14460297973899e-05, 0.0017073257875265355, 0.015632867537570608, 0.05702618561648898], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999806305, 2.49999925670301, 2.499847440176498, 2.4949304265878074, 2.4534592775375974, 2.3289804781870838]}, "NODE_311": {"DENSITY": [1.0, 0.9999999999461859, 0.9999997946790334, 0.999957874288592, 0.998593487315096, 0.9869115705915973, 0.9507096926295882], "MOMENTUM_X": [8.056287687804703e-21, 6.37741158907633e-11, 2.43292493283642e-07, 4.990130192973508e-05, 0.0016624240779187518, 0.015340444733201751, 0.056459519058767726], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999811651, 2.499999281376714, 2.49985256342858, 2.4950805399849934, 2.454452893092148, 2.331006372400532]}, "NODE_312": {"DENSITY": [1.0, 0.9999999999487954, 0.9999998038037826, 0.9999593341718269, 0.9986280913738008, 0.9871172214983283, 0.9511296337586859], "MOMENTUM_X": [7.929564889834207e-21, 6.07730536941826e-11, 2.329426211106766e-07, 4.8288848204678324e-05, 0.0016257182190644016, 0.015136180011273858, 0.05609410377616548], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999820784, 2.499999313313327, 2.4998576727894632, 2.4952014984156587, 2.4551650560858316, 2.332422188494572]}, "NODE_313": {"DENSITY": [1.0, 0.9999999999978529, 0.9999999829780856, 0.9999934521829686, 0.9996206650645839, 0.9943647361548287, 0.9699218638020742], "MOMENTUM_X": [4.6583707471256274e-23, 2.551114855308985e-12, 2.026092100002505e-08, 7.815807446579154e-06, 0.0004531805838416315, 0.006706407654524958, 0.03518578041887939], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999924856, 2.4999999404233, 2.499977082724585, 2.4986725771626066, 2.4803265630775133, 2.396061730837306]}, "NODE_314": {"DENSITY": [1.0, 0.9999999999535921, 0.9999998191910004, 0.9999615982145474, 0.9986751090063423, 0.9873532622650538, 0.9515471415819512], "MOMENTUM_X": [1.3550310429045902e-20, 5.51474403919889e-11, 2.149690236155647e-07, 4.568095305547802e-05, 0.001573285149269652, 0.014891743047148232, 0.05572769774828188], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999837573, 2.499999367168577, 2.499865596591065, 2.4953658478096226, 2.4559822913836404, 2.3338290756299696]}, "NODE_315": {"DENSITY": [1.0, 0.9999999999987765, 0.9999999887615726, 0.9999951433443579, 0.9996890512935657, 0.9949714353911754, 0.9714291729477729], "MOMENTUM_X": [1.0994515973703948e-23, 1.2873851517801269e-12, 1.189924206988048e-08, 5.2072327177515536e-06, 0.0003381575237354959, 0.005541886439295384, 0.031592950416586225], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999957176, 2.499999960665504, 2.4999830017448885, 2.4989118252487112, 2.482435329690267, 2.4010969089424847]}, "NODE_316": {"DENSITY": [1.0, 0.9999999999611047, 0.9999998429151163, 0.9999651733638372, 0.9987506507483364, 0.9877231194239873, 0.9521540787289468], "MOMENTUM_X": [2.411445305190597e-20, 4.623604644573363e-11, 1.8683801868823564e-07, 4.146733626655806e-05, 0.0014858339742638712, 0.014484556031824383, 0.055138198991667435], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999998638667, 2.4999994502029637, 2.4998781091037006, 2.4956299146570298, 2.4572628345587573, 2.335872109836875]}, "NODE_317": {"DENSITY": [1.0, 0.999999999257009, 0.9999984033092587, 0.9998008104418715, 0.9958169581266159, 0.9740871281894934, 0.9270622206977507], "MOMENTUM_X": [4.149889842036458e-18, 9.301348930340903e-10, 2.01091943654383e-06, 0.00025078490166862647, 0.005221226976108337, 0.031551720757136296, 0.08506306397203704], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999973995313, 2.4999944115886197, 2.49930291751409, 2.4853905755962393, 2.410394147201447, 2.2528566466896836]}, "NODE_318": {"DENSITY": [1.0, 0.9999999994882157, 0.9999987972251076, 0.99983642838755, 0.9962791408857068, 0.9754728523324132, 0.9284847739507112], "MOMENTUM_X": [1.6813039107072272e-18, 5.89193394382336e-10, 1.3887959698384803e-06, 0.00018977708574406256, 0.004328944301135755, 0.028305754900174982, 0.08042038233212685], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999998208755, 2.4999957902909893, 2.499427547818335, 2.4869991783150924, 2.415047397199222, 2.2570066264939346]}, "NODE_319": {"DENSITY": [1.0, 0.9999999995542996, 0.9999989550975761, 0.9998549799509642, 0.9965810352049865, 0.9765819872164938, 0.9298348862625772], "MOMENTUM_X": [1.6407280126646933e-18, 5.235872037286358e-10, 1.225698038602676e-06, 0.00017009833716866244, 0.004004823296082465, 0.027136105200482513, 0.07908834260803727], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999998440049, 2.49999634284392, 2.4994924686166162, 2.4880525695872464, 2.4188544918539874, 2.2614650688186964]}, "NODE_320": {"DENSITY": [1.0, 0.9999999999707695, 0.9999998740853867, 0.9999701755532692, 0.9988645300659251, 0.9883134557660063, 0.9531304765891373], "MOMENTUM_X": [1.836272147177699e-20, 3.46370699055453e-11, 1.4938300116402982e-07, 3.546606581967689e-05, 0.0013504545289753313, 0.013804608866947527, 0.05409960544229857], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999897693, 2.499999559298889, 2.4998956161379144, 2.496028031318671, 2.45930741120418, 2.3391584083907953]}, "NODE_321": {"DENSITY": [1.0, 0.9999999995723041, 0.9999990116529567, 0.9998631349486949, 0.9967396615576535, 0.9772660677908838, 0.9308010714079566], "MOMENTUM_X": [1.593648474951519e-18, 5.056321321918379e-10, 1.1673518853285991e-06, 0.0001614811900657717, 0.0038352507792306775, 0.026417604458139163, 0.07813656688050448], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999985030645, 2.4999965407875164, 2.4995210071958045, 2.4886061762692524, 2.4212051413834175, 2.264666836695591]}, "NODE_322": {"DENSITY": [1.0, 0.99999999958285, 0.9999990412796506, 0.999867291662975, 0.9968247249278573, 0.9776687798395838, 0.9314327160504444], "MOMENTUM_X": [1.598721461302653e-18, 4.942969973058814e-10, 1.136082029996913e-06, 0.00015714253675921816, 0.0037473927571606887, 0.02601775895151037, 0.07757454054781722], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999985399746, 2.4999966444808215, 2.4995355537382715, 2.4889030739171307, 2.4225897885873198, 2.266764280452819]}, "NODE_323": {"DENSITY": [1.0, 0.9999999999809488, 0.9999999089638117, 0.9999763024614161, 0.9990187047486084, 0.9891834277389933, 0.9546112462057964], "MOMENTUM_X": [7.2480890354442e-21, 2.2656864133024978e-11, 1.0846312802170716e-07, 2.831003796256889e-05, 0.0011722688443705298, 0.012828306799183477, 0.052555848572540365], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999933321, 2.4999996813733594, 2.499917059689409, 2.496567094104918, 2.4623223261634872, 2.3441414755823047]}, "NODE_324": {"DENSITY": [1.0, 0.9999999996005964, 0.9999990779482484, 0.9998711611886376, 0.9968888314106854, 0.9779449547312415, 0.9318637246519762], "MOMENTUM_X": [1.5647297781716702e-18, 4.740056758031082e-10, 1.0948803457837906e-06, 0.00015293597272451637, 0.003681085711491998, 0.02575583223780655, 0.0772337883221205], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999986020867, 2.4999967728207597, 2.4995490952192854, 2.489126818924781, 2.4235395020912542, 2.2681978587291587]}, "NODE_325": {"DENSITY": [1.0, 0.9999999996343397, 0.9999991414380917, 0.9998771942885434, 0.9969736163472442, 0.9782473106434932, 0.9322729757302958], "MOMENTUM_X": [1.5126533157755373e-18, 4.345543446988324e-10, 1.0210710741190943e-06, 0.00014605457277078881, 0.0035885896813579185, 0.025458829675979, 0.07691647037279091], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999998720189, 2.499996995034956, 2.499570208212642, 2.489422724401456, 2.4245788275080424, 2.269558548070791]}, "NODE_326": {"DENSITY": [1.0, 0.9999999999889067, 0.9999999386408138, 0.9999820335785863, 0.9991772872245702, 0.9901494937681614, 0.9562999654305409], "MOMENTUM_X": [1.3084289654719643e-21, 1.1681939818417493e-11, 6.51013252230275e-08, 1.9323777566427944e-05, 0.0008978975720329997, 0.010877461177224105, 0.048130248590420054], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999611737, 2.4999997852428564, 2.4999371180551173, 2.4971215041963832, 2.4656567140566694, 2.3495979856817257]}, "NODE_327": {"DENSITY": [1.0, 0.9999999996891762, 0.999999243316858, 0.99988710823362, 0.9971140413338679, 0.9787259962950092, 0.9328617793867232], "MOMENTUM_X": [1.2470020208685173e-18, 3.6960643528579894e-10, 9.005342190129874e-07, 0.00013443019634652582, 0.0034281466254803914, 0.024950852792193143, 0.07639368212177577], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999989121173, 2.499997351610267, 2.4996049026073806, 2.4899128485529296, 2.4262239088208952, 2.2715121248540853]}, "NODE_328": {"DENSITY": [0.9999999999999998, 0.9999999947217281, 0.9999932318509612, 0.9994377321595278, 0.991599775528512, 0.9599802494541213, 0.9048626945420004], "MOMENTUM_X": [2.001761234865014e-16, 6.6131265038313335e-09, 8.526988379148451e-06, 0.000706987258759335, 0.010428879956302678, 0.04810299171672975, 0.10889647245005722], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.499999981526049, 2.4999763115864053, 2.498032687113178, 2.47072157039222, 2.362475971230532, 2.1806934916089418]}, "NODE_329": {"DENSITY": [0.9999999999999999, 0.9999999963165666, 0.9999948180552956, 0.9995293242641832, 0.9923841373250643, 0.9616119350912242, 0.90611960914804], "MOMENTUM_X": [1.0922947089058285e-16, 4.240971886561242e-09, 5.988881356005794e-06, 0.0005464710679201393, 0.008848642901501957, 0.04396659268999263, 0.10410842753127411], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.499999987107983, 2.4999818632494963, 2.498353024302483, 2.4734351941248027, 2.3677965773196337, 2.183937014921463]}, "NODE_330": {"DENSITY": [0.9999999999999999, 0.9999999967872607, 0.9999954760780522, 0.9995789758121929, 0.9929205571257952, 0.9629794951225883, 0.9073554135907237], "MOMENTUM_X": [1.0472322354734956e-16, 3.7732929720341865e-09, 5.3078263955985045e-06, 0.0004937769911697351, 0.008275800267221155, 0.042555121506196565, 0.10294294634409577], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999887554125, 2.4999841663167968, 2.498526732240615, 2.4753011079159704, 2.3724393466115963, 2.1879391176774408]}, "NODE_331": {"DENSITY": [1.0, 0.9999999997622524, 0.9999993825272269, 0.9999015976441549, 0.9973353464511149, 0.9795177893185342, 0.9338245786736318], "MOMENTUM_X": [6.262131411293069e-19, 2.81906618214096e-10, 7.332769780663671e-07, 0.00011708012493884024, 0.003166894454260229, 0.02405922684453159, 0.07541825029209773], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999991678834, 2.499997838846129, 2.499655609766528, 2.490685391388084, 2.4289459426598943, 2.2747036373463185]}, "NODE_332": {"DENSITY": [0.9999999999999999, 0.9999999969151059, 0.9999957133219304, 0.9996011800235837, 0.9932095702578173, 0.963847487990276, 0.9082748592528476], "MOMENTUM_X": [1.042138528118505e-16, 3.6464063522650282e-09, 5.063428775848555e-06, 0.0004703481501317657, 0.007968903731106279, 0.04166370525950372, 0.10207514923590374], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.49999998920287, 2.499984996666265, 2.4986044170664963, 2.4763068253856857, 2.37539100563798, 2.1909326050890563]}, "NODE_333": {"DENSITY": [0.9999999999999999, 0.9999999969829272, 0.9999958293260112, 0.9996120953469854, 0.9933631764878242, 0.9643615039467738, 0.9088855062845019], "MOMENTUM_X": [1.0410288524872695e-16, 3.574574210883988e-09, 4.9426149443817416e-06, 0.00045908373021087093, 0.007812703155696515, 0.04117151473902002, 0.10157311379679664], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999894402456, 2.4999854026785373, 2.498642606306862, 2.4768414479817173, 2.3771406663890193, 2.1929270050011316]}, "NODE_334": {"DENSITY": [1.0, 0.9999999998418543, 0.9999995442260333, 0.9999201098739924, 0.9976485923567372, 0.980727364412349, 0.9353018982094444], "MOMENTUM_X": [2.6706640723234376e-19, 1.882483428862695e-10, 5.43634767265975e-07, 9.550155388456055e-05, 0.002807113265106252, 0.022728659888798887, 0.07394525200924439], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.49999999944649, 2.49999840479157, 2.4997203964390153, 2.491779180691391, 2.4331071851292143, 2.279593321612251]}, "NODE_335": {"DENSITY": [0.9999999999999999, 0.9999999970941642, 0.9999959645429143, 0.999621466723001, 0.9934712930142604, 0.96470022483949, 0.9092943414536994], "MOMENTUM_X": [1.0084591824470604e-16, 3.4482883698652865e-09, 4.792501800184011e-06, 0.00044909717817167503, 0.007704459111451728, 0.04086972832992108, 0.10129183745697386], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.499999989829575, 2.4999858759353004, 2.4986753934573676, 2.4772177285003174, 2.3782941450046162, 2.1942665206011576]}, "NODE_336": {"DENSITY": [0.9999999999999999, 0.9999999973132045, 0.9999962044648064, 0.9996360221343833, 0.9936085961882174, 0.9650510869276681, 0.9096633324549247], "MOMENTUM_X": [9.168653622786605e-17, 3.193160916259466e-09, 4.515357716548431e-06, 0.0004327147167343125, 0.007559338678954241, 0.04055060009366868, 0.10105671091192002], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999905962156, 2.499986715657811, 2.4987263177586008, 2.477695523778232, 2.3794882251444887, 2.1954759508238917]}, "NODE_337": {"DENSITY": [1.0, 0.9999999999058643, 0.99999968605953, 0.999938021152474, 0.997982241240838, 0.9821061346989374, 0.937004123318541], "MOMENTUM_X": [1.406623028111333e-19, 9.923382854648533e-11, 3.338939971962425e-07, 6.687695406001347e-05, 0.0022099585441806694, 0.019767220086858536, 0.06891400972700042], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999996705253, 2.499998901208538, 2.4997830801904635, 2.4929437293568144, 2.4378064009663327, 2.2847958793469036]}, "NODE_338": {"DENSITY": [0.9999999999999999, 0.9999999976835463, 0.9999966063254273, 0.999660951720308, 0.9938423741144894, 0.9656086950368175, 0.9101835985475355], "MOMENTUM_X": [7.660015994354649e-17, 2.7553995147120334e-09, 4.041409161221467e-06, 0.00040369379583536744, 0.00729747383943611, 0.03999029520008397, 0.10065491749315716], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999918924116, 2.4999881221636673, 2.498813539265682, 2.478509080070424, 2.381384576430642, 2.19717493899786]}, "NODE_339": {"DENSITY": [0.999999999999996, 0.9999999651461646, 0.9999734310346425, 0.9985374387958491, 0.9844029695983159, 0.941721410404596, 0.8802973364591835], "MOMENTUM_X": [4.95237958843636e-15, 4.370254139064943e-08, 3.3471724474911376e-05, 0.001835222202797001, 0.019213590881303144, 0.06894176991182033, 0.13422208953053186], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999986, 2.4999998780115797, 2.4999070102286676, 2.4948851225814286, 2.4458206680163417, 2.301323787158495, 2.1024526344413474]}, "NODE_340": {"DENSITY": [0.9999999999999976, 0.9999999753359988, 0.9999792964088312, 0.9987504405208067, 0.985594445751224, 0.9434591254788672, 0.8813051826947514], "MOMENTUM_X": [2.827145152759477e-15, 2.840275889582562e-08, 2.3946537855589962e-05, 0.0014514978519525172, 0.016686019931936233, 0.06408205888041536, 0.12952245192789655], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999916, 2.4999999136759974, 2.4999275382946253, 2.495629203567326, 2.4498978199050323, 2.30672631010346, 2.104483162021621]}, "NODE_341": {"DENSITY": [1.0, 0.9999999981959945, 0.9999971792713295, 0.9996991448903314, 0.9942282187446231, 0.9665627701135586, 0.9110423515540753], "MOMENTUM_X": [5.39200269360504e-17, 2.1405277571319483e-09, 3.3534478213424136e-06, 0.00035809885366606964, 0.006847065680210007, 0.03895054096169623, 0.09984038225370412], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999936859805, 2.4999901274665675, 2.4989471706613253, 2.4798521707984436, 2.3846297753996115, 2.1999721469262026]}, "NODE_342": {"DENSITY": [0.9999999999999978, 0.9999999784461859, 0.9999818220149654, 0.9988710612966182, 0.9864497996659215, 0.9449829211704212, 0.8823213118002488], "MOMENTUM_X": [2.6496412638874683e-15, 2.5309545640522096e-08, 2.132923383456454e-05, 0.0013235564464563298, 0.015781691816246612, 0.06255722175486728, 0.1286218794564362], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999992, 2.499999924561651, 2.499936377732903, 2.4960509215525883, 2.45285728355668, 2.311824240742226, 2.107699547660172]}, "NODE_343": {"DENSITY": [0.9999999999999978, 0.9999999792922878, 0.9999827428206036, 0.9989261764981704, 0.9869236911089566, 0.9459803997910599, 0.8831184160466499], "MOMENTUM_X": [2.6252252776370266e-15, 2.4473148162514565e-08, 2.038209245534166e-05, 0.0012655341051546964, 0.015284141764976132, 0.061564693881272246, 0.12790955183556793], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999925, 2.4999999275230085, 2.499939600491043, 2.4962436322946755, 2.454498045517288, 2.3151696553583396, 2.110243907143496]}, "NODE_344": {"DENSITY": [0.9999999999999978, 0.9999999796979366, 0.9999831647309041, 0.9989525108965163, 0.9871749486398247, 0.9465767106275149, 0.8836606016508174], "MOMENTUM_X": [2.6153527045356742e-15, 2.4050569264942972e-08, 1.9948888134557752e-05, 0.001238685130984722, 0.015033977014597548, 0.06102184226100126, 0.12751199623326825], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999925, 2.49999992894278, 2.4999410771488937, 2.4963357129857626, 2.4553682899245675, 2.3171727039245433, 2.111983252567822]}, "NODE_345": {"DENSITY": [1.0, 0.999999998774572, 0.9999978722361511, 0.9997502242731171, 0.9948001870801123, 0.9680689057879319, 0.9123622782683488], "MOMENTUM_X": [3.0052368326902775e-17, 1.4600719739809268e-09, 2.541271589069865e-06, 0.0002987303139665064, 0.006196513460336124, 0.03734100094784158, 0.09860166401938752], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999957110024, 2.499992552836133, 2.4991258977970103, 2.481844061199789, 2.3897556581243315, 2.2042537648351423]}, "NODE_346": {"DENSITY": [0.9999999999999979, 0.999999980337494, 0.9999836197752937, 0.9989731467881983, 0.9873404535222724, 0.9469562829905511, 0.8840187926794105], "MOMENTUM_X": [2.558695804138043e-15, 2.333084517418534e-08, 1.9451475284933955e-05, 0.0012172429910590984, 0.014875212129472508, 0.06071159828521461, 0.1273141576902585], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999925, 2.4999999311812293, 2.499942669772855, 2.496407866409879, 2.455941514022979, 2.3184490716732578, 2.113139087677187]}, "NODE_347": {"DENSITY": [0.999999999999998, 0.9999999816431145, 0.9999844441524292, 0.9990046665597295, 0.9875392781440617, 0.9473257043190575, 0.8843239719850663], "MOMENTUM_X": [2.4012629550901587e-15, 2.1817198954008285e-08, 1.8507359623207313e-05, 0.0011824203781480949, 0.014674631791960966, 0.06041207726982315, 0.12717879713273472], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999993, 2.4999999357509015, 2.499945555037202, 2.496518074045239, 2.4566299148930164, 2.3196904551931907, 2.1141264076855313]}, "NODE_348": {"DENSITY": [1.0, 0.9999999992538838, 0.9999985003265719, 0.999801475471803, 0.9954314658989158, 0.9698257648018049, 0.9139004474954117], "MOMENTUM_X": [1.1800445138158733e-17, 7.875224212922966e-10, 1.5996189785251927e-06, 0.00021496160110773347, 0.005019479817631749, 0.03326995586708267, 0.09328204496674349], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999997388593, 2.499994751147057, 2.4993052257575648, 2.484039700917191, 2.3956147154061163, 2.208513828164684]}, "NODE_349": {"DENSITY": [0.9999999999999982, 0.9999999839467013, 0.9999858901245793, 0.999060989762683, 0.987885702371157, 0.9479103427774391, 0.884738471894931], "MOMENTUM_X": [2.0604576732748e-15, 1.9101094442690805e-08, 1.6809796521628136e-05, 0.0011175329845104606, 0.014298180266794157, 0.059870937732127344, 0.12692913938709066], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999994, 2.4999999438134557, 2.4999506158490705, 2.496715012767492, 2.457829296167803, 2.321651883427038, 2.115459448972875]}, "NODE_350": {"DENSITY": [0.9999999999999198, 0.9999997868833933, 0.9999038752823975, 0.9965091086695935, 0.9731788474860303, 0.9194837447575399, 0.8539473067635214], "MOMENTUM_X": [9.832903104785923e-14, 2.674482059924224e-07, 0.00012105144119837898, 0.004366011578726134, 0.0326833898812477, 0.09346554197020043, 0.16017676236686576], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999997193, 2.499999254092004, 2.499663583763196, 2.487804381466583, 2.4073078770663154, 2.2281449753629645, 2.020390923442557]}, "NODE_351": {"DENSITY": [0.9999999999999508, 0.9999998469029255, 0.9999236490137641, 0.9969529836559636, 0.9747937955918767, 0.9211579267562403, 0.8546638024533603], "MOMENTUM_X": [5.704625181652451e-14, 1.7637088133916788e-07, 8.837446883559375e-05, 0.003539183618202527, 0.029035205266730705, 0.08816175732943322, 0.1557599637505584], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999998277, 2.4999994641602976, 2.4997327828859497, 2.4893507919287208, 2.412729934167132, 2.2329505022524816, 2.0210725146567436]}, "NODE_352": {"DENSITY": [0.9999999999999987, 0.9999999872659284, 0.9999880491915374, 0.9991517850089621, 0.9884852242920487, 0.9489421712967137, 0.8854205942978555], "MOMENTUM_X": [1.5308347609653902e-15, 1.5120207599951007e-08, 1.4221113434657948e-05, 0.0010096701813765278, 0.013610686222557067, 0.05879755805643584, 0.1263405096916811], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999956, 2.49999995543075, 2.4999581724647975, 2.4970325089612344, 2.459905625091892, 2.325112300026396, 2.1176403896157274]}, "NODE_353": {"DENSITY": [0.9999999999999549, 0.9999998658845692, 0.9999325155032927, 0.9972165720940532, 0.976012729856716, 0.9226898756593827, 0.855385723196445], "MOMENTUM_X": [5.316623109996281e-14, 1.5747078754768207e-07, 7.917741627079652e-05, 0.0032603004946364874, 0.02776812209108908, 0.08669360294309075, 0.1551789181650399], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999998423, 2.499999530596039, 2.499763813308196, 2.490270993386193, 2.4169118769802056, 2.2379819011560778, 2.0232975603902723]}, "NODE_354": {"DENSITY": [0.9999999999999555, 0.999999871081201, 0.9999358002623489, 0.9973401456163333, 0.9767086843910352, 0.9237278401698638, 0.8560036440646894], "MOMENTUM_X": [5.2703093992039494e-14, 1.523500177708234e-07, 7.580395495283677e-05, 0.003130746430072997, 0.02705062404802758, 0.0857043874887287, 0.15466524828562353], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999844, 2.4999995487842455, 2.4997753091814765, 2.4907024723111353, 2.4193022663185784, 2.2414036520222136, 2.0252289621197814]}, "NODE_355": {"DENSITY": [0.9999999999999557, 0.9999998733336294, 0.9999372201468876, 0.9973980568965934, 0.9770789699411663, 0.9243565446303688, 0.8564416104067938], "MOMENTUM_X": [5.240702251897299e-14, 1.50045896833293e-07, 7.43671818213536e-05, 0.003072513529187133, 0.02669277430240333, 0.08517138456537914, 0.1543981319564369], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999845, 2.4999995566677438, 2.499780278440576, 2.4909046932203065, 2.4205749050917706, 2.243481247340776, 2.026609258013235]}, "NODE_356": {"DENSITY": [0.9999999999999992, 0.9999999911603331, 0.9999907778146975, 0.9992793704670566, 0.9894167413235321, 0.9506176780817123, 0.8864537167948658], "MOMENTUM_X": [8.865718953148997e-16, 1.054284218333333e-08, 1.1027797146817439e-05, 0.0008620255177380618, 0.012567297171003824, 0.05707884097796521, 0.12545270925468477], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999973, 2.4999999690611663, 2.499967722526528, 2.4974787083629715, 2.463133971662862, 2.330730911469872, 2.1209134180566473]}, "NODE_357": {"DENSITY": [0.9999999999999566, 0.9999998766871763, 0.9999386094911025, 0.9974391876272023, 0.9773084808818615, 0.9247454142931691, 0.856729980362685], "MOMENTUM_X": [5.147589913862446e-14, 1.4631296911251624e-07, 7.287822711262473e-05, 0.0030311337799069976, 0.026484817209939285, 0.08489043171041488, 0.15429323061329467], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999998477, 2.4999995684051552, 2.4997851408020044, 2.4910483095742038, 2.4213638131845157, 2.2447692182084356, 2.0275277280188573]}, "NODE_358": {"DENSITY": [0.9999999999999589, 0.9999998837895838, 0.9999411629910345, 0.9974999059768239, 0.9775653934157619, 0.9250988228308334, 0.856959149508451], "MOMENTUM_X": [4.879320052115736e-14, 1.3812633385250377e-07, 6.998717444324813e-05, 0.0029658306110320345, 0.026243072818630298, 0.08465150586210529, 0.1542583310696015], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999856, 2.4999995932635786, 2.4997940774269494, 2.491260307353236, 2.4222463599042623, 2.2459395251135983, 2.0282635583920805]}, "NODE_359": {"DENSITY": [0.9999999999999997, 0.9999999944904003, 0.999993339977763, 0.9994124755515766, 0.9904817257167843, 0.9526114667643647, 0.8876857644040338], "MOMENTUM_X": [3.449588274559705e-16, 5.824245637731986e-09, 7.126948956252368e-06, 0.0006385423231671817, 0.010480483901335172, 0.05199740645625399, 0.12017652891586805], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999987, 2.4999999807164013, 2.4999766900000067, 2.4979441904133872, 2.466812032173811, 2.3371399250016682, 2.123705253235994]}, "NODE_360": {"DENSITY": [0.9999999999999639, 0.9999998969127933, 0.9999458699498184, 0.9976130937189349, 0.9780203957191164, 0.9256498726366923, 0.8572480660518716], "MOMENTUM_X": [4.277833080340719e-14, 1.2270177147822832e-07, 6.449565642364585e-05, 0.0028374529781049866, 0.02577126436459047, 0.0842033350909651, 0.15416641759164176], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999874, 2.4999996391948045, 2.499810550698804, 2.491655521882997, 2.4238088096405055, 2.24775866197207, 2.0291835376189367]}, "NODE_361": {"DENSITY": [0.9999999999999726, 0.999999916670332, 0.9999532629383804, 0.9978058388646825, 0.9788464461782379, 0.9266488077547652, 0.8577084421433656], "MOMENTUM_X": [3.254857357548499e-14, 9.902203570662991e-08, 5.565256820281271e-05, 0.002610295465603573, 0.02484983674211061, 0.08323054741694376, 0.15382863908080008], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999904, 2.4999997083461802, 2.499836424640976, 2.4923286202733883, 2.426646287441222, 2.251051008151601, 2.0306309248789054]}, "NODE_362": {"DENSITY": [0.999999999998616, 0.9999987989068048, 0.9996812579217733, 0.9923792835668639, 0.9571146958456452, 0.8937668220839442, 0.826366513544857], "MOMENTUM_X": [1.7037849234448595e-12, 1.508781450862602e-06, 0.0004010772038701433, 0.009481622646507813, 0.05150856777104912, 0.12068371263894397, 0.1860055283740181], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999951563, 2.499995796177713, 2.4988846171765187, 2.4734311183678597, 2.3528516042397585, 2.1452667054480536, 1.9365424827380993]}, "NODE_363": {"DENSITY": [0.9999999999991325, 0.9999991228613365, 0.9997414932597074, 0.9932007942450789, 0.9590660220806179, 0.8952204176475048, 0.8267872693999593], "MOMENTUM_X": [1.0033030785324715e-12, 1.0111761832613624e-06, 0.0002994331694031757, 0.007887884605506271, 0.04674475805099136, 0.11526211734210519, 0.18201616213064736], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999969638, 2.4999969300165144, 2.499095351684932, 2.476276942204397, 2.35919699420001, 2.148872957407286, 1.9358918015743327]}, "NODE_364": {"DENSITY": [0.9999999999992097, 0.9999992292726847, 0.9997697253703764, 0.993714231903694, 0.9606148799992459, 0.896600436062703, 0.8271746646271819], "MOMENTUM_X": [9.32473316962713e-13, 9.050638151348482e-07, 0.0002701361056768282, 0.007347903397051203, 0.045177034004489976, 0.11401748858055542, 0.1817661606277453], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999972338, 2.4999973024558475, 2.499194140237507, 2.4780639873041768, 2.364445637465157, 2.1533056775561907, 1.9370463264296987]}, "NODE_365": {"DENSITY": [0.9999999999992192, 0.9999992587315168, 0.9997804060204901, 0.9939621147143625, 0.9615277032635129, 0.8975755681500549, 0.8275797246982862], "MOMENTUM_X": [9.239060467458547e-13, 8.761007875551069e-07, 0.00025918643992357463, 0.007089991307896018, 0.044261870483295114, 0.11314077529030991, 0.1814644451657162], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999972675, 2.499997405561661, 2.4992315141769774, 2.478927070700071, 2.3675443800764753, 2.156455817238494, 1.9382868525843904]}, "NODE_366": {"DENSITY": [0.9999999999992234, 0.9999992703175721, 0.9997848037527772, 0.9940771496615023, 0.9620174689765814, 0.8981771517264413, 0.827892702578024], "MOMENTUM_X": [9.19562382614164e-13, 8.64476969667076e-07, 0.0002548008369306632, 0.006976298419150229, 0.04380843553868047, 0.11268099581311036, 0.18133401360101795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999972817, 2.499997446112814, 2.4992469028463185, 2.4793276658106693, 2.369208802040731, 2.158406633261004, 1.939259298749548]}, "NODE_367": {"DENSITY": [0.9999999999999833, 0.9999999408352089, 0.9999630662388264, 0.9980915005779932, 0.9801912936086182, 0.9283067365062752, 0.8583699710687462], "MOMENTUM_X": [1.9894517189981538e-14, 7.064180313784869e-08, 4.420567101071508e-05, 0.0022819765744782963, 0.023378727440837785, 0.0816249858084997, 0.15334419814072653], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999942, 2.49999979292324, 2.4998707345551443, 2.493326454020909, 2.4312697338236275, 2.2565061289795674, 2.0326700607912773]}, "NODE_368": {"DENSITY": [0.9999999999992354, 0.9999992862461949, 0.9997886289787262, 0.9941510797744485, 0.9623054470516458, 0.8985412500068144, 0.828102667819302], "MOMENTUM_X": [9.058927799956239e-13, 8.469900339591215e-07, 0.00025080451029946494, 0.006904956104576514, 0.04356700380460288, 0.11246325481897727, 0.18131796826220783], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999973235, 2.499997501862936, 2.499260288041548, 2.4795850936715045, 2.370187998502088, 2.1595926156860674, 1.9399240415239216]}, "NODE_369": {"DENSITY": [0.9999999999999922, 0.9999999622125012, 0.9999726311230536, 0.9984021358024556, 0.9817817365905249, 0.9303166716470148, 0.859216288810535], "MOMENTUM_X": [8.318638686067823e-15, 4.0019281037088664e-08, 2.9384901193835263e-05, 0.001743204105211742, 0.02006730595893267, 0.07583255391090724, 0.14839518395523102], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999973, 2.499999867743757, 2.4999042102074975, 2.4944112672143244, 2.4366902194154867, 2.2625708718298445, 2.0337281409234933]}, "NODE_370": {"DENSITY": [0.9999999999992707, 0.9999993212393641, 0.9997956856681629, 0.9942542558692513, 0.9626017267156296, 0.8988482207277098, 0.8282545441945806], "MOMENTUM_X": [8.651379323229085e-13, 8.069482363747739e-07, 0.0002429394942017766, 0.006798349671835763, 0.04331636827873429, 0.11231341942707422, 0.18137054148118614], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999997447, 2.499997624338906, 2.4992849807202915, 2.4799442868814108, 2.3711945190235775, 2.1605942424671, 1.9404155624678445]}, "NODE_371": {"DENSITY": [0.9999999999993522, 0.9999993892329377, 0.9998094071053512, 0.994454529468357, 0.9631301403301282, 0.8993120389428693, 0.8284145852054441], "MOMENTUM_X": [7.698083927989927e-13, 7.273485621628071e-07, 0.00022706942830523597, 0.006576637291813382, 0.04280715968198501, 0.11201295911273303, 0.18142101149210277], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999997733, 2.4999978623161945, 2.4993329951207452, 2.480641535387342, 2.3729876968020447, 2.162099604939953, 1.9409313834269069]}, "NODE_372": {"DENSITY": [0.9999999999994957, 0.9999994966264096, 0.9998321939038152, 0.9948161990801666, 0.9641361734511501, 0.9001693979335617, 0.8286361767815488], "MOMENTUM_X": [5.991771365791253e-13, 5.987580734009307e-07, 0.00019991181586984054, 0.006155971688550749, 0.04173114846189179, 0.11125564969391351, 0.18132395668400808], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999982347, 2.4999982381930463, 2.499412732901718, 2.4819009777231966, 2.3764017728770552, 2.1648702348906634, 1.9416261702130406]}, "NODE_373": {"DENSITY": [0.9999999999789098, 0.9999937947026782, 0.9990372095866386, 0.9848054831704571, 0.9358639403304587, 0.8652667623853076, 0.7980370971392821], "MOMENTUM_X": [2.6029935133820036e-11, 7.801084555290533e-06, 0.001209691139234438, 0.018753485420419796, 0.07563522734010088, 0.14943723376994883, 0.2111057053929805], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999926184, 2.4999782815590397, 2.4966321126762447, 2.447217612217192, 2.2819828254395182, 2.0555810740205964, 1.8525778473149193]}, "NODE_374": {"DENSITY": [0.99999999998653, 0.9999953856256741, 0.9992012627642217, 0.9861457314787965, 0.9379660564159192, 0.8663872003486288, 0.798185693555877], "MOMENTUM_X": [1.5561836471703912e-11, 5.3240950984139604e-06, 0.0009257453152759705, 0.016021552856574025, 0.06997481486391101, 0.1442070319154899, 0.20764163390215237], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999952855, 2.4999838497386246, 2.497205571144942, 2.4518093076804823, 2.2884631431433533, 2.057585712400194, 1.8507214384863853]}, "NODE_375": {"DENSITY": [0.9999999999877579, 0.9999959298994654, 0.99928197544684, 0.987029922655846, 0.9397182218844435, 0.8674765003026624, 0.7982277865364021], "MOMENTUM_X": [1.443811703713464e-11, 4.780638878077051e-06, 0.0008420477534985778, 0.015102574627085063, 0.06827067065810483, 0.14331032174656944, 0.20770072217006671], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999957153, 2.4999857546869655, 2.497487862544736, 2.454869750374342, 2.294301901260628, 2.0609954583315053, 1.8508276867796214]}, "NODE_376": {"DENSITY": [0.9999999999879184, 0.9999960830036232, 0.9993133105477332, 0.9874708320764642, 0.9407859149575487, 0.8682941033776421, 0.798407747211415], "MOMENTUM_X": [1.4295972231134038e-11, 4.63038561014044e-06, 0.0008100111150346745, 0.01464996019666608, 0.06724329108751272, 0.1426324120429897, 0.20759995068548914], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999577147, 2.499986290548915, 2.4975974623618535, 2.4563969045199565, 2.2978692660846187, 2.063578023211953, 1.8513727066548682]}, "NODE_377": {"DENSITY": [0.9999999999996831, 0.9999996340643059, 0.9998640525956473, 0.9953835736225367, 0.9658495392624918, 0.9016103082213027, 0.8288895263670577], "MOMENTUM_X": [3.7853822547642024e-13, 4.374940336366901e-07, 0.0001628323546718783, 0.005511035717942144, 0.03992275286409799, 0.10997233380553946, 0.18123588392814108], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999988916, 2.499998719225393, 2.499524219690828, 2.4838776883945384, 2.3822204906405067, 2.169503528537788, 1.9423796307178263]}, "NODE_378": {"DENSITY": [0.999999999987972, 0.9999961380615591, 0.9993257509501599, 0.987675312501748, 0.9413658680824514, 0.8688132274263548, 0.7985890807223843], "MOMENTUM_X": [1.4240473189838381e-11, 4.576258581433916e-06, 0.0007977870798974205, 0.014452602764810278, 0.06673888822626421, 0.14229552576984686, 0.20759641153422628], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999579026, 2.499986483250741, 2.4976409752809405, 2.457105397839647, 2.299810456070242, 2.065227985054607, 1.8519362314375987]}, "NODE_379": {"DENSITY": [0.999999999988124, 0.9999962060764008, 0.9993351948102208, 0.9877948178596972, 0.9416925155248128, 0.8691237363894099, 0.7987212631547786], "MOMENTUM_X": [1.4069207665843226e-11, 4.502938894072825e-06, 0.0007882425319774255, 0.014343374134500868, 0.06649338451990916, 0.1421625021115366, 0.2076554078815234], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999958434, 2.499986721301447, 2.497674006058293, 2.457519431037912, 2.3009053853990857, 2.066223143142808, 1.8523605222084083]}, "NODE_380": {"DENSITY": [0.9999999999998456, 0.9999997602045109, 0.9998964654778948, 0.9960279271665589, 0.9679410672906705, 0.9033983031344713, 0.8293359212296879], "MOMENTUM_X": [1.655836134821392e-13, 2.545417214028553e-07, 0.00011155020222682311, 0.004348385219058818, 0.03522834429776464, 0.10389363314670477, 0.17681912789942364], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999994595, 2.499999160715905, 2.499637646893296, 2.4861205928233097, 2.3891818608714366, 2.174302243950591, 1.9416985083998919]}, "NODE_381": {"DENSITY": [0.9999999999885925, 0.9999963608041192, 0.9993523860328111, 0.9879484569001535, 0.9419979114222327, 0.869364416948315, 0.7988028380701405], "MOMENTUM_X": [1.3531025891349255e-11, 4.327622491921038e-06, 0.0007695071066811607, 0.014194115946532568, 0.06627545367094466, 0.14211139265274356, 0.20777421747957792], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999600737, 2.499987262845689, 2.497734133124686, 2.4580514640871223, 2.301928312133936, 2.066999809090333, 1.8526397196384408]}, "NODE_382": {"DENSITY": [0.9999999999897312, 0.9999966784966838, 0.9993877751848028, 0.9882575696832914, 0.9425394575421469, 0.8697055945171167, 0.7988432485120649], "MOMENTUM_X": [1.2204924040718324e-11, 3.957764818565487e-06, 0.0007290904637023949, 0.013864885452660264, 0.06581199649241523, 0.14198208912331378, 0.20793850289418875], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999640594, 2.4999883747643357, 2.497857911203976, 2.459121770711224, 2.303737793828422, 2.068092084184257, 1.8527984521758705]}, "NODE_383": {"DENSITY": [0.9999999999918311, 0.999997207442299, 0.999450281802479, 0.9888517402844454, 0.9436192592930666, 0.8703384339215219, 0.7988317537670554], "MOMENTUM_X": [9.70916964584713e-12, 3.325517511853806e-06, 0.0006550231661746298, 0.013188656045470037, 0.06472786843258256, 0.14150821542558972, 0.20804831503484605], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999971408, 2.4999902260662075, 2.498076547484032, 2.461179737598912, 2.3073427518436556, 2.0700974863101473, 1.852794021271404]}, "NODE_384": {"DENSITY": [0.999999999714914, 0.9999707916945507, 0.9973671518681547, 0.9722949383022609, 0.9096331624355587, 0.8347386052593728, 0.7693527284254693], "MOMENTUM_X": [3.5266063087637797e-10, 3.6730853763811e-05, 0.003299095936977944, 0.033791291997586584, 0.1042393058019725, 0.17860182172277028, 0.23503089434408564], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999002199, 2.4998977730409413, 2.4907985082152067, 2.40431567725857, 2.1963024279166223, 1.9620037537425794, 1.7697718873966946]}, "NODE_385": {"DENSITY": [0.9999999998144805, 0.9999778419094085, 0.9977618996709808, 0.9742127839975594, 0.9116490063869183, 0.8354704165128343, 0.7692692775643586], "MOMENTUM_X": [2.141351642758793e-10, 2.558428848927313e-05, 0.0025942934129582727, 0.02963800100284012, 0.09807021979293117, 0.17381435503665943, 0.23215301548196057], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999350682, 2.4999224477589777, 2.492175345963014, 2.410754920482334, 2.201966104051349, 1.9622459400256371, 1.7668996716417393]}, "NODE_386": {"DENSITY": [0.9999999998316398, 0.9999803620661498, 0.9979666940750341, 0.9755505177644744, 0.9134070665396227, 0.8361720685405318, 0.7689764659772276], "MOMENTUM_X": [1.9847813795018754e-10, 2.3067211609492937e-05, 0.002382549211322204, 0.02827648335479714, 0.09645777340144446, 0.17332827367234208, 0.23247817314083366], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999994107394, 2.4999312680966908, 2.49289073562631, 2.415342515270588, 2.207700512252531, 1.9643789137764265, 1.7660462482778276]}, "NODE_387": {"DENSITY": [0.9999999998339968, 0.9999810858090038, 0.9980486656871105, 0.9762408581661431, 0.9145183258855218, 0.8367625046501107, 0.768935514250751], "MOMENTUM_X": [1.9640706742632125e-10, 2.23585858073353e-05, 0.002299154655564075, 0.027583725328151596, 0.09544977490220931, 0.17289653411972536, 0.23255144952095785], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999418989, 2.4999338011403163, 2.4931771185922056, 2.417712716696153, 2.211339727945862, 1.966201660958958, 1.7659422097436819]}, "NODE_388": {"DENSITY": [0.99999999999471, 0.9999979188831338, 0.9995429408369855, 0.9898413712096962, 0.9455374707552806, 0.8713970748890265, 0.7986800658397432], "MOMENTUM_X": [6.328343788234876e-12, 2.491954789003113e-06, 0.000547708040245457, 0.012083838468048008, 0.06280794741570805, 0.14068774038007487, 0.2083077242556152], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999981485, 2.4999927161010023, 2.498400681222275, 2.4646100395430346, 2.3137466004865703, 2.073413024360257, 1.8523413044638084]}, "NODE_389": {"DENSITY": [0.9999999998346389, 0.999981326603949, 0.9980804800072379, 0.9765633086787435, 0.9151316844752432, 0.8371585827760459, 0.7689894095396366], "MOMENTUM_X": [1.9576926304747681e-10, 2.212672061839735e-05, 0.002268388551328991, 0.027283141556846968, 0.09496371931599445, 0.1727084156698751, 0.2326546622627402], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999994212363, 2.499934643903677, 2.4932882725043353, 2.4188205617035927, 2.2133541132708987, 1.9674374673381576, 1.7661290027102927]}, "NODE_390": {"DENSITY": [0.9999999998363122, 0.9999815855358558, 0.9981012957326837, 0.9767366583717014, 0.9154661004032025, 0.8373971649278866, 0.7690508564405686], "MOMENTUM_X": [1.939060001954716e-10, 2.1854304312471758e-05, 0.0022482406248276795, 0.027135671037670762, 0.09475015619944596, 0.17266551911362463, 0.23276987228900048], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999427093, 2.4999355501435874, 2.493360993108797, 2.4194162083571302, 2.214455913114423, 1.9681931594377202, 1.7663444107476136]}, "NODE_391": {"DENSITY": [0.9999999999973082, 0.9999985985655101, 0.9996416338986545, 0.9910164451486194, 0.9479504879942522, 0.8727731678943628, 0.7987630931905575], "MOMENTUM_X": [2.8794577725372182e-12, 1.4919492165997439e-06, 0.00038758968687269894, 0.009858580203352594, 0.05685038839412378, 0.1347635687750867, 0.20454965756929364], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999990578, 2.4999950949831313, 2.4987459243196657, 2.4686716616638407, 2.32145226966684, 2.076254359270483, 1.8501087128941622]}, "NODE_392": {"DENSITY": [0.9999999998417511, 0.9999821927417667, 0.9981377291394277, 0.9769364395157462, 0.9157477289472873, 0.8375645456524448, 0.7690739749135398], "MOMENTUM_X": [1.8770338361065143e-10, 2.1175531656868493e-05, 0.002209841951453649, 0.026959613084025065, 0.09460147125136834, 0.17270444687037, 0.232930894251691], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999994461293, 2.499937675313552, 2.493488265794497, 2.4201020432559703, 2.215384483215084, 1.9687338179736555, 1.7664551258980803]}, "NODE_393": {"DENSITY": [0.9999999998557059, 0.9999835177686723, 0.9982173632165364, 0.9773495152261266, 0.9162350163916428, 0.8377695971565243, 0.7690116426172733], "MOMENTUM_X": [1.7152774249840639e-10, 1.9645058940186434e-05, 0.0021206306337986135, 0.02654654611766327, 0.094263593988798, 0.17273832230025293, 0.23317486796726952], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.49999999949497, 2.4999423128029217, 2.4937664619616378, 2.4215193098368806, 2.2169836484762473, 1.9693919403499824, 1.7663230870978965]}, "NODE_394": {"DENSITY": [0.9999999998827813, 0.9999858567991151, 0.9983679697015194, 0.9781974564905408, 0.9172495583800636, 0.8381321384784188, 0.7687880151891003], "MOMENTUM_X": [1.3938561227821578e-10, 1.6857873735258032e-05, 0.0019438556722660206, 0.02561517786695068, 0.09333966879188639, 0.17256185556599893, 0.23344587414857218], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999589734, 2.499950499244366, 2.4942926553507823, 2.4244293425925774, 2.220303306921758, 1.9705277869655804, 1.7657151212931306]}, "NODE_395": {"DENSITY": [0.9999999965713113, 0.999875632555723, 0.99351688652077, 0.9536048990783795, 0.8790981279666109, 0.8028917249767962, 0.74062029004448], "MOMENTUM_X": [4.250100480058524e-09, 0.00015638065654436102, 0.008084871104540495, 0.055660900597782934, 0.135934739771692, 0.20722005982737188, 0.2574723022752581], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999987999589, 2.499564750397615, 2.477387414340148, 2.3411136465563, 2.09901508427157, 1.8670989721189997, 1.6890377861453225]}, "NODE_396": {"DENSITY": [0.9999999977262394, 0.9999035350572028, 0.9943457716543908, 0.9560064219394772, 0.8808035085722901, 0.8032316931657677, 0.7403518563581725], "MOMENTUM_X": [2.6226476595111046e-09, 0.00011144839206532698, 0.006547388784635105, 0.05005282559926692, 0.1297150616185726, 0.2030558155564185, 0.25521558662708804], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999992041838, 2.4996623921661576, 2.4802635972311244, 2.348897392310254, 2.1030125647774542, 1.8656307588806555, 1.6853652976474365]}, "NODE_397": {"DENSITY": [0.9999999979376887, 0.9999139987205939, 0.9948012634030795, 0.9577771413861824, 0.8823479555014586, 0.8034953485771443, 0.7397472257100656], "MOMENTUM_X": [2.4303298779843773e-09, 0.00010100246452483659, 0.0060797811429937065, 0.04831197059758782, 0.12841919152639092, 0.2029832497803048, 0.2557535985612304], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999927819103, 2.4996990113560975, 2.4818502845944614, 2.3548848952777925, 2.1079223745369604, 1.8664051892750466, 1.6836748917546878]}, "NODE_398": {"DENSITY": [0.9999999979681441, 0.9999170810109782, 0.9949900047130144, 0.958723696239257, 0.8833695507753371, 0.8038201110534059, 0.7395003405542057], "MOMENTUM_X": [2.4037625160454046e-09, 9.799382110623439e-05, 0.005889522355752178, 0.04739612762092233, 0.12756888631346866, 0.2028046240787903, 0.2559660444472246], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999992888504, 2.4997097983769203, 2.482507963736141, 2.358091560867124, 2.1111898707859456, 1.8673902822881252, 1.6829972829610924]}, "NODE_399": {"DENSITY": [0.9999999999218077, 0.9999891808118025, 0.9986061612032026, 0.979700196432504, 0.91912163316131, 0.8387047426231997, 0.7682607253710892], "MOMENTUM_X": [9.36455578313525e-11, 1.2973690317800348e-05, 0.0016701349982133355, 0.02398585755197935, 0.09160943604756214, 0.17225405343025108, 0.23398176022519218], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999726327, 2.4999621331021746, 2.495125042599082, 2.4295917513973584, 2.2264163394881504, 1.9722718352686717, 1.7642127675263983]}, "NODE_400": {"DENSITY": [0.9999999979751033, 0.9999180446270561, 0.9950626255210976, 0.9591715592504642, 0.8839458420831782, 0.8040717031057447, 0.7394380716678856], "MOMENTUM_X": [2.3971498018821813e-09, 9.708467385635173e-05, 0.005820646948828126, 0.047000059287772636, 0.1271746056440221, 0.2027661439389753, 0.2561509061327973], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999992912861, 2.4997131707214777, 2.4827610468016723, 2.3596106349871016, 2.113041593389439, 1.8681681545527347, 1.6828580508006323]}, "NODE_401": {"DENSITY": [0.9999999979911687, 0.9999189157605446, 0.9951034889489709, 0.9593966467284039, 0.8842536931506468, 0.8042318921346807, 0.7394393430951252], "MOMENTUM_X": [2.379533482374245e-09, 9.619766937275502e-05, 0.0057832490877160634, 0.04682637681293294, 0.1270247733631208, 0.20280435537573832, 0.25630251382401914], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.49999999296909, 2.4997162193841045, 2.4829034337896054, 2.3603746459144475, 2.1140370144365654, 1.8686766299941588, 1.6829039089189504]}, "NODE_402": {"DENSITY": [0.9999999999585759, 0.9999924990973638, 0.9988728828534531, 0.9815660806125747, 0.9215525166969829, 0.8395660743193583, 0.7680464051730304], "MOMENTUM_X": [4.424280994678489e-11, 8.012215133664556e-06, 0.0012239441335666697, 0.020236320829272677, 0.08480271174314563, 0.16685212114560477, 0.23094760882380724], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999998550155, 2.4999737469470635, 2.4960570593705724, 2.4359515298679115, 2.23362623420311, 1.972834838939843, 1.760722394282701]}, "NODE_403": {"DENSITY": [0.9999999980463801, 0.9999210011701077, 0.9951697620556967, 0.9596234655063589, 0.8844855240131342, 0.8043302348622303, 0.7394176008573131], "MOMENTUM_X": [2.3171331530617995e-09, 9.390966571216902e-05, 0.005716969039859802, 0.04665612641987152, 0.12696457378452833, 0.2029118794659461, 0.2564831066802199], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999931623305, 2.499723517583221, 2.4831343016700664, 2.361143604393804, 2.1147907740065564, 1.8690058906148308, 1.6828913840252664]}, "NODE_404": {"DENSITY": [0.9999999981966613, 0.9999258710771183, 0.9953237481657042, 0.9600986386680729, 0.8848642842743489, 0.8044047779258349, 0.7392727354033956], "MOMENTUM_X": [2.1439538011275437e-09, 8.834612379294556e-05, 0.005549710117560155, 0.04622894611994953, 0.12680146718460475, 0.20307803183730136, 0.2567728522405418], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999936883146, 2.4997405606163494, 2.483670736384361, 2.3627518568166104, 2.1160130103080044, 1.8692701083833607, 1.682539133960568]}, "NODE_405": {"DENSITY": [0.9999999985047338, 0.9999350515272057, 0.995637928098962, 0.9611432805109433, 0.8856816038396524, 0.8044874223240104, 0.7388662943726915], "MOMENTUM_X": [1.7789053560891017e-09, 7.745822722531703e-05, 0.005186827662891826, 0.045145555560212984, 0.12617154484335724, 0.20316888271461478, 0.2571567779032681], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999947665685, 2.499772689381345, 2.484765457640035, 2.366286737815835, 2.1186294392252036, 1.8695544986697121, 1.6814405506227195]}, "NODE_406": {"DENSITY": [0.9999999633055388, 0.9995249968631984, 0.9856723706042039, 0.9281438946134322, 0.8452122579486564, 0.770331649831879, 0.7120724440157525], "MOMENTUM_X": [4.557227498617049e-08, 0.0005968737835183604, 0.017722517932056838, 0.08436297694826764, 0.1691097892571216, 0.2345551609132993, 0.2782323832616235], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999871569391, 2.498337994334052, 2.4502200090955917, 2.2566788578930335, 1.9940903402189645, 1.7729040044010784, 1.6109899513129742]}, "NODE_407": {"DENSITY": [0.999999975186457, 0.9996223199683557, 0.9871742711115384, 0.9307716863104665, 0.8464463400160279, 0.7703142426190261, 0.7116656521158375], "MOMENTUM_X": [2.8607813110026675e-08, 0.00043659162953140477, 0.014803464825361774, 0.0776005712210783, 0.1632684532183815, 0.23113061496884668, 0.2766149382148678], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999913152602, 2.498678404039418, 2.455374558935828, 2.2646902423237423, 1.9958706980279104, 1.7699260703589785, 1.6067329964331902]}, "NODE_408": {"DENSITY": [0.9999999774877028, 0.9996608022445671, 0.9880516915446821, 0.9328148466449343, 0.847586000786589, 0.7701292133984232, 0.7107782454769739], "MOMENTUM_X": [2.652224186896261e-08, 0.00039823849086546745, 0.013915777280684969, 0.07569903550045061, 0.16245006688373234, 0.23142944695285175, 0.2773099650980475], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999212069612, 2.4988130422923125, 2.4584137342962835, 2.271464396626444, 1.9993900586498146, 1.7693940481636203, 1.6043386219077136]}, "NODE_409": {"DENSITY": [0.9999999989731071, 0.9999489271200255, 0.996171627251651, 0.9631158799421211, 0.8872382535321913, 0.804535156587305, 0.7380063730840638], "MOMENTUM_X": [1.2312820676750228e-09, 6.13093894097069e-05, 0.004581430442784555, 0.04310428077655311, 0.12490760075154347, 0.2033429568662498, 0.25789149051987537], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999996405875, 2.4998212504948136, 2.486625942477161, 2.3729678217796684, 2.123579850007495, 1.8697043220258294, 1.6790756037757149]}, "NODE_410": {"DENSITY": [0.9999999778340762, 0.9996724865135528, 0.9884292613223726, 0.9339469422201745, 0.8483960857357502, 0.7701782803751979, 0.7103463475676884], "MOMENTUM_X": [2.6222098112764166e-08, 0.00038688132200905874, 0.013541531928050141, 0.07466393128621457, 0.16186166681249523, 0.23147917812249352, 0.2776244620115433], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999224192684, 2.4988539231784332, 2.4597223888703064, 2.275228626356302, 2.0019156204720043, 1.769558357982338, 1.603175010836999]}, "NODE_411": {"DENSITY": [0.9999999779026632, 0.999675983094547, 0.9885751152573878, 0.9344915901062324, 0.848869849697111, 0.7702818151449908, 0.7101828815995368], "MOMENTUM_X": [2.6159883569339356e-08, 0.0003836460584939278, 0.01340691566316687, 0.07421998935922926, 0.16161389830442752, 0.2315715996813839, 0.2778647901419457], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999226593226, 2.498866157039461, 2.4602280781866193, 2.277043275985099, 2.003404168733705, 1.7698929565148382, 1.602767532847326]}, "NODE_412": {"DENSITY": [0.9999999780366116, 0.9996785518139184, 0.9886465136909691, 0.9347521798831242, 0.8491222730252261, 0.7703671636439133, 0.7101356090730688], "MOMENTUM_X": [2.6015886200793974e-08, 0.0003811446585877426, 0.013346100766900099, 0.07404518540190293, 0.1615458811333007, 0.23167249377785337, 0.2780345948082059], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999923128142, 2.4988751442236867, 2.4604755841015247, 2.2779132823877455, 2.0042065713870025, 1.7701773693482494, 1.6026834226191173]}, "NODE_413": {"DENSITY": [0.9999999994346489, 0.9999634690910598, 0.9968025109688774, 0.9656766442935425, 0.8893509367895387, 0.8048694065710592, 0.7375711140616185], "MOMENTUM_X": [6.03360919838782e-10, 3.915654705813623e-05, 0.0034854703365794783, 0.03756378969061805, 0.117850229419987, 0.198717978288802, 0.2556069580666079], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999998021271, 2.4998721442442573, 2.488824125788985, 2.3814700915253644, 2.128998002316258, 1.8680315636204086, 1.674653614835603]}, "NODE_414": {"DENSITY": [0.9999999785246976, 0.999684709602753, 0.9887487856462738, 0.934977498242399, 0.8492910314731904, 0.7704081799247424, 0.7100820201790261], "MOMENTUM_X": [2.5470412575605062e-08, 0.00037456982939937464, 0.013252268724902712, 0.07391833811668444, 0.16157180471375943, 0.23182177790028127, 0.2782159676195369], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999248364433, 2.498896688294284, 2.460829872342991, 2.2786652647395123, 2.004752649130738, 1.7703397804546672, 1.6025876765826814]}, "NODE_415": {"DENSITY": [0.9999999799427063, 0.9997002233622773, 0.989000760384145, 0.9354449304316567, 0.8495328159557718, 0.7703707165909479, 0.7098749902161592], "MOMENTUM_X": [2.384847296259813e-08, 0.00035712657845479967, 0.012992429420993622, 0.07357228669237656, 0.16158987191745333, 0.23207778946686344, 0.2785212920265212], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999297994737, 2.4989509664793133, 2.4617026248621565, 2.280219311070634, 2.0055292465531767, 1.7702854612716712, 1.602080361219977]}, "NODE_416": {"DENSITY": [0.9999999830299352, 0.9997317363652826, 0.9895600116944288, 0.9365479494903086, 0.8500604902321457, 0.7701915629779784, 0.7093183353024893], "MOMENTUM_X": [2.019987038839363e-08, 0.0003200224451779364, 0.012364226784897462, 0.07253093271515383, 0.16131646667776395, 0.23237916009290438, 0.2789729997244967], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999406047744, 2.4990612244869155, 2.463640218993085, 2.28388009869551, 2.0071893724587713, 1.7698191205224596, 1.6006044596179267]}, "NODE_417": {"DENSITY": [0.9999996513696359, 0.9983879968475361, 0.9715766647604571, 0.8961569935159301, 0.8090015134419144, 0.7375404738833344, 0.683870746010514], "MOMENTUM_X": [4.338404579417014e-07, 0.0020220540502714473, 0.03470242705496436, 0.11869611811644218, 0.2022353417512791, 0.2600871786489269, 0.2971929973832083], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999987797941645, 2.4943635038517042, 2.4019047047711855, 2.1532498607944017, 1.885448978529923, 1.6809074662886034, 1.536008194772515]}, "NODE_418": {"DENSITY": [0.9999997593473147, 0.9986823813116829, 0.973905523783782, 0.8986565590431818, 0.8096870991804431, 0.737221898157653, 0.6833736558511251], "MOMENTUM_X": [2.774375605773688e-07, 0.001523536165559631, 0.029909258732445605, 0.11135629097982855, 0.1971111314562848, 0.25747081931316856, 0.2962258236769902], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999157715787, 2.4953916206499414, 2.409727249772191, 2.160063470376841, 1.8848248697806151, 1.6767018465271049, 1.531370445928158]}, "NODE_419": {"DENSITY": [0.9999997814117852, 0.9988058439864741, 0.975354617133141, 0.9006950150179502, 0.8102907221476419, 0.7366052029969232, 0.6822338033894265], "MOMENTUM_X": [2.575176715551016e-07, 0.0014010036884541796, 0.028482834459623435, 0.1096169662945517, 0.19683811009618254, 0.25807202259126083, 0.297023654485232], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999992349414035, 2.495823212263524, 2.414695508356097, 2.16665282303917, 1.8866362655991538, 1.6749985335705373, 1.5284008776739413]}, "NODE_420": {"DENSITY": [0.9999999880024639, 0.9997828109731703, 0.9905875246372629, 0.9387695509040933, 0.8510832642336486, 0.7697273678813402, 0.7081729407988803], "MOMENTUM_X": [1.4403529323222106e-08, 0.00026093455849858743, 0.011224283058272536, 0.07039637646504249, 0.160687598296861, 0.23295087525128716, 0.27983152933695915], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999958008624, 2.499239934810899, 2.4672031429451513, 2.291253135666879, 2.010352057480944, 1.7685172990917384, 1.5975631698632253]}, "NODE_421": {"DENSITY": [0.9999997848749334, 0.9988446740622811, 0.9760032629618691, 0.9018687875718278, 0.8108031923330661, 0.7363899790849476, 0.6816415924619972], "MOMENTUM_X": [2.5453566134268416e-07, 0.0013635190363771176, 0.027858750976256758, 0.10863351428719864, 0.19655860364697783, 0.25830601326574165, 0.29740491259970653], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999992470624184, 2.4959589627001653, 2.4169220478466613, 2.170463208785296, 1.8881977456826489, 1.6744216547505495, 1.5268403624720133]}, "NODE_422": {"DENSITY": [0.9999997854894899, 0.9988560222015694, 0.9762573183381845, 0.9024446884631242, 0.811128892327143, 0.7363553917692889, 0.6813945636092867], "MOMENTUM_X": [2.540028283568088e-07, 0.0013532234960202444, 0.027633937778596025, 0.10822198334819136, 0.19647955849141843, 0.2584989381798776, 0.29767637551453874], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999249213365, 2.495998636713742, 2.4177947152003596, 2.172338982859436, 1.8892040783476705, 1.6743661422030416, 1.526222438490192]}, "NODE_423": {"DENSITY": [0.9999999931421079, 0.9998393344038957, 0.991874455960166, 0.941789309024338, 0.8526098881100292, 0.7695906875133692, 0.7075907155788072], "MOMENTUM_X": [7.318850573595283e-09, 0.00017285729534804377, 0.00888207359226744, 0.06321190469929358, 0.15399447835540409, 0.22924969111262047, 0.2783009190572222], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999975997378, 2.4994377154502962, 2.4716565161907162, 2.300811181505595, 2.0130295268072267, 1.7649113556224936, 1.5925217160378904]}, "NODE_424": {"DENSITY": [0.9999997864528513, 0.9988626265005106, 0.9763682395147544, 0.9027118669415504, 0.811308826768901, 0.7363761149007371, 0.6813111065070707], "MOMENTUM_X": [2.52993693142249e-07, 0.0013471734642825051, 0.027547754077010128, 0.10807842683019286, 0.19649386337644487, 0.25864040681465744, 0.29784960568002555], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999992525851287, 2.4960217237224644, 2.418175771283077, 2.173213103742202, 1.8897716356598195, 1.6744668197909978, 1.5260441637207536]}, "NODE_425": {"DENSITY": [0.9999997901820774, 0.9988779236446934, 0.9765011673336089, 0.9029080910991462, 0.8114147668355514, 0.7363747515321661, 0.6812374633020173], "MOMENTUM_X": [2.4888480044088217e-07, 0.001331514741256196, 0.02744274427122092, 0.10802103824320226, 0.19658606809288143, 0.25880566299449775, 0.2980181538412951], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999992656374155, 2.4960751956046696, 2.4186318166004503, 2.173857601929494, 1.8901221500211642, 1.6745118523728688, 1.5258970034025658]}, "NODE_426": {"DENSITY": [0.9999998018323243, 0.9989198845497557, 0.9768451289891174, 0.9032956441904659, 0.8115186310316325, 0.7362500405924183, 0.6809870417900091], "MOMENTUM_X": [2.356839659788982e-07, 0.0012854847883704164, 0.027119160467953367, 0.10783593290829588, 0.19675430479228215, 0.2591075612490837, 0.29831433862357837], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999993064132626, 2.4962218756454084, 2.41981091445358, 2.1751214680466315, 1.8904772330874082, 1.674225241760511, 1.5252893872254942]}, "NODE_427": {"DENSITY": [0.9999998289438673, 0.9990127603309612, 0.9776832156490068, 0.9042777738200911, 0.8117171017687547, 0.7358444145946053, 0.6803128142792751], "MOMENTUM_X": [2.0375434162482058e-07, 0.001177416039714285, 0.02622238953334926, 0.10705063954315618, 0.19682436969074535, 0.2595524700265729, 0.2987946898184012], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999994013036306, 2.496546559479462, 2.4226842951355207, 2.1783054621622364, 1.8911193820641607, 1.6731501361292667, 1.5235404501808367]}, "NODE_428": {"DENSITY": [0.9999970732838879, 0.9951849341169204, 0.9491571468200697, 0.8586170034638531, 0.7714133323066695, 0.704890794355363, 0.6561856433483187], "MOMENTUM_X": [3.6492156887534086e-06, 0.0060165225617692655, 0.060882683250400374, 0.15657832037832203, 0.23405680722336564, 0.2834838520385415, 0.31432535299228215], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.49998975652232, 2.483193789678499, 2.32632581055998, 2.0355404595599222, 1.776427853657759, 1.5921174666546216, 1.4643113537834884]}, "NODE_429": {"DENSITY": [0.9999979344940269, 0.9959431420405863, 0.9522318967332167, 0.8606420707650773, 0.7715485885206506, 0.7043315801845117, 0.6556122799784813], "MOMENTUM_X": [2.382236208616418e-06, 0.004687217489076297, 0.05408370536864606, 0.14935209672378014, 0.2298815784903141, 0.2817107477047422, 0.31400023928482845], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499992770741766, 2.48583054618362, 2.336250932735034, 2.039870656014984, 1.7735249586651571, 1.5869934232393292, 1.459471305100204]}, "NODE_430": {"DENSITY": [0.9999998754668368, 0.9991758128258721, 0.9793606439170551, 0.9063914752716428, 0.812077370292502, 0.7349139196562546, 0.6789276653283485], "MOMENTUM_X": [1.4972516854390945e-07, 0.0009905682330688904, 0.024431453802770137, 0.10525568481562739, 0.1968622365563829, 0.26041232480009097, 0.29970868818059815], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999564133978, 2.4971166686412594, 2.428442263338252, 2.1851379828883872, 1.8922227206561961, 1.6706273690021691, 1.5199913646875474]}, "NODE_431": {"DENSITY": [0.9999981198760262, 0.9962825719690502, 0.9542678793508886, 0.8623557972076058, 0.7715518184099603, 0.7033164852514211, 0.6542523780767051], "MOMENTUM_X": [2.215598247668539e-06, 0.004353466309035041, 0.0521740190135338, 0.14809338081713055, 0.23013338895301175, 0.28253355527468244, 0.31485168835493027], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499993419576792, 2.487014321324808, 2.343117419362463, 2.045246392171534, 1.7735566419162518, 1.5842922849075105, 1.4560435145608905]}, "NODE_432": {"DENSITY": [0.9999981501511589, 0.9963936755590054, 0.9552158071082618, 0.8633927360740759, 0.7717249552306329, 0.7028615155463205, 0.6535202214295367], "MOMENTUM_X": [2.1896972221194815e-06, 0.0042475122752426864, 0.05130697404345624, 0.14734009657183877, 0.23015208813324056, 0.2828991068382284, 0.3152650066882185], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499993525539448, 2.4874018886483698, 2.346320695250663, 2.048519377728054, 1.7740914412557829, 1.5830860106419762, 1.4541693364612849]}, "NODE_433": {"DENSITY": [0.999998155132802, 0.9964260074095123, 0.9555945488157819, 0.8639147959999799, 0.7718830587377572, 0.7027064437589935, 0.6532014080512214], "MOMENTUM_X": [2.1855500515910643e-06, 0.0042188467184610945, 0.05099401058083271, 0.1470459087392797, 0.2302307158403137, 0.2831573411132609, 0.3155428652112683], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999935429751474, 2.487514682502178, 2.347602228422498, 2.05017641744141, 1.7745881332443452, 1.582712371732563, 1.4533933918546469]}, "NODE_434": {"DENSITY": [0.9999999260965249, 0.9993676875833553, 0.9815938206819537, 0.9094252000271354, 0.8128783920276883, 0.7344001861314402, 0.6782635327982002], "MOMENTUM_X": [7.893466173427709e-08, 0.0006831088345034902, 0.020126528030490535, 0.0970408740151596, 0.1910299556407743, 0.257702654774601, 0.29892717365513743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999997413378523, 2.497787574849764, 2.4360561948164214, 2.1939162279096607, 1.8917718058871322, 1.665523132762347, 1.514607039125056]}, "NODE_435": {"DENSITY": [0.9999981610533417, 0.9964408274993426, 0.955747005275101, 0.8641544310898148, 0.7719869276721864, 0.7026750940781883, 0.653086613192172], "MOMENTUM_X": [2.1795678654432884e-06, 0.00420633495054543, 0.05088915002528688, 0.1469622715319382, 0.23031279337720695, 0.28331767464049945, 0.31570500969049015], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.49999356369697, 2.4875663735750906, 2.348118618316009, 2.050943576218418, 1.7749241051132103, 1.5826746601624475, 1.4531500586071706]}, "NODE_436": {"DENSITY": [0.999998185389424, 0.9964720049050306, 0.9558924215524996, 0.8643040987656054, 0.7720404312163177, 0.7026453090904186, 0.6529979734545754], "MOMENTUM_X": [2.153269464852117e-06, 0.004176597369763514, 0.05080254385043048, 0.1469784107928473, 0.23044287741226296, 0.2834779916360351, 0.3158500634554203], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999936488729846, 2.487675087515529, 2.3486104650884867, 2.051430549992185, 1.7751201850991636, 1.5826461312505575, 1.452973849303943]}, "NODE_437": {"DENSITY": [0.9999982679098905, 0.9965659972264137, 0.9562786763738348, 0.8645637865218054, 0.7720262530477222, 0.7024585903709645, 0.6527187559622238], "MOMENTUM_X": [2.0609580981862707e-06, 0.00407764605559139, 0.050497670061606534, 0.1469842614038395, 0.23070860936254975, 0.2837867130357291, 0.3161176044757653], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499993937693713, 2.4880028397824465, 2.3499134610588395, 2.0522684895987875, 1.7751381672554627, 1.5822073406615085, 1.4523084091763496]}, "NODE_438": {"DENSITY": [0.9999984748359964, 0.9967958805222479, 0.9573226351495588, 0.8652655128749224, 0.7719041690132632, 0.7018700090112174, 0.6519583722569805], "MOMENTUM_X": [1.8184892309092409e-06, 0.0038155763064095832, 0.049472423038787725, 0.14660204149324985, 0.23105369977848547, 0.2843097462557336, 0.31659475724954783], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999946619329623, 2.488804569801861, 2.353432625096837, 2.054493149382947, 1.7748537863089586, 1.580675239091862, 1.4503776813084992]}, "NODE_439": {"DENSITY": [0.9999784553884069, 0.9874358623611331, 0.9172938199883931, 0.8169161111067824, 0.733230414039695, 0.672606895233155, 0.6288994763339317], "MOMENTUM_X": [2.6899100465000276e-05, 0.015576569385227952, 0.09642988688295379, 0.19560401918966702, 0.26365359350962086, 0.304531396504683, 0.32951367274382504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999245952995914, 2.4563247163965207, 2.2214823086099185, 1.9093448821803203, 1.6695497021789372, 1.5071434432907789, 1.395939024393497]}, "NODE_440": {"DENSITY": [0.9999844195719317, 0.9890682253311579, 0.9207341870056394, 0.8182180636494755, 0.7328696304703466, 0.6718907169627901, 0.6283823127628065], "MOMENTUM_X": [1.7977360237557253e-05, 0.012589470612130168, 0.08806743333292744, 0.18913202313266592, 0.26057092386956243, 0.30363103642784045, 0.32988727468854834], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999454691703336, 2.4619422792497603, 2.231807914315984, 1.9103987833906233, 1.6647084949259763, 1.5014114813048385, 1.391080555518958]}, "NODE_441": {"DENSITY": [0.9999988558362876, 0.9972384378025023, 0.9596171781444136, 0.866886891405916, 0.7715655939751631, 0.7005344833220407, 0.65037565836852], "MOMENTUM_X": [1.3781400548668618e-06, 0.003316593151507412, 0.04717952112150323, 0.14552681835260348, 0.23167419256450014, 0.285343226515676, 0.3175034017097322], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999959954308713, 2.490348663341833, 2.3611765177638087, 2.059579776993244, 1.7739464510481664, 1.5771884976898094, 1.446464974985131]}, "NODE_442": {"DENSITY": [0.9999857729339169, 0.9898526800638122, 0.9231481874950626, 0.8193271179040267, 0.7322640041892633, 0.6705144912971486, 0.6268097865087724], "MOMENTUM_X": [1.6769063166335252e-05, 0.011832960199838123, 0.08598318090648957, 0.1885654483011196, 0.2612626544715585, 0.30459109991188155, 0.33073501879681827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499950205837573, 2.464662932849272, 2.239757724155647, 1.9137732651695396, 1.6630719884060887, 1.497892931095723, 1.3872938531025867]}, "NODE_443": {"DENSITY": [0.9999860024099442, 0.9901209672518066, 0.924315964594446, 0.8200662160308839, 0.7320964854836115, 0.6698547368477089, 0.625979705441218], "MOMENTUM_X": [1.6574399386935762e-05, 0.011582772741845545, 0.08500137506037382, 0.18816449703335794, 0.26152673501150575, 0.3050364911562858, 0.33116108638499725], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999510089875283, 2.465593925714914, 2.2436150798353465, 1.916041142133454, 1.6626445446946236, 1.4961808107960979, 1.385187254853081]}, "NODE_444": {"DENSITY": [0.9999860385175245, 0.9902000061884996, 0.9247930758396268, 0.8204569674982671, 0.7320916757252902, 0.6696052289149915, 0.6256250181106706], "MOMENTUM_X": [1.6545373059529406e-05, 0.01151496391402465, 0.08465011170393283, 0.18804421141862657, 0.26172791608721063, 0.30532749791443725, 0.33143651112279643], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999511353614956, 2.465868272426517, 2.245194657869308, 1.9172521416625348, 1.6626777981339804, 1.4955669632090682, 1.3843054037081874]}, "NODE_445": {"DENSITY": [0.9999992945551026, 0.9977966002118067, 0.9628770774605148, 0.8694237362324163, 0.7716339192055084, 0.6997488167436343, 0.6496838616626055], "MOMENTUM_X": [7.548552836679926e-07, 0.002390370343306719, 0.04042758247046408, 0.13719007164649646, 0.22702759204248646, 0.2836459765996315, 0.3174642900396618], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999975309440887, 2.4922958624275107, 2.371965193095386, 2.065625699796304, 1.7705180652720163, 1.571051200307448, 1.4409740315930868]}, "NODE_446": {"DENSITY": [0.9999860692380678, 0.9902292637368065, 0.9249762245285376, 0.820640329505987, 0.7321275037189572, 0.6695407803324427, 0.6255129323642948], "MOMENTUM_X": [1.651592085791271e-05, 0.011492674993823258, 0.0845447680171241, 0.1880346739003264, 0.261854794963295, 0.30549105347055644, 0.3315919326758587], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999512428809574, 2.4659698013626574, 2.245802737283187, 1.9178291887462442, 1.6628178637473319, 1.4954348782908917, 1.3840261514373025]}, "NODE_447": {"DENSITY": [0.9999862024132034, 0.9902800532439903, 0.9251109772019976, 0.8207398134338255, 0.7321443152248601, 0.6694995487900597, 0.6254343000862397], "MOMENTUM_X": [1.6375963696265995e-05, 0.011450134548641248, 0.0845034899915379, 0.18810756261729097, 0.26199517084803936, 0.30563489155442103, 0.3317185762163494], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499951708983322, 2.4661458872239184, 2.2462509780188946, 1.918156772679317, 1.6629102807159943, 1.495366869139696, 1.3838392010987768]}, "NODE_448": {"DENSITY": [0.9999866984962009, 0.990449505235167, 0.9254608975294146, 0.8208604514673647, 0.7320431822606579, 0.6692766294169327, 0.6251451901025231], "MOMENTUM_X": [1.5831098799164147e-05, 0.011284583095442006, 0.08432004686105758, 0.18827735374999563, 0.26230118724146706, 0.30592118090127146, 0.33194720312039666], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499953445235169, 2.4667332769100425, 2.247407453547407, 1.9185637561597066, 1.6626974435856965, 1.4948411950185918, 1.383147611965344]}, "NODE_449": {"DENSITY": [0.9999880531738449, 0.9909156305880693, 0.9265226968213496, 0.8211885262258468, 0.7316433491463187, 0.6685514357688198, 0.6243249692630176], "MOMENTUM_X": [1.4256180869711988e-05, 0.010772727981580691, 0.08343210223277052, 0.18832909347147264, 0.2628258993524495, 0.3064656152038215, 0.33239513879235044], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999581865070226, 2.4683494074022314, 2.250903055645875, 1.9196099053919138, 1.6616667912788978, 1.4929946606395699, 1.3811118718828288]}, "NODE_450": {"DENSITY": [0.9998624393555277, 0.9714450181755598, 0.8762658287606879, 0.7725536588686917, 0.6950940977308149, 0.6410905022561129, 0.6026971645504914], "MOMENTUM_X": [0.00017184413056882001, 0.034894253358828425, 0.1394185159315425, 0.23358439694381639, 0.29044347857219577, 0.3232525633472952, 0.343125867571659], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4995185919172576, 2.4015196291506054, 2.090781316085553, 1.7802710816109393, 1.5665537847154465, 1.4263667784310474, 1.3310174566980946]}, "NODE_451": {"DENSITY": [0.999990754849234, 0.9919143548740236, 0.9291142477072009, 0.822016676722435, 0.7306403900820628, 0.6668756169274647, 0.6225791573361374], "MOMENTUM_X": [1.1156441261962255e-05, 0.00967925012069336, 0.08112872520234075, 0.1881638492186085, 0.2638738172366962, 0.30756362442265045, 0.33324213017917825], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499967642208227, 2.4718152101971596, 2.2594331585595615, 1.9221572861014091, 1.6590089453086962, 1.4887885464248738, 1.376953935385855]}, "NODE_452": {"DENSITY": [0.9998977505532542, 0.9743372996477505, 0.8794806191823062, 0.7730071694090501, 0.6943012749317508, 0.6401709769862515, 0.6019580153029008], "MOMENTUM_X": [0.00011799919557663829, 0.029318127017330137, 0.13044392398972257, 0.22834133861079878, 0.28852288802611853, 0.32318081174277064, 0.34402994989180713], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499642153572976, 2.4112466940180357, 2.0991352689294884, 1.77782665001596, 1.5602160727508492, 1.4202874023065961, 1.3262244437290318]}, "NODE_453": {"DENSITY": [0.999906220203374, 0.9758337875003206, 0.8818517910196435, 0.7733235595249089, 0.6931195236107315, 0.6384965496881578, 0.6002886588959215], "MOMENTUM_X": [0.00011051367553300965, 0.027929798004192277, 0.1286776458579291, 0.2285224952815231, 0.28953535251832113, 0.32420874740973415, 0.344881686940893], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499671793606412, 2.4163783883750902, 2.1067057957928434, 1.778800655098629, 1.5571299010123263, 1.416123935666206, 1.322181649708048]}, "NODE_454": {"DENSITY": [0.9999077101236437, 0.9763696463236445, 0.8830448906557842, 0.7736580736870228, 0.6926376775953065, 0.6376571035953632, 0.5993325611189306], "MOMENTUM_X": [0.00010926592149550725, 0.02745034070562552, 0.12780852239741658, 0.22850205630921608, 0.2899677242562749, 0.3246789484596914, 0.3452667126352371], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4996770077007144, 2.4182180429539892, 2.1105309451286147, 1.7798179451230982, 1.5558796588613129, 1.4140227508395384, 1.3199011266291876]}, "NODE_455": {"DENSITY": [0.9999079401581838, 0.9765313622156535, 0.8835436215849256, 0.773868721010264, 0.6924896864703728, 0.6373229344689082, 0.598910578237016], "MOMENTUM_X": [0.00010908684405936168, 0.027318994099028222, 0.12751057507435393, 0.22856282227504607, 0.29024322443131856, 0.3249644028152814, 0.34549719320815697], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4996778127248307, 2.4187735891750646, 2.1121360524637596, 1.7804697072206797, 1.5555380552104017, 1.413237357535013, 1.3189431969913359]}, "NODE_456": {"DENSITY": [0.9999940679150366, 0.9932761041870095, 0.9330780012378709, 0.8236482939699064, 0.7300662110619248, 0.665917191971151, 0.6219037376631784], "MOMENTUM_X": [6.3655841837133224e-06, 0.007318248583449679, 0.07211401074388818, 0.1806254370312238, 0.26058352075670543, 0.30687808344351514, 0.3339409016944422], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499979237784037, 2.476535442328785, 2.271817496233465, 1.9240911541578736, 1.6531215004004807, 1.4820538065481013, 1.3715562412696432]}, "NODE_457": {"DENSITY": [0.9999080731345766, 0.97658252387194, 0.8837317318839623, 0.7739802644859419, 0.6924686058909967, 0.6372136493862346, 0.5987296566559988], "MOMENTUM_X": [0.00010896937762010346, 0.02728444008118672, 0.12743163591553605, 0.22862150127481862, 0.2903883982731099, 0.32510455092206936, 0.34559552093451945], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4996782780780573, 2.4189493783004665, 2.1127450014402034, 1.7808232760021665, 1.5555321184412625, 1.4130417809916636, 1.3186302291374357]}, "NODE_458": {"DENSITY": [0.9999086678376365, 0.9766472343700099, 0.8838389594639694, 0.774037274271566, 0.6924598372659235, 0.6371430326330055, 0.5985983383573497], "MOMENTUM_X": [0.00010837011089094388, 0.027243101865941886, 0.12744333364187072, 0.22872320856837233, 0.29051641177422266, 0.32521139817127154, 0.3456657971884073], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4996803592457657, 2.419171282752568, 2.1130972782644295, 1.781024054423768, 1.5555650461060913, 1.4129510337563136, 1.3184280664025083]}, "NODE_459": {"DENSITY": [0.9999111407575461, 0.9768853733998344, 0.8840836050645482, 0.7740399966299725, 0.6923004084854883, 0.636884154982921, 0.5982826293413653], "MOMENTUM_X": [0.00010572551614025587, 0.02704300917907965, 0.12744362961594963, 0.2289916070719311, 0.290811597387925, 0.32544500308988006, 0.345832973856498], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4996890132740877, 2.419986969070843, 2.11389315872152, 1.7810937718308455, 1.5552189311938207, 1.4123820458740153, 1.3177254395421358]}, "NODE_460": {"DENSITY": [0.9999186011779723, 0.9776394498319212, 0.8849277638560004, 0.7739812862333256, 0.6916820076971301, 0.6360622671627432, 0.5974395888209199], "MOMENTUM_X": [9.715380612267097e-05, 0.026272220653222017, 0.12695985679044103, 0.22939965443715513, 0.2914170882585359, 0.32596352545099305, 0.34624066335853454], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499715121307016, 2.4225697166758473, 2.1165990441129647, 1.7810133615536792, 1.5536521399003234, 1.410344668043829, 1.3156506799778211]}, "NODE_461": {"DENSITY": [0.9999349250141312, 0.9794712064833948, 0.8872640177260218, 0.7738587358178104, 0.6900912114188759, 0.6341117763850408, 0.5955765893793378], "MOMENTUM_X": [7.86277659983854e-05, 0.02437465559951095, 0.1253203985544854, 0.23010524928836648, 0.2927078132654203, 0.32702748868748877, 0.3469824067763183], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499772248443066, 2.4288527638426096, 2.1240479094494535, 1.7807846679901922, 1.549599548472839, 1.405633149095034, 1.311345029471984]}, "NODE_462": {"DENSITY": [0.9992495417208282, 0.943258224024588, 0.8275724160145195, 0.7268264812812728, 0.6572428657994784, 0.609707363398019, 0.5762252337883913], "MOMENTUM_X": [0.0009371185390211049, 0.06770322052887558, 0.1862986757982543, 0.268757802798071, 0.31397840695729046, 0.3392136562433154, 0.3544002792334274], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4973748774137317, 2.3068884683218855, 1.941741076296907, 1.6527486351268286, 1.4684441802059434, 1.3497321816430774, 1.2691551666407284]}, "NODE_463": {"DENSITY": [0.9994242542300871, 0.9474276464823128, 0.8299750893031052, 0.7264482881347292, 0.6562038386578551, 0.6089944916750627, 0.5759535486644846], "MOMENTUM_X": [0.0006643947075487691, 0.05912758266401874, 0.17791236106643282, 0.2650809788399694, 0.31331420985816866, 0.340184993825766, 0.3562391989846671], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.497985668501821, 2.3202739146084497, 1.946027926891266, 1.64713432804678, 1.4611076637174818, 1.3436401456404077, 1.2647028517587446]}, "NODE_464": {"DENSITY": [0.9994688119226722, 0.9497467345541598, 0.8317942453345059, 0.7258852781697633, 0.6544769775476791, 0.6069582471467009, 0.5739300069477222], "MOMENTUM_X": [0.0006255784463454903, 0.0571317168916813, 0.17694558801031643, 0.2659149948202378, 0.3145003677953417, 0.3411455274998089, 0.35688513333449606], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4981415197017816, 2.328069733947789, 1.9516398067078007, 1.6456793155561262, 1.4568252486818043, 1.3389624431335578, 1.2604207223854655]}, "NODE_465": {"DENSITY": [0.9994769408307163, 0.950615349340243, 0.832766056907919, 0.7257822432230966, 0.6537327390424782, 0.6060156222036073, 0.5730040711449974], "MOMENTUM_X": [0.0006188926766793471, 0.056411633365346284, 0.17642583403640122, 0.266222859925681, 0.3150226300846058, 0.3416193632933561, 0.3572868583060426], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.498169953434251, 2.330995572723809, 1.9546528350705314, 1.6454521107179476, 1.4549303057931844, 1.3365931217350318, 1.2580566626602994]}, "NODE_466": {"DENSITY": [0.99947819973489, 0.9508853384220319, 0.8331872764742122, 0.7258060473851699, 0.6534801002628003, 0.6056513171174518, 0.5725834660448943], "MOMENTUM_X": [0.000617945353585432, 0.05621280618773794, 0.1762810806273, 0.2664309262930416, 0.3153277980952307, 0.34189113936176346, 0.3574909776575957], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4981743569241806, 2.3319062388511527, 1.9559686443268993, 1.645568925119374, 1.454323122581177, 1.3357112888968714, 1.2570746261530539]}, "NODE_467": {"DENSITY": [0.9999564293381337, 0.9821977965881775, 0.8912117215997181, 0.774381019652691, 0.6890152477154378, 0.6330682197948204, 0.5949522315142796], "MOMENTUM_X": [4.690430641181362e-05, 0.01938273218767571, 0.11505915697151496, 0.22407581228834872, 0.29084110564855903, 0.3273487011777239, 0.34841844030634683], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.49984750678942, 2.438155733379966, 2.1350264297780774, 1.7781584209976888, 1.5419407349745193, 1.3986833805570016, 1.3062112377999409]}, "NODE_468": {"DENSITY": [0.9994786780054495, 0.9509635063475567, 0.8333496846405474, 0.7258498829591671, 0.6534372393997383, 0.6055894168761251, 0.5725132475824987], "MOMENTUM_X": [0.0006175793650978073, 0.05616679293672627, 0.17625791860344164, 0.2665387675339071, 0.315479004273589, 0.34204349086653907, 0.35763135521026146], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.498176029706086, 2.332170266151741, 1.956481656681434, 1.6457235684286777, 1.454229773557043, 1.335501231256882, 1.2567844249837223]}, "NODE_469": {"DENSITY": [0.9994807527523399, 0.9510273274238921, 0.8334263136762119, 0.7258809764361331, 0.6534408420493403, 0.6055962670220756, 0.5724981065294148], "MOMENTUM_X": [0.0006156280810308053, 0.056147105655791285, 0.17631015111065101, 0.2666438218203342, 0.3155962887137481, 0.34216773684237384, 0.3577450757723231], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4981832859170137, 2.332385667936846, 1.9567348074548743, 1.6458448343359555, 1.454241424073622, 1.3354219184514315, 1.2566108764344446]}, "NODE_470": {"DENSITY": [0.9994906102844511, 0.9512777810427572, 0.8335406136653862, 0.725807483363011, 0.6532764393040814, 0.6053930177655282, 0.5722395299947339], "MOMENTUM_X": [0.0006055141319536949, 0.05600238362297305, 0.17647860462412163, 0.26693718805318667, 0.3158577688427053, 0.34237830745260517, 0.35789062164488833], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4982177621263886, 2.333226995137119, 1.9571207722357422, 1.645709655588584, 1.4538403969990277, 1.334853445085535, 1.2559260180311955]}, "NODE_471": {"DENSITY": [0.9995241764831173, 0.9522217838856627, 0.8339865433382587, 0.7254173075892729, 0.6525218387939978, 0.6045352882121329, 0.571360598648708], "MOMENTUM_X": [0.0005676507546831921, 0.055168448796029376, 0.1765219610178779, 0.26756125798359426, 0.3164666698210556, 0.34284892179596127, 0.35822477064336933], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4983351610905604, 2.336391851654707, 1.958539406110703, 1.6447384051250193, 1.4519410572171894, 1.3327317625249182, 1.2538576858621764]}, "NODE_472": {"DENSITY": [0.9996062649903718, 0.9548897420376943, 0.835474726400031, 0.7243302532105838, 0.6504406207587258, 0.6023507813807714, 0.5693619842276231], "MOMENTUM_X": [0.00047605243512320133, 0.052687170013255166, 0.17608065399913053, 0.26891687352312277, 0.31781352042922106, 0.34377649239118346, 0.3587831678832433], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.498622297794904, 2.345350621939894, 1.963154947024871, 1.641963236544477, 1.4468597965829078, 1.3276878198944644, 1.249468865256622]}, "NODE_473": {"DENSITY": [0.9965725625436447, 0.9003884609697678, 0.7736371796881409, 0.6809869277954935, 0.6208511157834691, 0.5804575921660743, 0.5515583107977824], "MOMENTUM_X": [0.004269010866379508, 0.11478003390759482, 0.23333423227519928, 0.3000774969389737, 0.33458405127671387, 0.3535569886186179, 0.36462062877730816], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.488032173710965, 2.167529843793919, 1.7842304021103783, 1.5300009895193096, 1.3759936578624896, 1.277666293653833, 1.2107497420813258]}, "NODE_474": {"DENSITY": [0.9972705175355092, 0.9051978999333412, 0.7747099147775238, 0.6797703925172531, 0.6192384776736699, 0.5790910828231413, 0.5507950669441528], "MOMENTUM_X": [0.003146699365895278, 0.10392650604976703, 0.22648119838768713, 0.2980954783860908, 0.3349717073348879, 0.35505292105933145, 0.36680571885118507], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.490462860671337, 2.181598280170722, 1.7829721104617506, 1.5218302583107237, 1.3680152962993306, 1.2715916839645198, 1.2065269916183492]}, "NODE_475": {"DENSITY": [0.997462091984665, 0.9080590046481359, 0.7755298322179197, 0.6783567109134071, 0.6171424903008638, 0.5770844964003117, 0.5490253282822448], "MOMENTUM_X": [0.0029836578638928, 0.10179700246624687, 0.22658929382790063, 0.2994149001214574, 0.3362548610449874, 0.35608302862574676, 0.36757163704176465], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.491131520715192, 2.190928501515286, 1.7854733226894355, 1.5182170247946625, 1.3628119617575556, 1.2666020926452133, 1.2021987741097382]}, "NODE_476": {"DENSITY": [0.997498375095825, 0.9091728145629371, 0.776049816581284, 0.6778370122363125, 0.6161612456000981, 0.5759445598923207, 0.5478641553466158], "MOMENTUM_X": [0.002954646450602551, 0.1009889654262045, 0.22652341401589626, 0.29993244344471853, 0.33677241115968604, 0.35644720383407646, 0.36779271697125054], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4912581795511346, 2.1945705889473888, 1.7870447527968312, 1.5169087273744242, 1.3604447345890205, 1.2640400872490494, 1.1997471935950788]}, "NODE_477": {"DENSITY": [0.9997238465697336, 0.9592857550826019, 0.8385339297827687, 0.7237490792775438, 0.6490120053901705, 0.6012823362859877, 0.5688217523174934], "MOMENTUM_X": [0.00029833883039160085, 0.04407646127947763, 0.16612307793155456, 0.2648248455190276, 0.3173843284678075, 0.3450971710593426, 0.3609656405172974], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4990336168319818, 2.359831500359968, 1.9694618329975597, 1.6351985218091072, 1.4381383323933155, 1.3208486211076487, 1.2447492553094577]}, "NODE_478": {"DENSITY": [0.9975041007256311, 0.9095252193558223, 0.7762878182386356, 0.6776951150229057, 0.6158294739111834, 0.5755612554781587, 0.5475185125894383], "MOMENTUM_X": [0.00295052814691702, 0.10076419323398914, 0.22655138824206475, 0.3002203978456146, 0.3370573525862552, 0.35667885483449036, 0.3680024428979925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.491278167923822, 2.195724901322313, 1.7877703026402587, 1.5165935685083873, 1.359666110309418, 1.2631082188467966, 1.1987790228357003]}, "NODE_479": {"DENSITY": [0.9975055428941699, 0.9096215742988738, 0.7763794179334608, 0.677674763870612, 0.6157222951635544, 0.5753857020280329, 0.5473243578952003], "MOMENTUM_X": [0.002949650507460627, 0.1007109336296641, 0.22656922653309924, 0.30034154837717586, 0.33716420311496964, 0.35673621940653194, 0.3680339315399347], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.491283201382565, 2.196040897649094, 1.788052338127704, 1.5165944537901996, 1.3595106019054881, 1.2628613327184173, 1.198459141346836]}, "NODE_480": {"DENSITY": [0.9975107426978306, 0.9096702434283876, 0.7764206018789919, 0.6776757999285222, 0.6156417207738955, 0.57522033838817, 0.5471711388388756], "MOMENTUM_X": [0.0029452391331620683, 0.10071860033732352, 0.22662336150804763, 0.3004239379400475, 0.3372105457707237, 0.3567309064749355, 0.3680365556675055], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4913013406401654, 2.1962027281188337, 1.788194979481975, 1.5166700512826758, 1.3594913578961343, 1.262736468031006, 1.1982454208252096]}, "NODE_481": {"DENSITY": [0.9975402808529883, 0.9098531343798021, 0.776423445748273, 0.6775429683760698, 0.6153661474502895, 0.5748391611915951, 0.5468038460958481], "MOMENTUM_X": [0.0029169797284198285, 0.1007207466677086, 0.2268749494456419, 0.30067174883068126, 0.3373506972559243, 0.3567712410172728, 0.3680555109172762], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4914043900267373, 2.1968048159191387, 1.7882631359532384, 1.516442248504275, 1.3590516297338788, 1.2621259794380355, 1.1975344228275422]}, "NODE_482": {"DENSITY": [0.9976580355750704, 0.9107199638570722, 0.7764135580098365, 0.6768928120005612, 0.6144582553041231, 0.5739114127460432, 0.5459890146423076], "MOMENTUM_X": [0.0027883553034184, 0.10018963944716833, 0.22736690959735997, 0.30135039135324715, 0.3378581230447121, 0.35713663516719313, 0.3683678054983987], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4918152333928103, 2.199625157818465, 1.7883466982526863, 1.5148854616039775, 1.3569769803566356, 1.2599871907769566, 1.195530818294511]}, "NODE_483": {"DENSITY": [0.997989413258878, 0.9137024574779186, 0.7766221881238105, 0.6749207096047061, 0.6119761396521538, 0.5716152218008932, 0.5440083498960638], "MOMENTUM_X": [0.0024295137949637046, 0.09799247486919863, 0.22825610613937908, 0.3030278939139773, 0.3390768341615205, 0.35788183197349127, 0.3687736564410516], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.49297186195634, 2.209321005643092, 1.7891710842355684, 1.510058655990418, 1.3511931956072996, 1.254763259066042, 1.1911433916689083]}, "NODE_484": {"DENSITY": [0.9871964551713062, 0.842689455400606, 0.7163988929934394, 0.6348988736136215, 0.5835804353914578, 0.55014325688579, 0.5269682493821882], "MOMENTUM_X": [0.015808142307912332, 0.1719447219075646, 0.2764820535424633, 0.3263849277213209, 0.35075521681654703, 0.3643996386299926, 0.3728265832075334], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.455544102904137, 1.9880933138048735, 1.62568599805013, 1.413742575088132, 1.2886758248981796, 1.2091825328612584, 1.1551121461580274]}, "NODE_485": {"DENSITY": [0.9893475859387129, 0.847114977663992, 0.7160950011622419, 0.6334077739620885, 0.5826393819778164, 0.5496260473987756, 0.5264921400491274], "MOMENTUM_X": [0.012221728937151418, 0.16097721187686223, 0.2722084569066311, 0.32646264897569005, 0.35293883381599034, 0.367364136537218, 0.375859154954139], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4629391741361304, 1.9987232444243093, 1.6191321025870342, 1.4038722780694612, 1.280782630833399, 1.203695455618312, 1.1514444729629503]}, "NODE_486": {"DENSITY": [0.9899939423815685, 0.8497953592020189, 0.7155811063554451, 0.6310726831997501, 0.5797846938843035, 0.5468629470120367, 0.5242253440260943], "MOMENTUM_X": [0.011695341337947182, 0.15954987006992233, 0.27325609184879635, 0.3279392008423023, 0.35390616894836235, 0.36786887533322404, 0.37619965756480367], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4651796713138485, 2.0071289711431493, 1.6179280373132716, 1.3984402441002168, 1.2747887618747755, 1.1983095816099782, 1.146920059059857]}, "NODE_487": {"DENSITY": [0.9901217244853513, 0.8508872862080225, 0.7155466680860758, 0.63023363424749, 0.5787810887814281, 0.5459648709340941, 0.5233866718913408], "MOMENTUM_X": [0.011597993201436087, 0.1589744624950717, 0.2736213303640867, 0.32854826013315286, 0.3544424594533395, 0.36834844457594673, 0.37658187459187686], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4656228326506304, 2.010563134672652, 1.6179085928748442, 1.3963204662589563, 1.2721511915070454, 1.1957339374868485, 1.144565455581025]}, "NODE_488": {"DENSITY": [0.9985147285825835, 0.9193020924519675, 0.7780867870844774, 0.6733912493073184, 0.6103548376949223, 0.5706238120713015, 0.5435591977590263], "MOMENTUM_X": [0.0016109589979603131, 0.0860103274463217, 0.2201391913998059, 0.3010700682524466, 0.34009706579738314, 0.36023642485260965, 0.37170369994521996], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4948056862453822, 2.2264405630649184, 1.7886381291533577, 1.5001362010822181, 1.3420655267008643, 1.2483259994169675, 1.1869706997229255]}, "NODE_489": {"DENSITY": [0.99014248834482, 0.851261050249556, 0.7155851483931307, 0.6299627532311168, 0.5783644303171164, 0.5454311986865146, 0.5227776363179906], "MOMENTUM_X": [0.011584128804896803, 0.1588574461859467, 0.27382271299954825, 0.32883743258981235, 0.35464985662974163, 0.36842435271941704, 0.37654765226743675], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4656948639122547, 2.0117497450386113, 1.6180658093428075, 1.3957138889499947, 1.2712926728223335, 1.1947672721241505, 1.1435503902953006]}, "NODE_490": {"DENSITY": [0.9901461632336722, 0.8513989373641336, 0.7156372599177033, 0.6299333757549228, 0.5783244788782159, 0.5453734716525827, 0.5226745685929652], "MOMENTUM_X": [0.011582199111234127, 0.15887900817847087, 0.2739242778344238, 0.3289681579338662, 0.35477439136357874, 0.3685236058965647, 0.37660470759840897], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4657076084819747, 2.0121999997141184, 1.6182378666015171, 1.3956485109376513, 1.2711539330346127, 1.1945643722033885, 1.1432720504450213]}, "NODE_491": {"DENSITY": [0.9901537687427316, 0.8514756856505492, 0.7156939986466997, 0.6299915358820467, 0.5784156326613846, 0.5453948802781153, 0.5225295023281112], "MOMENTUM_X": [0.011575825879616454, 0.15895904779572725, 0.27400952707078136, 0.32906617905455215, 0.35490283652821986, 0.3686152004713932, 0.3765853717960059], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4657338876456674, 2.0124633087901485, 1.618414594263313, 1.3957350231071453, 1.2711853383924023, 1.1945010030398637, 1.1430776250644763]}, "NODE_492": {"DENSITY": [0.9902139942561592, 0.851572788903382, 0.7156623629381716, 0.6299543101452891, 0.5784285571668025, 0.5453228779988308, 0.5223079035307696], "MOMENTUM_X": [0.011526491783472408, 0.15914730311411932, 0.2742714559824872, 0.3293004368964838, 0.35514318691126456, 0.3687861824214522, 0.3766388523716921], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.465942227101529, 2.012800024663362, 1.618374915703275, 1.3955195915386553, 1.2708200209860225, 1.1939834635472402, 1.142426467571027]}, "NODE_493": {"DENSITY": [0.9905147355134148, 0.8520703229082668, 0.7152886369348275, 0.6292883451744163, 0.5777371754904951, 0.5445379083568521, 0.5214880864489153], "MOMENTUM_X": [0.0112205909955779, 0.15920999160011529, 0.27499925827714145, 0.32998249088233134, 0.355693993181527, 0.3691501822737402, 0.3768682739575984], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.466982777796928, 2.0143907166407673, 1.6174592293258725, 1.3937054009803427, 1.2687784775570257, 1.1919483945738938, 1.1405141277874873]}, "NODE_494": {"DENSITY": [0.9915343381999475, 0.8543906479210532, 0.7140662252297936, 0.6266568242265838, 0.5749920131638138, 0.5419909513744484, 0.5193316678508983], "MOMENTUM_X": [0.010184279328123123, 0.15846254262290804, 0.2769003342008919, 0.3316601062560497, 0.35663205837869605, 0.3694980816544581, 0.37691772332806817], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4705149401340796, 2.0216730928508, 1.6145035901749405, 1.3874155330995295, 1.262567949782589, 1.1866074303815752, 1.1361099536636898]}, "NODE_495": {"DENSITY": [0.9615102274418946, 0.7748081141665902, 0.6590870614991007, 0.592364069472174, 0.5504388118991917, 0.5219431190424644, 0.5027621310688706], "MOMENTUM_X": [0.04640134457643483, 0.23469606388740716, 0.3142396038378714, 0.349381196672052, 0.365538996687356, 0.3737404091723824, 0.3791799553817351], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.3681896244083727, 1.7892932856732675, 1.4733098486798708, 1.3059383866231875, 1.2077509318023898, 1.145037659423684, 1.1022922142051053]}, "NODE_496": {"DENSITY": [0.9664034904477472, 0.7767739678371332, 0.656816924689803, 0.5891179461916918, 0.5479900113236187, 0.5209652338606392, 0.502581897501649], "MOMENTUM_X": [0.03795526263835765, 0.22481754657743663, 0.31250442256941224, 0.35060061987151153, 0.36816213819569626, 0.3773788809953821, 0.3831320890161044], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.3844206627982807, 1.7896808819317918, 1.4620376995716162, 1.2946960838298083, 1.1997687711516252, 1.139963278719454, 1.0992588423550713]}, "NODE_497": {"DENSITY": [0.9680276520678628, 0.7783770951827126, 0.6550986233489335, 0.5865810622847124, 0.5457096368380936, 0.5187843499878206, 0.5003495226929204], "MOMENTUM_X": [0.03675570694157331, 0.22499217950944755, 0.31440687339845624, 0.35231271689035387, 0.3694789280635253, 0.378130347766732, 0.3833157769072787], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.389952538165527, 1.794590785279333, 1.45761970114896, 1.2879593788706822, 1.1935037160047186, 1.1346160154216103, 1.0947494841492884]}, "NODE_498": {"DENSITY": [0.9683653476697716, 0.7790553052471338, 0.6544782689603257, 0.5853196188419214, 0.5441495438335882, 0.5172443628195696, 0.4991766094724654], "MOMENTUM_X": [0.036520809236555686, 0.22490826131887925, 0.3149813474667372, 0.35276107977721766, 0.36959860154079743, 0.37808057542740886, 0.38337857935639497], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.3911041311594445, 1.7966410639483903, 1.4561370166076193, 1.2852673329797561, 1.1906221566748323, 1.1318831791259407, 1.092348176658333]}, "NODE_499": {"DENSITY": [0.9933692356538811, 0.859810107776926, 0.7136019141457436, 0.6244038560221918, 0.5731954489491705, 0.5409809854624908, 0.5190251644431564], "MOMENTUM_X": [0.007212236962801993, 0.14516671694968164, 0.2717315140997835, 0.3318991871065367, 0.3590492869363041, 0.37281725312120984, 0.38064317956320365], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4768685331222704, 2.0356158411543386, 1.606756328448805, 1.3755430988964097, 1.2535896232989252, 1.1807903494411987, 1.1326187515832562]}, "NODE_500": {"DENSITY": [0.9684208769211649, 0.7792804871540959, 0.6543657315923701, 0.5850566450159707, 0.5439400056375993, 0.5171146576485697, 0.49896269609565574], "MOMENTUM_X": [0.03648594962644748, 0.2249239095478427, 0.3153074865463496, 0.35304599426703387, 0.36987737233383783, 0.37836370708818623, 0.38355660343038084], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.391293562008267, 1.7973227419182722, 1.4559035487306613, 1.2845341546868938, 1.1898184821063535, 1.1310611351005155, 1.0914946940904393]}, "NODE_501": {"DENSITY": [0.9684248756658066, 0.779293138766274, 0.6543670527084464, 0.5849924158514886, 0.5438302915799991, 0.5169543500699938, 0.49872507863198223], "MOMENTUM_X": [0.03647599203661194, 0.2248496587783556, 0.3154347293031191, 0.35312916104869285, 0.36992008455453773, 0.3783555118888588, 0.38347864252907743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.391306794751275, 1.7973349175970321, 1.4559709534206793, 1.2844219654144242, 1.1896776289765583, 1.1308527723883928, 1.0911976818080809]}, "NODE_502": {"DENSITY": [0.9684223102276519, 0.7791777440850546, 0.6543616468886326, 0.5849437386896154, 0.5437947118524289, 0.5170512672530784, 0.4988331875040942], "MOMENTUM_X": [0.03646322751825686, 0.2246542696173026, 0.31545146976712546, 0.3531293472930704, 0.36994578451304616, 0.3784905705929642, 0.3836341236846386], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.391297098110919, 1.7969314728117975, 1.4560512863850679, 1.2844313932267617, 1.189650331028185, 1.1307939865414403, 1.091072887801894]}, "NODE_503": {"DENSITY": [0.9684967903621852, 0.7790041022220184, 0.6542247701322119, 0.5846140918642929, 0.5433534030493699, 0.5167284306247196, 0.4985049795961461], "MOMENTUM_X": [0.03643971342859552, 0.22464426203196483, 0.31558243254104007, 0.35310101061029675, 0.369819665507881, 0.378432576405131, 0.3835579200624937], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.391549923259625, 1.7963964093100155, 1.4559169889958512, 1.284111049636816, 1.1891359424389953, 1.1301742379009654, 1.0903694425378165]}, "NODE_504": {"DENSITY": [0.9690123792978615, 0.7788950617083388, 0.6535230476508582, 0.5834851083301262, 0.5421637754478482, 0.5157928559221887, 0.49766790982390496], "MOMENTUM_X": [0.036024953974872834, 0.22510801090459648, 0.31625705761818473, 0.3534000828005741, 0.36993028960840113, 0.37860506902647606, 0.3837078481258947], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.3932964334050286, 1.7961653497185934, 1.4544848563437387, 1.2821426665702493, 1.1870218779897046, 1.1281741678852253, 1.0885420021807846]}, "NODE_505": {"DENSITY": [0.9712556647021799, 0.7795015950942635, 0.6508368148664453, 0.5800044464100256, 0.5391166304991446, 0.5133427980205553, 0.49555207910930116], "MOMENTUM_X": [0.03407944208136003, 0.22642287215788542, 0.31846864946726355, 0.35450860908652665, 0.37034708391889026, 0.37867965982697793, 0.3834803052636497], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4009134272471546, 1.7983122188204441, 1.4484611882469822, 1.2748309530757604, 1.1805407232154084, 1.1228498384521444, 1.0841927828251545]}, "NODE_506": {"DENSITY": [0.9060085569888588, 0.6958326114956245, 0.5990740653641967, 0.5460910537782084, 0.5156449353578666, 0.4949282744670507, 0.47914582692439284], "MOMENTUM_X": [0.1057600676322133, 0.2877539210356789, 0.34260207667407216, 0.36408371714133364, 0.3754262606383159, 0.3813076621254097, 0.38394902258003305], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.1864262592073036, 1.5734882904970002, 1.3301672090557206, 1.203879808573614, 1.1310361272913174, 1.0843360893815157, 1.0518304800502174]}, "NODE_507": {"DENSITY": [0.9142963804463027, 0.6964534187355402, 0.5971752180687773, 0.5449340140626489, 0.5143568771891659, 0.4936562465440743, 0.4789478280671615], "MOMENTUM_X": [0.09246022576348749, 0.2847654737856381, 0.34524991503624575, 0.3691000722035844, 0.3803064625730441, 0.385727233663899, 0.3886671716431947], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.211826132705542, 1.5670401257858912, 1.315700670503687, 1.193301196401474, 1.1240898144604963, 1.0799898864701507, 1.0495198525157161]}, "NODE_508": {"DENSITY": [0.9171734709536975, 0.6956623744789789, 0.5933623185956594, 0.5402399354231314, 0.510270263840051, 0.49085287378422826, 0.4768282986433544], "MOMENTUM_X": [0.09082265524002714, 0.2857544769569772, 0.34676414902353203, 0.3693815304099033, 0.3801496040190659, 0.38579410553162613, 0.3887096127911692], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2212927005026017, 1.5652987286319804, 1.3082258753039664, 1.1850493778095579, 1.1170095949932928, 1.074335070814054, 1.0450141765298562]}, "NODE_509": {"DENSITY": [0.9760119632056682, 0.7829006164041691, 0.6484300597278482, 0.5772876282366282, 0.537592226070987, 0.5126614245155375, 0.4953945672981517], "MOMENTUM_X": [0.026016545846648843, 0.21506105349497207, 0.31679921875488304, 0.35698294072253134, 0.37442200918446245, 0.3832089578662739, 0.38802020609263266], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4169598136602493, 1.8025823150742648, 1.4347407983999754, 1.2622238197098798, 1.1723004642774635, 1.1179708855303856, 1.0815155361851445]}, "NODE_510": {"DENSITY": [0.9177944731915563, 0.6957049315681415, 0.5925694680400957, 0.539558134321762, 0.5098095830000963, 0.49012232477923084, 0.47579904705246046], "MOMENTUM_X": [0.09047168814032669, 0.286279808632087, 0.34757880168314675, 0.3701626754844499, 0.3809269420241381, 0.38621202273098476, 0.388761257370703], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2233387615252624, 1.5655039652212386, 1.3059683550489654, 1.1822968805324856, 1.1144621787489195, 1.0719615242313918, 1.0428001391082522]}, "NODE_511": {"DENSITY": [0.9179023774730972, 0.6957052430603237, 0.5922566439741328, 0.5390132706023802, 0.5090847469804144, 0.4893863093253302, 0.47536030471113], "MOMENTUM_X": [0.09042149713838221, 0.28640507889904276, 0.3477995806354484, 0.37018576981435963, 0.3807349522942247, 0.385948434568376, 0.3886889269444543], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.223694946506667, 1.5655352853895574, 1.305430801146988, 1.1815383633197587, 1.1135656829048628, 1.071012913625843, 1.0419224333856119]}, "NODE_512": {"DENSITY": [0.9179279260150326, 0.6956896632639653, 0.5922031156576562, 0.5390151960023453, 0.5092129889765249, 0.48956073344422846, 0.47549869108426623], "MOMENTUM_X": [0.09042255251931922, 0.28635061513845594, 0.34784048364272535, 0.3702680758034514, 0.38089596411274, 0.38614865436200174, 0.3888664478483823], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2237811660243287, 1.5654572997530924, 1.3053528781679973, 1.1814907852393675, 1.113510599971089, 1.0709333247024735, 1.0417801180622084]}, "NODE_513": {"DENSITY": [0.9180068773231606, 0.6957947392286336, 0.5921981502709195, 0.5389593471372338, 0.5090144732713596, 0.4892600851739538, 0.475343741522694], "MOMENTUM_X": [0.0905287619814896, 0.28643874723977153, 0.34782215778553854, 0.370259334921414, 0.38078630310545153, 0.3859648116977651, 0.3888044129415765], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2240596157627905, 1.5657327302092485, 1.3053339038381864, 1.1815319618432176, 1.1134424753161891, 1.070754418191986, 1.0415727750122896]}, "NODE_514": {"DENSITY": [0.9182551276521198, 0.696097418467456, 0.5922706025109489, 0.5389929864448274, 0.5087918031323577, 0.4888924449832547, 0.47510198655414076], "MOMENTUM_X": [0.09089685365465416, 0.28710209115955854, 0.3480515529005378, 0.37043403998381674, 0.3807524892347141, 0.3858061462592576, 0.38873771047436473], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2249307529238247, 1.5667007856887385, 1.3053802763472715, 1.1814039120149498, 1.1130401205100953, 1.0701518496536355, 1.0409220429481136]}, "NODE_515": {"DENSITY": [0.9188815374378229, 0.6960512213575532, 0.5919804755156461, 0.5388169221175636, 0.5082588437708654, 0.48818495733054756, 0.47447878013981837], "MOMENTUM_X": [0.09095254571865782, 0.2882783279559312, 0.3488333367795202, 0.37117982116004733, 0.3811714907539038, 0.3860301283463422, 0.38896995738652806], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2270155534765337, 1.5667639009945047, 1.3040982394838632, 1.1798638853312644, 1.1113221514223686, 1.068416867942495, 1.0393380682870292]}, "NODE_516": {"DENSITY": [0.9220845202559698, 0.6945490423837867, 0.5888018208162242, 0.5358150969840603, 0.5053479660774832, 0.4857717747184077, 0.472543592373953], "MOMENTUM_X": [0.08926381333063901, 0.2912929206633922, 0.3509246859393801, 0.37208622036044237, 0.3811107130071574, 0.3856428713012351, 0.3884845581309171], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2374794771690407, 1.563376308417548, 1.2961155935473585, 1.1722488122425276, 1.104867987739197, 1.0631749776275559, 1.0351242178595363]}, "NODE_517": {"DENSITY": [0.826243049995864, 0.6211690820905094, 0.5490764825607853, 0.5076198943601653, 0.48211850777580817, 0.46815727863950013, 0.45730013164014677], "MOMENTUM_X": [0.21118839083285113, 0.3376597609315409, 0.36948164759086766, 0.37844767456799105, 0.38223589364662136, 0.3865163992244056, 0.3883309393303283], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9456622277710744, 1.3729267785064458, 1.2023591817944599, 1.111540273802175, 1.0594196044235, 1.026954525126764, 1.0041417015786718]}, "NODE_518": {"DENSITY": [0.8290557733923654, 0.6145276812840951, 0.5410649916984848, 0.5025466244147163, 0.4805013541452343, 0.46710226083763307, 0.4565200699537784], "MOMENTUM_X": [0.18869173219131713, 0.3360288404573081, 0.3718272833781271, 0.38309296148521776, 0.388558564719391, 0.3921830766533105, 0.39333999415127746], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9481542004478751, 1.35451974821619, 1.1841186938426747, 1.10031487464372, 1.0533143259377569, 1.0235380841314765, 1.0024334482368287]}, "NODE_519": {"DENSITY": [0.8322156980875517, 0.6130272983392571, 0.538694087177959, 0.5004494451098004, 0.4778735866523789, 0.46425122027832255, 0.45456206971120316], "MOMENTUM_X": [0.1884180887226283, 0.3400603656691655, 0.3745004802641954, 0.38487447683232145, 0.3889735843018544, 0.3917290857196349, 0.39314200624308043], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9580618124473492, 1.3497476356755556, 1.1752211753340813, 1.0924927857809605, 1.0466773689219708, 1.0179698200316913, 0.9981042067208734]}, "NODE_520": {"DENSITY": [0.9307466367757492, 0.6944738313213398, 0.5851283530046971, 0.5327701044484316, 0.5034245190419634, 0.48504178781047286, 0.4724626555947685], "MOMENTUM_X": [0.07379953042796418, 0.28490697833302137, 0.35314902285214994, 0.3767404346231566, 0.3863431487200869, 0.3911223643609031, 0.3938008615948236], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2646787168568223, 1.5542013430265598, 1.2787544692743655, 1.1600330854661152, 1.0976553018021586, 1.0593544175134835, 1.0333709798643642]}, "NODE_521": {"DENSITY": [0.8328855485155393, 0.6119130830357533, 0.5366854390350544, 0.4980612251874221, 0.4759854851565795, 0.46325237612710074, 0.4537349870870721], "MOMENTUM_X": [0.1882453986800326, 0.3401984114355215, 0.37438302935707746, 0.38418518784921984, 0.38846903418094614, 0.39179211105382405, 0.3932256945500509], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9601544634924768, 1.3472631427955637, 1.1722868714512193, 1.089301414433722, 1.0438299468463317, 1.0156625194900322, 0.9961437350151443]}, "NODE_522": {"DENSITY": [0.8330086431757618, 0.6118409703906449, 0.5366935125956626, 0.4982989246721209, 0.4762873007836136, 0.4631974508107299, 0.453317539396707], "MOMENTUM_X": [0.18822225695653322, 0.34048576045721735, 0.37471566213675334, 0.38464555724663163, 0.3889331399700409, 0.3919366024419211, 0.39304554844862627], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9605344455418015, 1.3470264321910732, 1.171745247078137, 1.0888973426173207, 1.0433806291579413, 1.0150567161561534, 0.9953814478817237]}, "NODE_523": {"DENSITY": [0.8330347260554566, 0.6118762695191837, 0.5365656441393353, 0.4979698856037786, 0.4758961660834315, 0.4628858917793529, 0.45325236883843767], "MOMENTUM_X": [0.1882284630316068, 0.3405941918181377, 0.3745627836634892, 0.3844128939079288, 0.38863125164527984, 0.39169294506079877, 0.3930169993158288], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.960615343215681, 1.3471279647645904, 1.1713909633681279, 1.0888032481307621, 1.0431842331314856, 1.0148182056597264, 0.9951869572683699]}, "NODE_524": {"DENSITY": [0.8330178384288801, 0.6120899980407402, 0.5366609917432036, 0.49806343842700074, 0.4760670931890753, 0.46287124222494963, 0.4531095270891041], "MOMENTUM_X": [0.188253452746538, 0.3410876740456347, 0.3746550876121413, 0.3845576229633859, 0.3888339625703025, 0.391735630252558, 0.3929542394018487], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9605732359166175, 1.3479702961688904, 1.171247446612017, 1.0889047957951248, 1.043259515365215, 1.0147560064782806, 0.9950135097846848]}, "NODE_525": {"DENSITY": [0.8323751132678963, 0.6121356528534982, 0.5366954981135654, 0.49806703793123813, 0.4761387824572966, 0.46257851931498895, 0.4527496674691025], "MOMENTUM_X": [0.1875776509144976, 0.341489036602558, 0.3747334257913223, 0.38463892005057865, 0.388971589770593, 0.39156445346971414, 0.3927235640896966], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9584685637838215, 1.3487607828385564, 1.171080650301404, 1.088693528765862, 1.042920884048057, 1.0141761781240144, 0.9943324741653838]}, "NODE_526": {"DENSITY": [0.8302762778727635, 0.6112755724495987, 0.5357886059842802, 0.4972330269569451, 0.47571137737402264, 0.4619646164119523, 0.45220776740231716], "MOMENTUM_X": [0.1849719860755092, 0.34135541783317486, 0.3746022923226642, 0.38465876470682064, 0.3893385499388405, 0.3917629899483266, 0.3929511552073566], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9513118895200507, 1.3469309610426878, 1.1693239762320922, 1.0869308169041896, 1.0412753756918238, 1.0125692531793056, 0.9928900664176668]}, "NODE_527": {"DENSITY": [0.8303243811957343, 0.6067930882647731, 0.5301642670941455, 0.49265831702321483, 0.4723352686935454, 0.4590935352224492, 0.44999719980755803], "MOMENTUM_X": [0.18355277249106766, 0.3437942526862742, 0.3743536473299763, 0.3836064097237586, 0.3882361107718339, 0.3904528560995166, 0.3917993743170522], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9509550689545934, 1.3380119645658153, 1.1595140863864215, 1.0785693874847102, 1.0345768239053046, 1.0071474476982694, 0.9885612313794434]}, "NODE_528": {"DENSITY": [0.6593089581523852, 0.5338545504044458, 0.4866259261499599, 0.4657419915735796, 0.4506711461969473, 0.4393273417689354, 0.4346627448920722], "MOMENTUM_X": [0.2457678078403941, 0.36054000006404746, 0.3751062093881842, 0.38434016786505987, 0.38715252756089963, 0.38735128234773636, 0.39043668943455423], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.4725582532490786, 1.1837763290365677, 1.074866041352634, 1.022062576081835, 0.9908331690427458, 0.9697797535758357, 0.9569998091034115]}, "NODE_529": {"DENSITY": [0.6769562090470469, 0.5305287397617247, 0.48486763131020993, 0.46307245237310724, 0.44832407627132387, 0.4395207680578431, 0.4343136257880854], "MOMENTUM_X": [0.2683292540961988, 0.3749315497654039, 0.3892659719156714, 0.39441850479534635, 0.395034747678344, 0.39570899184714775, 0.3968880084774392], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5107646605844764, 1.1591183997003984, 1.061146616979491, 1.0138384748277909, 0.9863001189403888, 0.9685251478638363, 0.9566655266457211]}, "NODE_530": {"DENSITY": [0.6752336060075739, 0.522325318373619, 0.4769686144148066, 0.4573410651523546, 0.4452799587178004, 0.4368257817064622, 0.4317818643706655], "MOMENTUM_X": [0.2647332501651218, 0.3734221630204613, 0.3864483850515206, 0.39224430533648097, 0.3942532271280359, 0.3946317932001194, 0.3955618711313978], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5051459725944456, 1.146405898916892, 1.048075228219164, 1.0040465061244754, 0.979205852396406, 0.9629970375326034, 0.9521977699488907]}, "NODE_531": {"DENSITY": [0.8398711452667621, 0.6018641733477432, 0.5241824749272203, 0.48959622174991, 0.4709087952902707, 0.458549028234702, 0.4501768767369087], "MOMENTUM_X": [0.16333739526609, 0.3440838713556233, 0.3795166234096502, 0.3905848075000655, 0.39527285030787873, 0.39705643123632556, 0.3980553930923215], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9749034884230277, 1.316785130057409, 1.1407109780987905, 1.0677830273767572, 1.0290594695834459, 1.004675552973893, 0.9879207231607007]}, "NODE_532": {"DENSITY": [0.6755354289480826, 0.5224486924358068, 0.47725421819552477, 0.457266535602837, 0.44436576794001736, 0.4357126216876436, 0.43126216897002684], "MOMENTUM_X": [0.26552432160433764, 0.37532750217983685, 0.38791827623722114, 0.3932345790061036, 0.3942997805270632, 0.39439117558444875, 0.395744421667556], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5060510066614776, 1.145077879536149, 1.0460575070155402, 1.0022305796122997, 0.9771272025583715, 0.9610766947566929, 0.9507112273757898]}, "NODE_533": {"DENSITY": [0.6755995767294127, 0.5219001168607331, 0.47638883570170176, 0.4564557651733078, 0.44379110079902473, 0.43581397841218555, 0.4311676360322008], "MOMENTUM_X": [0.2655958439794432, 0.37493475755065375, 0.3872812750114902, 0.39261143744385923, 0.39384481330564486, 0.394533718293825, 0.3956900791605852], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5063278764063668, 1.1442439888482667, 1.0453214575424896, 1.0015353049927544, 0.9764342324827222, 0.9606440387077647, 0.9501963625469275]}, "NODE_534": {"DENSITY": [0.6756141094282455, 0.5220306168143725, 0.47670996874098537, 0.4569095221702673, 0.4438373522536692, 0.435752891907588, 0.43085210827153225], "MOMENTUM_X": [0.2656247378305156, 0.37529221465807006, 0.3875320772599105, 0.3930028541732352, 0.39387805247661933, 0.39447134751813406, 0.3953886969933351], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.506401546175627, 1.1448218250396422, 1.0453430681296625, 1.0018044224459384, 0.9765132875647974, 0.9605996603171578, 0.9499701850083511]}, "NODE_535": {"DENSITY": [0.6755281234446054, 0.5220388887753294, 0.47678606710023447, 0.45701702105300446, 0.4437351557217958, 0.43585584188526094, 0.43076519563138777], "MOMENTUM_X": [0.26543869439392276, 0.3756444945359256, 0.38773989455366353, 0.3931561617954272, 0.3938438276249947, 0.39461606960356627, 0.3953511529239227], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.506138243505675, 1.1455836790601033, 1.045578832973617, 1.0019138296182268, 0.9765563412192455, 0.9606581372407054, 0.9498799810844688]}, "NODE_536": {"DENSITY": [0.6754651954869366, 0.5217220622766505, 0.4767367290796118, 0.45696336115731445, 0.44368970517071826, 0.43597994810440516, 0.4304843991535126], "MOMENTUM_X": [0.26430442177173125, 0.3748398945915112, 0.38758842225111184, 0.3929913800132857, 0.3937437223785917, 0.39468831167623786, 0.39505883909503425], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5049764010972884, 1.1452840738366328, 1.0458427797906753, 1.0016367379337527, 0.9761851170725933, 0.9602685255152017, 0.9492684156890047]}, "NODE_537": {"DENSITY": [0.6774225083467724, 0.5207773969738047, 0.47611110967579473, 0.4557552225400305, 0.4427373981375694, 0.43539757384742206, 0.42988131199175117], "MOMENTUM_X": [0.2673171502219299, 0.3741365291415243, 0.38775113620305834, 0.39266951464914296, 0.39362267828752623, 0.39484032671418934, 0.395135320864626], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5095738578331208, 1.1432170070323955, 1.0449365535751278, 1.0000560808790977, 0.9745797232398576, 0.9588856181045913, 0.9480234150037298]}, "NODE_538": {"DENSITY": [0.6831656491582281, 0.5160494778684029, 0.4726527227590976, 0.4519909786660444, 0.4399687222059245, 0.4331208052196951, 0.4279512938459718], "MOMENTUM_X": [0.28599836453108807, 0.3767765057280645, 0.3881915631385695, 0.39121239557983073, 0.39217497758145, 0.3933468542978057, 0.3936755418484134], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5336505230608752, 1.1342332738650711, 1.0364553796490088, 0.9925618025811234, 0.9685519113706007, 0.9540375566543922, 0.9440836191071067]}, "NODE_539": {"DENSITY": [0.571492506764591, 0.4639999725552329, 0.43850513443129197, 0.4193500909823701, 0.41889416522706724, 0.4122394127000966, 0.4094267172870639], "MOMENTUM_X": [0.40263026435208743, 0.39726437652294555, 0.39324165695973745, 0.3864682122849853, 0.39275533455876666, 0.3904423538138644, 0.39067571030661635], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.240523238452441, 1.0261381860911452, 0.9605675353548899, 0.9326244528672704, 0.9225309491352529, 0.9133140471009233, 0.9081944439607392]}, "NODE_540": {"DENSITY": [0.5436481639594736, 0.4515750133932374, 0.42939813994132114, 0.41843304718965507, 0.41644713096996105, 0.41107545445639293, 0.4101106582378905], "MOMENTUM_X": [0.38786116708953805, 0.4054779672233667, 0.4015663440533168, 0.39915686643750264, 0.401148538661652, 0.39825354677060437, 0.39866728437242743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.188249976160844, 0.9959692720504693, 0.9470254447772816, 0.9281065792237311, 0.9201368527084276, 0.9131021072115885, 0.909583724164571]}, "NODE_541": {"DENSITY": [0.6942987606422837, 0.5105295542954581, 0.46910076421844743, 0.4498010493361441, 0.4396909345201099, 0.43336206814944234, 0.42867083290045405], "MOMENTUM_X": [0.28372573523118916, 0.38544547876568397, 0.39836207454762856, 0.4004264458670021, 0.4011750843009898, 0.4013452121248846, 0.4009840825992913], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5553786106810303, 1.1068125663677784, 1.0203370359603658, 0.9847812057844498, 0.9656717914914354, 0.9535760556939779, 0.9449690592401986]}, "NODE_542": {"DENSITY": [0.5450482238574208, 0.44691746475143224, 0.42556729262612597, 0.4150052456113599, 0.41311279712160337, 0.41026738737888474, 0.40870399080070324], "MOMENTUM_X": [0.4051676546361523, 0.4048661716987479, 0.39989015129517885, 0.3965459667222639, 0.3980738721664138, 0.39732800076098534, 0.39695540082176606], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1926098796114541, 0.9817971537679124, 0.9376878807731814, 0.9206745442918114, 0.9142146851300657, 0.9095190778239123, 0.9066022209165575]}, "NODE_543": {"DENSITY": [0.5417608108997598, 0.4445774303497656, 0.42491225179637315, 0.4151914009513113, 0.41392219822956383, 0.4104714982966524, 0.40878973816698494], "MOMENTUM_X": [0.40042514593849715, 0.40332346968212535, 0.3991335883008312, 0.39649952995886, 0.39865817373667045, 0.3972155412305567, 0.3967788967806145], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1825982790863037, 0.9803823287492411, 0.9359018353506093, 0.9206259241566859, 0.9144597783046678, 0.9095894269625922, 0.906825362128067]}, "NODE_544": {"DENSITY": [0.5418790007648445, 0.4453039842913236, 0.425373085207928, 0.4154672607698211, 0.4137339095602565, 0.4102836570205054, 0.40947295781365556], "MOMENTUM_X": [0.4006162222033918, 0.40436457608807386, 0.3993085642450116, 0.3965303639804355, 0.3981337768903804, 0.3965673364100801, 0.39696423281666743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1826462407471356, 0.9808358514047626, 0.9358753444409064, 0.9211299918892047, 0.9145454970349729, 0.9096808578994086, 0.9073987412428408]}, "NODE_545": {"DENSITY": [0.5419029683774955, 0.445141014842156, 0.4250114340910834, 0.4158568517024507, 0.4139560649272818, 0.41050654990477686, 0.4096651904353259], "MOMENTUM_X": [0.40068409770123475, 0.40410200784030437, 0.3989281555585108, 0.3968083160999876, 0.39820404561351974, 0.39660721816128175, 0.39693055456708043], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1827470603959878, 0.9808164283712404, 0.9359218257240035, 0.9213805451088648, 0.9148480241514184, 0.9100332647189356, 0.9077232704419963]}, "NODE_546": {"DENSITY": [0.5419209329207324, 0.4452743914282485, 0.42498943295455754, 0.41650061904942526, 0.4141363278055426, 0.41060629228140416, 0.4098054798835558], "MOMENTUM_X": [0.40060642318341666, 0.4038703201666196, 0.3987658379548146, 0.3972113082125295, 0.3982233847334587, 0.3966203240385631, 0.3969780566293232], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.182571916363043, 0.9807544255777612, 0.9365495641145742, 0.9218613135234173, 0.9150955656457908, 0.9102313959620812, 0.9078876490188365]}, "NODE_547": {"DENSITY": [0.5429500103065927, 0.4450037633802211, 0.4238891575730965, 0.41625180747323476, 0.4136045777193565, 0.4106066567306617, 0.40991437134246933], "MOMENTUM_X": [0.40155863483950227, 0.40252426971721555, 0.39768702093534547, 0.3969954449540612, 0.39757987153254803, 0.39644278499434615, 0.3968408018955153], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1856109891563325, 0.9781264966915211, 0.9360594203091633, 0.9212863957844931, 0.9142992677369313, 0.9098136092733448, 0.9075950954450669]}, "NODE_548": {"DENSITY": [0.5427081685976438, 0.44434612762198966, 0.4224283492618322, 0.415952296796408, 0.41261921724263734, 0.41038717743265196, 0.40967123911526865], "MOMENTUM_X": [0.4089621782326859, 0.4035412348353992, 0.39799802554845, 0.3979451130168524, 0.3973671570538245, 0.39672513557257544, 0.3969627741661769], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1924213385744005, 0.97328953148652, 0.9337669349447439, 0.9199100617101089, 0.9130603191706035, 0.9092940792747176, 0.9072875437696113]}, "NODE_549": {"DENSITY": [0.5306550328631374, 0.43989707929461763, 0.41975106792013034, 0.4149731733409653, 0.4111094108233989, 0.40962153396939643, 0.4086308824845497], "MOMENTUM_X": [0.4144140706399729, 0.4023578181035335, 0.39542313831655523, 0.39601393000340823, 0.39482034935557064, 0.3949756796080266, 0.395067905930362], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1749088149521225, 0.9617819007610136, 0.9265232255618314, 0.9152800746228069, 0.9094375708227401, 0.9066679591515713, 0.9049748550045515]}, "NODE_550": {"DENSITY": [0.42466810007162276, 0.37034151298231877, 0.3841076030912982, 0.38283802338912765, 0.3778707898412867, 0.38567269350816324, 0.3815102800177343], "MOMENTUM_X": [0.4342586968006857, 0.37458187019154315, 0.3882301348855643, 0.38848458923616985, 0.38378409826297455, 0.39200478846122916, 0.38781911845963324], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9155084923831962, 0.8485682981997614, 0.8487400145444612, 0.852488256014018, 0.8501853198546021, 0.8558206439383997, 0.8550754062250233]}, "NODE_551": {"DENSITY": [0.5154493866550919, 0.428514064180453, 0.4158577130428615, 0.41359705883753706, 0.41089386536754885, 0.41035088958254207, 0.40940284668452664], "MOMENTUM_X": [0.3893989734459423, 0.40501492087807045, 0.4038841895905635, 0.4048815147534207, 0.4033845462783148, 0.40325089885503373, 0.4024198509037379], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.0996240625233844, 0.9346158828266456, 0.916980263737128, 0.9126924730641574, 0.909932645267423, 0.9086290657349161, 0.9073976095401792]}, "NODE_552": {"DENSITY": [0.3670112294989762, 0.3556474706275561, 0.3772339065729568, 0.3762269490940137, 0.37982452431907254, 0.3835760906333126, 0.38225749795783454], "MOMENTUM_X": [0.4194324851682099, 0.39011795998597487, 0.40302817398985497, 0.39782897969352654, 0.3984489985213307, 0.399959584774687, 0.396868425572562], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8020162581298946, 0.8239723162396324, 0.8400005508266273, 0.8483270971450032, 0.8526338141117733, 0.8570342496379849, 0.8580240517833604]}, "NODE_553": {"DENSITY": [0.356149704253688, 0.3537185457899446, 0.370554882092297, 0.37332420757043117, 0.3754155330915632, 0.37960127287821566, 0.3806085285224255], "MOMENTUM_X": [0.4121896769124248, 0.3885134400174213, 0.397133613602644, 0.39552132663571876, 0.3945749549295825, 0.39645016501739555, 0.39571701533392045], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.793350073015641, 0.8092386633226282, 0.8272534572854722, 0.8387176150786056, 0.843727419252747, 0.8496052408068823, 0.8527790150530343]}, "NODE_554": {"DENSITY": [0.3610111453564675, 0.35265185040223856, 0.3682331581122325, 0.37166451750442325, 0.37298210935156867, 0.3785231232844792, 0.3786773514971219], "MOMENTUM_X": [0.4191597601913845, 0.38822703283192805, 0.3965184810402637, 0.3960350107488624, 0.39420281798675233, 0.3974753803708427, 0.39570217531186264], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8049248929166678, 0.8082514389610577, 0.824756946590453, 0.8352303962886305, 0.8398646165225392, 0.8465182710542882, 0.8493845050643145]}, "NODE_555": {"DENSITY": [0.36039772662797126, 0.3520988282443845, 0.36859844619980725, 0.3709065099256795, 0.3724871271119514, 0.377066403028884, 0.37732736378161963], "MOMENTUM_X": [0.41817298388558793, 0.3878491004797992, 0.39724280340782125, 0.3957665612812137, 0.3942784279673868, 0.3966560207521135, 0.39497212397504583], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8031988841532952, 0.8084883919663441, 0.8241998309041844, 0.83347995973446, 0.8384052957136999, 0.8442853574407615, 0.8471287169652855]}, "NODE_556": {"DENSITY": [0.3602517405191257, 0.3523259207423277, 0.3682986496519947, 0.3703025889802133, 0.3728600923924834, 0.3765208945952401, 0.3772476212143485], "MOMENTUM_X": [0.4179795152849944, 0.3881869853454122, 0.39720755019345655, 0.39527384315740527, 0.39488382029468583, 0.39637243835749864, 0.39520418449624345], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8027335714350821, 0.8082900661452399, 0.8243178065388805, 0.8327254713686513, 0.8383283396813579, 0.8436181358858847, 0.8466210641745798]}, "NODE_557": {"DENSITY": [0.3601927828805305, 0.3520418170726442, 0.36795043230690794, 0.3698722829434396, 0.3734733128517595, 0.3763724880666277, 0.37740033190582684], "MOMENTUM_X": [0.4178430539469138, 0.3877322187736774, 0.39725672595499173, 0.39499105409117513, 0.3956104973662215, 0.396276649809038, 0.39543025444602115], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8026039630712666, 0.8068644915481187, 0.8249081553606225, 0.8323473160038839, 0.8386029131905417, 0.8435099746485945, 0.8466186436775952]}, "NODE_558": {"DENSITY": [0.36045368199446004, 0.3531871208637566, 0.36857509675216693, 0.3693081353381381, 0.3736907165825693, 0.37577998033877374, 0.3774472226596235], "MOMENTUM_X": [0.41815903475469457, 0.3876754733967493, 0.3972965839864507, 0.39392031526791743, 0.395568467277854, 0.3955016204686776, 0.39537872297882437], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8040430064649183, 0.8061288097275199, 0.8262545940589671, 0.8325573663774679, 0.8388026704181575, 0.8429579574458846, 0.8462957268690646]}, "NODE_559": {"DENSITY": [0.363299195516324, 0.3570287401048501, 0.36970712245894394, 0.36932462928258747, 0.37381807652449345, 0.37490332204746574, 0.37727382249165375], "MOMENTUM_X": [0.41960542756854935, 0.390738890655172, 0.39825016649206185, 0.3943916676305904, 0.39662613277587605, 0.39554796954533716, 0.39600748507984257], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8151937555667322, 0.8110281180120406, 0.8274377090113701, 0.8323528651429579, 0.8382635794733095, 0.8417868533892745, 0.8457698574809003]}, "NODE_560": {"DENSITY": [0.35448287772498255, 0.352192636994164, 0.36116038473349626, 0.36386430023860894, 0.36986625399631534, 0.3722688665411223, 0.3760496956852764], "MOMENTUM_X": [0.40440500292095916, 0.3885083358917758, 0.39228137522359585, 0.39066294623477477, 0.3933010493169435, 0.39261082680581216, 0.3938413638219192], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.801921985518624, 0.7999033874759669, 0.8115629773151454, 0.8198418252117928, 0.8292021287050194, 0.835600125982015, 0.8420475551519261]}, "NODE_561": {"DENSITY": [0.299546354116853, 0.3411014393263113, 0.3544101577610642, 0.36420774074548906, 0.37098905628306356, 0.3750797297973432, 0.37902317107977274], "MOMENTUM_X": [0.3900320888212373, 0.40186104415108265, 0.401341703045418, 0.40198035003902277, 0.4021896444557756, 0.40135002500424943, 0.4015454926782886], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.692427958838667, 0.7750985837530322, 0.8031748352020639, 0.8212733059605505, 0.8337637345547413, 0.842123817743721, 0.8489059821437739]}, "NODE_562": {"DENSITY": [0.40744657918619986, 0.4190019535256613, 0.3797046284015899, 0.4058937143878126, 0.3907988378469176, 0.3925225305499419, 0.39616770118188305], "MOMENTUM_X": [0.4052723550015822, 0.3986576862594686, 0.365508837040727, 0.3945315846158028, 0.38181647462397567, 0.38519818770428765, 0.39014213580718005], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9898541101009409, 0.8895609970348589, 0.869340968467176, 0.881224011652541, 0.872002903821075, 0.8733374417654794, 0.8750283022773655]}, "NODE_563": {"DENSITY": [0.40939039791901743, 0.3947747053839633, 0.38180957422995176, 0.39791582407599413, 0.3866991146209055, 0.392790751206782, 0.39213382190378515], "MOMENTUM_X": [0.42559555743789396, 0.40386620783110083, 0.3909664587464658, 0.4074021553746547, 0.39500403344556706, 0.4003720632580611, 0.39880132867008977], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9452563678678222, 0.8778975109302007, 0.8679093129085717, 0.8766178842533747, 0.8707276969212133, 0.8740207320472969, 0.8739213083171582]}, "NODE_564": {"DENSITY": [0.39500143321488557, 0.383871345105105, 0.3763590631815469, 0.3872116107822337, 0.3828492985031095, 0.3854461533950041, 0.3870386543349536], "MOMENTUM_X": [0.413343076991524, 0.39696408762961155, 0.388987697616775, 0.39905580982902644, 0.3933455009636039, 0.3949825418631627, 0.3954831763416083], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9106744276815281, 0.8515349162659824, 0.8479822641347444, 0.8567636188525503, 0.8572095922977504, 0.860256492687694, 0.8629597427026479]}, "NODE_565": {"DENSITY": [0.39253089732966845, 0.3847816458777719, 0.3719406781751587, 0.3848568502673056, 0.380012521554981, 0.3817824201177378, 0.3849385618180494], "MOMENTUM_X": [0.41253492819221754, 0.3990875108561597, 0.38688870166750133, 0.3994671391843407, 0.39383762300837294, 0.3946047249644346, 0.39689226024906404], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9091682785977994, 0.8473275644198259, 0.8428986088726689, 0.8522327010462524, 0.8517662705153908, 0.8543152385371799, 0.8579293724543159]}, "NODE_566": {"DENSITY": [0.3931031769014321, 0.3837865577376959, 0.37081259520215926, 0.3847587788179006, 0.3782920044528197, 0.3807600781215991, 0.3824407850300389], "MOMENTUM_X": [0.41359750766708286, 0.39862265966867083, 0.3862417595926805, 0.40038979579581196, 0.39317134708881, 0.3948037882674063, 0.3957060430357383], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9102038254335019, 0.8468484468601151, 0.8415058299529683, 0.8504653256922533, 0.8484353203235379, 0.8514103148712647, 0.8538836404976541]}, "NODE_567": {"DENSITY": [0.39311668053556414, 0.38352766478072864, 0.3715443580634881, 0.38355398092167614, 0.37796762814164114, 0.3808062504881776, 0.38135723071604216], "MOMENTUM_X": [0.41363874232105974, 0.39836467484107346, 0.3873811613359133, 0.3994853527046088, 0.3931254944295242, 0.39535350755158805, 0.3951831909100427], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9103375919262335, 0.8464239829973063, 0.8423066878588381, 0.8491460800908184, 0.8475857828082097, 0.8507490288288442, 0.8523704637231816]}, "NODE_568": {"DENSITY": [0.3932550223350717, 0.38326646946044646, 0.3720025259312905, 0.3822667305311692, 0.378036607752887, 0.38099560491489903, 0.3809783218681852], "MOMENTUM_X": [0.41396532800590746, 0.39764221524260235, 0.38803654247698427, 0.3983145079560939, 0.3933572585408081, 0.3957505057162221, 0.395036616196566], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9109883148356689, 0.8447892097272809, 0.843102594142745, 0.8485423257614934, 0.8474696217123915, 0.8505291182851062, 0.8517508350100436]}, "NODE_569": {"DENSITY": [0.3935030211396659, 0.38262287286592866, 0.37373633597390227, 0.3810978992242519, 0.3773022462328405, 0.380199055898542, 0.3797757917268349], "MOMENTUM_X": [0.4152222486633791, 0.3968106330405096, 0.38954588562685666, 0.3971410624229341, 0.3926823465509526, 0.39511515416536175, 0.39411652260219426], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9127463491991344, 0.8432332658832387, 0.8431658071028983, 0.8474822579945496, 0.8463225044633688, 0.8490415249388557, 0.8498449595620456]}, "NODE_570": {"DENSITY": [0.3925555954910373, 0.37978112052633634, 0.3753913029274533, 0.3786437442996421, 0.3762137419357615, 0.37831483139983574, 0.37751551490179946], "MOMENTUM_X": [0.41322582430737254, 0.39518956108436937, 0.39211856735025535, 0.39601972311538314, 0.3934460291356821, 0.39545965144418543, 0.39430569940638], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9087865084871868, 0.842529464877693, 0.84082616483022, 0.8429020021369386, 0.8424746462359493, 0.8446140788327763, 0.8451856162780156]}, "NODE_571": {"DENSITY": [0.3826392630195804, 0.3645003721627792, 0.366818593144659, 0.36592693706580964, 0.3671533068964705, 0.36901818258210967, 0.36995414622895323], "MOMENTUM_X": [0.39934244113242556, 0.3833294439480791, 0.3880873249207261, 0.388133813292815, 0.3894352147478483, 0.3909514206061118, 0.3911283711038378], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8669225168817356, 0.819198993452052, 0.8194453855895517, 0.8201139532354096, 0.8231360943970615, 0.8267039516666728, 0.8297695149786403]}, "NODE_572": {"DENSITY": [0.36807432785277566, 0.3484428044393017, 0.35880749304489656, 0.3572741163103325, 0.362268920425982, 0.364116282954222, 0.36720298067869256], "MOMENTUM_X": [0.4262533703178239, 0.4013889662839937, 0.4089041049158454, 0.4027695832422413, 0.4038191648766051, 0.4018082265563465, 0.4015000371592287], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8153013642116594, 0.7951549368332992, 0.8079305147868605, 0.8114877934357625, 0.8183509438221047, 0.8230052148070273, 0.8280433536019095]}, "NODE_573": {"DENSITY": [0.3344471727763809, 0.4560459930319702, 0.41009833228733616, 0.4083236882240142, 0.4252581437129349, 0.4080546612589111, 0.4160798628205665], "MOMENTUM_X": [0.3269094181662158, 0.4138205127167649, 0.37682417866026585, 0.3754019368387941, 0.3927873970486749, 0.37841351303423276, 0.387558810952178], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.976058308118752, 0.9201636748073826, 0.9155426396666894, 0.913379200882596, 0.918769197747778, 0.9112790021440142, 0.914914201725928]}, "NODE_574": {"DENSITY": [0.34997325047631167, 0.45112225315793036, 0.4025233538240282, 0.4166109019752773, 0.4180067811550893, 0.40872255001596663, 0.4153155252658177], "MOMENTUM_X": [0.35090105249542364, 0.42895300111476076, 0.3881825646283859, 0.4024068085143662, 0.40441395039762074, 0.395774954677441, 0.40223224712820466], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9629507525411303, 0.9349301403442185, 0.9205596187273705, 0.9235807277439129, 0.9202419216609726, 0.9147956278055193, 0.9163437592545163]}, "NODE_575": {"DENSITY": [0.3494850155317826, 0.43704148783474384, 0.40199644582716887, 0.4093807549781391, 0.4099188679800404, 0.40517205563312947, 0.40730742236483314], "MOMENTUM_X": [0.34632170753861263, 0.4185155746941993, 0.3890831084905515, 0.39744645438701837, 0.3983933701590325, 0.39422936115209295, 0.39633709812741663], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9414594451284048, 0.9206833595582835, 0.9066396848050571, 0.9061352751839543, 0.9042843868930253, 0.9018084788865729, 0.9021511975574713]}, "NODE_576": {"DENSITY": [0.34701647327538254, 0.4358803878974239, 0.4027931445795074, 0.40388718819870717, 0.4094370572364975, 0.40223165660987587, 0.40465121957409816], "MOMENTUM_X": [0.3439664932182194, 0.417326842557516, 0.3914979437724038, 0.3936247907893669, 0.4000797355210727, 0.3938626147229507, 0.3964092249887595], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9357507726045574, 0.9141082475019707, 0.9039624511554307, 0.8994364800654236, 0.9011191921294279, 0.8968150413687587, 0.8975368198484986]}, "NODE_577": {"DENSITY": [0.34668711975797817, 0.4365814218950639, 0.4006453665880204, 0.4037371464169897, 0.40950528404035713, 0.401025444356033, 0.40406515744552135], "MOMENTUM_X": [0.34386603636708846, 0.41799565780704045, 0.3898305736326396, 0.39357463459980113, 0.4007035754811111, 0.3932227906322412, 0.3966039623466726], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9352374518587977, 0.9131895925095979, 0.90253635028616, 0.8986311348781324, 0.8997611991947881, 0.8943385223517027, 0.8952816468478046]}, "NODE_578": {"DENSITY": [0.34673511559746817, 0.4361595197686841, 0.40072849955592843, 0.4044586806575316, 0.4079798345217454, 0.4014339611060497, 0.403761712330321], "MOMENTUM_X": [0.34393186516719476, 0.4175923152465001, 0.3899241161981624, 0.3944617974621609, 0.3993333331042087, 0.393800583580227, 0.39666247423069056], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9352296893047775, 0.9128116381846474, 0.9026457654459039, 0.8991283917805131, 0.8982728634198375, 0.8939648151255051, 0.8943148362187099]}, "NODE_579": {"DENSITY": [0.34673856105740897, 0.4359435759760325, 0.4013455700249769, 0.40410575471657195, 0.40620174677811577, 0.4017455669693228, 0.4031315327886988], "MOMENTUM_X": [0.3439825538223239, 0.41714354821387034, 0.39041693391301724, 0.3943268493684619, 0.3977665497503881, 0.39439093602283654, 0.3964443549271143], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.935283207883093, 0.9120955706160653, 0.9024546874045298, 0.8989492889217483, 0.8969464397173631, 0.8934235308696187, 0.8929975636047319]}, "NODE_580": {"DENSITY": [0.34646392087045386, 0.4355086650113336, 0.40161014253205374, 0.4048633927600606, 0.4040126152048736, 0.40063355489462266, 0.4010919241532843], "MOMENTUM_X": [0.3436174036144283, 0.4175451376627355, 0.3905662184573683, 0.3955483743278286, 0.3963313375395725, 0.39409209970483544, 0.395339229441205], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9342014431057121, 0.9133997332478667, 0.9002826634786512, 0.8979189360696008, 0.8940169507357622, 0.8905026529331602, 0.8893174603962701]}, "NODE_581": {"DENSITY": [0.34440063982474517, 0.4319593096847838, 0.3996817995951195, 0.404641017890332, 0.4005555556409438, 0.39910209106587397, 0.39839083797949937], "MOMENTUM_X": [0.33810167343921926, 0.4160292908508566, 0.3895196326910546, 0.3970678105293216, 0.39514616927081614, 0.39520153667487556, 0.39560815868893623], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9232919225304941, 0.9145217187612092, 0.8950357521453038, 0.8932450961129178, 0.8876165989899026, 0.8850176039374267, 0.8831953010292845]}, "NODE_582": {"DENSITY": [0.3427367661495692, 0.41974288118986336, 0.3915725668168508, 0.3968026975376789, 0.3907575602923646, 0.3915934280465193, 0.39023251855231106], "MOMENTUM_X": [0.32834701671813576, 0.40454700711442226, 0.3824236248305089, 0.3913053709594487, 0.3879009639177824, 0.39068709635905524, 0.39069034565037597], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8959413524862648, 0.8978490119436097, 0.8772980909338138, 0.8753664897710364, 0.8694836484424996, 0.8688048846432026, 0.8674299293602696]}, "NODE_583": {"DENSITY": [0.3600677858935064, 0.4075335549185178, 0.3917777354916903, 0.3931701770121117, 0.3872481098311712, 0.38798829596652007, 0.3861537405312128], "MOMENTUM_X": [0.37173483757957515, 0.42358702032504936, 0.4109799166905584, 0.413770609909862, 0.4074255205794239, 0.4074952867171245, 0.4044850862713833], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8925835771903332, 0.8909243210602215, 0.8784504893924214, 0.8746227239887211, 0.8683395456339998, 0.8670908772185332, 0.865166196776144]}, "NODE_584": {"DENSITY": [0.27414177624155955, 0.42024140208569666, 0.4565186532465024, 0.39992211404254185, 0.42830536654833634, 0.4268025585010755, 0.4179803186652105], "MOMENTUM_X": [0.2471379923988256, 0.37722586282935633, 0.41663775779684753, 0.3614001584245734, 0.3880940599381201, 0.3867159608991869, 0.3790509050351768], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8550880767738296, 0.9079265122732575, 0.9480136322667533, 0.9162806690383948, 0.9322609446446657, 0.9321485994535836, 0.9303764324862924]}, "NODE_585": {"DENSITY": [0.28248369436385773, 0.4391957473620467, 0.4426220365733346, 0.4083030127213111, 0.4346545992257459, 0.42427584422967046, 0.4237721622634382], "MOMENTUM_X": [0.26751854553571663, 0.4073509411547551, 0.41783108963593685, 0.38392977957650515, 0.4086178236448174, 0.3985793040409634, 0.39768440622203294], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8707079958385331, 0.9317463361476896, 0.956001391981991, 0.9352774339416551, 0.9465722355631828, 0.9414643483564086, 0.9412409141834996]}, "NODE_586": {"DENSITY": [0.2850158249156412, 0.43453840257530363, 0.43573838930817776, 0.4140869192971859, 0.42861147378716563, 0.4227769965929331, 0.42218537215858876], "MOMENTUM_X": [0.2659056628391277, 0.40360596445050245, 0.4090455170392993, 0.3874011906318142, 0.40134958055853026, 0.3957654550278296, 0.39520970596126187], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8635126945403271, 0.9330540902549429, 0.9463804259316542, 0.9325505457812786, 0.9381115344816233, 0.935174877193143, 0.9347639877996781]}, "NODE_587": {"DENSITY": [0.2850807388140637, 0.431356795726507, 0.4399540110127294, 0.41330662605836077, 0.4258712334718158, 0.42436478678410955, 0.42019639454449326], "MOMENTUM_X": [0.2646484921402375, 0.3998244749104207, 0.4122294509635274, 0.3863410934033151, 0.3988614757626534, 0.3977800326006939, 0.39414886375818026], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8609138995294324, 0.9304979096225552, 0.9467669880091975, 0.9303828490722625, 0.9361555964083643, 0.9351040317348068, 0.9328814706570256]}, "NODE_588": {"DENSITY": [0.2850532441568603, 0.4319049745191668, 0.44095354761219097, 0.41074773135977194, 0.42714142444205644, 0.4245024008352068, 0.420065200914421], "MOMENTUM_X": [0.2645952948628005, 0.39961340575009724, 0.4134719698623446, 0.383673220796422, 0.3998181981726804, 0.3977190282759378, 0.3938656000298971], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.861170630857506, 0.9292109056657925, 0.9480836360676881, 0.9286854126537057, 0.9368102376940639, 0.934532346063029, 0.9321513534461349]}, "NODE_589": {"DENSITY": [0.2850385933201002, 0.4321006409065447, 0.44006627345704485, 0.4116027379655954, 0.4272552680222385, 0.42337355122621173, 0.42104446446240923], "MOMENTUM_X": [0.2645220604483235, 0.3996390537775531, 0.4124706199537692, 0.3845301731894583, 0.39985483560541835, 0.3966024825206512, 0.39481130641085255], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8611145178240116, 0.9291685513660968, 0.9473171776684708, 0.9296556909136484, 0.9366784375291775, 0.9337015180034313, 0.9323104830453252]}, "NODE_590": {"DENSITY": [0.28495850312898086, 0.4322998107198439, 0.439836570432913, 0.41302851806619856, 0.4256896643965826, 0.42220451999447434, 0.42143440848297375], "MOMENTUM_X": [0.2643530241822676, 0.40010232625384623, 0.4116733559096554, 0.3860165153657048, 0.3983565849798494, 0.395571381145127, 0.3953430090313935], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8607390593066795, 0.9302368555520647, 0.9456630641573217, 0.9307796201425232, 0.9355477784960456, 0.9327669844252938, 0.9317916466533628]}, "NODE_591": {"DENSITY": [0.28446604241842716, 0.43306259795236607, 0.4386471656762972, 0.41519876983844883, 0.42545635949850347, 0.4210905138988874, 0.4207856425036076], "MOMENTUM_X": [0.26330716767894297, 0.4022626595398497, 0.41016399072554677, 0.38820521145524356, 0.3983282936756092, 0.39484361071818386, 0.39515252157343705], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8585023408703043, 0.9348251170772756, 0.9431460758358903, 0.9312549586919869, 0.9345137404571436, 0.9309960597784055, 0.9297124110823511]}, "NODE_592": {"DENSITY": [0.2827285379629873, 0.4331201176712553, 0.4337297352137282, 0.4169757452459601, 0.4247154945242657, 0.41976638494849783, 0.4203805901100608], "MOMENTUM_X": [0.25829486271833296, 0.40292377894993747, 0.40485574603311947, 0.38988551201175886, 0.3982151802336294, 0.3947605469000889, 0.39642078530080743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8493951091091665, 0.9397600180725734, 0.9388675528951432, 0.9302021172971229, 0.9319781938288859, 0.9281887851150487, 0.9270210763549643]}, "NODE_593": {"DENSITY": [0.28230800169799003, 0.4332058749803779, 0.42438324641524583, 0.4161314548150174, 0.4192108591885093, 0.41482680318289067, 0.415663536342282], "MOMENTUM_X": [0.2533077348967464, 0.3998536694651514, 0.3927774946562882, 0.38632896328151733, 0.39098857771864, 0.38876865284684625, 0.3913049583651379], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8391490931841705, 0.9349026121181483, 0.9281005572955665, 0.9228855663786798, 0.9219736219291764, 0.9185349967020601, 0.9173885139013035]}, "NODE_594": {"DENSITY": [0.29622941177468554, 0.44505159871354427, 0.4241579998801344, 0.42484731476874904, 0.4209478483222559, 0.4174357502662912, 0.41596577244839045], "MOMENTUM_X": [0.2829719115351086, 0.4315758909482156, 0.41467153907967186, 0.41657866017167744, 0.41358265556869833, 0.41056571518410306, 0.4092067294494847], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8597779607626601, 0.9529697747143979, 0.9425459323946426, 0.9389070072123074, 0.9321138980027653, 0.9267672925130945, 0.9227373827385151]}, "NODE_595": {"DENSITY": [0.2197740152758951, 0.35794775055266753, 0.4686238220370712, 0.42397904196544006, 0.4072667608195134, 0.4356682592705075, 0.42020093873193426], "MOMENTUM_X": [0.15600124989735065, 0.3235674001387593, 0.42731458011824297, 0.382759924949435, 0.36862223234986224, 0.3943460695914471, 0.3805372828809822], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6284024986161296, 0.8968657789953696, 0.955463468295113, 0.9260995111357313, 0.9249286692141727, 0.9363644247575585, 0.9310661356126865]}, "NODE_596": {"DENSITY": [0.2283363289867717, 0.380881192577263, 0.4682037452348738, 0.41614304358784543, 0.42057921177427443, 0.43602182462337713, 0.421943304382481], "MOMENTUM_X": [0.1806591632528165, 0.3528966831538694, 0.4398093425893878, 0.3892470618480352, 0.3942165986414514, 0.40811107241475025, 0.39488489233371576], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6757657248533613, 0.911390336262286, 0.969226749580084, 0.9388201241826011, 0.9432315594813385, 0.9486380264505158, 0.9426567166723729]}, "NODE_597": {"DENSITY": [0.23128604506514988, 0.38469168715031843, 0.45597989429912067, 0.4186261286778668, 0.42350929090047135, 0.43088146320270204, 0.42396306445614823], "MOMENTUM_X": [0.18261913073245545, 0.35692833430637383, 0.42679968448595157, 0.3896336505413242, 0.394329779261928, 0.4006578703233067, 0.39394511601054044], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.684805757823243, 0.9165017179279616, 0.9595561514013313, 0.9368517280382511, 0.9406051914108678, 0.9431690844298777, 0.94039545709714]}, "NODE_598": {"DENSITY": [0.23170951505752233, 0.3827041041989409, 0.45460427809984105, 0.4240270354454116, 0.4204204449482539, 0.4309347764272294, 0.4256184269445203], "MOMENTUM_X": [0.18174759588027473, 0.3551292721842502, 0.4237608468846921, 0.3937526750575101, 0.39072232823294134, 0.40030265648690216, 0.3952491694801944], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6842535763212337, 0.9177958462888671, 0.9558769211081924, 0.9383479115635114, 0.9387553388529604, 0.94342503434986, 0.9414792624471202]}, "NODE_599": {"DENSITY": [0.2318193063992359, 0.38221909693149797, 0.457017885349549, 0.4231657125942902, 0.41854920364637516, 0.432626277519291, 0.4254245086593182], "MOMENTUM_X": [0.18177444433721202, 0.3543291000923737, 0.42597191707508014, 0.39286418066696055, 0.3888093057575495, 0.4016312342517491, 0.39472325493280525], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.68441042358485, 0.9169447698270392, 0.9574854774819506, 0.9379660662185898, 0.9379105615667029, 0.9439825162239528, 0.9411162622521216]}, "NODE_600": {"DENSITY": [0.23182343905004815, 0.3824399951331852, 0.4568287504548364, 0.42241129293718715, 0.419704594636246, 0.4318866474576139, 0.42509355952914124], "MOMENTUM_X": [0.18179371264842323, 0.35441537406524126, 0.42557429626953386, 0.3922186956489477, 0.38982811822252933, 0.400792242206897, 0.3943077807975805], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6844513429271502, 0.9169209112431375, 0.9569182775036673, 0.9381142248968791, 0.9384089725875986, 0.9433773378809843, 0.940879708356456]}, "NODE_601": {"DENSITY": [0.23178950114428692, 0.38293982832036283, 0.4559965660413367, 0.42360906819698035, 0.4205445000321023, 0.4296071057997205, 0.4249976610734494], "MOMENTUM_X": [0.18170562259158965, 0.35547378922245226, 0.42414947103334105, 0.3934089310976792, 0.3905042022202674, 0.39855209476767994, 0.3941000762973084], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6842925068962293, 0.9190522025459449, 0.9545759906479375, 0.9391322097831883, 0.9385388340611496, 0.9421378215411623, 0.9406074372689764]}, "NODE_602": {"DENSITY": [0.2316625190527848, 0.38394180566624303, 0.45459598230783527, 0.42450484276006945, 0.42270282148214255, 0.4289163748157823, 0.4252895319041523], "MOMENTUM_X": [0.1812610076611939, 0.3578148515606625, 0.42263302365839484, 0.3942685457980299, 0.3924595598084351, 0.397820246496482, 0.3941640402481521], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6836197847280787, 0.9241519137016079, 0.9527900896094523, 0.9393586307335404, 0.9392058647709002, 0.9416004283704584, 0.940333808196828]}, "NODE_603": {"DENSITY": [0.23161048134771203, 0.3847669846427268, 0.45021953982084834, 0.4227615484814869, 0.42521352374679766, 0.428274784211907, 0.4261439875050604], "MOMENTUM_X": [0.17980253426554632, 0.3581919788170484, 0.41745835266843195, 0.3915952559979767, 0.39396194089811215, 0.3967159647909803, 0.39473364253775167], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6826479675164945, 0.9272729850306772, 0.9500183008184746, 0.9374085235609705, 0.9395778875658337, 0.9412262837293499, 0.940951823588446]}, "NODE_604": {"DENSITY": [0.23422699168699004, 0.3892886889222603, 0.4439649802069721, 0.4190534422780623, 0.42534730281383343, 0.42432754214695767, 0.42409905728241687], "MOMENTUM_X": [0.1820841904173324, 0.35916957985471215, 0.4084678497639243, 0.38450737335629837, 0.3901630968043519, 0.3892463404833048, 0.3892485797076972], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.693523125554326, 0.9237251519655701, 0.9432468499473916, 0.9315837077381179, 0.935180601846521, 0.935546094084922, 0.9363848448218326]}, "NODE_605": {"DENSITY": [0.24197857432637052, 0.41301984533126973, 0.44654790386266585, 0.42754589614931915, 0.4347417547147336, 0.42988930003613757, 0.430191393454414], "MOMENTUM_X": [0.2073431426855934, 0.3960364448757672, 0.4288175050752904, 0.4107381304235288, 0.41687294304318573, 0.41144138824990095, 0.410668321780745], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.7323247562455819, 0.9445793912411014, 0.9629903269503916, 0.9537713190888859, 0.9552290213944798, 0.9517805458327956, 0.9506501838091644]}, "NODE_606": {"DENSITY": [0.16836844507387946, 0.315681578941218, 0.4294169354926756, 0.4614718361965245, 0.40419425323350555, 0.42333184679630687, 0.43308219092161987], "MOMENTUM_X": [0.06714592244845886, 0.29501073249452664, 0.3894984082357271, 0.41777737486188016, 0.36554753825914627, 0.382687323311214, 0.3918242114402051], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4030063556902649, 0.9219471074860565, 0.9347964334726383, 0.9456778226970788, 0.9242740387555108, 0.9318690514826548, 0.9369005542699919]}, "NODE_607": {"DENSITY": [0.17827955484740343, 0.3274536360169762, 0.4471804468970694, 0.44913604768760734, 0.40766750769954463, 0.4335251165690501, 0.43057356900491517], "MOMENTUM_X": [0.09082954112409058, 0.309332924141778, 0.41748998488268707, 0.4188780302336499, 0.38149956551044845, 0.4049865102495774, 0.4023159704886207], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.45001624718645916, 0.9138671854452195, 0.9556263169319886, 0.954211329636369, 0.9391183114798783, 0.9482619650832692, 0.9472828044797444]}, "NODE_608": {"DENSITY": [0.18235153262723094, 0.3329616210640668, 0.4417011836859684, 0.44045803221267626, 0.41457711354729887, 0.43109523395512067, 0.427808114052946], "MOMENTUM_X": [0.09606482789345142, 0.313625175530818, 0.4121151981805778, 0.40978193589567197, 0.3858282630795896, 0.4006089361647377, 0.3973434127963953], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.46731199925200717, 0.9148252287580739, 0.9517009213676095, 0.94796483292094, 0.9380317583096809, 0.9440395671630561, 0.942687147131648]}, "NODE_609": {"DENSITY": [0.18301316792105188, 0.3335215588969551, 0.43625834832292004, 0.44414801293702505, 0.41725771696857655, 0.4272118267576172, 0.4298286909433712], "MOMENTUM_X": [0.09579994756592988, 0.31438805996944935, 0.40517767803434385, 0.4121137005709493, 0.38725926280653655, 0.39643849666593706, 0.3988786004535462], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4693182808446491, 0.9185052920697091, 0.9457105259773051, 0.9485928718195439, 0.9378627146337547, 0.9422361901287943, 0.943540582664045]}, "NODE_610": {"DENSITY": [0.1831098902937665, 0.33326142983100177, 0.436765695346829, 0.44685808317109976, 0.4145698434687776, 0.42682409126555065, 0.43123351619388933], "MOMENTUM_X": [0.0956489171091064, 0.31426371955923443, 0.40508461337293533, 0.4147126080700802, 0.38462222084843195, 0.3959600367102773, 0.39997374273624436], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4694368566973595, 0.9194491926395127, 0.9452230126842475, 0.9505624606272624, 0.9366084445297439, 0.9420521036754873, 0.9438950812263512]}, "NODE_611": {"DENSITY": [0.18314642201209216, 0.33333728954756364, 0.43725996237544695, 0.44615389360073404, 0.4142661004217563, 0.42781886626097515, 0.42999631366969954], "MOMENTUM_X": [0.0956738423267231, 0.31431127424146854, 0.40525689229208084, 0.41398041344651304, 0.38427774309878937, 0.3966902847952719, 0.3986629228852889], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.469550526306037, 0.9197394371978636, 0.9449887072684888, 0.9504970462680914, 0.9366647433220358, 0.9422167666257425, 0.9432001013812441]}, "NODE_612": {"DENSITY": [0.183186441419809, 0.3337351307990092, 0.4368635303023252, 0.44599913146707787, 0.4162950920624035, 0.42731151231358006, 0.42785552283719164], "MOMENTUM_X": [0.09572330219150291, 0.31517205632099693, 0.40455341419409707, 0.41367760356472816, 0.38611016615213584, 0.3960588463494862, 0.3965347668571366], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.46971318132968476, 0.921625792905942, 0.9437089450200483, 0.9502311628645562, 0.937592524726582, 0.9417012375102972, 0.9420465318367983]}, "NODE_613": {"DENSITY": [0.18337882240524264, 0.33412584599975914, 0.4363046429426965, 0.4450184079458861, 0.418764435522455, 0.42813790263725265, 0.42736194962211416], "MOMENTUM_X": [0.0959885397098075, 0.31617455717408505, 0.4043163697391655, 0.41271000748004005, 0.3884602067737276, 0.39686980180749293, 0.39603257995455876], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4705045626483504, 0.9242712549197892, 0.9439355923857962, 0.9492522235906445, 0.9385399036500124, 0.941960052923291, 0.94159260212441]}, "NODE_614": {"DENSITY": [0.1844173338165207, 0.3337185970246027, 0.43466783216961724, 0.43972346754997876, 0.4198655058916546, 0.4290245042315217, 0.42676709182208605], "MOMENTUM_X": [0.09730711506716727, 0.3139855732665004, 0.4019752175721938, 0.40640875984116387, 0.3883817855316474, 0.3969274627342601, 0.39501926417420613], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4747164723272558, 0.9216515880241114, 0.943635554607812, 0.9450397881154302, 0.9377215707205184, 0.9418098840695959, 0.9412844093212298]}, "NODE_615": {"DENSITY": [0.1890063452502171, 0.3361217181143811, 0.43559988729131666, 0.43202481574630286, 0.4200000478570791, 0.4270915420443068, 0.4233276204940746], "MOMENTUM_X": [0.10430483820858874, 0.3125418687766551, 0.40091481101188275, 0.39660545983729495, 0.3852485454220479, 0.39171230444938376, 0.38838403330152355], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.49457350111112, 0.9126739212810703, 0.941615356596768, 0.9380957672276727, 0.933466754354516, 0.9368163678373783, 0.9358330914423603]}, "NODE_616": {"DENSITY": [0.1981449417762186, 0.3550459840551725, 0.44904224627689837, 0.43381117605082825, 0.43136759338437236, 0.43411755418460385, 0.4300404135163614], "MOMENTUM_X": [0.1296664823227705, 0.34048904879051856, 0.42887429669399196, 0.41508004953485983, 0.41270612254482186, 0.4148637414943237, 0.4104093737513226], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.5446977204773943, 0.922752575231688, 0.9641190974980838, 0.9578472963903015, 0.9554722753002293, 0.9552509233967694, 0.9521578014558397]}, "NODE_617": {"DENSITY": [0.13647555234962577, 0.30149085227001665, 0.3672722961276452, 0.469529867547048, 0.43210124162444496, 0.4039852326126347, 0.4358034072250604], "MOMENTUM_X": [0.0150270284519959, 0.29569389431597065, 0.32968806883856827, 0.4267459606975857, 0.39071683157598497, 0.364926592846694, 0.39418399009150845], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.284835829274574, 0.9778653984157419, 0.8988688496256266, 0.9553010252730015, 0.9351383238698184, 0.9242322484315784, 0.938546990257504]}, "NODE_618": {"DENSITY": [0.1421213279197964, 0.3005467028608482, 0.39097290477884256, 0.4696139516524778, 0.42190008114057953, 0.41564206916825325, 0.43879512696829326], "MOMENTUM_X": [0.026400050710101257, 0.2952898102484394, 0.3619012151956867, 0.437764427239719, 0.39374834490926014, 0.38781007836060394, 0.4093803811511759], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.30488798179051585, 0.9473023167898758, 0.922320161862447, 0.9659465397766034, 0.9450793934707383, 0.9411622428946347, 0.9512334963736649]}, "NODE_619": {"DENSITY": [0.14526359057947064, 0.30254979653859865, 0.3947766541506835, 0.4575913912228817, 0.42132500234391973, 0.4212015121955787, 0.4332899228533985], "MOMENTUM_X": [0.03099546122379222, 0.2939529980236758, 0.3661152350115912, 0.4262019689188721, 0.3919258207235488, 0.39130421228832674, 0.4023150661266024], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.31614206358112684, 0.9377207896647182, 0.9250985636155601, 0.9584640570190838, 0.9415235382144606, 0.9405256860699893, 0.9457020757460056]}, "NODE_620": {"DENSITY": [0.14597446029447733, 0.30377907269011567, 0.3908521930137104, 0.4546743203991612, 0.4273972577587104, 0.41984835514440166, 0.43109031984269575], "MOMENTUM_X": [0.031427345154030395, 0.2946668519680924, 0.3610884585401993, 0.4221516732248784, 0.39617617250387877, 0.38927373786090097, 0.39969570751043176], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.3185393714351188, 0.9396739888964386, 0.9208271161626688, 0.9555540797383992, 0.9420430824070903, 0.9394685280260153, 0.944431843743763]}, "NODE_621": {"DENSITY": [0.1460289701329389, 0.30407841188697604, 0.38954902967131805, 0.45760616614947086, 0.42823529213244577, 0.4165968261914902, 0.4322403269493376], "MOMENTUM_X": [0.031290549098390616, 0.29530399530172613, 0.35909139271815943, 0.42495950208291794, 0.3968551011611477, 0.38622973628410034, 0.4006512388435578], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.3186541401538101, 0.9417370671659795, 0.9186645455433421, 0.9578396572519181, 0.9423929353269077, 0.9381792387928712, 0.9447996383331991]}, "NODE_622": {"DENSITY": [0.14603159164414942, 0.30411077808003506, 0.3897946448261233, 0.4580893238888922, 0.4268743725666399, 0.417068844584783, 0.43245215384570523], "MOMENTUM_X": [0.03127397108018523, 0.2954205772508237, 0.3590431517842584, 0.42525437891878903, 0.3955678825324535, 0.3864830699966286, 0.4006485751010478], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.31865077096108146, 0.9422250270900818, 0.9183211279239972, 0.9579847442735597, 0.942131891149341, 0.9381301801277899, 0.9446317489080011]}, "NODE_623": {"DENSITY": [0.146061036969929, 0.30416122430234077, 0.39003627436898447, 0.4572892411566643, 0.4277978267840611, 0.4191044144174539, 0.43046290047886465], "MOMENTUM_X": [0.03132276481878885, 0.29561079500022347, 0.3594390397208928, 0.42411040339109446, 0.3964607635360614, 0.38822522675061516, 0.39865653906158594], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.3187569427376888, 0.9427064532873219, 0.9188595280010231, 0.9565131668866541, 0.9428496265926279, 0.9386994524182518, 0.9434981491284772]}, "NODE_624": {"DENSITY": [0.1462292613716562, 0.3037402360733519, 0.3904299694021852, 0.4555265746837274, 0.4285867220829136, 0.421791389758262, 0.4299942481088597], "MOMENTUM_X": [0.03159951303589233, 0.29478231123196785, 0.36063502977395584, 0.4222660317492516, 0.39730955975456683, 0.39084199081600274, 0.3983081628331515], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.3193646912832344, 0.9412911455387469, 0.9215801884723342, 0.9546929787413199, 0.943207514707924, 0.9398658741983242, 0.9432338698934853]}, "NODE_625": {"DENSITY": [0.1470669376046489, 0.3019522643520311, 0.3909242523761486, 0.4503766697095629, 0.42561379355244516, 0.42376731544791874, 0.4293495646079285], "MOMENTUM_X": [0.0329551284847764, 0.2898902044178712, 0.36067482880796825, 0.415908805652296, 0.3931761473178433, 0.39162016270412164, 0.3969744039906439], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.3223860654463691, 0.9320961021517401, 0.9237043284286608, 0.9501359145684144, 0.940070455035275, 0.9396597352695595, 0.9425092993671846]}, "NODE_626": {"DENSITY": [0.15048920289460072, 0.300755382239308, 0.39660031682623453, 0.44509114696146185, 0.42137767232243417, 0.42470881006931677, 0.4260099511378424], "MOMENTUM_X": [0.03856860490916561, 0.2842104635918486, 0.3650211795271325, 0.40928559393102915, 0.38684124431745104, 0.3896073205755102, 0.39079418757425616], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.33498855940932787, 0.9158814241182398, 0.9253621033290872, 0.9450669594310526, 0.9346468617855921, 0.9360636348650471, 0.9371209685836379]}, "NODE_627": {"DENSITY": [0.15848571917951473, 0.3079968875470343, 0.41815848546367185, 0.4479226831920481, 0.4276016190534927, 0.43484839218345483, 0.4319779871689913], "MOMENTUM_X": [0.05717046979843439, 0.2977035298968471, 0.3980621071888357, 0.4271459553264637, 0.40847487115755415, 0.41504992779511474, 0.41204484221529336], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.36905806100594696, 0.9098389584461425, 0.9482176142464823, 0.9637762272222856, 0.9546429471903835, 0.9562765921468204, 0.9540944936227623]}, "NODE_628": {"DENSITY": [0.12669123878884084, 0.29471308524669293, 0.31475476638399486, 0.4362967950317994, 0.4644514033462913, 0.40697465027564683, 0.4193358396485743], "MOMENTUM_X": [0.0018039295767207655, 0.2920247907310631, 0.2786377772154924, 0.39769789483773427, 0.4201368769032047, 0.36789637261530694, 0.37913766575640523], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2547912275945608, 0.9917580762856274, 0.8642202958199781, 0.9466729687400308, 0.9479034531181075, 0.9262018430935733, 0.9318538717714414]}, "NODE_629": {"DENSITY": [0.1279573989859617, 0.2890946055298775, 0.3330850948475637, 0.45147741224873, 0.4533333644785167, 0.40715191204538204, 0.4305899430113058], "MOMENTUM_X": [0.003793935928484111, 0.29015758818841986, 0.3048387034077697, 0.42117495808928485, 0.4216605118159381, 0.37959170891013927, 0.40129042912239726], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25850180281614155, 0.965031801101808, 0.8859183734333133, 0.9610636188915469, 0.9568734611763432, 0.9383309407205737, 0.9477794167247292]}, "NODE_630": {"DENSITY": [0.12893478711385328, 0.2879159521246306, 0.3406985193312034, 0.4462419844335193, 0.44313753039056764, 0.4134266178955428, 0.4305863623033684], "MOMENTUM_X": [0.0050977886022427, 0.2844911719214447, 0.31326553093546744, 0.4162766522986966, 0.41192717335041745, 0.38416795173654034, 0.39978621214798493], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.26141998940102895, 0.9492754117504189, 0.8930686708994963, 0.9567379267907922, 0.9507837863954202, 0.9380438932879923, 0.9449822451258414]}, "NODE_631": {"DENSITY": [0.12926717591184117, 0.2882930600590301, 0.3402190636739076, 0.4398652490969811, 0.4450617275357298, 0.4183444061401511, 0.4264404156570774], "MOMENTUM_X": [0.005445937679071032, 0.2832490012300819, 0.3121376811024487, 0.40882588434509803, 0.4121721926948863, 0.38765718544255906, 0.3951460451396473], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2624146749970282, 0.9467796034008173, 0.8923998611445715, 0.9515899305745161, 0.9493078890221411, 0.9390906635523322, 0.9426311893707807]}, "NODE_632": {"DENSITY": [0.129316959009032, 0.2887017365094595, 0.3389666134257543, 0.4401936246280809, 0.44885627873136735, 0.4165797840190672, 0.42430933194187087], "MOMENTUM_X": [0.005464137062402773, 0.28378405574494436, 0.3103200502684117, 0.40895457928165074, 0.41560953168690595, 0.3860343710737608, 0.3931208291708747], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2625597158154914, 0.9482333430247626, 0.890455131392791, 0.9521917757760029, 0.951186899833324, 0.9385837794946402, 0.94171887889794]}, "NODE_633": {"DENSITY": [0.12931885827154374, 0.28875741051519377, 0.33887473789688494, 0.44106394396685183, 0.44862539266920076, 0.41515775445518216, 0.42535290171071893], "MOMENTUM_X": [0.00545848192960684, 0.28391886349994416, 0.31005042126769355, 0.40952591546425293, 0.41537707001256924, 0.3845428086937289, 0.3938505072374103], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.26256421763573096, 0.948641696378705, 0.8902433179422736, 0.9522574863222406, 0.951500692681458, 0.9378160300333204, 0.9418639835272059]}, "NODE_634": {"DENSITY": [0.1293259605975722, 0.2885385135849937, 0.3394482389334017, 0.4405269167287037, 0.4482120156491548, 0.4173103253695027, 0.4262245689013162], "MOMENTUM_X": [0.00546672509036919, 0.28348908241660464, 0.3111814220416984, 0.40852855262675686, 0.41502725467788476, 0.38641771728834023, 0.3945008169810358], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2625855091413049, 0.9476716132087043, 0.8925156607454601, 0.9504374008306754, 0.9516823205576419, 0.9385407180130289, 0.9419675416133948]}, "NODE_635": {"DENSITY": [0.12937201158193073, 0.28765178076766906, 0.34036614862230835, 0.43912327285744185, 0.4470290408083156, 0.41998232599820057, 0.4276037994795341], "MOMENTUM_X": [0.005525521547902429, 0.2814403676552017, 0.3132360567556347, 0.4069397297187579, 0.41401759325125953, 0.3890200540468339, 0.3959464057068911], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2627243953595533, 0.9432565753755402, 0.8972834663467348, 0.9485967256713154, 0.9512061244957323, 0.9397286616757228, 0.9426897469671498]}, "NODE_636": {"DENSITY": [0.12961335646394537, 0.2855132501002597, 0.34152204128595215, 0.4363639332470011, 0.4412657473316873, 0.4200325681227962, 0.4284193252351642], "MOMENTUM_X": [0.0058406163786458454, 0.2757385540633662, 0.31419166218981787, 0.40281853724283406, 0.40710908701827336, 0.38770717975143226, 0.395681866988833], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2634531241769504, 0.931578906773764, 0.9008753493599856, 0.9451546717537299, 0.9465218743420708, 0.9380601755738786, 0.9421790198460469]}, "NODE_637": {"DENSITY": [0.1306831670899336, 0.2829944141863725, 0.34733277431352677, 0.43729411003161833, 0.43424704365827727, 0.4199411030260909, 0.42784030280886426], "MOMENTUM_X": [0.007310993311304659, 0.2691386881519419, 0.31932178053097876, 0.40269656720351993, 0.3991251254327808, 0.385383781984577, 0.3925490734408128], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2667160047002316, 0.915243910618509, 0.9038587294329847, 0.9435722001980696, 0.9410324081283454, 0.9344892000376344, 0.9382559163576438]}, "NODE_638": {"DENSITY": [0.13392064853211166, 0.2820334573032954, 0.3676612955079385, 0.4487146768823827, 0.43495128337682987, 0.4297322559480958, 0.4352958278636322], "MOMENTUM_X": [0.013576356145112415, 0.2741349874877003, 0.3489383404410123, 0.4265773059404659, 0.4144699179225696, 0.4095362359601394, 0.41470062254356277], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.27727473685332504, 0.9019576149791371, 0.9232931650806415, 0.9633650722379173, 0.9583374308678838, 0.9545951301527598, 0.9563316766447333]}, "NODE_639": {"DENSITY": [0.12517631086435607, 0.2718660530064073, 0.2855652489753667, 0.38245618005917276, 0.46916843904776984, 0.43623648626107153, 0.4025484826232527], "MOMENTUM_X": [0.00017071877830130395, 0.24936957126212733, 0.25233566921358763, 0.34903546215184933, 0.42489944375385336, 0.3951114595383032, 0.36381321734918665], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2504942275774379, 0.8835594392348923, 0.8518211613786082, 0.9269446595513369, 0.9508362480609236, 0.9393976767771655, 0.9244629782747524]}, "NODE_640": {"DENSITY": [0.12532873438741265, 0.270528621135829, 0.2945973113138006, 0.40334955001113476, 0.4699557106541702, 0.4248979928012666, 0.412270966973532], "MOMENTUM_X": [0.0003729779845554724, 0.25871537742707507, 0.26780501304456866, 0.3766083655586987, 0.43614280320722687, 0.39577844127408596, 0.3839313597211332], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2509228582766869, 0.8906770331197942, 0.8639868280099348, 0.9418838705702389, 0.9625458395830496, 0.946634848003384, 0.9398176191897882]}, "NODE_641": {"DENSITY": [0.12547150632819823, 0.2697158318298302, 0.30100289866048496, 0.4066296123023516, 0.45860800213194425, 0.42240201423415974, 0.4191011721863288], "MOMENTUM_X": [0.0005350256002265444, 0.25502626679386475, 0.27541311751565467, 0.3797537099488269, 0.42610629826742247, 0.3927475258651107, 0.38918649639166547], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2513254076333576, 0.8834453624301853, 0.8721887897330821, 0.9414313352355504, 0.9572359736578114, 0.9428698178091107, 0.9403109168187691]}, "NODE_642": {"DENSITY": [0.12553567136339724, 0.2694482070930579, 0.30262362900355455, 0.40193403467110383, 0.45402317573471623, 0.4285131579426668, 0.4195723593822099], "MOMENTUM_X": [0.0006021595631091088, 0.25270460851749, 0.2769724890279024, 0.3738486961048803, 0.42039252753602785, 0.39696050020921353, 0.3886427549631067], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25150661913016276, 0.8791336773617278, 0.8751408646474315, 0.9366010416867052, 0.9532818467799807, 0.9435050706797641, 0.9397161818119901]}, "NODE_643": {"DENSITY": [0.12555106847431566, 0.26961337270692975, 0.302320997193312, 0.40023247555378305, 0.45684222006315006, 0.4311283868621021, 0.4159371943666637], "MOMENTUM_X": [0.0006160536780048903, 0.2526431276651633, 0.2764408786649592, 0.3717586502554713, 0.42292587835049544, 0.39937827963430494, 0.3852690264633094], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25155008305722026, 0.8791216903635739, 0.8748607569531166, 0.9353441844779773, 0.9550213495000315, 0.9449507330743209, 0.9382846100445498]}, "NODE_644": {"DENSITY": [0.12555305746080872, 0.2696493816393624, 0.3022503258442594, 0.40046012549947485, 0.45808963136223313, 0.42964053007685243, 0.4153730894233488], "MOMENTUM_X": [0.0006175101617711497, 0.252681839724455, 0.2763677153336743, 0.3716448453991209, 0.42404991658729196, 0.39787778807717245, 0.3844959441629228], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2515556911707126, 0.8792180577697053, 0.8751873241605801, 0.9348277464120931, 0.9559454980902954, 0.9443420679898383, 0.9377106163906659]}, "NODE_645": {"DENSITY": [0.12555404966129027, 0.26938815020331974, 0.30285557512286543, 0.40028413270256696, 0.45747926240080233, 0.4299957527779811, 0.41824306734241357], "MOMENTUM_X": [0.0006183738509885868, 0.2520654255963134, 0.27771816081059825, 0.3710802248736812, 0.423422067143685, 0.3981342341768386, 0.387017338045435], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2515584942178393, 0.8778355633284086, 0.8783421157809367, 0.9332989739806593, 0.9557236358807645, 0.9444581673338956, 0.9387243052897121]}, "NODE_646": {"DENSITY": [0.12555988684595137, 0.2686325188036689, 0.3037610422060144, 0.39962090343843837, 0.45550033378417193, 0.43056233028017804, 0.4215125575425284], "MOMENTUM_X": [0.0006241283144435678, 0.2500845302103895, 0.27971402781090443, 0.37025415474450507, 0.4215636859020588, 0.39872531536468575, 0.3902516222577531], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2515749950691847, 0.8736217234973005, 0.883474287138331, 0.9321007993344663, 0.9546966096892298, 0.944666934376862, 0.9403974419406275]}, "NODE_647": {"DENSITY": [0.12559244581538098, 0.2674077152861974, 0.304546393241451, 0.3990515703160889, 0.4501100906852834, 0.42689927333465744, 0.4228917432336303], "MOMENTUM_X": [0.0006571543321669571, 0.2461402869363873, 0.2801717895647719, 0.3683536576681532, 0.4149534353074501, 0.3937086236387102, 0.3902492763173042], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25166704804517775, 0.8661280575554161, 0.8863173550954667, 0.9300620018961344, 0.9500916937355388, 0.9407823062182161, 0.9396548094262946]}, "NODE_648": {"DENSITY": [0.12574680136207697, 0.2666387633867416, 0.30792505692944094, 0.40453361509640723, 0.44562120894507445, 0.42269883153434595, 0.4243847593472192], "MOMENTUM_X": [0.0008221379391377213, 0.2433425461834931, 0.28306651916589726, 0.37295758608369023, 0.4101389658330397, 0.3883291178985901, 0.3896087668321207], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25210406506814403, 0.8611283270717811, 0.887573129533201, 0.9310858314068036, 0.9467854741665674, 0.9362158852092864, 0.9370475751396135]}, "NODE_649": {"DENSITY": [0.1262958279887672, 0.2647429811150113, 0.3208486981064248, 0.42321288018411257, 0.44775141251228584, 0.42716212581179575, 0.4340567514709938], "MOMENTUM_X": [0.0016559743334034719, 0.2503490406480102, 0.30376393999432866, 0.40156162782108584, 0.4254977346971508, 0.4064888856012225, 0.41303363434821005], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25367610916801214, 0.860365557594306, 0.9001413876160563, 0.9510601606852813, 0.9634359999066783, 0.9537919270629478, 0.9560267409526758]}, "NODE_650": {"DENSITY": [0.12501542977034727, 0.2278740203810247, 0.27968450734506334, 0.3328585568527655, 0.4390790697308166, 0.4663804577535267, 0.408695671403461], "MOMENTUM_X": [1.4497494726692962e-05, 0.16810357565752487, 0.25610758948491047, 0.3030358284399029, 0.3982924425986571, 0.42308397516274493, 0.36955363938062513], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500432076959839, 0.664722868265658, 0.886535663894119, 0.9044267527812639, 0.9407452415480196, 0.9524908174340542, 0.9266425174828481]}, "NODE_651": {"DENSITY": [0.1250294021544959, 0.233706783061906, 0.2793326086118481, 0.3502010526103252, 0.45315364076958503, 0.45551425688299074, 0.40700647904437814], "MOMENTUM_X": [3.200880752990897e-05, 0.18910728785760453, 0.2586287502271082, 0.32681033179121055, 0.4203667004990336, 0.42371361711681516, 0.3787292581461175], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25008234507550997, 0.7057306695306956, 0.8766784891176037, 0.9178819651733952, 0.9553758932506857, 0.9595022893525044, 0.9374246900237542]}, "NODE_652": {"DENSITY": [0.12504395357768927, 0.23575085831493955, 0.2824112764394949, 0.3573185494003691, 0.44878607654080477, 0.44453919621123905, 0.412402465293498], "MOMENTUM_X": [4.756454169153105e-05, 0.1911870825443298, 0.2620876824095503, 0.33354782920704246, 0.41707458557685173, 0.41350659048882077, 0.3831079354847976], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2501231141413823, 0.7152208035609184, 0.8797820421784813, 0.9193361046659383, 0.9534709852720314, 0.9530136745844038, 0.9377224659250457]}, "NODE_653": {"DENSITY": [0.12505173613881182, 0.23581322136129873, 0.2844294453074511, 0.35599326498373923, 0.441715590186378, 0.4450152011273334, 0.4185320454822495], "MOMENTUM_X": [5.561677828097858e-05, 0.18964648197214656, 0.264416101391111, 0.3308503649196297, 0.4092145224803612, 0.41219494100422116, 0.38759990922341797], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2501449229362955, 0.7138161625555426, 0.8846840015716817, 0.9158189017166107, 0.9488453338368116, 0.9504613615506002, 0.939201712746628]}, "NODE_654": {"DENSITY": [0.12505420930902075, 0.2358149529341736, 0.2849186127456549, 0.3541696584535921, 0.4415289719660097, 0.44962997723075054, 0.4180865431091418], "MOMENTUM_X": [5.802985322120538e-05, 0.18921910843770906, 0.26512098094947617, 0.32840205538015355, 0.40890706631479534, 0.41635572050308445, 0.387204058201621], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2501518534888514, 0.7131541661270004, 0.8865442052545167, 0.9136043278895744, 0.9493868601139667, 0.9526881942091942, 0.9393042569852162]}, "NODE_655": {"DENSITY": [0.12505470996330056, 0.23583344894619068, 0.2850361938337096, 0.3537665955810026, 0.4428684694716874, 0.4500434610684806, 0.4159995425326314], "MOMENTUM_X": [5.849366335297498e-05, 0.18919534158163315, 0.26540013905603793, 0.3276475260396554, 0.41007993873060905, 0.4166826762744196, 0.3850290315892262], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2501532564197922, 0.7131102122919706, 0.8874865629612793, 0.9125846856983352, 0.9502509437617096, 0.9531362755698313, 0.9381041161773129]}, "NODE_656": {"DENSITY": [0.12505484796081873, 0.23574313114876266, 0.2854525598077896, 0.35374354919948553, 0.4427002356480783, 0.4491965750662036, 0.4179460693082327], "MOMENTUM_X": [5.861015550750579e-05, 0.18887297982132523, 0.2664011408270287, 0.3274597504411143, 0.4097392552799526, 0.41586958452182937, 0.3867192116918989], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2501536431425545, 0.712529820242902, 0.8900487880928212, 0.9118231815040124, 0.9497719736906364, 0.9529129641189735, 0.9388000521876607]}, "NODE_657": {"DENSITY": [0.1250553505992253, 0.2355966297669575, 0.2858541278747993, 0.35367622236281004, 0.44111800619365654, 0.44750272071596775, 0.4208115070695707], "MOMENTUM_X": [5.904976462274146e-05, 0.18808612630802712, 0.2672578669670956, 0.32741332749479857, 0.40810043220500264, 0.41427500594367556, 0.389543255265818], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25015505183456865, 0.7113510142749426, 0.8927963473313992, 0.9118135962832316, 0.9485877831398405, 0.9520649842413462, 0.9403183078509483]}, "NODE_658": {"DENSITY": [0.12505830380681648, 0.2359792201064149, 0.285628022495036, 0.3541672584030068, 0.4380712332563402, 0.4414248408571694, 0.4202462886106501], "MOMENTUM_X": [6.172777088373742e-05, 0.18748435696770743, 0.2658138638061768, 0.32681370327111986, 0.40372356998049164, 0.4068796891673877, 0.38749888742974886], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2501633285796437, 0.7120374238438838, 0.8912897454347853, 0.9111198619123065, 0.9450936402098932, 0.9468157229746882, 0.9382070425265977]}, "NODE_659": {"DENSITY": [0.1250731053284312, 0.23840042314865872, 0.2859695446675227, 0.3604697614592287, 0.43919361351545344, 0.4350061233823423, 0.42012308546146365], "MOMENTUM_X": [7.583138784258343e-05, 0.19059892580817506, 0.26479815013286967, 0.3325458177096953, 0.4046588692722797, 0.400217223575887, 0.38597969651398817], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2502048164207856, 0.7230890256239872, 0.8863178758113968, 0.913203675204859, 0.9449252676446998, 0.9423137491930188, 0.9355061583698728]}, "NODE_660": {"DENSITY": [0.1251298764281183, 0.24066333827517236, 0.29053053077285607, 0.37966463769167, 0.44871456862558934, 0.4348253237966226, 0.42842909138178603], "MOMENTUM_X": [0.000151257000718843, 0.20538017569836278, 0.27531723302461397, 0.35987004715856136, 0.4253480935093907, 0.4130265346340391, 0.4071886215440089], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2503640969113552, 0.7467266022090788, 0.8877752401707836, 0.9309088094410276, 0.9626410192786147, 0.9572713269877612, 0.9536186279764971]}, "NODE_661": {"DENSITY": [0.1250012012997786, 0.17758531167450917, 0.2886881334647298, 0.29797548036319244, 0.39029736870446524, 0.4708977814365777, 0.43742249678458517], "MOMENTUM_X": [1.1220796930369488e-06, 0.08054248192328312, 0.28115072563864546, 0.2681793260255711, 0.3546565108042227, 0.42743404179372624, 0.39622870320345294], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500033636670116, 0.43819154616582673, 0.9621725139144771, 0.8782222526306679, 0.9234560995121559, 0.9542887980943842, 0.939136565573003]}, "NODE_662": {"DENSITY": [0.12500232293420738, 0.18688637997357263, 0.2810993356572728, 0.3089560066720727, 0.4101245991701263, 0.4712439268640398, 0.42595849142439124], "MOMENTUM_X": [2.496400775991777e-06, 0.10339844355356456, 0.27315957622893877, 0.2865693626035092, 0.3808422918820478, 0.4376375927798185, 0.3960163997477073], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000650433950705, 0.48418551747644667, 0.9280126482283869, 0.8927648820448231, 0.9382665394539443, 0.9648907388934364, 0.9455395978875012]}, "NODE_663": {"DENSITY": [0.12500356765721268, 0.19112787940146223, 0.28052835409147947, 0.31549525070245665, 0.4137937322186107, 0.46010073758640285, 0.4224849373380085], "MOMENTUM_X": [3.814160603782003e-06, 0.10936785381405881, 0.27044395675220906, 0.29309635021336544, 0.3849427198019949, 0.42793175901548497, 0.39268742678485846], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.250009989743752, 0.5027945451164296, 0.9195643075145711, 0.8954655413503898, 0.9396607776164332, 0.9595488112415902, 0.9425458587880943]}, "NODE_664": {"DENSITY": [0.12500432216973287, 0.19185401875866032, 0.2818144147217633, 0.3162715498881376, 0.40890434691972594, 0.4541193356749834, 0.42821650960137636], "MOMENTUM_X": [4.606045643250213e-06, 0.10913772624723664, 0.27153053033692903, 0.2925084684481582, 0.3792402548427346, 0.4206169674050285, 0.3965566821117389], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500121025297279, 0.5051123052216191, 0.922523403829736, 0.8931128881227861, 0.9362059851239635, 0.9541637360862225, 0.9432855100937321]}, "NODE_665": {"DENSITY": [0.12500461102413232, 0.191853143977177, 0.2825846682599708, 0.31528394800019144, 0.40680847784181134, 0.4566615243006416, 0.43225175402425253], "MOMENTUM_X": [4.896552151215301e-06, 0.10867745246987637, 0.2727502354806437, 0.29073644141214705, 0.3770415096754527, 0.42271476349058046, 0.4002874266761759], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25001291138315657, 0.5046985801422141, 0.925525985966379, 0.8907451277502244, 0.9357215448688951, 0.9553665174217174, 0.9454478338177488]}, "NODE_666": {"DENSITY": [0.12500468521043662, 0.19186949436104286, 0.2828067382160312, 0.3148070253412172, 0.40719682897293225, 0.4585496268354212, 0.4310881357721907], "MOMENTUM_X": [4.9682525627212265e-06, 0.10865827801308683, 0.27321359492518366, 0.28996072124188377, 0.3772688409449109, 0.4244463896111851, 0.3990152968277272], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500131191198921, 0.5046847777366934, 0.9267134071548133, 0.8898035308072444, 0.9359761769570056, 0.9566079760102779, 0.944782295083903]}, "NODE_667": {"DENSITY": [0.12500470327292906, 0.19197055019286924, 0.2828772470706078, 0.31493340991046215, 0.40725194975738416, 0.45792573256345315, 0.43090541345349603], "MOMENTUM_X": [4.984296503957307e-06, 0.10876091931775156, 0.27342063314901055, 0.2902672472535656, 0.3770593159539263, 0.42385886858318766, 0.39874834893167976], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25001316969858584, 0.5050532566774442, 0.9273713224311437, 0.8904167290474384, 0.9352362675821734, 0.9565611714629308, 0.9446167071473442]}, "NODE_668": {"DENSITY": [0.1250047395458872, 0.1924029789088833, 0.2825098748124966, 0.31530421804348313, 0.40641545079440883, 0.4554365812950525, 0.43120654065658115], "MOMENTUM_X": [5.014593101026062e-06, 0.10927221977278684, 0.2724611559349844, 0.2910238920445787, 0.3759952397647042, 0.421444076273138, 0.39908373265582753], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25001327127124706, 0.5067253711740591, 0.925708631707789, 0.8923044607317323, 0.9340714048309227, 0.9553119352032368, 0.9448670469624517]}, "NODE_669": {"DENSITY": [0.12500495849792084, 0.194032466297097, 0.2810925890812317, 0.3161268547764479, 0.40563766626527814, 0.4497528205571885, 0.42729445563950824], "MOMENTUM_X": [5.204818433677043e-06, 0.11149720226396298, 0.2684644475914225, 0.2912213623539676, 0.37384152036449886, 0.414448006520981, 0.3937454776784765], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25001388438840316, 0.5133461031814391, 0.9177195745776217, 0.8933961657832666, 0.9316972473830661, 0.950307421132056, 0.9408026749489552]}, "NODE_670": {"DENSITY": [0.1250061150240534, 0.19869780911766624, 0.27886527432596164, 0.32094101051377855, 0.4111891401991484, 0.4456700535051826, 0.4233932931228739], "MOMENTUM_X": [6.2619992501908085e-06, 0.118717588337086, 0.26325295551710076, 0.29599460600531496, 0.37915024068031083, 0.4106223599438268, 0.3893833261119698], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500171229606026, 0.5335491639283984, 0.9039901443303361, 0.8961290143655988, 0.9337311528496978, 0.947815444314141, 0.9372585104620573]}, "NODE_671": {"DENSITY": [0.12501076155063187, 0.2053892208971402, 0.276730450938421, 0.33532584100338597, 0.4275534482601218, 0.44683932540259286, 0.4265947356288], "MOMENTUM_X": [1.2202793295919336e-05, 0.1386535300472409, 0.2649200933167687, 0.3176172548917058, 0.4045935791413381, 0.4236011534440482, 0.4049201930043895], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500301354907042, 0.5727860597119274, 0.8911510324619235, 0.9102905347157659, 0.9519626670494901, 0.9621668833887609, 0.9527783468861465]}, "NODE_672": {"DENSITY": [0.12500008412833485, 0.1419258148119647, 0.29559336605084824, 0.2765448499320867, 0.34347188722250227, 0.4439435794532561, 0.46617363689674235], "MOMENTUM_X": [7.87671650465919e-08, 0.022590864817763297, 0.2968268786580518, 0.2434186051973848, 0.3128773478685228, 0.40291571942101506, 0.4231684839339357], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000023555948203, 0.30252555973769124, 1.009085744833714, 0.8472857808883734, 0.907889989202263, 0.9429275853147399, 0.952515263651937]}, "NODE_673": {"DENSITY": [0.12500016596777277, 0.1484643168794028, 0.2863212419929643, 0.2826699741718234, 0.36082395199710193, 0.45670165532017815, 0.45552495290741896], "MOMENTUM_X": [1.776940175105384e-07, 0.03605355730757717, 0.2891318422114503, 0.25807799843176193, 0.335836600571016, 0.4235669988411171, 0.42319874080626557], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500004647104344, 0.3268622862133403, 0.9735028878784818, 0.8651764468344932, 0.9195952993956751, 0.9570895300529774, 0.9583539428749295]}, "NODE_674": {"DENSITY": [0.12500026065435815, 0.15227709342312779, 0.28352814844454616, 0.2873426395420347, 0.36841441478688186, 0.4525231606854854, 0.44455600922412164], "MOMENTUM_X": [2.777710249848464e-07, 0.041688839296939985, 0.28209584179011826, 0.2638164577078306, 0.343351858272631, 0.42068158700167385, 0.41342375241501333], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000072983392657, 0.3409361619999839, 0.9563384516798699, 0.8709137554569976, 0.9221603078968656, 0.9555745738152198, 0.9526851616431482]}, "NODE_675": {"DENSITY": [0.12500032342312423, 0.1532522825155832, 0.2836294049060693, 0.2887640946737883, 0.3671271441881971, 0.4445703590847701, 0.44405690819553356], "MOMENTUM_X": [3.442697272548256e-07, 0.04235855745200875, 0.28073436306911076, 0.2642881628235015, 0.34106901175786036, 0.411781053756058, 0.4112872476828632], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000090558747434, 0.3442987225755736, 0.9541558834006277, 0.8704076223181709, 0.9202735977620171, 0.9499191398314238, 0.9501176860426438]}, "NODE_676": {"DENSITY": [0.12500035074236, 0.15331039289520593, 0.284182470796403, 0.2885461498885703, 0.3650739380660404, 0.4436721991631867, 0.4491881853373402], "MOMENTUM_X": [3.7220701236581223e-07, 0.042091233778814026, 0.28147037668581515, 0.2633406680796527, 0.3387542850099181, 0.4106022590939234, 0.4159285524604331], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000098208181337, 0.3443627983040428, 0.9561572362365779, 0.8686396060923106, 0.9193531225657725, 0.9496063192836128, 0.9527149856832905]}, "NODE_677": {"DENSITY": [0.1250003589278295, 0.15331060910534414, 0.28435241091804575, 0.2883601919823015, 0.3646120222730656, 0.4453119547849891, 0.4503370111773955], "MOMENTUM_X": [3.803073484953945e-07, 0.042048196705424326, 0.2818064961157614, 0.26300440281796467, 0.3380957417044057, 0.41210430313251817, 0.41688004900069264], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500010050012682, 0.3443313278667245, 0.9569526464290673, 0.8683999289080956, 0.9188877100232395, 0.950776860124723, 0.953287369871421]}, "NODE_678": {"DENSITY": [0.12500036096392858, 0.15343297688620128, 0.2840916370399011, 0.2887568090442021, 0.3645240165606848, 0.445381171433731, 0.4491824397879375], "MOMENTUM_X": [3.8220843101296294e-07, 0.042245203711233165, 0.28121108305035625, 0.2639710818974228, 0.3377210529236744, 0.4121427235795022, 0.4157239877794313], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500010107023798, 0.34477607019587986, 0.9555856292500374, 0.8708163682995288, 0.9178378648791463, 0.9509686631039886, 0.9527484537401433]}, "NODE_679": {"DENSITY": [0.12500036337849035, 0.15391578981224435, 0.28314548770857345, 0.28951797092709874, 0.364158413141953, 0.4434963999299142, 0.4469605575328781], "MOMENTUM_X": [3.84221595907644e-07, 0.0430135553772017, 0.2788154653702905, 0.265562706611232, 0.3370186340619284, 0.41021907168710736, 0.4135633408520125], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000101746319825, 0.3465440904599346, 0.9502703760641839, 0.8750318652556064, 0.916639455221914, 0.9499196785782623, 0.9516374885184126]}, "NODE_680": {"DENSITY": [0.12500037775176567, 0.15549366698943276, 0.2811534986772629, 0.29049269204613737, 0.3645370121300543, 0.4401393913518056, 0.44078861479855747], "MOMENTUM_X": [3.9656053315987776e-07, 0.0455319887132586, 0.27346893248082277, 0.2664853861962614, 0.33605518610809715, 0.40554179945709923, 0.4060329111803188], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500010577086471, 0.35236928524503813, 0.9386060825508957, 0.8783723275595163, 0.9148261281224054, 0.9462553430322903, 0.9462803368881929]}, "NODE_681": {"DENSITY": [0.125000457978487, 0.1597781697582785, 0.27801684784549674, 0.29349646078936803, 0.37131099627911235, 0.4411624115216556, 0.43496556446725915], "MOMENTUM_X": [4.687650904420121e-07, 0.05236364012827366, 0.2666634371253896, 0.2700785663112797, 0.34257040836829883, 0.4069001161432731, 0.4005234807878582], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000128234514574, 0.3685417038087894, 0.9215622247778146, 0.8821739552842083, 0.9173713852679577, 0.9466804970012336, 0.9427756271207719]}, "NODE_682": {"DENSITY": [0.12500079678709697, 0.1673305633364491, 0.27238028076108134, 0.30181685143545056, 0.38939473804359187, 0.44882121048410467, 0.4341333743820946], "MOMENTUM_X": [8.947110155701631e-07, 0.06990488818600268, 0.26437382412184596, 0.2853759868928505, 0.3681613000507456, 0.42471831267765303, 0.41143454423319065], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000223102225216, 0.4019922116917685, 0.9008761709566754, 0.8933368640750134, 0.934124380551565, 0.9621436967723773, 0.9559017466944164]}, "NODE_683": {"DENSITY": [0.1250000052937916, 0.12821471706882312, 0.282309129636406, 0.26644408293060284, 0.31005224024841593, 0.3985344392368385, 0.4722145981719741], "MOMENTUM_X": [4.973048617445454e-09, 0.003524226922120847, 0.2701788804206362, 0.23129328088698153, 0.2835518784965759, 0.3615065825886424, 0.4292712799578948], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000148226171, 0.25918426603117095, 0.9399647077317481, 0.8294118289498683, 0.8993468262104705, 0.9240621038145101, 0.9563666767853114]}, "NODE_684": {"DENSITY": [0.12500001068877842, 0.13020123949408494, 0.27810899486407104, 0.2687612359206602, 0.3209871773250082, 0.41747721563476303, 0.471671212980681], "MOMENTUM_X": [1.1428770588167723e-08, 0.006806461974289685, 0.274445077448965, 0.2413366544841811, 0.2999092423968781, 0.38691378537971827, 0.43795848144592325], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000299285826, 0.2651696580887619, 0.9348077210019937, 0.8436555744674625, 0.9063465812044229, 0.9392670849234479, 0.9652452187404351]}, "NODE_685": {"DENSITY": [0.125000017146577, 0.1317748850818361, 0.27610838097200396, 0.27192380415383416, 0.32805383479584244, 0.4211848091668788, 0.4607927347855049], "MOMENTUM_X": [1.825071060387861e-08, 0.00897537139832045, 0.2690519994102422, 0.24656738251265467, 0.30658318336325735, 0.39136950159185424, 0.4286623172788585], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000480104235, 0.270004531209426, 0.9232715086915957, 0.852396692666005, 0.9076495983688471, 0.9413789069145958, 0.9601482666206749]}, "NODE_686": {"DENSITY": [0.125000021726431, 0.13236597242259932, 0.2755494365333938, 0.2735146204710726, 0.3290526443890788, 0.41576367460984787, 0.4540210059397119], "MOMENTUM_X": [2.3116093007790542e-08, 0.00961167348701732, 0.2663036825066756, 0.24804396757962793, 0.30638221103136365, 0.38513250438351826, 0.4206295261349209], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000006083402, 0.271819555928427, 0.9181014901074321, 0.8551712207671897, 0.9063550707494881, 0.9375498010941213, 0.9545271776713588]}, "NODE_687": {"DENSITY": [0.12500002391088952, 0.13246346960929006, 0.2756882580058163, 0.27381072486432595, 0.32795836456140853, 0.4129875427528535, 0.4563210435226804], "MOMENTUM_X": [2.5367637684894856e-08, 0.00963578452179742, 0.2661432809332597, 0.24798594192865683, 0.3047890594685859, 0.38219707679078446, 0.4224818285032288], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000006695050675, 0.2721057059017077, 0.9179947272889265, 0.8550617606005749, 0.905202119534421, 0.9364897007678775, 0.9556674264913788]}, "NODE_688": {"DENSITY": [0.12500002464060314, 0.132468985115933, 0.27572680881183875, 0.2739489224560297, 0.3272425169958896, 0.4134104958155963, 0.45874026649037697], "MOMENTUM_X": [2.6100890444169315e-08, 0.009619814569008588, 0.26617379528595786, 0.24819643576465938, 0.30378307549928346, 0.38255517094881397, 0.4246862692445995], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000689937058, 0.2721178719028069, 0.9180381828646953, 0.8558261465007337, 0.9041573619072314, 0.9370948940406084, 0.9570195149208133]}, "NODE_689": {"DENSITY": [0.12500002483271677, 0.1325158723518483, 0.2753534228254789, 0.27456635301360227, 0.3269418128555132, 0.4137431947863674, 0.45807616598629525], "MOMENTUM_X": [2.6286511039829195e-08, 0.009683268742430386, 0.26524552001047186, 0.24962213115991738, 0.3032042858644611, 0.38280876074042386, 0.4240058251109692], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000695316242, 0.2722628627385761, 0.9158827497506328, 0.8594939310007388, 0.9028628581484288, 0.9372667891933553, 0.9567596693578401]}, "NODE_690": {"DENSITY": [0.1250000249821209, 0.1327132178558023, 0.2744181208365496, 0.2755084319359715, 0.32670859427240656, 0.41285285850382253, 0.4550276164199175], "MOMENTUM_X": [2.6413598488098823e-08, 0.009958290144505, 0.262722018043466, 0.2515767806617175, 0.30258543591957593, 0.3817525413831809, 0.42094034719309636], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.250000069949956, 0.27287634404419625, 0.910290946729095, 0.8649046525904922, 0.9015839957840235, 0.9365688969472301, 0.9550662583949652]}, "NODE_691": {"DENSITY": [0.12500002582517328, 0.13337745325433512, 0.27302057845462524, 0.2764199740460674, 0.3272555413873267, 0.41196306847437597, 0.4491006885004124], "MOMENTUM_X": [2.7135493995480622e-08, 0.010896453160299453, 0.2584779788527707, 0.2526617089890351, 0.30187289196323425, 0.3795639413035289, 0.4136727080145119], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000007231050386, 0.27495070177290515, 0.9014414784318477, 0.8690666521378502, 0.8998369928915281, 0.9343520593043174, 0.9498155361179573]}, "NODE_692": {"DENSITY": [0.12500003080360905, 0.13532032617917594, 0.27138703767090244, 0.2779348347201895, 0.3327496666142851, 0.4173957557614121, 0.4452733203846529], "MOMENTUM_X": [3.158943512541551e-08, 0.013691106860423866, 0.2544510570080311, 0.25497031544442206, 0.3071816853113747, 0.38521213215412176, 0.41052553673984904], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000862501317, 0.2811060837060175, 0.892489239185787, 0.8725899884018421, 0.901665297729547, 0.9370150407557933, 0.9479390811923005]}, "NODE_693": {"DENSITY": [0.12500005341525197, 0.13961668741909367, 0.2667093026697416, 0.28133794354826547, 0.347620561350393, 0.43165544000009426, 0.4455760738163076], "MOMENTUM_X": [5.964577503531759e-08, 0.022202164867581087, 0.2559769808538551, 0.2650617585756548, 0.32862614136128443, 0.4079287620171512, 0.4215915047907388], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000014956279465, 0.2958936736975596, 0.8816389870467817, 0.8805290622235236, 0.9152352182152228, 0.9534420754200944, 0.9604707640136081]}, "NODE_694": {"DENSITY": [0.12500000029965902, 0.12543771467414644, 0.24389537102106437, 0.26880674475724897, 0.2903315937889891, 0.3522377138705708, 0.4493759703245801], "MOMENTUM_X": [2.824766207402775e-10, 0.0004274150723454459, 0.19728890803739382, 0.23989362652038468, 0.2660291066432999, 0.31923504435203487, 0.40867923832807285], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000008390453, 0.25122861834693705, 0.7428748547927203, 0.8561371762618052, 0.8940793186456448, 0.9047864648742063, 0.9474833376167946]}, "NODE_695": {"DENSITY": [0.12500000061948352, 0.12575446107648589, 0.24765098823145731, 0.2662308705353889, 0.29537095489540793, 0.37015126447877295, 0.460480568617848], "MOMENTUM_X": [6.618293479176424e-10, 0.0008612173999551489, 0.21553020872462203, 0.24135710082839276, 0.27697065031193846, 0.34300848947399837, 0.4273593617050107], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000017345539, 0.2521237578560914, 0.7762576553348816, 0.8517197237727975, 0.8986215335742667, 0.9185759892947973, 0.9599944184891372]}, "NODE_696": {"DENSITY": [0.1250000010131532, 0.12606682688345314, 0.248791598308915, 0.2677288339677443, 0.2998450005595643, 0.3781504180330546, 0.4561219855618609], "MOMENTUM_X": [1.0775228403543872e-09, 0.0012282854980681269, 0.216170201826724, 0.24441785855777395, 0.2809071362116465, 0.351313156634911, 0.42432408943579114], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000283682894, 0.25301063863560774, 0.781646366514245, 0.8576526141751274, 0.8977255390493857, 0.922466426342655, 0.9581331138419898]}, "NODE_697": {"DENSITY": [0.12500000130783773, 0.12622643903853806, 0.24860347502578312, 0.26936594098032857, 0.3012821417862153, 0.37664517689245397, 0.44752274144377496], "MOMENTUM_X": [1.3909688555130424e-09, 0.0014029142968938, 0.21413952402243086, 0.24661764037924228, 0.28091601006743633, 0.3489653168431535, 0.4147225805167203], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000036619457, 0.25346519097679254, 0.7788975484452435, 0.8632238524515321, 0.8956764569668167, 0.9209119087723476, 0.9518565471093532]}, "NODE_698": {"DENSITY": [0.12500000145871412, 0.12627236894406213, 0.24852716850112758, 0.27004861270139413, 0.3009573908227886, 0.3741202050465036, 0.44604418373383015], "MOMENTUM_X": [1.5473634028980765e-09, 0.0014449633535509733, 0.21348885384981198, 0.24750971543864847, 0.27984528966312333, 0.34627632772857597, 0.41292158743663143], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000040843996, 0.2535958501782377, 0.7777468296774565, 0.8654488461460902, 0.8940448456681184, 0.9200276077970211, 0.9510885941417628]}, "NODE_699": {"DENSITY": [0.1250000015134731, 0.12628064545535497, 0.24850019637346202, 0.27038777816281045, 0.3003990433410299, 0.37359642584155656, 0.4478589204147182], "MOMENTUM_X": [1.603000913363962e-09, 0.0014505993929145651, 0.2133496209053283, 0.24813276990835384, 0.2789115138543969, 0.34573331783210126, 0.4145965148807135], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000423772467, 0.2536193142220117, 0.7774203736573717, 0.8670588957006146, 0.8927095281805867, 0.9201453911786122, 0.9522953203056725]}, "NODE_700": {"DENSITY": [0.1250000015287828, 0.12629024401174707, 0.24830054457972267, 0.2709499858315488, 0.3000713300721324, 0.373733999111877, 0.44800786286017213], "MOMENTUM_X": [1.6181228912303125e-09, 0.0014603206048558065, 0.21272975930888927, 0.24938789320758445, 0.2783809646822217, 0.34578529415590886, 0.41469453833052916], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000042805919, 0.2536466641971842, 0.7761438613790073, 0.8703533804385692, 0.8916122272346378, 0.9201083804986995, 0.9524592186459006]}, "NODE_701": {"DENSITY": [0.12500000153740443, 0.12632846731246186, 0.24798052461927222, 0.27158128920693947, 0.29989726554503393, 0.3734902566100274, 0.44569786413849716], "MOMENTUM_X": [1.6256647379775721e-09, 0.0015024379599243372, 0.211450162889116, 0.2505899405859983, 0.2778925644285865, 0.345291000739351, 0.41223801810192884], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000430473246, 0.25375572712032246, 0.7737988763354731, 0.8740404137087432, 0.8906845620725523, 0.9196050550821452, 0.9509969227358985]}, "NODE_702": {"DENSITY": [0.1250000015813264, 0.12646302265620443, 0.24810325927506544, 0.2718337610965634, 0.30024916685815023, 0.37406962288978296, 0.44196928923627465], "MOMENTUM_X": [1.663191748844926e-09, 0.0016540360243432906, 0.2103254478765078, 0.2503624870190844, 0.2771670149504667, 0.34464521591087965, 0.4071673545934827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000044277141, 0.25414008987177655, 0.7729512444131502, 0.8750532904450772, 0.8892016750905324, 0.9183134182861872, 0.9469845940097903]}, "NODE_703": {"DENSITY": [0.12500000185764198, 0.12688711339205075, 0.24958376392079146, 0.27169855880922866, 0.3036704022639206, 0.38122521919354013, 0.4427226950401794], "MOMENTUM_X": [1.9086837468025396e-09, 0.0021448396065792976, 0.21190563734620604, 0.2500894947485779, 0.28057720640295913, 0.3519137238155882, 0.40858808493575655], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000520139765, 0.2553562205892015, 0.7795897771584993, 0.8735941548593276, 0.8902096482431262, 0.921770945365587, 0.9476086517603473]}, "NODE_704": {"DENSITY": [0.12500000321314886, 0.12800017135647254, 0.2495483131938893, 0.2712304380383885, 0.3132488257119704, 0.3981662835254886, 0.4487325603257349], "MOMENTUM_X": [3.573676753789812e-09, 0.003946809898955145, 0.22236344544451594, 0.25511986096357586, 0.2962853149145556, 0.3759801714976615, 0.423989852456481], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000899681707, 0.25862167057779156, 0.7929702550892257, 0.874260884315266, 0.9002004177407118, 0.9376282649822463, 0.9611528370020895]}, "NODE_705": {"DENSITY": [0.12500000001521974, 0.12505218148760397, 0.19301530618669444, 0.28202797164477383, 0.2783760537725448, 0.316349225825279, 0.40773567795268173], "MOMENTUM_X": [1.440412515263246e-11, 4.91968045241205e-05, 0.10673237408416054, 0.2691114610303095, 0.2526282924226111, 0.2865632722879101, 0.37064829156660906], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000426152, 0.25014614991780737, 0.5039243916493797, 0.9338996959004701, 0.8796574321910857, 0.8902537673115085, 0.9301485460895761]}, "NODE_706": {"DENSITY": [0.12500000003231304, 0.12509104838202909, 0.20195053798189752, 0.27393195278381216, 0.28040516971963886, 0.32913363195776174, 0.425471737514746], "MOMENTUM_X": [3.450013506371561e-11, 9.878481897365865e-05, 0.1304178328970772, 0.2607227925647931, 0.26202336619260497, 0.30512760030531666, 0.3947088330956779], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000009047657, 0.25025508960022924, 0.5523960376714965, 0.9030697467769536, 0.8880198583662129, 0.901189862683657, 0.9442705653492461]}, "NODE_707": {"DENSITY": [0.1250000000538198, 0.12513425986078153, 0.20594583693595775, 0.27302842818596995, 0.28264040131801693, 0.33730368124991156, 0.42877530605405356], "MOMENTUM_X": [5.720291904130076e-11, 0.00014561454684870024, 0.13607843318568058, 0.2588388827995237, 0.264106516665924, 0.31345133514498225, 0.39879215001568397], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000001506954, 0.25037627170719595, 0.570679194414788, 0.8981811835249879, 0.8870953806509473, 0.9050432436130205, 0.9459075813480612]}, "NODE_708": {"DENSITY": [0.1250000000706131, 0.12516131706277442, 0.20657651662098303, 0.2742366299160861, 0.2835561877807753, 0.3385351756245247, 0.4227128772717509], "MOMENTUM_X": [7.507629144804014e-11, 0.0001743754878523724, 0.13560079365730143, 0.2603394188622335, 0.2634734982221652, 0.3138139024316553, 0.3918044657273637], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000019771657, 0.25045218906111705, 0.572427413586202, 0.9028178705853563, 0.8840514172684034, 0.9050584018213849, 0.9412263148930192]}, "NODE_709": {"DENSITY": [0.12500000007970172, 0.12517210299824155, 0.20652448447129826, 0.27509906099137843, 0.28349427033720104, 0.3372645527325442, 0.4192542746130419], "MOMENTUM_X": [8.453823548716042e-11, 0.0001851530627918686, 0.1349561643043285, 0.26176623356360157, 0.26247325777507813, 0.3122924338094014, 0.3880952997798511], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000002231648, 0.2504824558655789, 0.5716170722346352, 0.9065225419166277, 0.8817835601673707, 0.9047092325904533, 0.9394524703377584]}, "NODE_710": {"DENSITY": [0.12500000008322343, 0.12517512212612333, 0.20651608337843255, 0.2754778738434843, 0.283211024644046, 0.33650823478263814, 0.419590506208853], "MOMENTUM_X": [8.814604566919173e-11, 0.00018795329041173278, 0.13485178889411925, 0.26251876706072125, 0.2618282532730928, 0.3114931351307013, 0.38838844341912193], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000023302565, 0.25049092740717116, 0.5714256288560662, 0.9083823632927986, 0.8806429872923001, 0.9045701267244219, 0.9400134440403312]}, "NODE_711": {"DENSITY": [0.12500000008426423, 0.12517681956456708, 0.20660140961121978, 0.2756939565676881, 0.28311839513388987, 0.33635863914908465, 0.42001753208575754], "MOMENTUM_X": [8.918987825310567e-11, 0.00018949120738060568, 0.13485195105605197, 0.2629613035619196, 0.2617733308228712, 0.31125522645824283, 0.3887602075284334], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000002359398, 0.2504956909965012, 0.5716412770039566, 0.9096517136830824, 0.8806760776890789, 0.9042650649619811, 0.9403353462766969]}, "NODE_712": {"DENSITY": [0.12500000008472742, 0.12518190863193995, 0.20703907321994938, 0.2755698152094669, 0.28320512017067645, 0.3363021944936337, 0.41891179400692874], "MOMENTUM_X": [8.96088444829873e-11, 0.00019439425992341997, 0.13523237720133147, 0.262393846091027, 0.26186466837499, 0.31089588174621136, 0.38740227704691277], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000002372367, 0.2505099746781767, 0.573216461710158, 0.9089318860837882, 0.8812978992626816, 0.903709967602208, 0.9394145228649453]}, "NODE_713": {"DENSITY": [0.12500000008676906, 0.12520023639955685, 0.20866866208575463, 0.2746466323967126, 0.2835578733862714, 0.3372573883173097, 0.4177661138265406], "MOMENTUM_X": [9.135014130402457e-11, 0.00021250416403591294, 0.13733245359077567, 0.25956683351450693, 0.261571706019596, 0.310725631153335, 0.3849471509650887], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000002429533, 0.25056142279120486, 0.5798609946135155, 0.9033400565935787, 0.8813326360852809, 0.9027083382705955, 0.9369418828119719]}, "NODE_714": {"DENSITY": [0.12500000010051215, 0.12526024056163013, 0.21292942039241522, 0.272552902004289, 0.2854059652712787, 0.3436590136842121, 0.42284962154327543], "MOMENTUM_X": [1.034744788438532e-10, 0.0002729508086824684, 0.14385318552569476, 0.25536781933887354, 0.2637851135531672, 0.3172337893767367, 0.3905072921316855], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.250000000281434, 0.2507299398141402, 0.5988442517951766, 0.8925384196042624, 0.8827367850725556, 0.9057444577445557, 0.9396810954012546]}, "NODE_715": {"DENSITY": [0.12500000017377125, 0.12542796900327205, 0.2181141014345355, 0.26851460736920935, 0.29023836699087635, 0.3588362441149131, 0.43519002898901155], "MOMENTUM_X": [1.9255696109786328e-10, 0.0005052179602283269, 0.16182138559243728, 0.2547060060683356, 0.2746802412196968, 0.33872886158564275, 0.41079794437972755], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000048655957, 0.2512023508178041, 0.6333599619956533, 0.8804646752200206, 0.8902566409508333, 0.919499402584606, 0.9543839604204831]}, "NODE_716": {"DENSITY": [0.1250000000006895, 0.1250058589735852, 0.15088506279406438, 0.2949535190344561, 0.26880334669141687, 0.2939617538545388, 0.36271387094974017], "MOMENTUM_X": [6.554622923549035e-13, 5.4834173061695e-06, 0.03641907506601193, 0.29633599218827794, 0.23757234140849715, 0.26686108472517966, 0.3293948425063614], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000019306, 0.25001640565809397, 0.33382662984623823, 1.007710880139364, 0.8492937418880766, 0.883984915265737, 0.9110537007244925]}, "NODE_717": {"DENSITY": [0.12500000000150838, 0.1250102626440292, 0.15886982740004643, 0.2844664000965702, 0.270386162546151, 0.30084911345774107, 0.380545919305981], "MOMENTUM_X": [1.6096212185297388e-12, 1.0988070116683505e-05, 0.05377444073293121, 0.2856019851619501, 0.24821937835435434, 0.2794595133409284, 0.3529509372793049], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000042234, 0.2500287373644235, 0.3662848771819122, 0.9665672073054464, 0.8656846090080794, 0.8909362705685561, 0.924331561738073]}, "NODE_718": {"DENSITY": [0.12500000000255926, 0.12501551507798772, 0.1632851063454362, 0.28146728038200547, 0.27188059320836544, 0.30681967764903556, 0.38847129781441475], "MOMENTUM_X": [2.7187756271287216e-12, 1.658399836532198e-05, 0.06033866544248609, 0.27875718891516793, 0.2507949996401726, 0.2855481707188702, 0.3611890286118048], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000716605, 0.25004344679889684, 0.38362871796759856, 0.9502003042299506, 0.8690290507893709, 0.8933937241581215, 0.9279183653117753]}, "NODE_719": {"DENSITY": [0.1250000000034086, 0.1250193022336017, 0.1643734408108986, 0.2816936802235116, 0.27241733416124836, 0.30896325200948493, 0.3864585216064081], "MOMENTUM_X": [3.6229329419955322e-12, 2.0623281688137777e-05, 0.060977117098584915, 0.27797727925716187, 0.25013196513447955, 0.2868211200863837, 0.35822821603685717], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000954414, 0.2500540534478871, 0.3874800566567408, 0.9497113043726043, 0.8669116245619959, 0.8939040641089452, 0.9255737546052841]}, "NODE_720": {"DENSITY": [0.12500000000388892, 0.12502116356956436, 0.1644180946439825, 0.282360531205835, 0.2723923499970224, 0.3087840439496162, 0.38328988434565253], "MOMENTUM_X": [4.124592663817506e-12, 2.253373737307177e-05, 0.060569354943040075, 0.2790024956854012, 0.24918589459674603, 0.2862790100059528, 0.35479570833336527], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000001088896, 0.2500592666235074, 0.3873913736161569, 0.9525947996857037, 0.8646553048475222, 0.8938656259677444, 0.9239400347423397]}, "NODE_721": {"DENSITY": [0.12500000000408493, 0.12502183099714523, 0.16442114818512996, 0.2826224613070737, 0.27237656915023617, 0.3082243595361744, 0.3825429015384845], "MOMENTUM_X": [4.3266019815853966e-12, 2.3187986565097405e-05, 0.06050507206926521, 0.2795311763156009, 0.2489657545036198, 0.28558367800555395, 0.35406062656010073], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000114378, 0.2500611359396461, 0.38733504710248706, 0.9538785221642023, 0.8642988220465453, 0.8934827561601396, 0.923972337973217]}, "NODE_722": {"DENSITY": [0.12500000000414568, 0.12502212737787577, 0.16461640435300032, 0.2824161685474554, 0.27269368501976615, 0.30790155228391486, 0.3827411041868895], "MOMENTUM_X": [4.388193747400849e-12, 2.3459474595402718e-05, 0.06080924728549829, 0.2789946467372546, 0.24972143940970634, 0.28512048523770633, 0.3542267206841641], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000116079, 0.2500619660399602, 0.3880656494087679, 0.9526668623646197, 0.8663242504001574, 0.892799811778607, 0.9241951402902064]}, "NODE_723": {"DENSITY": [0.12500000000416858, 0.12502272549621157, 0.1653115362074818, 0.2815562813723318, 0.27327552570285474, 0.3077648405518001, 0.38246973199196527], "MOMENTUM_X": [4.409614729026873e-12, 2.4011558165959105e-05, 0.06190414698104901, 0.27669332766665006, 0.2508575970417275, 0.2846057402108967, 0.3536543389228171], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000001167205, 0.2500636412715393, 0.39072111568636503, 0.9475327710078882, 0.8696799774101931, 0.8918943387240791, 0.9236939353779273]}, "NODE_724": {"DENSITY": [0.12500000000425215, 0.12502485982207945, 0.16732010232087186, 0.2797333060295771, 0.2739848996460314, 0.3084491930068009, 0.38307366482880506], "MOMENTUM_X": [4.4808864252360735e-12, 2.6035625468446927e-05, 0.06511055529219463, 0.27179374636886516, 0.25160668900056693, 0.28422959229253286, 0.35303684524272966], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000119061, 0.25006961926326143, 0.39850958871113584, 0.9365635728974652, 0.8726550808679752, 0.8906482251271476, 0.9223759729994112]}, "NODE_725": {"DENSITY": [0.1250000000048614, 0.12503202391811197, 0.17215624685213418, 0.2764367549107425, 0.27515817338682513, 0.31290420980590794, 0.3902958747575573], "MOMENTUM_X": [5.014428147948928e-12, 3.294589016502926e-05, 0.07280564993985955, 0.2649332008825569, 0.25373872473304865, 0.28883452852336505, 0.360559547560249], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000001361194, 0.2500896860840781, 0.41774840416183817, 0.9192319176308952, 0.8760710714330411, 0.8926241877982124, 0.9260651029458966]}, "NODE_726": {"DENSITY": [0.12500000000842687, 0.12505240158933778, 0.17973903273777828, 0.26985056255338474, 0.27693498876690237, 0.32379736635811124, 0.40600712940677613], "MOMENTUM_X": [9.303594129888832e-12, 5.9814532425932315e-05, 0.09145810263086862, 0.26054697217730993, 0.261817351908984, 0.3056528823594705, 0.3830539790428122], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000235953, 0.2501467833701431, 0.4543935995020141, 0.8965954382707726, 0.8830374341419422, 0.903560787966009, 0.9407785937766583]}, "NODE_727": {"DENSITY": [0.12500000000002776, 0.12500062763470562, 0.13084057674179747, 0.290447387584149, 0.26193694321410577, 0.2829203760266192, 0.32537861137527996], "MOMENTUM_X": [2.6520136424706493e-14, 5.868627549577693e-07, 0.00678203090097165, 0.2867930637276597, 0.2254489078719337, 0.2585946381533726, 0.29503178251478107], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000777, 0.25000175738341307, 0.2669670985173808, 0.9844110973049996, 0.8206092872560441, 0.8871558339002198, 0.8946802224244327]}, "NODE_728": {"DENSITY": [0.12500000000006264, 0.12500110821443972, 0.1340362255375609, 0.2837426728699493, 0.26310816962047834, 0.2849904255838022, 0.3391097385219147], "MOMENTUM_X": [6.684420726424213e-14, 1.1817071001066605e-06, 0.012470443486717586, 0.2859478495580869, 0.23549980254408984, 0.26614034930100944, 0.31446543563287743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000017547, 0.2500031030237057, 0.27710028268565245, 0.9660987582327603, 0.8386315018276636, 0.889412136528041, 0.9059291248619633]}, "NODE_729": {"DENSITY": [0.12500000000010822, 0.12500170957626996, 0.13640115850279047, 0.2809357107228967, 0.2648385370305767, 0.2881810628881449, 0.3477589613703631], "MOMENTUM_X": [1.1493149412062972e-13, 1.8202592563483971e-06, 0.015879577023823702, 0.279110583789276, 0.23968509663049933, 0.2692344322436565, 0.3232195406591018], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000003031, 0.250004786870049, 0.2847494714886937, 0.9505369198573032, 0.8475613915669986, 0.8892265374423187, 0.9097233510065329]}, "NODE_730": {"DENSITY": [0.12500000000014613, 0.12500219003673507, 0.13724093856901426, 0.28035847359705474, 0.26564135046959164, 0.2899535517356105, 0.3487996130821126], "MOMENTUM_X": [1.552771104769551e-13, 2.335672263477879e-06, 0.016759817118728336, 0.27640250961751645, 0.24023886804272845, 0.2700259375314449, 0.32329629916402525], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000004092, 0.2500061321973303, 0.287438074189822, 0.945466871229884, 0.8491785420806346, 0.8890012891523346, 0.9091839777692473]}, "NODE_731": {"DENSITY": [0.12500000000016837, 0.1250024629301763, 0.1373637805705803, 0.2805744170100409, 0.26580212455320823, 0.29024811659952743, 0.3470654278859731], "MOMENTUM_X": [1.7854443489009676e-13, 2.6200107840962806e-06, 0.016735776940511357, 0.27638922583903847, 0.23986931026000854, 0.2698085801907535, 0.3212430671760605], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000004714, 0.25000689632411427, 0.2877935971167108, 0.9458432701334887, 0.8484542055750948, 0.888707172980683, 0.9082985880321381]}, "NODE_732": {"DENSITY": [0.12500000000017783, 0.12500257824498656, 0.13737338398197743, 0.28063883653212535, 0.26602724830631985, 0.2899183390635125, 0.3460795156374677], "MOMENTUM_X": [1.8834147006769326e-13, 2.7360944628998408e-06, 0.016706782214226338, 0.27646674395980797, 0.24015418118318282, 0.2692051317415841, 0.32027225643302903], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000004979, 0.25000721921662916, 0.2878106779559347, 0.9460214189277836, 0.8492771582600165, 0.8879056367811726, 0.9081927021871762]}, "NODE_733": {"DENSITY": [0.12500000000018086, 0.12500262723261657, 0.13747992934473913, 0.2802077196997211, 0.2666952745561315, 0.2895278227295308, 0.3459655036281746], "MOMENTUM_X": [1.9146467253866544e-13, 2.7825263872218914e-06, 0.016864145483161234, 0.2753744439379404, 0.24160431684331823, 0.26856677523265543, 0.320155640522987], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000050643, 0.25000735638672483, 0.28815617644600433, 0.9434403346370732, 0.8530636256579966, 0.8867053104586832, 0.9082838764511776]}, "NODE_734": {"DENSITY": [0.12500000000018188, 0.12500269550992305, 0.13786618252642438, 0.279151291163372, 0.26769203743776687, 0.28923575849513045, 0.3460025085412615], "MOMENTUM_X": [1.9245402479636915e-13, 2.845088982094535e-06, 0.017444007313240802, 0.27253420367356324, 0.24357916909802502, 0.26777798131845604, 0.31989122805695835], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000005093, 0.25000754757009064, 0.2894192351145711, 0.9369680968024496, 0.858627191098487, 0.8852093482263487, 0.9079765198529286]}, "NODE_735": {"DENSITY": [0.1250000000001849, 0.12500292809810493, 0.1389886068198839, 0.2775096358166423, 0.2687356617213959, 0.28946116207067696, 0.3472351211719323], "MOMENTUM_X": [1.9502163373875366e-13, 3.06321078506837e-06, 0.01913994080602017, 0.26786056570400374, 0.24516412710554908, 0.2669426516062394, 0.3200323164619813], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000051775, 0.25000819884174896, 0.2931162330789983, 0.9266426323098131, 0.863880919831352, 0.8833762303820385, 0.9072246809462976]}, "NODE_736": {"DENSITY": [0.12500000000020867, 0.1250037253470607, 0.14185538842502865, 0.2750647120321246, 0.2696491270667733, 0.29191987333666486, 0.35422615667329654], "MOMENTUM_X": [2.1567464505351064e-13, 3.823034417296304e-06, 0.02347726719551905, 0.2623981768346782, 0.2474049645429455, 0.2695673099851317, 0.3272523224657737], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000058425, 0.2500104312364095, 0.30272692944111873, 0.9135144876071156, 0.8687657811056587, 0.8840928304175831, 0.9107261333672931]}, "NODE_737": {"DENSITY": [0.1250000000003633, 0.1250060386031506, 0.14744992644477867, 0.2689243847229203, 0.26974160215365983, 0.29821574937311246, 0.36934424307594504], "MOMENTUM_X": [3.996098075792369e-13, 6.838437447752221e-06, 0.03514305336275381, 0.26052294060692555, 0.25394901859488234, 0.2815971450017184, 0.3484168917724108], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000101724, 0.2500169088841949, 0.3235939164842722, 0.8953115839293367, 0.8755352064220187, 0.8922098068369947, 0.9240390265090996]}, "NODE_738": {"DENSITY": [0.12500000000000097, 0.12500006409222944, 0.12588494491624108, 0.25945133822974453, 0.2630657861880778, 0.2785363498268138, 0.29954956333110583], "MOMENTUM_X": [9.437704010935993e-16, 5.991452858652558e-08, 0.0008848726989835428, 0.22660726237070286, 0.22902123430448873, 0.2564187809069525, 0.2709713539836142], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000027, 0.2500001794583092, 0.2524902673752758, 0.8219327901265645, 0.8301247462231428, 0.8936739719094923, 0.8822156876531196]}, "NODE_739": {"DENSITY": [0.1250000000000023, 0.12500011444748058, 0.12649380392521758, 0.2606886430598323, 0.2613517454632342, 0.2777183328350958, 0.3081215140434253], "MOMENTUM_X": [2.4583250953214363e-15, 1.2178198662097428e-07, 0.001758774463263559, 0.24094833084775347, 0.23289254821376046, 0.26123474843703537, 0.28556562543064024], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000644, 0.25000032045319964, 0.254227915530539, 0.8444155475255097, 0.8337892684162851, 0.893490085026544, 0.8916868333049485]}, "NODE_740": {"DENSITY": [0.12500000000000405, 0.12500017987045664, 0.12707539541684162, 0.2607247457204555, 0.2627894626211356, 0.27862188881284616, 0.3150391190917939], "MOMENTUM_X": [4.304913987228134e-15, 1.911143487038411e-07, 0.0024785143003189566, 0.23956445713493957, 0.2367880438323273, 0.26167381439261117, 0.29265528202849894], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000113, 0.2500005036379177, 0.25590224275154555, 0.8441486559649167, 0.8428080648436399, 0.8903011705198893, 0.8948649280524923]}, "NODE_741": {"DENSITY": [0.12500000000000555, 0.1250002363436117, 0.12736361398576282, 0.260297203672607, 0.26413380921356827, 0.2794771760267114, 0.31735618923277104], "MOMENTUM_X": [5.8861518548592326e-15, 2.5180757948667526e-07, 0.002802676991937792, 0.2370535495333271, 0.2388351518427225, 0.26121846506015195, 0.29406159714225283], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000155, 0.25000066176324, 0.25673579081408743, 0.8399832637467144, 0.8485801566031482, 0.8881539614305107, 0.8952762079301759]}, "NODE_742": {"DENSITY": [0.12500000000000644, 0.12500027199832342, 0.12744291180607714, 0.2601998120654738, 0.2646983243528525, 0.27971753786965076, 0.31699122890134696], "MOMENTUM_X": [6.828609943630395e-15, 2.892532150585446e-07, 0.002871253457634157, 0.23632500293167696, 0.23952395945635988, 0.26071528890595147, 0.29333638312693194], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000001804, 0.2500007615968047, 0.2569641445498334, 0.8386371557243684, 0.8505759867910071, 0.8869376515542384, 0.8951606720063816]}, "NODE_743": {"DENSITY": [0.12500000000000683, 0.125000288988985, 0.12745812727591269, 0.2601387340101159, 0.2651074515143567, 0.2794981692614963, 0.3163219761370333], "MOMENTUM_X": [7.238277469888678e-15, 3.0662885043854315e-07, 0.0028798767179228427, 0.23609576490315995, 0.24025656489174765, 0.2600959108029035, 0.2926608999151496], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000191, 0.2500008091708462, 0.2570075375032748, 0.8380879329254028, 0.8524898386472987, 0.8856775409302968, 0.8952053317437916]}, "NODE_744": {"DENSITY": [0.12500000000000697, 0.12500029638069918, 0.1274855155781839, 0.25981860831707604, 0.2658187118002866, 0.2791321980687669, 0.31607471934877535], "MOMENTUM_X": [7.374752524904514e-15, 3.138339042396539e-07, 0.0029107940786599943, 0.23518089014673255, 0.24175671551041705, 0.25941881545480344, 0.2924330641914902], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000195, 0.2500008298677295, 0.25708681444132403, 0.8360663049571735, 0.856433278734393, 0.884214447967431, 0.8952708542316228]}, "NODE_745": {"DENSITY": [0.12500000000000702, 0.1250003040778543, 0.12758232539224085, 0.2592670849736907, 0.2667183397402033, 0.27877781522824185, 0.3161191814472648], "MOMENTUM_X": [7.416017860557053e-15, 3.209262793216328e-07, 0.0030274755330323734, 0.2333551565047982, 0.24345129829875933, 0.25851545126625786, 0.2921978116484444], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000196, 0.25000085141985423, 0.2573678627274282, 0.8323084955628651, 0.8613469263557851, 0.8824526509180549, 0.8950229593945052]}, "NODE_746": {"DENSITY": [0.1250000000000071, 0.12500032825462895, 0.12787565672038598, 0.2589441814464606, 0.26745238199137294, 0.27868105629211176, 0.3172236339841702], "MOMENTUM_X": [7.496728460055963e-15, 3.434960641152873e-07, 0.0033865063653691404, 0.23133600153012185, 0.24437803097072489, 0.25739372121804127, 0.292353017504288], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000199, 0.2500009191151213, 0.25822165918606227, 0.8290022967219093, 0.8649840314102519, 0.8803130743205038, 0.894412996510659]}, "NODE_747": {"DENSITY": [0.1250000000000079, 0.12500041271216902, 0.12869036654971036, 0.259316961378556, 0.2675961421206774, 0.27968999793992977, 0.3225786287238585], "MOMENTUM_X": [8.202887777092167e-15, 4.234966157636319e-07, 0.004403051884674612, 0.2309308350866878, 0.24519476502335377, 0.2585830144590813, 0.29796783228819124], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000002215, 0.25000115559741865, 0.2606105815111084, 0.8301499146087754, 0.8667924365074969, 0.8800969514139934, 0.8971182051993057]}, "NODE_748": {"DENSITY": [0.12500000000001385, 0.1250006655771325, 0.13062791062354404, 0.25724622342220343, 0.26615723744135555, 0.2823604844920395, 0.3343703312423306], "MOMENTUM_X": [1.518494870720098e-14, 7.511764333077335e-07, 0.00776924002131111, 0.23754580431851272, 0.24946589512763886, 0.26686573856353224, 0.31546037642426283], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000388, 0.2500018636258993, 0.26652370310758033, 0.8336477739350507, 0.8694131878131801, 0.8858219769123566, 0.9082267549369564]}, "NODE_749": {"DENSITY": [0.12500000000000003, 0.1250000062257906, 0.1251139313276992, 0.21012840259290622, 0.27517032552699694, 0.2752296519375682, 0.2841211948158036], "MOMENTUM_X": [2.847219387626314e-17, 5.818829911852412e-09, 0.00010809805243704709, 0.1367421010983841, 0.2550756336228398, 0.252256582943374, 0.25641576251941056], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000006, 0.25000001743221445, 0.25031920135264035, 0.5812852428000911, 0.897802022479284, 0.8885466344080846, 0.8739521299044011]}, "NODE_750": {"DENSITY": [0.12500000000000008, 0.12500001126146748, 0.1251955743635047, 0.21805828152992907, 0.26831193187675156, 0.27390799128706406, 0.2883645333696902], "MOMENTUM_X": [7.692069332751651e-17, 1.1966539116505859e-08, 0.000213852050608987, 0.16019245450207537, 0.24890368932114998, 0.2578964469457521, 0.26698587101208393], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000002, 0.2500000315321114, 0.25054830560238256, 0.6292348476612304, 0.8744857420703809, 0.892591444776408, 0.8820117056625374]}, "NODE_751": {"DENSITY": [0.12500000000000014, 0.12500001801184504, 0.12528559037691794, 0.2214324904407778, 0.2680335302212475, 0.27366957049455787, 0.29288097706112404], "MOMENTUM_X": [1.4103227188687515e-16, 1.9109267361731113e-08, 0.0003131926417644213, 0.16484948757392004, 0.2489034164784305, 0.2572697509777257, 0.27190702192303795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000004, 0.2500000504331727, 0.25080118763805936, 0.6452216784180685, 0.8744407446416921, 0.8888594187226555, 0.8845810462496427]}, "NODE_752": {"DENSITY": [0.1250000000000002, 0.1250000242036446, 0.12534173189501588, 0.22184177212232525, 0.2694256963586715, 0.2736728503323188, 0.29518027729239565], "MOMENTUM_X": [1.94960108044462e-16, 2.5766381290399376e-08, 0.00037367503346566954, 0.16391528794255122, 0.2510727264295979, 0.255615523766933, 0.27342410468699385], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000005, 0.25000006777021694, 0.25095906527834067, 0.6457329254242037, 0.88090601916162, 0.8847272176395464, 0.8854056907434951]}, "NODE_753": {"DENSITY": [0.12500000000000022, 0.12500002844439806, 0.12536409651065553, 0.22173027260395686, 0.2703273354059888, 0.2736209817393729, 0.2955901426987701], "MOMENTUM_X": [2.2673435346244077e-16, 3.024095864299529e-08, 0.00039604853503260543, 0.1631016890564393, 0.25260960183830894, 0.2545514116149789, 0.2734706518168213], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000006, 0.25000007964433146, 0.25102196836370005, 0.6444719399390579, 0.8850783172612295, 0.8822705047014967, 0.8857978179042497]}, "NODE_754": {"DENSITY": [0.12500000000000022, 0.12500003066219248, 0.12537075755393157, 0.22167991508156343, 0.27079889464877815, 0.27345733697947133, 0.29533437985725997], "MOMENTUM_X": [2.4136734309330283e-16, 3.253154063802271e-08, 0.0004021662833947882, 0.16287841204541703, 0.2535405727088209, 0.25395741065583893, 0.27317788896771605], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000067, 0.25000008585415867, 0.25104069918525906, 0.6440038510197207, 0.8874518610138328, 0.8809141700883676, 0.8860033541156502]}, "NODE_755": {"DENSITY": [0.12500000000000022, 0.12500003167120174, 0.12537600750269218, 0.22168550747798685, 0.27119580762886153, 0.27328117540483754, 0.2951117676677847], "MOMENTUM_X": [2.461404389872791e-16, 3.3534420989094086e-08, 0.00040719348543524975, 0.16265761518919086, 0.2543247486445507, 0.25361342626430244, 0.27296787653107657], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000067, 0.2500000886793858, 0.2510554680220199, 0.6437427332716712, 0.8896069973338748, 0.8801790542421719, 0.8860506267772319]}, "NODE_756": {"DENSITY": [0.12500000000000022, 0.12500003252194908, 0.12539114581051877, 0.22198087735736277, 0.2714051641360464, 0.27313729759089034, 0.29507841228186865], "MOMENTUM_X": [2.4759325354399184e-16, 3.4327018532957855e-08, 0.0004226128734282843, 0.16265443933092782, 0.2544367832059899, 0.25314863793769093, 0.27265827789082236], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000067, 0.2500000910614794, 0.25109806930286627, 0.6445125450933002, 0.8905490335193964, 0.879512468062041, 0.8857477998468111]}, "NODE_757": {"DENSITY": [0.12500000000000025, 0.1250000349202853, 0.12543789229972852, 0.2233312508387656, 0.271042082905753, 0.2731002607790721, 0.29577586111499166], "MOMENTUM_X": [2.499230940508872e-16, 3.655849392236432e-08, 0.00047104344503893657, 0.16412209804988415, 0.25292211756427346, 0.2523928235052379, 0.27252206856329286], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000067, 0.2500000977768239, 0.25122967008421093, 0.6498252463514207, 0.8879906150726814, 0.8785077377424685, 0.8850581574321711]}, "NODE_758": {"DENSITY": [0.12500000000000025, 0.1250000434387638, 0.12557329746990692, 0.22686834503327954, 0.2695254762075766, 0.2734288396776246, 0.29918859380346996], "MOMENTUM_X": [2.7030287396648133e-16, 4.457962117891354e-08, 0.000612778401078095, 0.16935689718096347, 0.25015808232312614, 0.2531055473399115, 0.276276179941895], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000007, 0.2500001216285769, 0.25161129017219763, 0.6658974481629143, 0.8809086089305896, 0.8786766156463739, 0.886887000212146]}, "NODE_759": {"DENSITY": [0.12500000000000047, 0.12500006991357615, 0.12592418587609325, 0.2303625753604273, 0.2657281060825459, 0.2738322628295822, 0.30682797499398784], "MOMENTUM_X": [5.052365501044016e-16, 7.87070527966301e-08, 0.001119573276114672, 0.1850509873085956, 0.2501060997296696, 0.25913954714021314, 0.2895249025621668], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000013, 0.25000019575812615, 0.252606602057724, 0.6943277649676306, 0.872518254640118, 0.8830948732129927, 0.8957919429845098]}, "NODE_760": {"DENSITY": [0.125, 0.12500000057417632, 0.12501394606176858, 0.16263859386335916, 0.2912696157413586, 0.26918108791465273, 0.2765478666255441], "MOMENTUM_X": [9.211705061014511e-19, 5.365659523331208e-10, 1.307958715063738e-05, 0.0555181764277857, 0.2890729984728913, 0.24055027211654811, 0.24985351576128112], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000160769376, 0.2500390518548204, 0.3779809873732059, 0.9879751881525277, 0.8606190304485816, 0.8722248377233827]}, "NODE_761": {"DENSITY": [0.125, 0.12500000105332462, 0.12502388563669822, 0.17171628935820427, 0.2806428590954901, 0.26923424581633665, 0.2776261730534967], "MOMENTUM_X": [2.069047102024347e-18, 1.1181341479303522e-09, 2.560358038842084e-05, 0.07636676838878595, 0.2771164070012721, 0.24964881551207269, 0.25715977257086814], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000029493089, 0.2500668899723504, 0.4185569269584218, 0.9455667336194723, 0.8748906147271137, 0.877821259796961]}, "NODE_762": {"DENSITY": [0.125, 0.12500000171306413, 0.12503575218621982, 0.17643956599587643, 0.2780672652948188, 0.2692848430246246, 0.28004442667271123], "MOMENTUM_X": [4.1069502898146055e-18, 1.8154236244953853e-09, 3.8285679818726286e-05, 0.08336804594107493, 0.27151557975667895, 0.25042592495949, 0.260121984813462], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000479657963, 0.2501001294472052, 0.43826318912995516, 0.9321891548319782, 0.8756705281449915, 0.8795291522254817]}, "NODE_763": {"DENSITY": [0.125, 0.12500000234868472, 0.12504441362486374, 0.177511222199241, 0.27868420245138326, 0.269018147610168, 0.2817733552231273], "MOMENTUM_X": [5.99227721963807e-18, 2.498857886601874e-09, 4.754497142055846e-05, 0.08379237369115736, 0.2717500497610518, 0.2486430220421379, 0.2611905185181485], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000065763174, 0.2501243945979279, 0.44206348881286167, 0.9342389385947242, 0.871793516596364, 0.8804118046901525]}, "NODE_764": {"DENSITY": [0.125, 0.1250000028132587, 0.12504879053260887, 0.17751481998316682, 0.27952831416776047, 0.2687653536101879, 0.28240481235271153], "MOMENTUM_X": [6.810932469237244e-18, 2.9906561306026176e-09, 5.204627875826149e-05, 0.08322343179207432, 0.27317734876591476, 0.2472822778226388, 0.2614641636807939], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000078771246, 0.25013665731733553, 0.4416732888421465, 0.9382230964284156, 0.8687887554821604, 0.8809620155454018]}, "NODE_765": {"DENSITY": [0.125, 0.1250000030750459, 0.12505048628854956, 0.17750581668729173, 0.2798962752815945, 0.26871382569487284, 0.28238871717976527], "MOMENTUM_X": [7.057796414645546e-18, 3.2629163735373993e-09, 5.371088258693971e-05, 0.08310947807821012, 0.27392524270231006, 0.24692623000527886, 0.2613487402500271], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000086101287, 0.2501414083118966, 0.4415141393332436, 0.9401026118076743, 0.8680210821896561, 0.8810615519499121]}, "NODE_766": {"DENSITY": [0.125, 0.12500000320012292, 0.12505145748781107, 0.17772898191576114, 0.2798195602766755, 0.2689211526978094, 0.2822002408820644], "MOMENTUM_X": [7.105514487708784e-18, 3.3889787731416466e-09, 5.462173587640381e-05, 0.08342685421243001, 0.2736408167059198, 0.24736239283959038, 0.26109473740880873], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000896034447, 0.2501441293623503, 0.4423511159622325, 0.9395470778973161, 0.8692359422618673, 0.8808175883096196]}, "NODE_767": {"DENSITY": [0.125, 0.12500000329133135, 0.1250534789804916, 0.17852380866711534, 0.27917260460016297, 0.26930776710652693, 0.28206180176878626], "MOMENTUM_X": [7.106351027650569e-18, 3.475125317310672e-09, 5.6559747819292505e-05, 0.08463115244844946, 0.27178779251479057, 0.2480114889052072, 0.2606097090669902], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000921572796, 0.25014979329425346, 0.44547981623526123, 0.9355000263982759, 0.8713964754014554, 0.8801561450635772]}, "NODE_768": {"DENSITY": [0.125, 0.12500000351831206, 0.12505962573045407, 0.18072716998123256, 0.277637159805017, 0.2697741673194267, 0.2823438438848021], "MOMENTUM_X": [7.130267382308459e-18, 3.685821270205065e-09, 6.255872198156106e-05, 0.08808384671447364, 0.2676034192584888, 0.248447783973412, 0.2600961853954545], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000985127396, 0.25016701641891237, 0.45437401659523, 0.9261200413415938, 0.8735107712431677, 0.8791359091927227]}, "NODE_769": {"DENSITY": [0.125, 0.125000004335108, 0.1250777242230528, 0.18575955907166697, 0.274517368648546, 0.2701589546074131, 0.284148227835621], "MOMENTUM_X": [7.863932747907376e-18, 4.450373518423702e-09, 8.032402310798379e-05, 0.09603314769421531, 0.26122851359883154, 0.24975595956557087, 0.2622991636387727], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000001213830275, 0.25021773502088196, 0.4753563899973131, 0.9099477333717902, 0.8760298968580692, 0.8801657768907619]}, "NODE_770": {"DENSITY": [0.12500000000000003, 0.12500000697573405, 0.12512529547802037, 0.19296221077346298, 0.2681384979156396, 0.2695479362005709, 0.28817147714138763], "MOMENTUM_X": [1.4997254599384827e-17, 7.83831546245903e-09, 0.00014389221837889362, 0.11522600222408491, 0.25675896201294635, 0.2550802828285563, 0.2719395497466862], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000006, 0.25000001953205636, 0.25035115050984363, 0.513601446787278, 0.8887002548246385, 0.8809515948831421, 0.887281500682208]}, "NODE_771": {"DENSITY": [0.125, 0.1250000000501993, 0.12500166607976124, 0.1350857556283738, 0.2950319937742989, 0.2617942880680912, 0.2745354424574328], "MOMENTUM_X": [9.480762847642498e-21, 4.690683089377349e-11, 1.560245601320112e-06, 0.012523619003683574, 0.29641951036792236, 0.2257318430864109, 0.2500193837347294], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000014055795, 0.25000466506476, 0.28008770245520054, 1.0098221638157305, 0.8228862500617924, 0.8798376260499442]}, "NODE_772": {"DENSITY": [0.125, 0.12500000009347303, 0.1250028547995718, 0.1398605202665261, 0.2861942958843465, 0.26299520393752523, 0.27327599904360417], "MOMENTUM_X": [2.37756578110209e-20, 9.914254097137549e-11, 3.043706534275959e-06, 0.02167837946760374, 0.29075020340354424, 0.23667795965895824, 0.2544442087253804], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000026172464, 0.25000799358466685, 0.296332762734823, 0.9794908699622948, 0.8434979216654014, 0.8811271888249853]}, "NODE_773": {"DENSITY": [0.125, 0.12500000015448784, 0.12500434692330503, 0.14309788997200013, 0.2829181963625205, 0.26417511807333416, 0.2740302505619633], "MOMENTUM_X": [7.512729184061212e-20, 1.6357111348526427e-10, 4.6284256856167665e-06, 0.026495277231536586, 0.28307804376133366, 0.24026757207868157, 0.25548974960334603], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000043256604, 0.25001217172970186, 0.3074859249605333, 0.9614759484535952, 0.8516547970712711, 0.8806893939387962]}, "NODE_774": {"DENSITY": [0.125, 0.12500000021572633, 0.12500556684795708, 0.14414451563150146, 0.282538233302785, 0.26443047092287947, 0.27504156234879856], "MOMENTUM_X": [1.0895640974199642e-19, 2.294036219448068e-10, 5.938903797989258e-06, 0.027508306166637537, 0.28085709253627167, 0.23993566654187715, 0.25577136829818153], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000060403366, 0.25001558774853516, 0.31098928168758233, 0.9575922359108797, 0.851601251546119, 0.88082597202261]}, "NODE_775": {"DENSITY": [0.125, 0.12500000026293942, 0.1250062929333522, 0.1442626494108808, 0.28293438341175836, 0.2643252901957531, 0.27555322693518625], "MOMENTUM_X": [1.2065648814293277e-19, 2.7949675381888947e-10, 6.697865736915398e-06, 0.027367982996815643, 0.2812340411716754, 0.23904377478553887, 0.255858398575639], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000073623047, 0.25001762094719426, 0.31129656134206235, 0.9590053850689384, 0.8498580731250791, 0.8810294962077783]}, "NODE_776": {"DENSITY": [0.125, 0.1250000002912327, 0.1250066287550573, 0.14426977699716342, 0.28307519446290386, 0.2644772320918123, 0.27555866283284575], "MOMENTUM_X": [1.2296766891255991e-19, 3.0906900204739955e-10, 7.0372760371797215e-06, 0.027314720273834917, 0.2814724546296056, 0.23915659962440372, 0.2556454445924724], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000081545154, 0.2500185613250556, 0.3112888597083456, 0.9596078165673876, 0.8502993245316117, 0.8806364325643697]}, "NODE_777": {"DENSITY": [0.125, 0.12500000030540542, 0.12500680466041006, 0.14444231206732508, 0.2826603516210085, 0.26509975134032987, 0.2753189555016676], "MOMENTUM_X": [1.232079557852246e-19, 3.234999330700537e-10, 7.2061609786875555e-06, 0.027584898280842724, 0.2803995740678075, 0.24045346726573444, 0.2551752809656525], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000008551352, 0.25001905390106544, 0.31187869038828453, 0.9570656334168121, 0.8537215877209239, 0.8796894618143997]}, "NODE_778": {"DENSITY": [0.125, 0.12500000031479214, 0.12500706931088376, 0.1450324988886089, 0.281580171469068, 0.266061825879936, 0.27503314446148946], "MOMENTUM_X": [1.2355498100022063e-19, 3.324924808236545e-10, 7.45678642654e-06, 0.028518000495693547, 0.27750451467128096, 0.24230414542683062, 0.2543737625622644], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000088141794, 0.250019794987322, 0.3139227276292414, 0.9503811807407478, 0.8589518561030288, 0.8782351679406434]}, "NODE_779": {"DENSITY": [0.125, 0.12500000033527817, 0.1250078327622714, 0.14662541092486114, 0.27977446447947807, 0.26712706682763976, 0.27496044924797053], "MOMENTUM_X": [1.2391138999529436e-19, 3.514840934985844e-10, 8.191133508937307e-06, 0.0310391831161555, 0.27257330346045555, 0.24405715130402797, 0.2534337342251829], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000093877894, 0.2500219328515681, 0.3194913501132649, 0.9391517644080527, 0.864451687799032, 0.8765176467282394]}, "NODE_780": {"DENSITY": [0.125, 0.12500000040963943, 0.12501009937095447, 0.15039750037725397, 0.2767241333371556, 0.2678553104206309, 0.27563943863173773], "MOMENTUM_X": [1.306404706346663e-19, 4.206879722175773e-10, 1.038177932541431e-05, 0.036939718517323354, 0.2660220099891423, 0.24627024876949466, 0.25447423781639217], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000114699045, 0.25002828005523575, 0.3329355386546093, 0.9228778314163751, 0.869689408088255, 0.8766595476312392]}, "NODE_781": {"DENSITY": [0.125, 0.1250000006599331, 0.12501607376849772, 0.15709696392874078, 0.2697685282634487, 0.26697331073878533, 0.2770684475077981], "MOMENTUM_X": [2.232266264150865e-19, 7.403401033629748e-10, 1.8246689130894054e-05, 0.05163196507244695, 0.2618988393084645, 0.2517126697152701, 0.26149103013701114], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000184781274, 0.2500450118440647, 0.36018774141695153, 0.8999216663056762, 0.8759897938501471, 0.8822685244962964]}, "NODE_782": {"DENSITY": [0.125, 0.12500000000415631, 0.1250001945651059, 0.1266930374589784, 0.27312870432217734, 0.2596672500782659, 0.2754690987881286], "MOMENTUM_X": [6.069655288771703e-23, 3.883661437781386e-12, 1.8213331144445693e-07, 0.0017560160288124106, 0.25293023242717344, 0.22204819651170873, 0.2537868148053586], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000116377, 0.2500005447828677, 0.25478793916505976, 0.8933025142880267, 0.8129327631952626, 0.892942350857117]}, "NODE_783": {"DENSITY": [0.125, 0.12500000000785946, 0.1250003348712892, 0.12781000084702637, 0.2714943917161193, 0.2593097123092439, 0.27275662304536746], "MOMENTUM_X": [2.0863853085273707e-22, 8.330267481630898e-12, 3.5615926032945066e-07, 0.003461382479057003, 0.26223152287036755, 0.22893063128624846, 0.25644851920033845], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000002200656, 0.2500009376416347, 0.2580362579816328, 0.9019226369345975, 0.8245615252507649, 0.8907261633640711]}, "NODE_784": {"DENSITY": [0.125, 0.12500000001319467, 0.12500051771463117, 0.128817415902651, 0.2703663949535212, 0.26101601968938654, 0.27221700522409836], "MOMENTUM_X": [8.9300424166404e-22, 1.395962782232396e-11, 5.498178204291958e-07, 0.004782532934627139, 0.25862944177658975, 0.23368193176210597, 0.25559438227962183], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000003694506, 0.2500014496058851, 0.26100873857874796, 0.8954461456209623, 0.8358308156988419, 0.8869923326332311]}, "NODE_785": {"DENSITY": [0.125, 0.1250000000187401, 0.12500068041666085, 0.12928081750272696, 0.2697744594811194, 0.26216035591158043, 0.2724571646762551], "MOMENTUM_X": [1.3044698891400814e-21, 1.9918790689269077e-11, 7.249565254380764e-07, 0.005310588011026408, 0.2558038333250353, 0.23544448001507745, 0.25470360965034655], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000005247214, 0.2500019051753018, 0.2623827680024338, 0.8902848634635427, 0.841051909437943, 0.8850637791018025]}, "NODE_786": {"DENSITY": [0.125, 0.1250000000232117, 0.1250007894986557, 0.1293929194081355, 0.2697342394348924, 0.2625440835915457, 0.27265998575861716], "MOMENTUM_X": [1.383801908832411e-21, 2.4670510255665666e-11, 8.399905399722287e-07, 0.005392329767279664, 0.2551889808150207, 0.23575797318543157, 0.2542595543226825], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000006499273, 0.25000221060791883, 0.2627105879340434, 0.8892065074156175, 0.8422818318819333, 0.8842011028378681]}, "NODE_787": {"DENSITY": [0.125, 0.12500000002603393, 0.12500084698410813, 0.1294126950381207, 0.2696805918971851, 0.26292480981949473, 0.2725601546815437], "MOMENTUM_X": [1.408605155012639e-21, 2.7631104702785457e-11, 8.990939215214425e-07, 0.005397624638104632, 0.25496786713506625, 0.2364136119687245, 0.2537912594704289], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000728949, 0.25000237156891053, 0.2627667725485973, 0.8886759255452485, 0.8440746401891429, 0.8831058891397796]}, "NODE_788": {"DENSITY": [0.125, 0.12500000002751085, 0.12500087717348862, 0.12946858304879316, 0.2692666740526406, 0.2637170586910946, 0.2722377610979586], "MOMENTUM_X": [1.4153739656468769e-21, 2.9146499305809576e-11, 9.288035290653665e-07, 0.0054670987549474605, 0.25383716466110523, 0.23804628459159455, 0.25308060544347605], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000770304, 0.25000245610010424, 0.26293273527356725, 0.8860799551987939, 0.8483816048916513, 0.8814531888312857]}, "NODE_789": {"DENSITY": [0.125, 0.12500000002843045, 0.12500091219501655, 0.1296589915698881, 0.26848949315836784, 0.2648190445538716, 0.27183077423394086], "MOMENTUM_X": [1.4163945174358291e-21, 3.003933007254081e-11, 9.620673994769588e-07, 0.005716329875174016, 0.25151771002316725, 0.24014561717205746, 0.25199829364439313], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000007960527, 0.250002554161504, 0.26350120540805655, 0.8809933262188017, 0.8542774671422066, 0.8792505650377174]}, "NODE_790": {"DENSITY": [0.125, 0.12500000003019232, 0.12500100498758837, 0.13019409402307755, 0.26767483000345244, 0.26591916496357587, 0.2715208807748477], "MOMENTUM_X": [1.4167128397346266e-21, 3.167228216828764e-11, 1.0509487329611017e-06, 0.006425327687872991, 0.248517485417382, 0.24194269785637118, 0.2507273320224955], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000008453854, 0.25000281398387747, 0.26510619723260187, 0.8749995374336512, 0.8599202605001904, 0.8768588199587797]}, "NODE_791": {"DENSITY": [0.125, 0.12500000003661216, 0.12500128164539268, 0.13157828738706934, 0.2669159177024404, 0.2664348346922119, 0.2715031909384318], "MOMENTUM_X": [1.4405977346504946e-21, 3.761381823333446e-11, 1.3169454407031976e-06, 0.008286780090194783, 0.2460564031037457, 0.24370227403372097, 0.2509667225570807], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.250000000102514, 0.2500035886367388, 0.26930666516350976, 0.8703989403818165, 0.8642116320978543, 0.8761238291261525]}, "NODE_792": {"DENSITY": [0.125, 0.12500000005911072, 0.12500202142238387, 0.13462830269630605, 0.2629988175053736, 0.2650507258716316, 0.27127168794314727], "MOMENTUM_X": [4.8888287250947395e-21, 6.621310834915575e-11, 2.287005377315056e-06, 0.013958900767990699, 0.24900873498720472, 0.2483540271961902, 0.2562083980495909], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000016550994, 0.25000566006719976, 0.27914810841228427, 0.8644232863505409, 0.8689057026600663, 0.8802781098761353]}, "NODE_793": {"DENSITY": [0.125, 0.12500000000032566, 0.12500002215127154, 0.12522683613108315, 0.2280225355931667, 0.2685189994162329, 0.27560068445425967], "MOMENTUM_X": [4.624594952477214e-25, 3.0433532429721876e-13, 2.0726391075172962e-08, 0.00021741042469851216, 0.16884205974576194, 0.2411515151225157, 0.25458090118736776], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000009119, 0.25000006202356784, 0.2506359134852607, 0.6660971673747536, 0.8619695311647119, 0.8967909708335575]}, "NODE_794": {"DENSITY": [0.125, 0.1250000000006256, 0.12500003838651894, 0.12538853380226567, 0.23419330793623155, 0.26350629550498295, 0.2729494572731637], "MOMENTUM_X": [2.2115708109605417e-24, 6.626967208279811e-13, 4.0759945842941204e-08, 0.0004313664524484218, 0.19054282025968572, 0.2384413760728508, 0.2582415386684939], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000175177, 0.25000010748227997, 0.2510906983608364, 0.709190403564284, 0.8485936522941491, 0.8971406118691574]}, "NODE_795": {"DENSITY": [0.125, 0.1250000000010665, 0.12500006020398716, 0.12556218868709249, 0.236603606983291, 0.26406745684653643, 0.27177047110918806], "MOMENTUM_X": [3.3798143185596275e-24, 1.1275646438392724e-12, 6.381683141357263e-08, 0.0006282142896028105, 0.19353386140955275, 0.24049209651178838, 0.25644450178782946], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000298617, 0.25000016857123103, 0.2515802290738659, 0.7208554332325694, 0.8535037962203829, 0.891717980967336]}, "NODE_796": {"DENSITY": [0.125, 0.125000000001539, 0.1250000809350218, 0.12566587124945022, 0.23671948037028068, 0.26564288714775747, 0.27131872490365355], "MOMENTUM_X": [5.543606450912232e-24, 1.635025740659506e-12, 8.613520225143222e-08, 0.0007414368622099003, 0.19202778220951905, 0.24317874040787366, 0.2543176618752164], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000043091, 0.2500002266181847, 0.25187305629343565, 0.7197176608167805, 0.8611861588040604, 0.8871634382375493]}, "NODE_797": {"DENSITY": [0.125, 0.1250000000019349, 0.1250000961545525, 0.1257045073440014, 0.2365641443138048, 0.266525490235533, 0.27114228360637993], "MOMENTUM_X": [6.711662455883204e-24, 2.056200949261919e-12, 1.0226216148174666e-07, 0.0007795991086022335, 0.19110602897165016, 0.24467727558263, 0.2531458273516982], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000054177, 0.25000026923292257, 0.25198217872682227, 0.7181050889011369, 0.8653225158208906, 0.8846983689656043]}, "NODE_798": {"DENSITY": [0.125, 0.12500000000219616, 0.1250001050291501, 0.1257156518859405, 0.23647541584515697, 0.26704100329460906, 0.27095003285704133], "MOMENTUM_X": [6.81659737335361e-24, 2.331003562893298e-12, 1.1148232372973592e-07, 0.0007894589064478693, 0.19078209404672336, 0.24567979142567137, 0.25248632158519496], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000061492, 0.2500002940818295, 0.2520136303496072, 0.717383957737401, 0.8679343584175703, 0.8831493299449634]}, "NODE_799": {"DENSITY": [0.125, 0.1250000000023384, 0.12500010985776897, 0.12572721733429879, 0.23636499900542518, 0.26761662391273006, 0.27068246554926423], "MOMENTUM_X": [6.856145848612699e-24, 2.4778411194923852e-12, 1.1632201733769713e-07, 0.0008010822539089561, 0.19028252113754002, 0.24681982630507, 0.25186535289873946], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000654754, 0.25000030760198144, 0.2520463113989081, 0.7164559739857761, 0.8710155858744226, 0.8816877632723478]}, "NODE_800": {"DENSITY": [0.125, 0.12500000000242367, 0.1250001145068483, 0.12576127568591608, 0.23642058791534623, 0.2681856058322729, 0.2703757418714247], "MOMENTUM_X": [6.874539417585269e-24, 2.561632837027241e-12, 1.2077398530584337e-07, 0.0008375472490859637, 0.18972934209881745, 0.24770373945151863, 0.25098245402858477], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000678635, 0.25000032061942257, 0.2521426300899359, 0.7159118029401932, 0.8738677748110617, 0.879952013421125]}, "NODE_801": {"DENSITY": [0.125, 0.125000000002568, 0.1250001255747444, 0.12585938148184245, 0.23730655858505342, 0.2683984438481293, 0.27011567091479155], "MOMENTUM_X": [6.874433075393575e-24, 2.6954679133931867e-12, 1.313479534177403e-07, 0.0009440764486567239, 0.19021890851519496, 0.2475112499943195, 0.249903647168856], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000071903, 0.2500003516095796, 0.25242031851373936, 0.7188867688920397, 0.8744937108040429, 0.8780926075221663]}, "NODE_802": {"DENSITY": [0.125, 0.1250000000030931, 0.1250001585964999, 0.12612763907938218, 0.23986234573667517, 0.2675860312009854, 0.2698464325365845], "MOMENTUM_X": [6.954414947115356e-24, 3.1789394923120605e-12, 1.6294419700087645e-07, 0.0012386270221756686, 0.19369741587438638, 0.24633313642537827, 0.24993043057323913], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000086607, 0.2500004440706609, 0.25318143606688986, 0.7305413897373118, 0.8714288097212725, 0.877400753803009]}, "NODE_803": {"DENSITY": [0.125, 0.1250000000050082, 0.1250002488841361, 0.1267956629680909, 0.24142563523651958, 0.2645290530835601, 0.2686910461557285], "MOMENTUM_X": [1.9548998922486835e-23, 5.601867618908752e-12, 2.8097795436922246e-07, 0.0022568830089425072, 0.20646604017044876, 0.2477008627612934, 0.25418502919594216], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000001402306, 0.2500006968768814, 0.2551018115744557, 0.7509716628510897, 0.8674817961140168, 0.8805668916852207]}, "NODE_804": {"DENSITY": [0.125, 0.12500000000002415, 0.1250000024510926, 0.12502845710897206, 0.1772524501565364, 0.2853001261313937, 0.2715056484483396], "MOMENTUM_X": [1.7845336528361515e-27, 2.256509095552159e-14, 2.2922702945141664e-09, 2.6741067374647677e-05, 0.08004215380944218, 0.27676231037163207, 0.2460191985706089], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000006756, 0.2500000068630593, 0.2500796917968556, 0.43686938404048525, 0.9551966258026908, 0.8756102280236725]}, "NODE_805": {"DENSITY": [0.125, 0.12500000000004713, 0.12500000428393773, 0.125048605516504, 0.18675722107053022, 0.2754229939876834, 0.270604999179638], "MOMENTUM_X": [1.4676869350988243e-26, 4.988858825544167e-14, 4.543519236981539e-09, 5.227659351095029e-05, 0.10329053624256124, 0.2654167168648696, 0.2536394871697717], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000013195, 0.250000011995026, 0.2501361374178754, 0.48374020330636314, 0.9162748068761583, 0.8862711382457927]}, "NODE_806": {"DENSITY": [0.125, 0.12500000000008152, 0.1250000068121054, 0.12507239466938286, 0.19141100317600812, 0.27363340368906636, 0.2698974887244477], "MOMENTUM_X": [2.792852891909601e-26, 8.615519149935286e-14, 7.2109515102671215e-09, 7.783581664013613e-05, 0.11013289268853185, 0.26180057095536813, 0.2531197958619823], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000002283, 0.25000001907389613, 0.2502028003696634, 0.5042296684749403, 0.9076412717740672, 0.8842874200115562]}, "NODE_807": {"DENSITY": [0.125, 0.12500000000011946, 0.12500000934359082, 0.1250893441608286, 0.19234561639969924, 0.27470323190671064, 0.26919771083002525], "MOMENTUM_X": [6.887428321965353e-26, 1.2684138077650812e-13, 9.935467467536769e-09, 9.596419481032329e-05, 0.1101971659294187, 0.26317581696084863, 0.2506197448788668], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000033445, 0.25000002616205597, 0.2502503103432061, 0.5073941629326183, 0.9123909170403672, 0.8789698244383225]}, "NODE_808": {"DENSITY": [0.125, 0.12500000000015227, 0.12500001134022698, 0.12509764314430843, 0.19229170063965376, 0.2757087368721971, 0.2687632404547005], "MOMENTUM_X": [8.800250706322859e-26, 1.6180828789836503e-13, 1.2057613787944695e-08, 0.00010446589751931948, 0.10946953439673407, 0.26497272838742697, 0.2489445358238388], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000042644, 0.2500000317526382, 0.25027357507625003, 0.50660182805532, 0.9172992276582207, 0.8753727833508518]}, "NODE_809": {"DENSITY": [0.125, 0.1250000000001748, 0.12500001260271526, 0.12510085031805263, 0.1922568963317762, 0.2761787564189744, 0.2686041354395819], "MOMENTUM_X": [8.838969519694374e-26, 1.8555671982078512e-13, 1.3378412974645561e-08, 0.00010759129646390736, 0.10928033693230887, 0.26592260910991566, 0.2483647931011324], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000048944, 0.25000003528760584, 0.25028256576546754, 0.50626474830737, 0.9197257803335829, 0.8740834320157256]}, "NODE_810": {"DENSITY": [0.125, 0.1250000000001875, 0.125000013321249, 0.1251030306742897, 0.1924543807794788, 0.2762817218777447, 0.26864331618316156], "MOMENTUM_X": [8.847521904163772e-26, 1.9874375705435407e-13, 1.410817341604365e-08, 0.00010966587069563842, 0.1094995539913514, 0.26600979465567726, 0.24838996859304188], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000052514, 0.2500000372995007, 0.2502886782705807, 0.5069596054887213, 0.9201371792667695, 0.8742738010856741]}, "NODE_811": {"DENSITY": [0.125, 0.12500000000019498, 0.1250000139317497, 0.12510787110077043, 0.19322245145238393, 0.2759465952776295, 0.26880141430288534], "MOMENTUM_X": [8.847304546089958e-26, 2.0615105931174195e-13, 1.46989381447371e-08, 0.00011442011911331367, 0.11056350593374462, 0.2648448095723538, 0.24849856607662285], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000054595, 0.250000039008903, 0.2503022493734459, 0.5099986879547176, 0.9178106016564562, 0.8750433904555757]}, "NODE_812": {"DENSITY": [0.125, 0.1250000000002062, 0.12500001522464432, 0.12512165172240508, 0.19538129184595018, 0.2748408124219369, 0.2690259481286687], "MOMENTUM_X": [8.846971308479333e-26, 2.1659850068287985e-13, 1.5932172568643792e-08, 0.00012813465214093627, 0.11380455546241547, 0.26166257930930137, 0.24849780261775659], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000005774, 0.25000004262900866, 0.2503408903430771, 0.5189357752778272, 0.9108734853786541, 0.8759372201572804]}, "NODE_813": {"DENSITY": [0.125, 0.12500000000024694, 0.12500001906803151, 0.12515998727117278, 0.2002328219825949, 0.2721938178399434, 0.2690200701717022], "MOMENTUM_X": [8.846995416974619e-26, 2.5386123654085863e-13, 1.9591415193864967e-08, 0.0001663774621872879, 0.12136969738100098, 0.25636009367452284, 0.24921369924525197], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000069134, 0.25000005339049497, 0.2504484152930712, 0.5399672306264508, 0.8974142304061, 0.8772923890764985]}, "NODE_814": {"DENSITY": [0.125, 0.12500000000040115, 0.1250000298480363, 0.12525790703258866, 0.20654372109141675, 0.2665334069136932, 0.267591194957324], "MOMENTUM_X": [1.443073679243746e-25, 4.480695161301328e-13, 3.3643958811754945e-08, 0.00029932806250301987, 0.14019114781625133, 0.2529241794875004, 0.2534255677727296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000112327, 0.2500000835745207, 0.2507235115895604, 0.5772687865940029, 0.8798505978130097, 0.8809537753028226]}, "NODE_815": {"DENSITY": [0.125, 0.1250000000000017, 0.12500000026282793, 0.1250035085983241, 0.14174674724491024, 0.29583767710180814, 0.2637088774263737], "MOMENTUM_X": [0.0, 1.5808781208734839e-15, 2.4566307427047024e-10, 3.2874785211350693e-06, 0.022270898856246828, 0.29836549993261213, 0.2298524513366076], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000047, 0.25000000073591827, 0.2500098242558505, 0.30189499703242495, 1.014371460085112, 0.8340946064777744]}, "NODE_816": {"DENSITY": [0.125, 0.12500000000000336, 0.12500000046387236, 0.1250059668156647, 0.14830353996190745, 0.285526630762936, 0.26479585297665864], "MOMENTUM_X": [0.0, 3.5522511402278063e-15, 4.915218626372908e-10, 6.365872654071626e-06, 0.03573479136060684, 0.2888651077669111, 0.24107527013745894], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000094, 0.25000000129884264, 0.25001670771126394, 0.3262395868597929, 0.9752446768603155, 0.8549752113373456]}, "NODE_817": {"DENSITY": [0.125, 0.12500000000000588, 0.12500000074762932, 0.12500903708287583, 0.15235093926299254, 0.2821864743055645, 0.26549707862075256], "MOMENTUM_X": [0.0, 6.225971487261414e-15, 7.905285865518312e-10, 9.629487764998278e-06, 0.041843381968513296, 0.28123199472883614, 0.24377712078656746], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000165, 0.2500000020933622, 0.25002530529886907, 0.3411854855459341, 0.9570828309794795, 0.8610512628890695]}, "NODE_818": {"DENSITY": [0.125, 0.12500000000000877, 0.12500000104423747, 0.12501152027281617, 0.15352118417705862, 0.28217798080851964, 0.26531496319932024], "MOMENTUM_X": [0.0, 9.299837839374315e-15, 1.1095977750909056e-09, 1.229539496263805e-05, 0.04281649757752464, 0.2799143578118069, 0.24255320236705452], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000002454, 0.2500000029238648, 0.25003225918355315, 0.345259938230871, 0.9554041441184357, 0.8589287807375292]}, "NODE_819": {"DENSITY": [0.125, 0.12500000000001132, 0.1250000012921908, 0.12501298438718975, 0.15360448815146258, 0.2828182561006436, 0.2649739553501914], "MOMENTUM_X": [0.0, 1.2025595323563542e-14, 1.3736705069183137e-09, 1.3823620451411902e-05, 0.042502532312206645, 0.28083886629017957, 0.2411425099885423], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000317, 0.25000000361813435, 0.25003635935311036, 0.3453746164323418, 0.9582151704691931, 0.8560369354139832]}, "NODE_820": {"DENSITY": [0.125, 0.12500000000001316, 0.12500000145973952, 0.1250136720913337, 0.15360138240079035, 0.28307473215152823, 0.2650005625409237], "MOMENTUM_X": [0.0, 1.3939717716490548e-14, 1.5498192854078438e-09, 1.4516984381845786e-05, 0.04241283248645223, 0.28132259816172533, 0.24097155304254644], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000003675, 0.2500000040872705, 0.2500382852410457, 0.3453012183648789, 0.9594592360599107, 0.8558271380160607]}, "NODE_821": {"DENSITY": [0.125, 0.12500000000001418, 0.12500000155956734, 0.12501407828044225, 0.15383115627716185, 0.2827477209994463, 0.2654916310511546], "MOMENTUM_X": [0.0, 1.504338733212041e-14, 1.6522017054746168e-09, 1.4908784338261721e-05, 0.04278215234137053, 0.28043714067270603, 0.2419536486450017], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000003975, 0.25000000436678854, 0.2500394227612054, 0.3461275719765022, 0.9573923309989246, 0.8584773186090108]}, "NODE_822": {"DENSITY": [0.125, 0.1250000000000148, 0.12500000163787103, 0.1250147416815232, 0.15460410477599223, 0.2817553054331167, 0.26630980046213126], "MOMENTUM_X": [0.0, 1.5654105070806934e-14, 1.7288120076267175e-09, 1.554756228618055e-05, 0.04403632935073894, 0.27775709705447926, 0.24347195717759154], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000414, 0.250000004586039, 0.25004128061490016, 0.3489636792578661, 0.951201533376411, 0.8628312465669448]}, "NODE_823": {"DENSITY": [0.125, 0.12500000000001565, 0.12500000178542797, 0.1250165377809499, 0.15661110362807998, 0.27993887730957845, 0.2672604480347099], "MOMENTUM_X": [0.0, 1.6430039610949596e-14, 1.8694904071988297e-09, 1.729694583075264e-05, 0.047286895549228325, 0.2728927455725124, 0.24503761313579803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000438, 0.2500000049991983, 0.250046310661831, 0.35641175190225294, 0.9399908213048196, 0.8677205163910872]}, "NODE_824": {"DENSITY": [0.125, 0.1250000000000186, 0.1250000022203765, 0.12502154646485286, 0.1611420663225581, 0.2765908529876691, 0.2678292844680289], "MOMENTUM_X": [0.0, 1.915086173597613e-14, 2.2816179219233803e-09, 2.2175136432774814e-05, 0.05448217204065856, 0.26583790597886287, 0.24700216865903682], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000521, 0.2500000062170544, 0.25006033819779827, 0.37357336417055254, 0.9222289395563583, 0.8724228610410303]}, "NODE_825": {"DENSITY": [0.125, 0.12500000000003036, 0.12500000347335197, 0.12503427263833458, 0.1685436898541116, 0.2693859671074919, 0.2665920749311944], "MOMENTUM_X": [0.0, 3.3871038336545525e-14, 3.910469524226191e-09, 3.900526720074182e-05, 0.07161500870169084, 0.26055840223389687, 0.25190042755300657], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000008504, 0.25000000972538583, 0.2500959870373282, 0.406530004879654, 0.8973903661781106, 0.8780241777232234]}, "NODE_826": {"DENSITY": [0.125, 0.1250000000000001, 0.12500000002724393, 0.12500042858487326, 0.1282073154933099, 0.28375924845164247, 0.2583944470268232], "MOMENTUM_X": [0.0, 1.0219903539981957e-16, 2.5450262199452338e-11, 4.0145121107573357e-07, 0.0035021666790723666, 0.2737377063428939, 0.2193460081031422], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000003, 0.25000000007628304, 0.2500012000403483, 0.2591597992421203, 0.9496937234354009, 0.8064971190825936]}, "NODE_827": {"DENSITY": [0.125, 0.12500000000000022, 0.12500000004859632, 0.12500072864182882, 0.13018501116187425, 0.27921535560654825, 0.25916741223759304], "MOMENTUM_X": [0.0, 2.3575191722486936e-16, 5.145124038798361e-11, 7.750776814953058e-07, 0.006756473187056653, 0.27742581564523805, 0.22884212526598702], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000006, 0.25000000013606966, 0.2500020402064828, 0.26511241000415636, 0.9432301880023575, 0.8245244424288881]}, "NODE_828": {"DENSITY": [0.125, 0.12500000000000042, 0.1250000000793658, 0.1250011185785919, 0.13183082596755158, 0.27705922785633247, 0.26099081155811443], "MOMENTUM_X": [0.0, 4.242149645143376e-16, 8.38401312710063e-11, 1.188162795767085e-06, 0.009041595044056975, 0.2718577034455873, 0.23395938575352207], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000011, 0.2500000002222242, 0.2500031320424824, 0.27016639460155406, 0.9311998838357581, 0.8366445045278885]}, "NODE_829": {"DENSITY": [0.125, 0.1250000000000006, 0.12500000011271584, 0.12500146498757422, 0.13251339788806132, 0.2764468004533726, 0.2618593021113579], "MOMENTUM_X": [0.0, 6.451346814488581e-16, 1.1969293120338137e-10, 1.561115067805116e-06, 0.009811479147080651, 0.269029375735339, 0.23514701494871892], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000167, 0.25000000031560426, 0.2500041020043402, 0.2722650966792858, 0.9258979294896271, 0.8404616991030135]}, "NODE_830": {"DENSITY": [0.125, 0.12500000000000078, 0.12500000014197474, 0.12500169848373452, 0.13264803786619225, 0.2765531839018183, 0.2620189352238182], "MOMENTUM_X": [0.0, 8.467554754320933e-16, 1.5089399981164308e-10, 1.8073985458230072e-06, 0.009868882272512378, 0.2687246581882187, 0.23492947807154538], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000022, 0.25000000039752934, 0.25000475580714854, 0.27266289380773295, 0.9256202796740481, 0.8404789482693664]}, "NODE_831": {"DENSITY": [0.125, 0.12500000000000092, 0.12500000016287444, 0.12500182501179774, 0.13266639675971806, 0.27655982519000594, 0.2623111400756425], "MOMENTUM_X": [0.0, 9.877623788130172e-16, 1.729434678448397e-10, 1.9374623580393465e-06, 0.009858386149672046, 0.26863087939562746, 0.23536063104346158], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000026, 0.25000000045604853, 0.2500051100936317, 0.27271172204770006, 0.92542078426789, 0.841776931720109]}, "NODE_832": {"DENSITY": [0.125, 0.12500000000000103, 0.12500000017587862, 0.12500189829322247, 0.13276310272147807, 0.27610445726708244, 0.2631033049702511], "MOMENTUM_X": [0.0, 1.0737405387271624e-15, 1.8637801120592496e-10, 2.009787249079076e-06, 0.009991131145302383, 0.2674138837173414, 0.2369678645530759], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000283, 0.25000000049246013, 0.2500053152863243, 0.2730102762793296, 0.9225724740204639, 0.846041047859198]}, "NODE_833": {"DENSITY": [0.125, 0.12500000000000108, 0.1250000001855937, 0.12500199105240023, 0.1330900364280598, 0.27516057847624065, 0.2642932194247846], "MOMENTUM_X": [0.0, 1.1190848228092374e-15, 1.9598193447818765e-10, 2.0991700332640195e-06, 0.010455967106137939, 0.2647554654126843, 0.2392543494930596], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000294, 0.2500000005196622, 0.2500055750182745, 0.27402807598723744, 0.9165352527359749, 0.8523646338805659]}, "NODE_834": {"DENSITY": [0.125, 0.12500000000000114, 0.12500000020199944, 0.1250022221065754, 0.13396764442419437, 0.27391063606359833, 0.2655944285053872], "MOMENTUM_X": [0.0, 1.1739892881492036e-15, 2.1163093799211814e-10, 2.3231808657046725e-06, 0.011712511851918985, 0.26091318416051285, 0.24154176209336944], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000031, 0.25000000056559835, 0.2500062219867908, 0.2767788192622186, 0.9081964049332141, 0.8591141705078525]}, "NODE_835": {"DENSITY": [0.125, 0.12500000000000133, 0.12500000024972477, 0.12500286365801855, 0.13612121187652337, 0.2721298824601457, 0.26635891281283525], "MOMENTUM_X": [0.0, 1.3637056099204872e-15, 2.5664712340974745e-10, 2.944509406697786e-06, 0.014814602991596142, 0.2566080043855199, 0.24387934364258787], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000037, 0.2500000006992293, 0.2500080183860142, 0.28363542838975275, 0.8983608038345722, 0.8648735928218341]}, "NODE_836": {"DENSITY": [0.125, 0.12500000000000216, 0.12500000039094, 0.1250044975596115, 0.14051184291341867, 0.26668643158096983, 0.26513761264696906], "MOMENTUM_X": [0.0, 2.418514077738247e-15, 4.3969020073014423e-10, 5.0960171968506906e-06, 0.023507536497471976, 0.2562936122209033, 0.24891128499024887], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000061, 0.2500000010946321, 0.25001259357404576, 0.29885693374014016, 0.8841782219451308, 0.8708667933556148]}, "NODE_837": {"DENSITY": [0.125, 0.125, 0.12500000000272463, 0.12500005183373467, 0.1254506086089122, 0.24535571497227096, 0.2630531355116213], "MOMENTUM_X": [0.0, 6.646660227430713e-18, 2.5438481344171375e-12, 4.8535660531573475e-08, 0.0004391655020868646, 0.20056740443575438, 0.22968196653709075], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000762895, 0.2500001451344968, 0.2512648212548123, 0.7513723102357956, 0.8325712567744518]}, "NODE_838": {"DENSITY": [0.125, 0.125, 0.12500000000491465, 0.1250000883277538, 0.12577011250652959, 0.24912000681895236, 0.26000466508737097], "MOMENTUM_X": [0.0, 1.3449629416642925e-17, 5.199606811114355e-12, 9.378179212933329e-08, 0.0008758409739210525, 0.21897138399703306, 0.23085043914271813], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000006, 0.25000000001376105, 0.2500002473178487, 0.25216777132615575, 0.7852174485087813, 0.8296851845254954]}, "NODE_839": {"DENSITY": [0.125, 0.12500000000000003, 0.1250000000081315, 0.12500013726746304, 0.1260994588912111, 0.25034430325265694, 0.26132810899969877], "MOMENTUM_X": [0.0, 2.7063218573986658e-17, 8.582692240253078e-12, 1.4549059481962963e-07, 0.0012638833804652389, 0.21982155535964668, 0.23468698682578892], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000006, 0.2500000000227682, 0.25000038434923455, 0.25310289117607, 0.7910622559515299, 0.8388656273504175]}, "NODE_840": {"DENSITY": [0.125, 0.12500000000000003, 0.12500000001172887, 0.12500018397685278, 0.12628324217629436, 0.2501704413730015, 0.2629736091275161], "MOMENTUM_X": [0.0, 4.131309476578787e-17, 1.2447301065406716e-11, 1.9579013025162821e-07, 0.0014683804848328293, 0.21776888453084264, 0.23756289089730329], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000001, 0.2500000000328409, 0.2500005151358061, 0.2536264226997421, 0.788278594341772, 0.8469524761251235]}, "NODE_841": {"DENSITY": [0.125, 0.12500000000000006, 0.12500000001501685, 0.1250002188095135, 0.12634442658665246, 0.2500182425879328, 0.2637582356523138], "MOMENTUM_X": [0.0, 5.583370244251933e-17, 1.5956263744814995e-11, 2.3272854048650898e-07, 0.0015268213431068732, 0.21686042896617064, 0.23880686142403107], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000017, 0.2500000000420472, 0.25000061266751655, 0.25380056105703913, 0.7866081238412364, 0.8505143981694661]}, "NODE_842": {"DENSITY": [0.125, 0.12500000000000006, 0.12500000001747896, 0.12500023989610973, 0.12636026388929944, 0.24991885829867294, 0.2642620584104033], "MOMENTUM_X": [0.0, 6.530235763938798e-17, 1.8560414780034405e-11, 2.546572982197463e-07, 0.001539498243676927, 0.2165072584793689, 0.23974753858449754], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000017, 0.25000000004894113, 0.25000067171016094, 0.25384550802239125, 0.7858025654713304, 0.8530278531607202]}, "NODE_843": {"DENSITY": [0.125, 0.12500000000000006, 0.1250000000190733, 0.12500025244641547, 0.12638255134556706, 0.2496916955482329, 0.26497498105763234], "MOMENTUM_X": [0.0, 7.103638416638387e-17, 2.0216670798493126e-11, 2.6727160640204714e-07, 0.0015633437310459011, 0.2157450455176989, 0.24116593302718795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000017, 0.2500000000534053, 0.2500007068511258, 0.253909039349304, 0.7842097862706091, 0.8568276736525628]}, "NODE_844": {"DENSITY": [0.125, 0.12500000000000006, 0.1250000000202317, 0.1250002656645742, 0.12645135404916538, 0.2494694854479553, 0.26585698617920367], "MOMENTUM_X": [0.0, 7.421537834793724e-17, 2.137243305037005e-11, 2.8009509188661856e-07, 0.0016418586202883254, 0.2145899792110435, 0.2427395180347091], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000017, 0.25000000005664874, 0.25000074386208976, 0.2541055148107775, 0.7821406844271466, 0.8613786060706746]}, "NODE_845": {"DENSITY": [0.125, 0.12500000000000008, 0.12500000002200354, 0.125000295309278, 0.126642466263452, 0.2497966343018554, 0.26657689989181826], "MOMENTUM_X": [0.0, 7.772407183763593e-17, 2.3064913157921618e-11, 3.0878123136325464e-07, 0.0018627188704824454, 0.213934048860407, 0.24370392074092867], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000002, 0.2500000000616098, 0.25000082686754976, 0.2546522417478846, 0.7822149085927932, 0.8648213479227664]}, "NODE_846": {"DENSITY": [0.125, 0.12500000000000008, 0.12500000002706876, 0.12500037687327123, 0.1271465558071175, 0.2512105381684239, 0.26642366792193756], "MOMENTUM_X": [0.0, 9.134315942367217e-17, 2.782255211547502e-11, 3.874699214452369e-07, 0.0024528113112943116, 0.21536405684988058, 0.2439826934900975], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000002, 0.2500000000757925, 0.25000105524766336, 0.2561011076797356, 0.7884164745522988, 0.8654289519234769]}, "NODE_847": {"DENSITY": [0.125, 0.12500000000000014, 0.12500000004245146, 0.1250005869701911, 0.12835660421568834, 0.2507278153853829, 0.26410925844098376], "MOMENTUM_X": [0.0, 1.6360716422816274e-16, 4.769970578115782e-11, 6.636583640201076e-07, 0.004423766899468559, 0.22469645242265002, 0.2468009653709632], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000004, 0.2500000001188641, 0.25000164352350673, 0.25966660261130614, 0.7994986079343904, 0.8655627127452892]}, "NODE_848": {"DENSITY": [0.125, 0.125, 0.1250000000002625, 0.12500000619241877, 0.12505715249565133, 0.19401664584343073, 0.27835993318648333], "MOMENTUM_X": [0.0, 2.037827631930716e-19, 2.449582068968178e-13, 5.795927900578842e-09, 5.388357558104332e-05, 0.10879458418019193, 0.2621475108755859], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000000735, 0.25000001733877314, 0.2501600751381786, 0.508832668073582, 0.9168949487225498]}, "NODE_849": {"DENSITY": [0.125, 0.125, 0.12500000000047903, 0.12500001059572943, 0.12509793746482858, 0.20311217055647088, 0.26991808381951043], "MOMENTUM_X": [0.0, 9.020022764223785e-19, 5.0643826077526e-13, 1.1235511198028237e-08, 0.00010596119045480763, 0.13295588260379307, 0.2530703536621348], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000013412, 0.25000002966804424, 0.25027439668725987, 0.5584953113813753, 0.8853963786625318]}, "NODE_850": {"DENSITY": [0.125, 0.125, 0.12500000000080272, 0.1250000166560915, 0.1251451510371406, 0.20730490066134927, 0.2690862356384266], "MOMENTUM_X": [0.0, 1.773090006661028e-18, 8.466447861490901e-13, 1.7625604196541768e-08, 0.00015718340893188657, 0.139026552375987, 0.25179223325795497], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000224765, 0.2500000466370612, 0.25040681021518, 0.5777952333147103, 0.8823507632849423]}, "NODE_851": {"DENSITY": [0.125, 0.125, 0.1250000000011749, 0.12500002277611827, 0.12517735946031167, 0.2080136003219492, 0.2705598522962102], "MOMENTUM_X": [0.0, 2.6192397152489023e-18, 1.2461282193091784e-12, 2.4212632048957146e-08, 0.00019173114112524097, 0.1386325476967204, 0.2541501627021828], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000328965, 0.25000006377314066, 0.25049719016233185, 0.5798287925511688, 0.8894154977238584]}, "NODE_852": {"DENSITY": [0.125, 0.125, 0.12500000000152722, 0.12500002771629418, 0.12519209941056025, 0.2079090942931522, 0.2716580227218985], "MOMENTUM_X": [0.0, 3.396657427772609e-18, 1.6223353524494503e-12, 2.9467864580553728e-08, 0.00020672834351794146, 0.13778744348804473, 0.2561392208297135], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000427625, 0.2500000776056379, 0.25053855845275874, 0.578658786575848, 0.8948081707039174]}, "NODE_853": {"DENSITY": [0.125, 0.125, 0.12500000000180206, 0.1250000309843368, 0.12519747590392344, 0.20784939999681734, 0.2721987752404123], "MOMENTUM_X": [0.0, 3.78843109492903e-18, 1.91356206670559e-12, 3.289170877092005e-08, 0.0002118826379977689, 0.1375275442175978, 0.25721337291705526], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000504574, 0.2500000867561608, 0.25055364694958254, 0.5781441986313434, 0.8975893063917867]}, "NODE_854": {"DENSITY": [0.125, 0.125, 0.12500000000198663, 0.1250000330151205, 0.12520173594761735, 0.20797894185493807, 0.2724962661484281], "MOMENTUM_X": [0.0, 3.9511546708477756e-18, 2.1061033094728223e-12, 3.4960030055157164e-08, 0.00021599552962189427, 0.13756386893457312, 0.2577122613063148], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000055625, 0.2500000924423573, 0.2505656040293815, 0.5784783950931525, 0.8990634431904526]}, "NODE_855": {"DENSITY": [0.125, 0.125, 0.12500000000211883, 0.12500003490870845, 0.12521207554652034, 0.20860759464589418, 0.27252326350232875], "MOMENTUM_X": [0.0, 4.534087364374064e-18, 2.2390830499539638e-12, 3.6813822290344535e-08, 0.00022641819027816815, 0.13827031862306338, 0.25736278688772357], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000593275, 0.250000097744406, 0.2505946309935957, 0.5808573426997308, 0.8987729055055732]}, "NODE_856": {"DENSITY": [0.125, 0.125, 0.1250000000023042, 0.12500003870031454, 0.12524076396127615, 0.2105065477431887, 0.27193537580479876], "MOMENTUM_X": [0.0, 4.925162582805701e-18, 2.4165566415374003e-12, 4.047930374063383e-08, 0.00025566101592597816, 0.1408990405097481, 0.25538302383707645], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000064518, 0.2500001083609079, 0.2506751887681112, 0.5887417465361652, 0.8947990581120571]}, "NODE_857": {"DENSITY": [0.125, 0.125, 0.12500000000282321, 0.12500004898578815, 0.1253183756380748, 0.21481914697585652, 0.26993853543164775], "MOMENTUM_X": [0.0, 5.773999798456181e-18, 2.902169247837871e-12, 5.036141774772597e-08, 0.00033492305056861157, 0.14748355391497847, 0.25155413803118104], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000790495, 0.25000013716024955, 0.250893260894951, 0.607994731368909, 0.8850396773663209]}, "NODE_858": {"DENSITY": [0.125, 0.125, 0.12500000000443895, 0.1250000758849248, 0.12551403484900786, 0.21975615265558573, 0.2652105555802433], "MOMENTUM_X": [0.0, 9.802361814855317e-18, 4.983170072429952e-12, 8.566642094036153e-08, 0.000607737101454608, 0.1649286321431616, 0.24973471544769513], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000012429, 0.25000021247790666, 0.25144489071924886, 0.6415030425630623, 0.8723340816331439]}, "NODE_859": {"DENSITY": [0.125, 0.125, 0.12500000000002434, 0.12500000072863884, 0.12500708438210892, 0.15133264630613188, 0.29340219842791465], "MOMENTUM_X": [0.0, 7.471249967761351e-21, 2.2698768616298896e-14, 6.816309769905241e-10, 6.63905193972206e-06, 0.037215909451960044, 0.293482828264825], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000006817, 0.25000000204018874, 0.2500198370043356, 0.33553584703858275, 1.0007219566502352]}, "NODE_860": {"DENSITY": [0.125, 0.125, 0.12500000000004496, 0.1250000012536988, 0.12501206120644834, 0.15949722492851226, 0.28248857486580864], "MOMENTUM_X": [0.0, 1.4144673354565363e-20, 4.748185304758391e-14, 1.3280801898381409e-09, 1.2885510750519971e-05, 0.05502511029314177, 0.28173829424814717], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000012584, 0.2500000035103566, 0.2500337739408224, 0.3689252041304677, 0.9574662535378629]}, "NODE_861": {"DENSITY": [0.125, 0.125, 0.12500000000007624, 0.12500000199263195, 0.12501821521056036, 0.16411148832790828, 0.27949653664400564], "MOMENTUM_X": [0.0, 4.391306268000386e-20, 8.038415551365388e-14, 2.105974154264509e-09, 1.9440105899812933e-05, 0.06197636187385151, 0.27508014016439664], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000021355, 0.2500000055793696, 0.25005100855379353, 0.38716396241781337, 0.9415593236112841]}, "NODE_862": {"DENSITY": [0.125, 0.125, 0.12500000000011316, 0.12500000277361883, 0.12502305272101197, 0.16530139273751587, 0.27995225060871354], "MOMENTUM_X": [0.0, 9.127803891810184e-20, 1.1997596514721606e-13, 2.945982060673288e-09, 2.462764105939943e-05, 0.06274643803022997, 0.27490225361931525], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000031686, 0.25000000776613296, 0.25006455730390775, 0.39140950448558637, 0.9426404729425837]}, "NODE_863": {"DENSITY": [0.125, 0.125, 0.1250000000001492, 0.12500000344552942, 0.12502578883343127, 0.16533616246365127, 0.28082709164408376], "MOMENTUM_X": [0.0, 1.258027068577461e-19, 1.5846316716994998e-13, 3.662188763785706e-09, 2.7471778015667263e-05, 0.06225268144176436, 0.27637452359537495], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000041783, 0.2500000096474827, 0.25007222081698494, 0.39123362058567607, 0.9468050359789741]}, "NODE_864": {"DENSITY": [0.125, 0.125, 0.12500000000017836, 0.12500000392348765, 0.1250270341296036, 0.16532217949245637, 0.2812016782246483], "MOMENTUM_X": [0.0, 1.4116586605053393e-19, 1.8937678835656694e-13, 4.165517279711838e-09, 2.871811673675557e-05, 0.062126430943264976, 0.2771135141974247], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000004994, 0.25000001098576574, 0.25007570876399793, 0.391076869077977, 0.9487074793873396]}, "NODE_865": {"DENSITY": [0.125, 0.125, 0.1250000000001986, 0.1250000042346565, 0.1250278319134296, 0.16558916926505537, 0.28101566189344607], "MOMENTUM_X": [0.0, 1.487376254770771e-19, 2.1054349772024296e-13, 4.485562467922268e-09, 2.9487136336694132e-05, 0.06254804550507198, 0.27653660834597726], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000055594, 0.25000001185703835, 0.2500779432928543, 0.39207453010468757, 0.9474341614035738]}, "NODE_866": {"DENSITY": [0.125, 0.125, 0.12500000000021297, 0.12500000450369522, 0.12502926815606277, 0.16648614505250528, 0.2802188255768514], "MOMENTUM_X": [0.0, 1.5172166695573823e-19, 2.2514201738331887e-13, 4.751531698120281e-09, 3.088503671323189e-05, 0.06399648464631023, 0.27431408195711116], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000059636, 0.2500000126103471, 0.25008196618766754, 0.39553190222400236, 0.9423813872593348]}, "NODE_867": {"DENSITY": [0.125, 0.125, 0.12500000000023173, 0.12500000498601357, 0.12503309397559856, 0.16877260966174615, 0.278570615366058], "MOMENTUM_X": [0.0, 1.5743026536004048e-19, 2.431445757311459e-13, 5.217891601429561e-09, 3.464514132970879e-05, 0.06769514381641643, 0.26989399174931455], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000064887, 0.2500000139608385, 0.2500926825876315, 0.40447432802298666, 0.9322203649531358]}, "NODE_868": {"DENSITY": [0.125, 0.125, 0.12500000000028297, 0.12500000626956076, 0.1250434730557974, 0.17377820350265977, 0.27525488356644917], "MOMENTUM_X": [0.0, 1.9955517083764163e-19, 2.909434318498508e-13, 6.446281306742431e-09, 4.4824086830307745e-05, 0.07564771567337022, 0.2630177709671861], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000007924, 0.25000001755477086, 0.25012175742341985, 0.4245084269829184, 0.9147996858495349]}, "NODE_869": {"DENSITY": [0.125, 0.125, 0.12500000000044634, 0.12500000968167316, 0.12506953220322126, 0.1813297523408903, 0.2682928228768822], "MOMENTUM_X": [0.0, 3.192408401631307e-19, 5.006309687687172e-13, 1.0918543541086883e-08, 7.9443089799881e-05, 0.09430832739295666, 0.2576530013704267], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000012498, 0.2500000271086869, 0.25019478757789887, 0.4613885672131878, 0.8907987748054335]}, "NODE_870": {"DENSITY": [0.125, 0.125, 0.12500000000000216, 0.12500000008419554, 0.12500087341231567, 0.13094385863147384, 0.29073278003301106], "MOMENTUM_X": [0.0, 1.5432733654209522e-22, 2.0233544271198606e-15, 7.871660223136738e-11, 8.181485749860434e-07, 0.006920773936762048, 0.2876018273802064], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000605, 0.2500000002357475, 0.25000244556564627, 0.2672823719107848, 0.9869468469038576]}, "NODE_871": {"DENSITY": [0.125, 0.125, 0.12500000000000405, 0.12500000014583107, 0.12500148241117395, 0.13422461900170457, 0.28359347792796297], "MOMENTUM_X": [0.0, 3.5680254354580082e-22, 4.282450043163039e-15, 1.5435224649710523e-10, 1.577665811258576e-06, 0.012778961679401905, 0.2858312382954803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000113, 0.25000000040832693, 0.25000415078985794, 0.27771514361955074, 0.9663196914873782]}, "NODE_872": {"DENSITY": [0.125, 0.125, 0.125000000000007, 0.12500000023430838, 0.1250022690252941, 0.13669922603135698, 0.28071183911705716], "MOMENTUM_X": [0.0, 1.5711870194033815e-21, 7.338230882069737e-15, 2.4737233986949936e-10, 2.411746843560585e-06, 0.016380697409241144, 0.2789008463751825], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000195, 0.2500000006560633, 0.25000635336275345, 0.28574968307298765, 0.9504012938206422]}, "NODE_873": {"DENSITY": [0.125, 0.125, 0.1250000000000105, 0.1250000003314229, 0.12500295517352406, 0.13760971562911473, 0.280246524551713], "MOMENTUM_X": [0.0, 2.3736770018217674e-21, 1.1102488902655167e-14, 3.517410002642877e-10, 3.15024868700043e-06, 0.01735898498595928, 0.27646036774137744], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000293, 0.2500000009279839, 0.25000827464441955, 0.2886772354942661, 0.945985240822916]}, "NODE_874": {"DENSITY": [0.125, 0.125, 0.125000000000014, 0.1250000004194683, 0.12500340627585516, 0.1377465061574284, 0.28056711259349976], "MOMENTUM_X": [0.0, 3.0826064475156425e-21, 1.4863585236740115e-14, 4.4570555280712275e-10, 3.625139499464252e-06, 0.017332087938343937, 0.27664139436821644], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000392, 0.2500000011745112, 0.25000953778314855, 0.28907219930549566, 0.9469425963432195]}, "NODE_875": {"DENSITY": [0.125, 0.125, 0.1250000000000169, 0.12500000048600043, 0.12500364696074104, 0.1377580948357863, 0.2806743713168676], "MOMENTUM_X": [0.0, 3.737154774685319e-21, 1.797995929864283e-14, 5.160221062744612e-10, 3.871594425145353e-06, 0.017294437587285303, 0.27677308862774985], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000474, 0.25000000136080136, 0.2500102117304904, 0.28909062829795296, 0.9473227646096709]}, "NODE_876": {"DENSITY": [0.125, 0.125, 0.125000000000019, 0.12500000053131427, 0.12500379367249595, 0.13790831483623545, 0.2802361697470977], "MOMENTUM_X": [0.0, 3.964218683193984e-21, 2.0179994245693332e-14, 5.629700421535002e-10, 4.016034700092953e-06, 0.017519676257629527, 0.2756065821853775], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000533, 0.25000000148768003, 0.2500106225419483, 0.28957892241935124, 0.9445775646650791]}, "NODE_877": {"DENSITY": [0.125, 0.125, 0.12500000000002054, 0.1250000005688151, 0.12500399649187463, 0.1384109180045436, 0.2792157370275506], "MOMENTUM_X": [0.0, 4.0081809662539346e-21, 2.1710633419967145e-14, 6.003875091975472e-10, 4.212767143371627e-06, 0.01828670782617784, 0.27281712839481903], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000575, 0.25000000159268226, 0.25001119046334, 0.2912310687869081, 0.9381336466453302]}, "NODE_878": {"DENSITY": [0.125, 0.125, 0.12500000000002234, 0.12500000062960812, 0.12500449698788224, 0.13971491780896458, 0.27765858656733355], "MOMENTUM_X": [0.0, 4.077256947548329e-21, 2.3472706572447504e-14, 6.592376953925678e-10, 4.701063601766398e-06, 0.02027773406951454, 0.2684074288947525], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000626, 0.25000000176290277, 0.25001259192501846, 0.29555365446076465, 0.9281820291909874]}, "NODE_879": {"DENSITY": [0.125, 0.125, 0.12500000000002723, 0.12500000078763954, 0.12500584529504088, 0.14277264288132624, 0.2750823511812883], "MOMENTUM_X": [0.0, 6.746809294680425e-21, 2.8008677557320704e-14, 8.099322007256785e-10, 6.012184293472049e-06, 0.024920633705853318, 0.2626744810672349], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000763, 0.2500000022053907, 0.2500163674191795, 0.3058757301760524, 0.914268716965128]}, "NODE_880": {"DENSITY": [0.125, 0.125, 0.12500000000004313, 0.12500000121468302, 0.12500921135092974, 0.14851744803074113, 0.26856452359545674], "MOMENTUM_X": [0.0, 1.3149867819434837e-20, 4.832349682877882e-14, 1.3687951038024934e-09, 1.0450326147896515e-05, 0.03694740980867253, 0.2597768914458473], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000012074, 0.25000000340111256, 0.2500257934790733, 0.3275184007113755, 0.8939949053432195]}, "NODE_881": {"DENSITY": [0.125, 0.125, 0.12500000000000017, 0.1250000000095281, 0.12500010736221234, 0.12589916532966336, 0.2608830340812965], "MOMENTUM_X": [0.0, 4.552759504986039e-24, 1.7075827604667322e-16, 8.90241074187831e-12, 1.0055168087371928e-07, 0.0008995009720995622, 0.22951799520417093], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000005, 0.25000000002667877, 0.2500003006143635, 0.252530522184641, 0.8299420122167842]}, "NODE_882": {"DENSITY": [0.125, 0.125, 0.12500000000000036, 0.12500000001662673, 0.12500018215846848, 0.12652340119085545, 0.2618264263650575], "MOMENTUM_X": [0.0, 1.0815170875049638e-23, 3.688754079768082e-16, 1.7584830289811418e-11, 1.934538380797214e-07, 0.0017959123680536524, 0.24337074351604582], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000000001, 0.25000000004655476, 0.2500005100442937, 0.25431281397282823, 0.8511156580620114]}, "NODE_883": {"DENSITY": [0.125, 0.125, 0.1250000000000006, 0.12500000002700218, 0.12500028203051544, 0.12713155279499683, 0.26179747308316104], "MOMENTUM_X": [0.0, 3.6839379467565024e-23, 6.408029707812104e-16, 2.848091262348328e-11, 2.990398194333065e-07, 0.0025527653756765856, 0.24189300792382498], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000167, 0.2500000000756062, 0.25000078968685946, 0.2560650346618171, 0.8504986849041265]}, "NODE_884": {"DENSITY": [0.125, 0.125, 0.12500000000000092, 0.1250000000387626, 0.12500037629039207, 0.12744279657955157, 0.2614059674640524], "MOMENTUM_X": [0.0, 5.667382239677497e-23, 9.825300654352812e-16, 4.11085767225985e-11, 4.0055544369138505e-07, 0.0029064928796993456, 0.2394566836963669], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000255, 0.2500000001085352, 0.25000105361566344, 0.25696620165880446, 0.8464839338237377]}, "NODE_885": {"DENSITY": [0.125, 0.125, 0.12500000000000128, 0.12500000004990336, 0.12500044564900453, 0.1275320921100849, 0.2613264997203485], "MOMENTUM_X": [0.0, 7.367856781535597e-23, 1.3376078757714894e-15, 5.3006327798779074e-11, 4.740491996026755e-07, 0.0029847956472137645, 0.23872818576225202], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000035, 0.25000000013972934, 0.2500012478208231, 0.2572235711762756, 0.8451921501217519]}, "NODE_886": {"DENSITY": [0.125, 0.125, 0.12500000000000153, 0.12500000005876272, 0.12500048747626244, 0.12755167463221417, 0.2612589796552599], "MOMENTUM_X": [0.0, 9.425089845241788e-23, 1.6368715080895168e-15, 6.239340180577089e-11, 5.174653440955136e-07, 0.002996703051734621, 0.23844873686652243], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000043, 0.2500000001645356, 0.2500013649378403, 0.25727944388863944, 0.8445627859330026]}, "NODE_887": {"DENSITY": [0.125, 0.125, 0.12500000000000175, 0.12500000006505455, 0.1250005134015466, 0.12759204386398865, 0.2609414134727403], "MOMENTUM_X": [0.0, 1.0330412331084103e-22, 1.8483561351311732e-15, 6.894796842202818e-11, 5.434826268938109e-07, 0.003043553434047674, 0.23749551457498944], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000049, 0.2500000001821527, 0.2500014375290844, 0.2573964290687348, 0.8424636210215891]}, "NODE_888": {"DENSITY": [0.125, 0.125, 0.1250000000000019, 0.12500000007014367, 0.12500054287521314, 0.12772194487474406, 0.26045437625202933], "MOMENTUM_X": [0.0, 1.0496462591964889e-22, 2.0021835533907004e-15, 7.406769860369478e-11, 5.72228620123945e-07, 0.003203335741015987, 0.23578682467275147], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000533, 0.25000000019640234, 0.25000152005588666, 0.25777418227931986, 0.8389406110314033]}, "NODE_889": {"DENSITY": [0.125, 0.125, 0.12500000000000205, 0.1250000000777027, 0.12500060861870185, 0.12807382885620355, 0.26021083848561055], "MOMENTUM_X": [0.0, 1.072939442967527e-22, 2.169933069339339e-15, 8.13996535678935e-11, 6.362596085003003e-07, 0.0036404571815891345, 0.23398075396274826], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000583, 0.25000000021756774, 0.25000170413895434, 0.25880081300663604, 0.8360030207173483]}, "NODE_890": {"DENSITY": [0.125, 0.125, 0.1250000000000025, 0.12500000009683623, 0.12500078335120113, 0.12897367525208206, 0.26044131452195135], "MOMENTUM_X": [0.0, 1.2074074036914705e-22, 2.586901351558019e-15, 9.95856519628228e-11, 8.05621396192836e-07, 0.004773583051912542, 0.23328576929745656], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000705, 0.2500000002711415, 0.2500021933940399, 0.26144781740461476, 0.8363588496195309]}, "NODE_891": {"DENSITY": [0.125, 0.125, 0.125000000000004, 0.12500000014935608, 0.12500122122511523, 0.13103410279100852, 0.2579770224750877], "MOMENTUM_X": [0.0, 2.3705999141392423e-22, 4.479176974482189e-15, 1.6819086645140348e-10, 1.382178333241317e-06, 0.0083779372305334, 0.23899697238606848], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000112, 0.2500000004181971, 0.25000341946015037, 0.2677720177448698, 0.8377475459345285]}, "NODE_892": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000105346, 0.12500001315270723, 0.125116086731044, 0.21182087704985061], "MOMENTUM_X": [0.0, 1.189090981861965e-25, 1.4422839636365573e-17, 9.836610731051607e-13, 1.231493045066777e-08, 0.0001101074776622812, 0.13990356877843563], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.2500000000029497, 0.25000003682758276, 0.25032524322768374, 0.5894700400468474]}, "NODE_893": {"DENSITY": [0.125, 0.125, 0.12500000000000003, 0.12500000000185327, 0.12500002234365096, 0.12519957580973787, 0.21968126717867192], "MOMENTUM_X": [0.0, 3.220995481283244e-25, 2.858961825893475e-17, 1.9586821428487186e-12, 2.3694791531833873e-08, 0.00021815633320241515, 0.1634034780418433], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.2500000000051891, 0.2500000625622314, 0.25055953701164363, 0.6375535028371763]}, "NODE_894": {"DENSITY": [0.125, 0.125, 0.12500000000000006, 0.12500000000304196, 0.12500003494986592, 0.12529348338275698, 0.22307540924092195], "MOMENTUM_X": [0.0, 8.849999072380522e-25, 5.052593409329153e-17, 3.2058262180401065e-12, 3.6989498727056985e-08, 0.0003220153024814127, 0.16813345412739378], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000001, 0.25000000000851746, 0.25000009785964616, 0.2508233721475226, 0.6537088778234876]}, "NODE_895": {"DENSITY": [0.125, 0.125, 0.12500000000000008, 0.12500000000442746, 0.1250000476036304, 0.12535395930434157, 0.22351166312015627], "MOMENTUM_X": [0.0, 1.3728931617835789e-24, 7.887930141989357e-17, 4.6921876510941466e-12, 5.0609376479885915e-08, 0.00038745166610434706, 0.16723538160878465], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000002, 0.2500000000123969, 0.2500001332902062, 0.2509934610342362, 0.6543121012838713]}, "NODE_896": {"DENSITY": [0.125, 0.125, 0.1250000000000001, 0.1250000000057901, 0.1250000577698707, 0.12537918403108653, 0.22338593578717053], "MOMENTUM_X": [0.0, 1.963227381232749e-24, 1.1092378427091922e-16, 6.147838851242216e-12, 6.141991695106531e-08, 0.00041285037150443635, 0.16635245581485097], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000003, 0.2500000000162122, 0.25000016175569867, 0.25106441896958637, 0.6529293650543317]}, "NODE_897": {"DENSITY": [0.125, 0.125, 0.12500000000000014, 0.12500000000692202, 0.12500006453168033, 0.12538755993944742, 0.22331826438387015], "MOMENTUM_X": [0.0, 2.633069584305984e-24, 1.3994514361699282e-16, 7.349359380689098e-12, 6.849781676540622e-08, 0.0004206415526941024, 0.16606283719075546], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000033, 0.25000000001938166, 0.2500001806887806, 0.2510879747176586, 0.6523335054249823]}, "NODE_898": {"DENSITY": [0.125, 0.125, 0.12500000000000014, 0.12500000000775716, 0.1250000688982633, 0.12539547420560632, 0.22335756449252855], "MOMENTUM_X": [0.0, 2.9553296976067986e-24, 1.5922327754093592e-16, 8.223001629662318e-12, 7.29420452951873e-08, 0.0004284592802276201, 0.1658792963327722], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000044, 0.25000000002172, 0.2500001929152231, 0.2511102425452781, 0.652183142054476]}, "NODE_899": {"DENSITY": [0.125, 0.125, 0.12500000000000017, 0.12500000000842623, 0.1250000732563598, 0.12541655745164915, 0.22376629750271163], "MOMENTUM_X": [0.0, 3.022942490857463e-24, 1.748780808417659e-16, 8.900917503071271e-12, 7.722805128926044e-08, 0.0004504245921163627, 0.16608374079018787], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000005, 0.25000000002359357, 0.2500002051179042, 0.2511695886001801, 0.6534560798693549]}, "NODE_900": {"DENSITY": [0.125, 0.125, 0.12500000000000017, 0.12500000000934947, 0.12500008195109008, 0.125474393457557, 0.22524174680304349], "MOMENTUM_X": [0.0, 3.0584634384874818e-24, 1.9426049133871607e-16, 9.798711636866088e-12, 8.569149486039059e-08, 0.0005112615625000038, 0.16780683923432352], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000005, 0.25000000002617856, 0.25000022946317224, 0.251332468685491, 0.6593700399945892]}, "NODE_901": {"DENSITY": [0.125, 0.125, 0.12500000000000022, 0.12500000001162048, 0.1250001046122631, 0.1256282413888344, 0.2287259268124652], "MOMENTUM_X": [0.0, 3.409053707006744e-24, 2.313497246019061e-16, 1.1951177242951475e-11, 1.0758194537255064e-07, 0.0006736052591292845, 0.17292112151110914], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000006, 0.2500000000325373, 0.25000029291452763, 0.2517663094429044, 0.6752121951644269]}, "NODE_902": {"DENSITY": [0.125, 0.125, 0.12500000000000036, 0.1250000000179455, 0.1250001618707695, 0.1260113427412511, 0.2319235489158492], "MOMENTUM_X": [0.0, 6.865219124744303e-24, 3.9921900917113506e-16, 2.0195829790163836e-11, 1.8290909845694558e-07, 0.0012296503980357015, 0.18807947575361447], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000000001, 0.2500000000502475, 0.25000045323867987, 0.2528543096054855, 0.7023714874554545]}, "NODE_903": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000011358, 0.1250000016034354, 0.1250144105341863, 0.16382878384098085], "MOMENTUM_X": [0.0, 2.8391412734165504e-27, 1.1940264654276415e-18, 1.0597245222939345e-13, 1.50073013256159e-09, 1.3512364556571012e-05, 0.05756738383726455], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000031797, 0.2500000044896193, 0.25004035254125384, 0.3827184705233939]}, "NODE_904": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000002015, 0.12500000273080883, 0.12502461753154728, 0.17304713163199711], "MOMENTUM_X": [0.0, 7.516152048006721e-27, 2.056062879955895e-18, 2.1283477918737165e-13, 2.892844922973094e-09, 2.6366215605055685e-05, 0.07884878323584958], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000005642, 0.25000000764626484, 0.2500689398131495, 0.4243171731989673]}, "NODE_905": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000003343, 0.12500000431228325, 0.12503704308257851, 0.17787855789112245], "MOMENTUM_X": [0.0, 2.149435754118085e-26, 3.4140141826944092e-18, 3.5201222742660784e-13, 4.557526104586074e-09, 3.965214602110545e-05, 0.08605569519413186], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.250000000000936, 0.2500000120743934, 0.25010374544973524, 0.4446145848275103]}, "NODE_906": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000004929, 0.12500000597992153, 0.12504642226073856, 0.17899506775583518], "MOMENTUM_X": [0.0, 3.473739677658881e-26, 5.770321634261358e-18, 5.220322591737606e-13, 6.35108487150269e-09, 4.969881317142432e-05, 0.08652950825446681], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000138006, 0.250000016743781, 0.25013002179133526, 0.44859889965954003]}, "NODE_907": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000065406, 0.12500000741751366, 0.12505141076566995, 0.17898876833612531], "MOMENTUM_X": [0.0, 5.345465059632902e-26, 7.373147997223962e-18, 6.941939630613735e-13, 7.883189585864866e-09, 5.485218546093832e-05, 0.08590430948362174], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000183126, 0.25000002076903916, 0.25014399832046635, 0.4481312977667106]}, "NODE_908": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000079303, 0.125000008453486, 0.1250535509075138, 0.17897263657103235], "MOMENTUM_X": [0.0, 6.196430020977129e-26, 9.327098191148719e-18, 8.419509802604171e-13, 8.97377430517441e-09, 5.696982743752566e-05, 0.08575773940780385], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.2500000000022206, 0.2500000236697622, 0.25014999448642694, 0.4479186690988966]}, "NODE_909": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000089923, 0.12500000915539608, 0.12505503002298837, 0.17925129394003608], "MOMENTUM_X": [0.0, 6.786075687063434e-26, 1.3992808071776692e-17, 9.53383999467637e-13, 9.695621136535689e-09, 5.839298587995441e-05, 0.08616801413734046], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.2500000000025179, 0.25000002563511053, 0.25015413870306025, 0.44897796998358164]}, "NODE_910": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000009842, 0.12500000980217021, 0.12505799213070118, 0.18018706136360438], "MOMENTUM_X": [0.0, 7.097650669405544e-26, 1.589821468463483e-17, 1.040007977913765e-12, 1.0337633342672878e-08, 6.13049619971913e-05, 0.08762472902949506], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.25000000000275585, 0.25000002744607824, 0.2501624384170522, 0.45270870343231423]}, "NODE_911": {"DENSITY": [0.125, 0.125, 0.12500000000000003, 0.12500000000109454, 0.12500001095875288, 0.12506590008429905, 0.18256472123544845], "MOMENTUM_X": [0.0, 7.15905440061385e-26, 1.814188932651121e-17, 1.1476154238317551e-12, 1.1464124646331881e-08, 6.914790876172773e-05, 0.09138600745946052], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.25000000000306477, 0.2500000306845102, 0.25018459763160006, 0.4623891314956511]}, "NODE_912": {"DENSITY": [0.125, 0.125, 0.12500000000000003, 0.12500000000135808, 0.12500001389785276, 0.12508708931956236, 0.18768222202759943], "MOMENTUM_X": [0.0, 7.798246753318615e-26, 2.1343211701615368e-17, 1.3967965912405387e-12, 1.4294060458293907e-08, 9.010462972201962e-05, 0.09945211005747179], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000006, 0.25000000000380257, 0.25000003891399103, 0.2502439825315943, 0.48385140533120286]}, "NODE_913": {"DENSITY": [0.125, 0.125, 0.12500000000000003, 0.1250000000021018, 0.12500002139291091, 0.1251401617746909, 0.19479548747637182], "MOMENTUM_X": [0.0, 1.7322158995048123e-25, 3.3716793515817593e-17, 2.3639868275233085e-12, 2.4148898361209164e-08, 0.00016116132330676913, 0.11860897166696882], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000001, 0.2500000000058851, 0.25000005990015994, 0.25039285206167283, 0.5221222637508023]}, "NODE_914": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001188, 0.12500000019411187, 0.12500177510322996, 0.13552859552804286], "MOMENTUM_X": [0.0, 6.900917078455966e-29, 3.4867339017319665e-20, 1.1108363959032434e-14, 1.8158992473956143e-10, 1.6625875814617587e-06, 0.013160944570675539], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000003336, 0.2500000005435134, 0.2500049703351729, 0.2815024461292455]}, "NODE_915": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000002134, 0.1250000003317712, 0.12500301796673502, 0.140483993827699], "MOMENTUM_X": [0.0, 1.942788824866579e-28, 6.289351416456578e-20, 2.2516276622987662e-14, 3.511447323673582e-10, 3.2146727585043975e-06, 0.022725534814326036], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000005973, 0.25000000092895935, 0.25000845046695636, 0.2984875691041934]}, "NODE_916": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000003578, 0.12500000052870014, 0.125004606944166, 0.1438527350605047], "MOMENTUM_X": [0.0, 3.434535008921316e-28, 1.33979967978087e-19, 3.763626389745985e-14, 5.581126514536179e-10, 4.901702720295303e-06, 0.027771500912968962], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000001001, 0.25000000148036017, 0.25001289982360525, 0.31017513801847457]}, "NODE_917": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000005337, 0.12500000074492112, 0.1250059534562405, 0.144951184379135], "MOMENTUM_X": [0.0, 5.59734143528971e-28, 2.3536602792709223e-19, 5.651039243530047e-14, 7.904457782741412e-10, 6.349692244824615e-06, 0.02884288269557244], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000001495, 0.25000000208577916, 0.25001667032218033, 0.313873521812588]}, "NODE_918": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000007183, 0.125000000942366, 0.12500680215936616, 0.1450710814944632], "MOMENTUM_X": [0.0, 1.095400526664767e-27, 2.8360425372843847e-19, 7.61952363373115e-14, 1.0011490345136037e-09, 7.2401238692872064e-06, 0.028680069501678417], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000020106, 0.2500000026386247, 0.2500190468871323, 0.31417761453371595]}, "NODE_919": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000008823, 0.12500000109445086, 0.12500723733382776, 0.14507836255642115], "MOMENTUM_X": [0.0, 1.3410577816506329e-27, 3.2650543160000486e-19, 9.36839239981794e-14, 1.161880738462154e-09, 7.682911311318495e-06, 0.028618466084387617], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000024714, 0.2500000030644626, 0.2500202654813424, 0.314164609773637]}, "NODE_920": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000010117, 0.12500000120255225, 0.1250075113094464, 0.14529300902069925], "MOMENTUM_X": [0.0, 1.5507652823909269e-27, 1.0863495499191794e-18, 1.0730586445324665e-13, 1.2739109041357222e-09, 7.951133036867756e-06, 0.028960631494245694], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000002834, 0.25000000336714634, 0.25002103268122683, 0.3149042561090666]}, "NODE_921": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000001116, 0.12500000129779093, 0.1250079272820564, 0.145990312795013], "MOMENTUM_X": [0.0, 1.658165675005839e-27, 1.455642931878911e-18, 1.1797428935353296e-13, 1.3692987093454833e-09, 8.355937667194355e-06, 0.030078564891513775], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000003126, 0.2500000036338147, 0.25002219751474297, 0.3173399168199961]}, "NODE_922": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000012446, 0.12500000145207088, 0.12500896749433255, 0.1477452101008536], "MOMENTUM_X": [0.0, 1.6686106652792604e-27, 1.5964257146846636e-18, 1.3056144027571382e-13, 1.5198076645083544e-09, 9.374670994482538e-06, 0.032877536823680234], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000034855, 0.2500000040657985, 0.2500251104101206, 0.3235269367830513]}, "NODE_923": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000001543, 0.12500000183258583, 0.1250117382701506, 0.15169600340932862], "MOMENTUM_X": [0.0, 1.7198682235517033e-27, 1.7553136119058006e-18, 1.5870788479301472e-13, 1.885126432810332e-09, 1.207688031425e-05, 0.03907260152488089], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000043204, 0.2500000051312405, 0.2500328695453298, 0.33772520365666653]}, "NODE_924": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000023948, 0.12500000281164436, 0.1250186067060841, 0.15853288628301299], "MOMENTUM_X": [0.0, 3.22711761023217e-27, 2.5522966908434327e-18, 2.6921832725137417e-13, 3.17171828395188e-09, 2.114165895666917e-05, 0.05414952571249702], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000006705, 0.25000000787260424, 0.25005210570187647, 0.3658693392037573]}, "NODE_925": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000012, 0.12500000002328113, 0.12500021831435418, 0.1267744411850278], "MOMENTUM_X": [0.0, 1.4351821801159038e-30, 1.5540280853367775e-21, 1.130690687196306e-15, 2.1767048664376238e-11, 2.0446063439636257e-07, 0.001847112873218675], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000034, 0.2500000000651872, 0.2500006112808893, 0.2550209853590851]}, "NODE_926": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000022, 0.1250000000399666, 0.12500037053115026, 0.12795079682204033], "MOMENTUM_X": [0.0, 4.458064890130335e-30, 2.6996999823300822e-21, 2.3121616361874197e-15, 4.226705962348911e-11, 3.9370568376310734e-07, 0.00365264725651002], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000061, 0.25000000011190654, 0.2500010374896287, 0.2584494003534059]}, "NODE_927": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000372, 0.12500000006425843, 0.12500057225970107, 0.12901651865326433], "MOMENTUM_X": [0.0, 8.49591004002995e-30, 4.554358436939477e-21, 3.907135181490487e-15, 6.776356879527425e-11, 6.07174719663594e-07, 0.005060996666601112], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000104, 0.25000000017992363, 0.25000160233299745, 0.2616031894029123]}, "NODE_928": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000056, 0.12500000009184972, 0.12500075875251862, 0.12950996662971395], "MOMENTUM_X": [0.0, 1.0837725881156432e-29, 9.472853752623485e-21, 5.941353890026146e-15, 9.738106230557044e-11, 8.080145735769911e-07, 0.005626738897893485], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000157, 0.2500000002571792, 0.25000212451748893, 0.26307085445178086]}, "NODE_929": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000763, 0.12500000011828138, 0.12500089200856843, 0.1296288643920989], "MOMENTUM_X": [0.0, 2.1845085642946168e-29, 1.3206501987339736e-20, 8.113986464436456e-15, 1.2560706033840114e-10, 9.489850834662443e-07, 0.005711663161980001], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000214, 0.25000000033118797, 0.2500024976384474, 0.2634190805286344]}, "NODE_930": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000952, 0.12500000013981455, 0.12500097022408052, 0.1296507601046119], "MOMENTUM_X": [0.0, 2.7663939148984223e-29, 1.5427344202521266e-20, 1.0109692597003858e-14, 1.4842616950306574e-10, 1.0298812601725045e-06, 0.005717122246108257], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000002665, 0.2500000003914808, 0.2500027166444543, 0.2634812138363598]}, "NODE_931": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001102, 0.12500000015582502, 0.1250010194611815, 0.12972156257594294], "MOMENTUM_X": [0.0, 3.3927258459577824e-29, 2.5237374917931108e-20, 1.1716774769776126e-14, 1.6511367896449373e-10, 1.0790749867559099e-06, 0.00580727879792938], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000309, 0.2500000004363101, 0.2500028545100153, 0.2636922384547308]}, "NODE_932": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000123, 0.12500000016962462, 0.1250010797598438, 0.12995196205871476], "MOMENTUM_X": [0.0, 3.693099076915646e-29, 3.083490415431635e-20, 1.2983172940022197e-14, 1.7904530062810682e-10, 1.1379685016945496e-06, 0.006114075120023996], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000344, 0.2500000004749488, 0.2500030233484396, 0.2643828647776379]}, "NODE_933": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001374, 0.12500000019017152, 0.1250012169892461, 0.13055969399780984], "MOMENTUM_X": [0.0, 3.707617126832289e-29, 4.150548974952664e-20, 1.4418123294020028e-14, 1.991378711901039e-10, 1.2720716445214213e-06, 0.006929799753716064], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000003847, 0.2500000005324804, 0.2500034075961587, 0.2662140570302955]}, "NODE_934": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001701, 0.1250000002392149, 0.1250015774416723, 0.1320601960546738], "MOMENTUM_X": [0.0, 3.841356670510148e-29, 5.155612543816303e-20, 1.7508463840675553e-14, 2.46104894872854e-10, 1.6224412408899902e-06, 0.008967354777148507], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000004763, 0.25000000066980166, 0.2500044168798383, 0.2707922295697496]}, "NODE_935": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000265, 0.1250000003664069, 0.1250024696864125, 0.1352872199456722], "MOMENTUM_X": [0.0, 7.618311714508425e-29, 7.640134033514934e-20, 2.977781219158951e-14, 4.131119079702315e-10, 2.79764874589903e-06, 0.015016819205114426], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000742, 0.25000000102593933, 0.25000691524365354, 0.281295128367236]}, "NODE_936": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000001, 0.12500000000275965, 0.12500002684165723, 0.12523693593103893], "MOMENTUM_X": [0.0, 2.8304238928040106e-32, 4.326993280592028e-23, 1.1283663797590826e-16, 2.5786523384840528e-12, 2.5133727741929206e-08, 0.00022724590179543487], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000033, 0.2500000000077271, 0.25000007515665085, 0.250664267154494]}, "NODE_937": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000022, 0.1250000000047617, 0.1250000455495278, 0.12540734440400467], "MOMENTUM_X": [0.0, 8.836452001073907e-32, 8.053306542341293e-23, 2.270494694904478e-16, 5.032186246962093e-12, 4.8317698548117726e-08, 0.00045296196627581044], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000006, 0.25000000001333283, 0.2500001275387142, 0.25114366461925247]}, "NODE_938": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000036, 0.12500000000772346, 0.12500007106603553, 0.1255916889496618], "MOMENTUM_X": [0.0, 1.778920564962658e-31, 1.482877334565358e-22, 3.8847089498429897e-16, 8.13729256137504e-12, 7.524505915064718e-08, 0.0006627281987267561], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000105, 0.25000000002162576, 0.25000019898498915, 0.2516635343052362]}, "NODE_939": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000056, 0.12500000001118655, 0.12500009630614167, 0.12570265410276063], "MOMENTUM_X": [0.0, 2.4125182075062782e-31, 2.6724178821450914e-22, 6.022132996872821e-16, 1.1850920712699709e-11, 1.0241617802564597e-07, 0.0007843189070793191], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000016, 0.25000000003132244, 0.2500002696573645, 0.2519770934166824]}, "NODE_940": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000078, 0.12500000001464112, 0.12500011617787393, 0.12574422370710564], "MOMENTUM_X": [0.0, 4.317209017808148e-31, 3.456069505932908e-22, 8.3862595592478935e-16, 1.5540996210383028e-11, 1.235286524729207e-07, 0.0008253782297699412], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000022, 0.2500000000409952, 0.25000032529829214, 0.25209455927317653]}, "NODE_941": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000097, 0.12500000001759295, 0.12500012916373737, 0.1257566297651125], "MOMENTUM_X": [0.0, 5.277420822979853e-31, 3.936421294547649e-22, 1.057444259316155e-15, 1.8674943531301224e-11, 1.370926504093762e-07, 0.000836325649105773], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000283, 0.2500000000492603, 0.25000036165876677, 0.2521295842062709]}, "NODE_942": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000114, 0.12500000001988, 0.12500013763753168, 0.12577126212172604], "MOMENTUM_X": [0.0, 6.677049663571969e-31, 9.613224338326252e-22, 1.2403405109398156e-15, 2.106894458235896e-11, 1.4569115713698073e-07, 0.0008513351363878972], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000033, 0.2500000000556641, 0.2500003853854302, 0.2521709567147996]}, "NODE_943": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000133, 0.12500000002183678, 0.12500014659918599, 0.1258132063947954], "MOMENTUM_X": [0.0, 7.360272415124548e-31, 1.281017905042022e-21, 1.3856358986679755e-15, 2.305787998991767e-11, 1.5451059729444487e-07, 0.0008969568348856454], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000366, 0.25000000006114287, 0.25000041047810584, 0.25228966074272174]}, "NODE_944": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000147, 0.1250000000245557, 0.12500016488690738, 0.12592694768071497], "MOMENTUM_X": [0.0, 7.389746729841753e-31, 1.7078640416406118e-21, 1.5428880015849658e-15, 2.5724438927891974e-11, 1.7237325645201316e-07, 0.0010219060807445167], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000041, 0.25000000006875583, 0.2500004616838232, 0.2526118838332053]}, "NODE_945": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000183, 0.1250000000308291, 0.1250002119306434, 0.12622457554254363], "MOMENTUM_X": [0.0, 7.736630647756948e-31, 2.1581360424316103e-21, 1.871200623033243e-15, 3.1720053702503595e-11, 2.179693831504622e-07, 0.0013515925609717174], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000505, 0.2500000000863215, 0.2500005934065816, 0.2534573274745402]}, "NODE_946": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000286, 0.12500000004720743, 0.1250003288831332, 0.12695084425295425], "MOMENTUM_X": [0.0, 1.5636126308795835e-30, 3.242952879367549e-21, 3.1954271835720384e-15, 5.32006686035172e-11, 3.7190761229865674e-07, 0.0024668777707122893], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000794, 0.2500000001321807, 0.25000092087493136, 0.25555021820133483]}, "NODE_947": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000032255, 0.12500000329920527, 0.12502958527347247], "MOMENTUM_X": [0.0, 5.401388322536758e-34, 1.306652158157853e-24, 1.2119857567889958e-17, 3.012086895657482e-13, 3.0884258568448478e-09, 2.7793059225489967e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000009031, 0.25000000923777493, 0.2500828516458435]}, "NODE_948": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.1250000000005597, 0.12500000560385618, 0.12505069889286993], "MOMENTUM_X": [0.0, 1.869588817446354e-33, 2.640194891277904e-24, 2.210730280711173e-17, 5.91125342966692e-13, 5.9373738791353945e-09, 5.4531643420014246e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000156725, 0.250000015690798, 0.2501420026820485]}, "NODE_949": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.1250000000009158, 0.12500000882275267, 0.12507584711589523], "MOMENTUM_X": [0.0, 3.811460031241267e-33, 5.188792732845243e-24, 3.617653778592198e-17, 9.641123422023299e-13, 9.326968664265043e-09, 8.158052849034643e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000256434, 0.25000002470370897, 0.2502124768271514]}, "NODE_950": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000134293, 0.12500001218279033, 0.1250939432737379], "MOMENTUM_X": [0.0, 5.239688712241645e-33, 9.59615684028969e-24, 5.741305437248221e-17, 1.421619685022325e-12, 1.294119794051225e-08, 0.00010095370516647456], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000376016, 0.25000003411181543, 0.2502632037988718]}, "NODE_951": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000008, 0.12500000000178396, 0.1250000150410117, 0.12510290288244372], "MOMENTUM_X": [0.0, 6.447435279486707e-33, 1.2540501774472865e-23, 8.219610843659426e-17, 1.8927415449749133e-12, 1.5985641945435825e-08, 0.00011013893679599114], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000002, 0.2500000000049951, 0.2500000421148369, 0.2502883220378766]}, "NODE_952": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000008, 0.1250000000021766, 0.12500001707998534, 0.12510648487617176], "MOMENTUM_X": [0.0, 6.96974027241167e-33, 1.3936535567732047e-23, 1.0942664635540249e-16, 2.3101509503497172e-12, 1.8129145969926777e-08, 0.00011363119649531901], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000003, 0.2500000000060945, 0.25000004782396423, 0.250298364048322]}, "NODE_953": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000001, 0.12500000000249234, 0.12500001847595965, 0.12510920507275533], "MOMENTUM_X": [0.0, 9.231877251249742e-33, 1.4667188887458792e-23, 1.3070213252134455e-16, 2.6417633694459626e-12, 1.9561814569771112e-08, 0.00011625305003567504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000033, 0.2500000000069787, 0.2500000517326934, 0.25030599050334923]}, "NODE_954": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000014, 0.12500000000276296, 0.12500001982381417, 0.12511524399640092], "MOMENTUM_X": [0.0, 1.0354915779453383e-32, 1.6024802024716428e-23, 1.46018505232513e-16, 2.9183827435051966e-12, 2.090026119121208e-08, 0.0001222669768879193], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000004, 0.2500000000077363, 0.2500000555066868, 0.2503229232633182]}, "NODE_955": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000017, 0.1250000000031188, 0.1250000222876945, 0.12513143099086801], "MOMENTUM_X": [0.0, 1.0411922215110622e-32, 3.5034379054014203e-23, 1.5947841462840379e-16, 3.2684829276458397e-12, 2.330849498731305e-08, 0.00013852362866947348], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000044, 0.2500000000087326, 0.2500000624055533, 0.250368316560325]}, "NODE_956": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000002, 0.12500000000391276, 0.12500002845410557, 0.1251744574125137], "MOMENTUM_X": [0.0, 1.1056419182387916e-32, 5.642909664464799e-23, 1.90680460117561e-16, 4.0260769121222075e-12, 2.9267972023816904e-08, 0.00018166985951805476], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000005, 0.2500000000109556, 0.2500000796715095, 0.2504890166844296]}, "NODE_957": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000003, 0.12500000000599662, 0.12500004386805186, 0.12528207376009848], "MOMENTUM_X": [0.0, 2.793235672727826e-32, 9.212894784636523e-23, 3.2771249724659184e-16, 6.7551937369947915e-12, 4.95500471532074e-08, 0.0003281001276279395], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000083, 0.2500000000167905, 0.25000012283058365, 0.25079145008232356]}, "NODE_958": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000003708, 0.12500000040507867, 0.1250036423920074], "MOMENTUM_X": [0.0, 9.248463804389751e-36, 4.1418926003110506e-26, 1.1566756055943314e-18, 3.4613249038440125e-14, 3.790552749589425e-10, 3.4115283193301957e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000001038, 0.2500000011342202, 0.2500101988920729]}, "NODE_959": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000006475, 0.1250000006892575, 0.12500620497309783], "MOMENTUM_X": [0.0, 3.491784020975166e-35, 9.094230931197489e-26, 1.8873192300794678e-18, 6.835368157998909e-14, 7.295858319791688e-10, 6.61763949684314e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000018135, 0.25000000192992106, 0.250017374603034]}, "NODE_960": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000010694, 0.12500000109428966, 0.12500943587893015], "MOMENTUM_X": [0.0, 7.11670078640694e-35, 1.6925230699049401e-25, 2.889697265962938e-18, 1.1244825449177157e-13, 1.1553515434876176e-09, 1.0052898135898377e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000002993, 0.2500000030640109, 0.25002642206015]}, "NODE_961": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000015857, 0.12500000153597826, 0.12501208052027174], "MOMENTUM_X": [0.0, 1.0051656575957172e-34, 3.240603041982557e-25, 4.578359402732831e-18, 1.6775062907699984e-13, 1.6299975655304256e-09, 1.2893111535333534e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000044403, 0.2500000043007391, 0.25003382811721037]}, "NODE_962": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000021355, 0.1250000019361616, 0.12501366535818012], "MOMENTUM_X": [0.0, 1.2487732638476584e-34, 4.445215536607812e-25, 6.8959270465969285e-18, 2.2649737455912409e-13, 2.05690507494001e-09, 1.4548732153670089e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.250000000000598, 0.2500000054212525, 0.2500382663998307]}, "NODE_963": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000026432, 0.1250000022432354, 0.12501443773967041], "MOMENTUM_X": [0.0, 1.3467438720828286e-34, 4.96433620674583e-25, 1.2143922764021842e-17, 2.804884570917098e-13, 2.381149081106436e-09, 1.5328381597648103e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000007401, 0.2500000062810593, 0.25004042944012145]}, "NODE_964": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000003065, 0.1250000024643005, 0.12501494040819838], "MOMENTUM_X": [0.0, 1.3807812781037932e-34, 5.143543569272192e-25, 1.5343904598673793e-17, 3.249207042951259e-13, 2.6099373404830478e-09, 1.581737029671917e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000085826, 0.2500000069000416, 0.2500418371602192]}, "NODE_965": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000034292, 0.12500000266709643, 0.12501578155178375], "MOMENTUM_X": [0.0, 1.3945886171910235e-34, 5.576904400481058e-25, 1.6432039784828585e-17, 3.623263947466794e-13, 2.813136063840504e-09, 1.6638372213662536e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000096023, 0.2500000074678702, 0.25004419280689416]}, "NODE_966": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000038883, 0.12500000300227768, 0.125017923223331], "MOMENTUM_X": [0.0, 1.4044125478810782e-34, 9.058961849289822e-25, 1.6700167446038617e-17, 4.0759814846258456e-13, 3.141334659135206e-09, 1.874330148733497e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000108863, 0.25000000840637754, 0.2500501907258195]}, "NODE_967": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000048792, 0.12500000381397924, 0.12502360123303352], "MOMENTUM_X": [0.0, 1.5082834078768354e-34, 1.5910625060393582e-24, 1.8920032783179832e-17, 5.020633951113493e-13, 3.92384432529396e-09, 2.4299490184506452e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000136613, 0.2500000106791422, 0.2500660931187912]}, "NODE_968": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000074915, 0.1250000058525783, 0.12503765528163335], "MOMENTUM_X": [0.0, 4.680589822747051e-34, 2.8776555894532136e-24, 3.04494588131256e-17, 8.436060490332279e-13, 6.606141591957385e-09, 4.288923375114849e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000020976, 0.25000001638721997, 0.2501054632334099]}, "NODE_969": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000416, 0.12500000004962067, 0.12500044718602069], "MOMENTUM_X": [0.0, 1.3183519169463438e-37, 1.029115224974232e-27, 3.361639369298701e-20, 3.899697501002671e-15, 4.641134691801641e-11, 4.187840266960205e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000117, 0.2500000001389378, 0.25000125212378776]}, "NODE_970": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000738, 0.12500000008463366, 0.12500075984621659], "MOMENTUM_X": [0.0, 5.932607693904671e-37, 2.7256130751986796e-27, 5.894208371812459e-20, 7.758975926582869e-15, 8.951155754543011e-11, 8.079056840431469e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000206, 0.2500000002369743, 0.2500021275795482]}, "NODE_971": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000001227, 0.12500000013543178, 0.12500117007434894], "MOMENTUM_X": [0.0, 1.1553485349792953e-36, 5.432798689226485e-27, 1.2072859629252466e-19, 1.2880285082339307e-14, 1.4283041827025183e-10, 1.2424548942279108e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000343, 0.2500000003792089, 0.2500032762326229]}, "NODE_972": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000001837, 0.1250000001928764, 0.12500153972257388], "MOMENTUM_X": [0.0, 1.6012300274208605e-36, 9.752503105062876e-27, 2.1145197134636921e-19, 1.942876793847177e-14, 2.0449495031695422e-10, 1.6404830839721492e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000005146, 0.25000000054005395, 0.25000431126626493]}, "NODE_973": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000002506, 0.12500000024771785, 0.12500179420036156], "MOMENTUM_X": [0.0, 1.9818370476187553e-36, 1.3157049839734232e-26, 2.919005670883368e-19, 2.6584550449887078e-14, 2.63045179150413e-10, 1.9091221925976416e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000702, 0.25000000069361, 0.25000502381954576]}, "NODE_974": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000003145, 0.1250000002924662, 0.1250019379120101], "MOMENTUM_X": [0.0, 2.1403621534723084e-36, 1.470347105860328e-26, 1.1769314752999942e-18, 3.3374693014915884e-14, 3.1043825286109777e-10, 2.057061504884116e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000881, 0.2500000008189054, 0.2500054262215804]}, "NODE_975": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000003691, 0.125000000326275, 0.12500202902452912], "MOMENTUM_X": [0.0, 2.177980709526801e-36, 1.5092739260547956e-26, 1.6367697100969677e-18, 3.913981089534819e-14, 3.4564593781837436e-10, 2.1475501649010703e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000001034, 0.25000000091357005, 0.2500056813427918]}, "NODE_976": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000004166, 0.1250000003565364, 0.12500214951318403], "MOMENTUM_X": [0.0, 2.189642799715713e-36, 1.6091701723435423e-26, 1.6787935642989322e-18, 4.405257384091122e-14, 3.762143917486295e-10, 2.265238036401364e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000011674, 0.2500000009983021, 0.25000601871965716]}, "NODE_977": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000475, 0.12500000040242962, 0.12500243152609114], "MOMENTUM_X": [0.0, 2.2042192114711523e-36, 2.5721630386276124e-26, 1.683232734117187e-18, 4.97962159006201e-14, 4.2126922265296207e-10, 2.5413879352981983e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000013295, 0.2500000011268029, 0.25000680837790495]}, "NODE_978": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000005967, 0.1250000005095908, 0.12500317018671261], "MOMENTUM_X": [0.0, 2.3376566454920624e-36, 4.7650761701395527e-26, 1.760927691258012e-18, 6.13751341419515e-14, 5.24366455877775e-10, 3.260753340101188e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000016703, 0.25000000142685413, 0.2500088766970308]}, "NODE_979": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000009184, 0.12500000077958823, 0.12500498870630444], "MOMENTUM_X": [0.0, 7.224789563126219e-36, 9.386995663039296e-26, 2.5715627060344247e-18, 1.0337771341825628e-13, 8.795545029919118e-10, 5.6564077761432e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000002571, 0.25000000218284707, 0.2500139688744204]}, "NODE_980": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000047, 0.12500000000605477, 0.12500005488830374], "MOMENTUM_X": [0.0, 2.1755242700708883e-39, 2.639543897406558e-29, 1.6012070023802186e-21, 4.310933176476135e-16, 5.6602271427815195e-12, 5.139497316627904e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000013, 0.2500000000169533, 0.25000015368729467]}, "NODE_981": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000078, 0.1250000000103574, 0.12500009319930586], "MOMENTUM_X": [0.0, 9.474352577701645e-39, 8.390503609574249e-29, 2.6463522756194148e-21, 8.613746888547832e-16, 1.0946232024729803e-11, 9.890480929276004e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000233, 0.25000000002900086, 0.2500002609582087]}, "NODE_982": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000014, 0.12500000001670006, 0.12500014506165805], "MOMENTUM_X": [0.0, 1.965416045688004e-38, 1.7457327505241246e-28, 4.25858998611948e-21, 1.4408907503275405e-15, 1.759499795229984e-11, 1.5368219866931428e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000383, 0.2500000000467602, 0.2500004061730168]}, "NODE_983": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000208, 0.1250000000240967, 0.12500019537691726], "MOMENTUM_X": [0.0, 2.645576941452156e-38, 3.122484208901252e-28, 8.972193115684679e-21, 2.2038160179521056e-15, 2.5526069592464683e-11, 2.078599643909033e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000583, 0.2500000000674707, 0.2500005470560594]}, "NODE_984": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000029, 0.12500000003147588, 0.12500023388423676], "MOMENTUM_X": [0.0, 3.1405038038818686e-38, 4.293161243504851e-28, 1.3084430843118421e-20, 3.052752402066006e-15, 3.340670923752533e-11, 2.4872469784909485e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000805, 0.2500000000881325, 0.2500006548768568]}, "NODE_985": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000366, 0.12500000003782039, 0.12500025830810177], "MOMENTUM_X": [0.0, 3.372172595980361e-38, 4.857879336710095e-28, 3.449904280186033e-20, 3.8862874352040286e-15, 4.01399602993009e-11, 2.741620696256366e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000102, 0.2500000001058971, 0.2500007232638933]}, "NODE_986": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000433, 0.12500000004283335, 0.1250002742034538], "MOMENTUM_X": [0.0, 3.422275374852219e-38, 4.932098504117377e-28, 4.593846899574056e-20, 4.613731283644525e-15, 4.5384423182453363e-11, 2.90220008613245e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000122, 0.25000000011993334, 0.25000076777102526]}, "NODE_987": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000497, 0.12500000004728617, 0.125000291982414], "MOMENTUM_X": [0.0, 3.4329273922423725e-38, 5.2131330387558725e-28, 4.789645663789246e-20, 5.2389315851776616e-15, 4.991375631975383e-11, 3.0769834694859915e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000139, 0.25000000013240126, 0.2500008175522866]}, "NODE_988": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000566, 0.1250000000535836, 0.1250003294800969], "MOMENTUM_X": [0.0, 3.449921780040884e-38, 5.54110391869074e-28, 4.952306973622635e-20, 5.951284266731664e-15, 5.61158259616984e-11, 3.443911361919449e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000159, 0.2500000001500342, 0.2500009225461975]}, "NODE_989": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000713, 0.12500000006774314, 0.1250004258037972], "MOMENTUM_X": [0.0, 3.6791641625451365e-38, 1.0754442118917634e-27, 5.465612548925111e-20, 7.345328360488097e-15, 6.971765504985597e-11, 4.379539654876672e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000002, 0.2500000001896808, 0.2500011922537778]}, "NODE_990": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000001102, 0.12500000010346635, 0.12500066340844096], "MOMENTUM_X": [0.0, 8.692043869790948e-38, 2.524041397212647e-27, 8.553195871993605e-20, 1.239964538460233e-14, 1.1669223530661586e-10, 7.507112362901986e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000003086, 0.25000000028970576, 0.250001857552414]}, "NODE_991": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000073463, 0.12500000674158024], "MOMENTUM_X": [0.0, 3.115443546021281e-41, 7.023870359847716e-31, 4.8848607829164266e-23, 4.689501696649675e-17, 6.863794363888773e-13, 6.311121008318643e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000205697, 0.25000001887642526]}, "NODE_992": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000008, 0.12500000000126094, 0.12500001145060705], "MOMENTUM_X": [0.0, 1.2670314705974301e-40, 2.5460155941440847e-30, 8.263756845775952e-23, 9.675332065836578e-17, 1.3317625277742642e-12, 1.213551394924745e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000003, 0.25000000000353073, 0.25000003206170224]}, "NODE_993": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000017, 0.12500000000204828, 0.125000017989482], "MOMENTUM_X": [0.0, 2.8562943786657763e-40, 5.318550813412203e-30, 1.4332324358133417e-22, 1.5572764070010878e-16, 2.1560806651375383e-12, 1.9025642148511838e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.2500000000057351, 0.2500000503705553]}, "NODE_994": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000022, 0.12500000000299097, 0.12500002471475266], "MOMENTUM_X": [0.0, 3.6695755915852317e-40, 9.399292553126828e-30, 2.593682292903993e-22, 2.412864238413597e-16, 3.1658257920541423e-12, 2.6261579378975288e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000006, 0.25000000000837475, 0.2500000692013185]}, "NODE_995": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000003, 0.1250000000039675, 0.12500003031260856], "MOMENTUM_X": [0.0, 4.129752349229201e-40, 1.3249310897516487e-29, 3.713016511586713e-22, 3.4000347485420294e-16, 4.208658438725326e-12, 3.221971242558449e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000009, 0.25000000001110895, 0.25000008487532066]}, "NODE_996": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000042, 0.12500000000484565, 0.1250000342154335], "MOMENTUM_X": [0.0, 4.4170259020817136e-40, 1.524514764344606e-29, 1.6074599709157441e-21, 4.40818655037269e-16, 5.141915635423439e-12, 3.631456439957487e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000011, 0.2500000000135678, 0.2500000958032348]}, "NODE_997": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000047, 0.12500000000556832, 0.12500003687367903], "MOMENTUM_X": [0.0, 4.489041279444242e-40, 1.5536339571379368e-29, 2.2488923761262568e-21, 5.336671903354792e-16, 5.900639237073141e-12, 3.9033821193447386e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000144, 0.2500000000155915, 0.250000103246326]}, "NODE_998": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000056, 0.12500000000621214, 0.12500003954504876], "MOMENTUM_X": [0.0, 4.499878483663821e-40, 1.632009931925048e-29, 2.3193679296393933e-21, 6.10222464708033e-16, 6.559267773358931e-12, 4.168246415007544e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000016, 0.250000000017394, 0.25000011072616457]}, "NODE_999": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000064, 0.1250000000070742, 0.12500004459353317], "MOMENTUM_X": [0.0, 4.516271939801986e-40, 1.7307240282858196e-29, 2.3899313109257325e-21, 6.94838614681196e-16, 7.41124881225357e-12, 4.662470715850973e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000019, 0.2500000000198079, 0.25000012486192813]}, "NODE_1000": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000008, 0.12500000000894185, 0.12500005722136], "MOMENTUM_X": [0.0, 4.8537847201000765e-40, 2.729915463627103e-29, 2.4960833129691277e-21, 8.596615407222159e-16, 9.203587120731782e-12, 5.8857346083025706e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000024, 0.2500000000250373, 0.250000160219865]}, "NODE_1001": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000128, 0.125000000013652, 0.1250000884932417], "MOMENTUM_X": [0.0, 1.2865320140073059e-39, 6.918162464170561e-29, 3.9418009997768914e-21, 1.4545481435185804e-15, 1.539278055527605e-11, 1.0000340269736246e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000036, 0.2500000000382257, 0.2500002477812331]}, "NODE_1002": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000008843, 0.1250000008286786], "MOMENTUM_X": [0.0, 4.305054340769219e-43, 1.7395124287345265e-32, 1.67709978426844e-24, 3.892966537813068e-18, 8.260667316021455e-14, 7.755252071905593e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000002477, 0.2500000023203002]}, "NODE_1003": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000001524, 0.12500000140895112], "MOMENTUM_X": [0.0, 1.3099084975549014e-42, 7.136372278469377e-32, 2.865825160478873e-24, 1.120777676095691e-17, 1.608866596289929e-13, 1.4917041979563875e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000004268, 0.2500000039450632]}, "NODE_1004": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000024944, 0.12500000223208646], "MOMENTUM_X": [0.0, 3.3083439930924916e-42, 1.5764429542132918e-31, 5.300036461290219e-24, 1.7909166975432242e-17, 2.6231679552705255e-13, 2.3574060591321794e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000069833, 0.25000000624984214]}, "NODE_1005": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000036823, 0.12500000311956833], "MOMENTUM_X": [0.0, 4.4466964825441154e-42, 2.654062762116923e-31, 1.0186113318692272e-23, 2.463666080191762e-17, 3.89485375197001e-13, 3.311363603798757e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000010311, 0.25000000873479145]}, "NODE_1006": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.1250000000004954, 0.12500000391047342], "MOMENTUM_X": [0.0, 4.844154581182313e-42, 3.8266164484530643e-31, 1.4018006502207604e-23, 3.5114776976290266e-17, 5.252603148683027e-13, 4.154696759691678e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000138717, 0.2500000109493259]}, "NODE_1007": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000061434, 0.1250000045070624], "MOMENTUM_X": [0.0, 5.0898206526387504e-42, 4.433271630628181e-31, 4.873721989734051e-23, 4.4966858385869355e-17, 6.517280040189996e-13, 4.78379775410432e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.2500000000017201, 0.25000001261977506]}, "NODE_1008": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000071584, 0.12500000493466493], "MOMENTUM_X": [0.0, 5.168764812732145e-42, 4.532196155546537e-31, 6.73798808400067e-23, 6.32207944351193e-17, 7.585884487161448e-13, 5.225298742110329e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000017, 0.2500000000020044, 0.25000001381706227]}, "NODE_1009": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000080705, 0.12500000533865327], "MOMENTUM_X": [0.0, 5.1802113894880284e-42, 4.739287648747196e-31, 7.028169677263401e-23, 7.40389399996074e-17, 8.523849555730081e-13, 5.629476958647667e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000002, 0.25000000000225986, 0.2500000149482298]}, "NODE_1010": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.1250000000009243, 0.125000006027092], "MOMENTUM_X": [0.0, 5.19414484653203e-42, 5.007938020328831e-31, 7.288980126012033e-23, 8.351725721693827e-17, 9.686513383494481e-13, 6.304551988553283e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000002, 0.2500000000025881, 0.25000001687585843]}, "NODE_1011": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000008, 0.1250000000011695, 0.1250000076931691], "MOMENTUM_X": [0.0, 5.679206738103493e-42, 7.0568221428586345e-31, 7.68989881717531e-23, 1.0102948398144053e-16, 1.2038645344691895e-12, 7.914731090671319e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000003, 0.25000000000327466, 0.25000002154087453]}, "NODE_1012": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000017, 0.12500000000178688, 0.125000011831765], "MOMENTUM_X": [0.0, 1.593836106396767e-41, 1.8741500682019707e-30, 1.3183984411585113e-22, 1.668938826043356e-16, 2.014239573018434e-12, 1.336050191578954e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.25000000000500316, 0.2500000331289448]}, "NODE_1013": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001055, 0.12500000010191317], "MOMENTUM_X": [0.0, 4.924774908581121e-45, 5.169214936341278e-34, 6.288663835749436e-26, 1.9107861505568643e-19, 9.851152959791139e-15, 9.533852847619335e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000002953, 0.2500000002853569]}, "NODE_1014": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001824, 0.12500000017353224], "MOMENTUM_X": [0.0, 1.519612268182607e-44, 1.9894379173390612e-33, 1.0583228233047969e-25, 6.584385463119807e-19, 1.9266696723865905e-14, 1.8356494283437564e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000511, 0.2500000004858904]}, "NODE_1015": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000003006, 0.12500000027702104], "MOMENTUM_X": [0.0, 3.680094328414287e-44, 4.5555848037043326e-33, 1.8522145115879678e-25, 1.5010042102748231e-18, 3.1623954995380616e-14, 2.9222887300016817e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000008427, 0.25000000077565904]}, "NODE_1016": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000449, 0.12500000039303377], "MOMENTUM_X": [0.0, 5.042653682435498e-44, 7.55893058137271e-33, 3.7079021642939184e-25, 2.111233841722426e-18, 4.7450411849220286e-14, 4.167943597639904e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001257, 0.2500000011004944]}, "NODE_1017": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000612, 0.1250000005024403], "MOMENTUM_X": [0.0, 5.576302277622916e-44, 1.1122716608009503e-32, 5.094752419914892e-25, 2.9758471117439947e-18, 6.484537026144862e-14, 5.335674444113828e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001713, 0.25000000140683293]}, "NODE_1018": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000007694, 0.1250000005906402], "MOMENTUM_X": [0.0, 5.802913808525269e-44, 1.301830480792286e-32, 1.6487289420460954e-24, 3.772148404688927e-18, 8.162530969020063e-14, 6.268935037640484e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000002155, 0.25000000165379277]}, "NODE_1019": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000009087, 0.1250000006571389], "MOMENTUM_X": [0.0, 5.857913513550879e-44, 1.3453734741927699e-32, 2.2788438085772507e-24, 5.61075557120663e-18, 9.629920681771203e-14, 6.960264443588675e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000025446, 0.250000001839989]}, "NODE_1020": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000010353, 0.1250000007180678], "MOMENTUM_X": [0.0, 5.867041004699471e-44, 1.400054395722961e-32, 2.4042979479087146e-24, 9.335487772180096e-18, 1.0936731785693545e-13, 7.57497000436867e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000028993, 0.25000000201059003]}, "NODE_1021": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000011932, 0.12500000081297208], "MOMENTUM_X": [0.0, 5.881153824829722e-44, 1.4738198199208142e-32, 2.501490185101416e-24, 1.1677754659340427e-17, 1.2506350896703174e-13, 8.508031477288137e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000033407, 0.2500000022763218]}, "NODE_1022": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000015127, 0.12500000103417183], "MOMENTUM_X": [0.0, 6.413633131517001e-44, 1.6976085541819725e-32, 2.6639185061398156e-24, 1.3397865592227743e-17, 1.5570467084670646e-13, 1.0641898071108101e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000042355, 0.2500000028956812]}, "NODE_1023": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000023154, 0.12500000158428642], "MOMENTUM_X": [0.0, 2.037322336912683e-43, 4.4748221179119374e-32, 4.7527476190836206e-24, 2.0516558771817568e-17, 2.608865800406678e-13, 1.7881410310336412e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000006482, 0.250000004436002]}, "NODE_1024": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000125, 0.12500000001253259], "MOMENTUM_X": [0.0, 4.707302073695911e-47, 1.4767067730351624e-35, 2.0846334039712485e-27, 9.24056507890483e-21, 1.1541054462032097e-15, 1.1718802281034268e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000035, 0.25000000003509126]}, "NODE_1025": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000214, 0.12500000002137832], "MOMENTUM_X": [0.0, 1.3467218610542739e-46, 5.262786514935983e-35, 3.556012319070256e-27, 3.4769342341903667e-20, 2.280954187308586e-15, 2.259674214016243e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000605, 0.25000000005985934]}, "NODE_1026": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000358, 0.12500000003437092], "MOMENTUM_X": [0.0, 3.848213047883073e-46, 1.2623635985964648e-34, 6.442458374879984e-27, 5.3336423712665777e-20, 3.771876682995206e-15, 3.6219717510442535e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001005, 0.2500000000962386]}, "NODE_1027": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000054, 0.12500000004942208], "MOMENTUM_X": [0.0, 5.755194784383927e-46, 2.0473113981670932e-34, 1.2440594659278497e-26, 7.396866637179777e-20, 5.7070246839925774e-15, 5.2361507410400845e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001515, 0.2500000001383817]}, "NODE_1028": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000747, 0.12500000006430817], "MOMENTUM_X": [0.0, 6.400892223550502e-46, 3.0501152026982945e-34, 1.6494929448524786e-26, 1.292207941699501e-19, 7.897897825624988e-15, 6.825633290314682e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000002087, 0.25000000018006285]}, "NODE_1029": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000952, 0.12500000007700968], "MOMENTUM_X": [0.0, 6.53322666894568e-46, 3.6180553020065946e-34, 5.993864588049234e-26, 1.779169192177739e-19, 1.0090512799639322e-14, 8.172718531309047e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000266, 0.250000000215627]}, "NODE_1030": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001135, 0.12500000008705445], "MOMENTUM_X": [0.0, 6.559222103614162e-46, 3.789779507983647e-34, 8.474504515735632e-26, 3.0394209910459893e-19, 1.2059529331669885e-14, 9.222302127839991e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000003186, 0.2500000002437526]}, "NODE_1031": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000131, 0.1250000000961619], "MOMENTUM_X": [0.0, 6.569253722958643e-46, 3.938260434381312e-34, 8.986396272991851e-26, 5.548678916356552e-19, 1.3839683842545461e-14, 1.0147854213106042e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000367, 0.2500000002692535]}, "NODE_1032": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001518, 0.12500000010934298], "MOMENTUM_X": [0.0, 6.5806854810928496e-46, 4.126712850239161e-34, 9.262637266533447e-26, 6.866446640188718e-19, 1.5934989746880794e-14, 1.1448003457080514e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000425, 0.2500000003061604]}, "NODE_1033": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000193, 0.1250000001388646], "MOMENTUM_X": [0.0, 6.877626254506022e-46, 4.849577492533969e-34, 9.804107143091845e-26, 1.301398356113205e-18, 1.9877512398035606e-14, 1.4292248491807444e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000005407, 0.25000000038882086]}, "NODE_1034": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000296, 0.12500000021219396], "MOMENTUM_X": [0.0, 2.1619007000322034e-45, 1.1274956070172856e-33, 1.6555280025619574e-25, 2.2099468759165952e-18, 3.3370439209860733e-14, 2.39420089679603e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000008293, 0.25000000059414323]}, "NODE_1035": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000014, 0.12500000000153974], "MOMENTUM_X": [0.0, 3.562650535785644e-49, 4.155638545914449e-37, 7.255894048895833e-29, 2.861960552074062e-22, 1.3209083231232303e-16, 1.4390473273464518e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.2500000000043112]}, "NODE_1036": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000025, 0.12500000000263198], "MOMENTUM_X": [0.0, 1.2430082832729817e-48, 1.3153693964684221e-36, 1.2461944540476118e-28, 1.6509315895889297e-21, 2.650336241877296e-16, 2.780014793678214e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000007, 0.2500000000073696]}, "NODE_1037": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000042, 0.12500000000426], "MOMENTUM_X": [0.0, 3.707697737298562e-48, 3.403892637126015e-36, 2.280452955780276e-28, 2.5171194578059413e-21, 4.4337967485675654e-16, 4.484919444126499e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000117, 0.25000000001192807]}, "NODE_1038": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000064, 0.12500000000619985], "MOMENTUM_X": [0.0, 5.721277975301034e-48, 5.4004346656041626e-36, 4.470738791296677e-28, 3.597946989951633e-21, 6.732157046553992e-16, 6.56281809313687e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000018, 0.2500000000173595]}, "NODE_1039": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000009, 0.12500000000819775], "MOMENTUM_X": [0.0, 6.395358705798448e-48, 7.98863441630481e-36, 5.915486401999503e-28, 4.9719451469598196e-21, 9.398066462050481e-16, 8.696182271110948e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000025, 0.25000000002295375]}, "NODE_1040": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000117, 0.1250000000099879], "MOMENTUM_X": [0.0, 6.500598408442728e-48, 9.599692263378456e-36, 1.8889064895356998e-27, 6.848138960083408e-21, 1.2213502439177544e-15, 1.0597651705890656e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000032, 0.2500000000279661]}, "NODE_1041": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000142, 0.12500000001146727], "MOMENTUM_X": [0.0, 6.524460183611693e-48, 1.0153171702723145e-35, 2.7037835429239506e-27, 1.5953986696621188e-20, 1.4906851733276629e-15, 1.2149289452712496e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000039, 0.2500000000321083]}, "NODE_1042": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000164, 0.12500000001281145], "MOMENTUM_X": [0.0, 6.534764580930224e-48, 1.0505120058452504e-35, 2.906667335470333e-27, 2.923754739139554e-20, 1.728072265951205e-15, 1.3523660850121412e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000455, 0.250000000035872]}, "NODE_1043": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000019, 0.12500000001464848], "MOMENTUM_X": [0.0, 6.541097994713544e-48, 1.0940060939813707e-35, 3.029460744494446e-27, 3.571351778827169e-20, 2.004066463729138e-15, 1.5342293466452292e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000533, 0.25000000004101575]}, "NODE_1044": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000244, 0.12500000001860245], "MOMENTUM_X": [0.0, 6.711580641094373e-48, 1.318067820301942e-35, 3.24339860882746e-27, 4.21154529397808e-20, 2.5094724963419957e-15, 1.9149075249091676e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000683, 0.2500000000520868]}, "NODE_1045": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000372, 0.12500000002838874], "MOMENTUM_X": [0.0, 1.7356684391063746e-47, 2.762162153932171e-35, 5.656923832909431e-27, 6.425005887268499e-20, 4.211499374502036e-15, 3.202397026353312e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001044, 0.25000000007948847]}, "NODE_1046": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000018877], "MOMENTUM_X": [0.0, 2.1610970644632356e-51, 1.1243970287947436e-38, 2.5416908491680446e-30, 1.2040400744033688e-23, 1.3812593790220198e-17, 1.7634625024571587e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000005286]}, "NODE_1047": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000032346], "MOMENTUM_X": [0.0, 9.913495848403149e-51, 3.2282802659370256e-38, 4.3925125506646434e-30, 5.199914875895998e-23, 2.979864884946732e-17, 3.4143577332560337e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000009057]}, "NODE_1048": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000052694], "MOMENTUM_X": [0.0, 2.5184332708452795e-50, 8.947762336989158e-38, 7.898649950568136e-30, 8.056673879239104e-23, 5.3902792520311135e-17, 5.542581441848138e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.2500000000014754]}, "NODE_1049": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000077527], "MOMENTUM_X": [0.0, 4.21381992537642e-50, 1.4328374434231512e-37, 1.5551831416449794e-29, 1.3133631807566855e-22, 8.233591724283316e-17, 8.200411432613541e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000002, 0.25000000000217093]}, "NODE_1050": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000008, 0.12500000000104022], "MOMENTUM_X": [0.0, 4.85606497590007e-50, 2.07932688660334e-37, 2.070118875704755e-29, 1.890142575038344e-22, 1.1164954626882529e-16, 1.1028845528807525e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000003, 0.2500000000029128]}, "NODE_1051": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000014, 0.12500000000128797], "MOMENTUM_X": [0.0, 4.922650145627158e-50, 2.5181336902807306e-37, 6.092173621376161e-29, 2.815487935287187e-22, 1.4160216468486745e-16, 1.3662390445442377e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.2500000000036063]}, "NODE_1052": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000017, 0.12500000000150102], "MOMENTUM_X": [0.0, 4.942644491090697e-50, 2.697976452998256e-37, 8.927667303536375e-29, 6.845503901297796e-22, 1.7462498078613969e-16, 1.5903243626472896e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000044, 0.25000000000420286]}, "NODE_1053": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002, 0.12500000000169648], "MOMENTUM_X": [0.0, 4.947906509008256e-50, 2.789607683863423e-37, 9.723730345230266e-29, 1.457660444739578e-21, 2.117529399286417e-16, 1.791181748501841e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000056, 0.25000000000475014]}, "NODE_1054": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000022, 0.12500000000195235], "MOMENTUM_X": [0.0, 4.948353115428864e-50, 2.882711407153384e-37, 1.029769232841579e-28, 1.8527470555392677e-21, 2.4852122028392876e-16, 2.0454655415980256e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000067, 0.2500000000054666]}, "NODE_1055": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000028, 0.12500000000248268], "MOMENTUM_X": [0.0, 5.0037235520349895e-50, 3.5285002164230402e-37, 1.117349617339496e-28, 2.1249681647559987e-21, 3.144356081993089e-16, 2.5559707982481273e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000083, 0.2500000000069515]}, "NODE_1056": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000044, 0.12500000000378797], "MOMENTUM_X": [0.0, 1.3864572271263983e-49, 6.691186421695399e-37, 1.9493264420057846e-28, 3.0813084184361567e-21, 5.280194318560642e-16, 4.2724146226738896e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000133, 0.2500000000106064]}, "NODE_1057": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002304], "MOMENTUM_X": [0.0, 1.0986116206648178e-53, 2.932328000827027e-40, 8.539914840842077e-32, 5.242474020724788e-25, 1.2767626984301767e-18, 2.1533615018635318e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000006456]}, "NODE_1058": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000003963], "MOMENTUM_X": [0.0, 6.467113197088487e-53, 7.863652898514651e-40, 1.4977898304945088e-31, 1.8606783815046265e-24, 2.7691202239701484e-18, 4.180680817792576e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000011097]}, "NODE_1059": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006495], "MOMENTUM_X": [0.0, 1.0977527357913363e-52, 2.268459096880661e-39, 2.730652087656335e-31, 2.935415376060325e-24, 5.181414798792669e-18, 6.827901627725284e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001819]}, "NODE_1060": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000009656], "MOMENTUM_X": [0.0, 2.2584679768292854e-52, 3.626083394963029e-39, 5.283656792728874e-31, 5.00290301933164e-24, 1.0383465506877538e-17, 1.0205606942764958e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000002704]}, "NODE_1061": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000013128], "MOMENTUM_X": [0.0, 2.8261047956977394e-52, 5.2101410325010936e-39, 6.95380247098675e-31, 7.765293332875322e-24, 1.4677132974844737e-17, 1.3912497851105655e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000036765]}, "NODE_1062": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000016503], "MOMENTUM_X": [0.0, 2.8507550151395762e-52, 6.366730597973535e-39, 1.921047639782461e-30, 1.1874353710267612e-23, 1.6750341406652012e-17, 1.7498340355953712e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.250000000000462]}, "NODE_1063": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.1250000000001951], "MOMENTUM_X": [0.0, 2.8588053156899993e-52, 6.928401125189517e-39, 2.9158755953913925e-30, 3.190072191355897e-23, 1.9296242062280296e-17, 2.066788854113888e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000054623]}, "NODE_1064": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000022304], "MOMENTUM_X": [0.0, 2.8617157931987185e-52, 7.163734908542592e-39, 3.214137434844809e-30, 4.3821547109240823e-23, 2.2875967867425495e-17, 2.355386508940781e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000062456]}, "NODE_1065": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000025857], "MOMENTUM_X": [0.0, 2.861632532335974e-52, 7.33985121392245e-39, 3.4707401522701966e-30, 4.9893577302996746e-23, 2.910426718038885e-17, 2.709444732840621e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000007239]}, "NODE_1066": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.1250000000003296], "MOMENTUM_X": [0.0, 2.8748087504402655e-52, 8.98854121225526e-39, 3.834110136714521e-30, 6.238021543731013e-23, 3.88039764128352e-17, 3.393779916215665e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.2500000000009229]}, "NODE_1067": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000050326], "MOMENTUM_X": [0.0, 6.005429968475813e-52, 1.6963389064237153e-38, 6.53472856102533e-30, 9.441117244021404e-23, 6.704706901557925e-17, 5.676100395789297e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000017, 0.2500000000014092]}, "NODE_1068": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000278], "MOMENTUM_X": [0.0, 2.8651348452151704e-56, 7.458880930318546e-42, 2.885336231598509e-33, 2.2015836909545957e-26, 4.1963556826928095e-20, 2.622680027545567e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000079]}, "NODE_1069": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000486], "MOMENTUM_X": [0.0, 2.356425709840481e-55, 1.9305876925115384e-41, 5.1477672005032696e-33, 7.243742659399727e-26, 1.2336969771936773e-19, 5.092669578832717e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001354]}, "NODE_1070": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125000000000008], "MOMENTUM_X": [0.0, 4.484028712741053e-55, 5.568545437378234e-41, 9.423316226393937e-33, 1.152472616784035e-25, 2.9124148812663506e-19, 8.369499645581395e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000223]}, "NODE_1071": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001193], "MOMENTUM_X": [0.0, 1.1058021151813133e-54, 8.802408521966267e-41, 1.8166997282755547e-32, 1.8208204835842905e-25, 6.050941531345524e-19, 1.2637816961376716e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000003353]}, "NODE_1072": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001646], "MOMENTUM_X": [0.0, 1.4129128304889306e-54, 1.2737633286252613e-40, 2.3970729822325967e-32, 2.9850308198192664e-25, 1.3513426410708743e-18, 1.7450863167752398e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000004613]}, "NODE_1073": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002098], "MOMENTUM_X": [0.0, 1.419129279317424e-54, 1.5681191341672349e-40, 5.604158231466195e-32, 4.806597360372637e-25, 1.7273891715939204e-18, 2.224595870762762e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000005873]}, "NODE_1074": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000251], "MOMENTUM_X": [0.0, 1.4205023963059523e-54, 1.7351829873736186e-40, 8.803441371942808e-32, 1.3310152278089833e-24, 1.842659497466953e-18, 2.6640157304667126e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000007044]}, "NODE_1075": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000291], "MOMENTUM_X": [0.0, 1.4204674986625195e-54, 1.7982141872993317e-40, 9.928646635908123e-32, 1.8512122021233918e-24, 2.0992995670676175e-18, 3.071457143956249e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000008143]}, "NODE_1076": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000003395], "MOMENTUM_X": [0.0, 1.4204139961304513e-54, 1.8289483350493888e-40, 1.1102578320733365e-31, 2.1131187388787436e-24, 2.7638359416273437e-18, 3.5604699129415945e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000009515]}, "NODE_1077": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000435], "MOMENTUM_X": [0.0, 1.4204178668386242e-54, 2.1842295754773208e-40, 1.263399770993703e-31, 2.2847111536543878e-24, 3.680762491177328e-18, 4.475302255009465e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001217]}, "NODE_1078": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006647], "MOMENTUM_X": [0.0, 2.316908216352746e-54, 4.2857331729202546e-40, 2.152475090698597e-31, 3.2934206125513815e-24, 9.733461094978348e-18, 7.496877493514171e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000018613]}, "NODE_1079": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000036], "MOMENTUM_X": [0.0, 0.0, 1.824628857669922e-43, 9.574594056775872e-35, 9.862131913590101e-28, 2.0808444344371822e-21, 3.213846395307829e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000094]}, "NODE_1080": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000058], "MOMENTUM_X": [0.0, 0.0, 4.849593359723901e-43, 1.7515173927073993e-34, 2.5799724298413662e-27, 4.8896607994799776e-21, 6.206041754020973e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000167]}, "NODE_1081": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000097], "MOMENTUM_X": [0.0, 0.0, 1.3105925048130027e-42, 3.2146065721817793e-34, 4.1880756448047365e-27, 1.6014719974125005e-20, 1.0196880109973501e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000027]}, "NODE_1082": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000147], "MOMENTUM_X": [0.0, 0.0, 2.0342500337578767e-42, 6.1405156307681255e-34, 6.723139350609728e-27, 3.2516347116216705e-20, 1.5532141225475733e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000041]}, "NODE_1083": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000205], "MOMENTUM_X": [0.0, 0.0, 3.069820219477308e-42, 8.130248841228097e-34, 1.1498278012738545e-26, 4.488952769277578e-20, 2.1790299408039643e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000057]}, "NODE_1084": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000264], "MOMENTUM_X": [0.0, 0.0, 3.8011444707807736e-42, 1.6189220300928777e-33, 1.8558338646706851e-26, 5.173403705439201e-20, 2.813121098108393e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000744]}, "NODE_1085": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000032], "MOMENTUM_X": [0.0, 0.0, 4.271396130576308e-42, 2.620892153987537e-33, 5.196669522363494e-26, 6.114212572193114e-20, 3.401372275041943e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.250000000000009]}, "NODE_1086": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000375], "MOMENTUM_X": [0.0, 0.0, 4.4507026152039046e-42, 3.0171630962275384e-33, 7.294809376770317e-26, 7.763754964555211e-20, 3.966977122150136e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000105]}, "NODE_1087": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000044], "MOMENTUM_X": [0.0, 0.0, 4.5054650706704016e-42, 3.521325972175628e-33, 8.190390106197962e-26, 1.2484674570235344e-19, 4.631971075330212e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000124]}, "NODE_1088": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000572], "MOMENTUM_X": [0.0, 0.0, 5.158607285875346e-42, 4.164316118596301e-33, 8.736627718960017e-26, 1.7796257947607648e-19, 5.84906713513828e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000159]}, "NODE_1089": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000872], "MOMENTUM_X": [0.0, 0.0, 1.0355770021525545e-41, 6.995487416830284e-33, 1.2477804478733366e-25, 5.571918928715529e-19, 9.828174340716836e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000002437]}, "NODE_1090": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "MOMENTUM_X": [0.0, 0.0, 4.2904300073349277e-45, 3.0881675353261436e-36, 4.324429342652493e-29, 7.677432745251132e-23, 3.7323959152666904e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000001]}, "NODE_1091": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006], "MOMENTUM_X": [0.0, 0.0, 1.1965398987954952e-44, 5.86167509254333e-36, 9.65972248252717e-29, 1.97424042107993e-22, 7.563676225481044e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000002]}, "NODE_1092": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000014], "MOMENTUM_X": [0.0, 0.0, 2.9362573164354597e-44, 1.0905412849848472e-35, 1.5969370464130045e-28, 7.213198150443362e-22, 1.2380257282465542e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000033]}, "NODE_1093": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002], "MOMENTUM_X": [0.0, 0.0, 4.4638681505023963e-44, 2.056189529305364e-35, 2.5731426769869056e-28, 1.638215539003136e-21, 1.9079246315624884e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000005]}, "NODE_1094": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000025], "MOMENTUM_X": [0.0, 0.0, 7.060251298508229e-44, 2.72380428801011e-35, 4.370198716504376e-28, 2.255692027746805e-21, 2.6592831426843256e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000007]}, "NODE_1095": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000033], "MOMENTUM_X": [0.0, 0.0, 8.721332920436442e-44, 4.591797137754754e-35, 7.788895825888454e-28, 2.580833412659518e-21, 3.5335176578210933e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000009]}, "NODE_1096": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000004], "MOMENTUM_X": [0.0, 0.0, 9.96603034348204e-44, 7.522706834172555e-35, 1.821214537604466e-27, 2.9881781182496714e-21, 4.314524120960815e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000011]}, "NODE_1097": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000044], "MOMENTUM_X": [0.0, 0.0, 1.0490301580211315e-43, 8.807137241911752e-35, 2.4854486665175665e-27, 3.83433142663561e-21, 5.074796458103308e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000133]}, "NODE_1098": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000056], "MOMENTUM_X": [0.0, 0.0, 1.0589702063433275e-43, 1.0808757761825261e-34, 2.7558841517694682e-27, 4.960206992020541e-21, 5.976920604021829e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000016]}, "NODE_1099": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000072], "MOMENTUM_X": [0.0, 0.0, 1.1623777737852093e-43, 1.3432436775197984e-34, 2.9294586906134494e-27, 1.0036175222289116e-20, 7.541020091733351e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000205]}, "NODE_1100": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000114], "MOMENTUM_X": [0.0, 0.0, 2.3731409861858794e-43, 2.2274098955536214e-34, 4.2297695144655405e-27, 3.1599910548316907e-20, 1.2767492046989612e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000316]}, "NODE_1101": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 0.0, 2.83719858992284e-46, 2.833769135061654e-37, 5.21001656173217e-30, 9.153768265688519e-24, 9.59758043496655e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1102": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 0.0, 5.625427521007709e-46, 3.881358707274497e-37, 7.25631702374142e-30, 1.7747892290635493e-23, 1.876038766751951e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "NODE_1103": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "MOMENTUM_X": [0.0, 0.0, 1.256150009961301e-45, 7.311047853708682e-37, 1.2187921821428156e-29, 6.865035201814156e-23, 2.7191467566783897e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "NODE_1104": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "MOMENTUM_X": [0.0, 0.0, 1.8753388361224168e-45, 1.3685751693019115e-36, 1.953114761410194e-29, 1.0542588419151655e-22, 3.46282986921925e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "NODE_1105": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "MOMENTUM_X": [0.0, 0.0, 3.090701573795688e-45, 1.82377849502432e-36, 3.2263662565681694e-29, 1.384680975193269e-22, 4.8235890616532474e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000001]}, "NODE_1106": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006], "MOMENTUM_X": [0.0, 0.0, 3.781011446785984e-45, 2.568111416083191e-36, 6.528648199135099e-29, 1.7142677172236376e-22, 6.054004889494349e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000017]}, "NODE_1107": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006], "MOMENTUM_X": [0.0, 0.0, 4.396059352485095e-45, 4.0995381949775995e-36, 1.4360734348763008e-28, 2.173770397551287e-22, 7.681323710670848e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000002]}, "NODE_1108": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000008], "MOMENTUM_X": [0.0, 0.0, 4.677352270486881e-45, 4.8633219788679936e-36, 1.8939140076870612e-28, 3.016269678960188e-22, 9.920804006516018e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000003]}, "NODE_1109": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000001], "MOMENTUM_X": [0.0, 0.0, 4.7125216949480485e-45, 6.326621225060588e-36, 1.9884667924918158e-28, 4.013964920282163e-22, 1.2059920383985313e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000003]}, "NODE_1110": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000014], "MOMENTUM_X": [0.0, 0.0, 5.015888113660431e-45, 8.35498396564749e-36, 2.0752118358933328e-28, 7.83011361818804e-22, 1.4199229977951833e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000033]}, "NODE_1111": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002], "MOMENTUM_X": [0.0, 0.0, 7.854426352596475e-45, 1.064682572853823e-35, 2.312361912346035e-28, 2.1998217264653063e-21, 2.063893119959164e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000005]}, "ELEMENT_1": {}, "ELEMENT_2": {}, "ELEMENT_3": {}, "ELEMENT_4": {}, "ELEMENT_5": {}, "ELEMENT_6": {}, "ELEMENT_7": {}, "ELEMENT_8": {}, "ELEMENT_9": {}, "ELEMENT_10": {}, "ELEMENT_11": {}, "ELEMENT_12": {}, "ELEMENT_13": {}, "ELEMENT_14": {}, "ELEMENT_15": {}, "ELEMENT_16": {}, "ELEMENT_17": {}, "ELEMENT_18": {}, "ELEMENT_19": {}, "ELEMENT_20": {}, "ELEMENT_21": {}, "ELEMENT_22": {}, "ELEMENT_23": {}, "ELEMENT_24": {}, "ELEMENT_25": {}, "ELEMENT_26": {}, "ELEMENT_27": {}, "ELEMENT_28": {}, "ELEMENT_29": {}, "ELEMENT_30": {}, "ELEMENT_31": {}, "ELEMENT_32": {}, "ELEMENT_33": {}, "ELEMENT_34": {}, "ELEMENT_35": {}, "ELEMENT_36": {}, "ELEMENT_37": {}, "ELEMENT_38": {}, "ELEMENT_39": {}, "ELEMENT_40": {}, "ELEMENT_41": {}, "ELEMENT_42": {}, "ELEMENT_43": {}, "ELEMENT_44": {}, "ELEMENT_45": {}, "ELEMENT_46": {}, "ELEMENT_47": {}, "ELEMENT_48": {}, "ELEMENT_49": {}, "ELEMENT_50": {}, "ELEMENT_51": {}, "ELEMENT_52": {}, "ELEMENT_53": {}, "ELEMENT_54": {}, "ELEMENT_55": {}, "ELEMENT_56": {}, "ELEMENT_57": {}, "ELEMENT_58": {}, "ELEMENT_59": {}, "ELEMENT_60": {}, "ELEMENT_61": {}, "ELEMENT_62": {}, "ELEMENT_63": {}, "ELEMENT_64": {}, "ELEMENT_65": {}, "ELEMENT_66": {}, "ELEMENT_67": {}, "ELEMENT_68": {}, "ELEMENT_69": {}, "ELEMENT_70": {}, "ELEMENT_71": {}, "ELEMENT_72": {}, "ELEMENT_73": {}, "ELEMENT_74": {}, "ELEMENT_75": {}, "ELEMENT_76": {}, "ELEMENT_77": {}, "ELEMENT_78": {}, "ELEMENT_79": {}, "ELEMENT_80": {}, "ELEMENT_81": {}, "ELEMENT_82": {}, "ELEMENT_83": {}, "ELEMENT_84": {}, "ELEMENT_85": {}, "ELEMENT_86": {}, "ELEMENT_87": {}, "ELEMENT_88": {}, "ELEMENT_89": {}, "ELEMENT_90": {}, "ELEMENT_91": {}, "ELEMENT_92": {}, "ELEMENT_93": {}, "ELEMENT_94": {}, "ELEMENT_95": {}, "ELEMENT_96": {}, "ELEMENT_97": {}, "ELEMENT_98": {}, "ELEMENT_99": {}, "ELEMENT_100": {}, "ELEMENT_101": {}, "ELEMENT_102": {}, "ELEMENT_103": {}, "ELEMENT_104": {}, "ELEMENT_105": {}, "ELEMENT_106": {}, "ELEMENT_107": {}, "ELEMENT_108": {}, "ELEMENT_109": {}, "ELEMENT_110": {}, "ELEMENT_111": {}, "ELEMENT_112": {}, "ELEMENT_113": {}, "ELEMENT_114": {}, "ELEMENT_115": {}, "ELEMENT_116": {}, "ELEMENT_117": {}, "ELEMENT_118": {}, "ELEMENT_119": {}, "ELEMENT_120": {}, "ELEMENT_121": {}, "ELEMENT_122": {}, "ELEMENT_123": {}, "ELEMENT_124": {}, "ELEMENT_125": {}, "ELEMENT_126": {}, "ELEMENT_127": {}, "ELEMENT_128": {}, "ELEMENT_129": {}, "ELEMENT_130": {}, "ELEMENT_131": {}, "ELEMENT_132": {}, "ELEMENT_133": {}, "ELEMENT_134": {}, "ELEMENT_135": {}, "ELEMENT_136": {}, "ELEMENT_137": {}, "ELEMENT_138": {}, "ELEMENT_139": {}, "ELEMENT_140": {}, "ELEMENT_141": {}, "ELEMENT_142": {}, "ELEMENT_143": {}, "ELEMENT_144": {}, "ELEMENT_145": {}, "ELEMENT_146": {}, "ELEMENT_147": {}, "ELEMENT_148": {}, "ELEMENT_149": {}, "ELEMENT_150": {}, "ELEMENT_151": {}, "ELEMENT_152": {}, "ELEMENT_153": {}, "ELEMENT_154": {}, "ELEMENT_155": {}, "ELEMENT_156": {}, "ELEMENT_157": {}, "ELEMENT_158": {}, "ELEMENT_159": {}, "ELEMENT_160": {}, "ELEMENT_161": {}, "ELEMENT_162": {}, "ELEMENT_163": {}, "ELEMENT_164": {}, "ELEMENT_165": {}, "ELEMENT_166": {}, "ELEMENT_167": {}, "ELEMENT_168": {}, "ELEMENT_169": {}, "ELEMENT_170": {}, "ELEMENT_171": {}, "ELEMENT_172": {}, "ELEMENT_173": {}, "ELEMENT_174": {}, "ELEMENT_175": {}, "ELEMENT_176": {}, "ELEMENT_177": {}, "ELEMENT_178": {}, "ELEMENT_179": {}, "ELEMENT_180": {}, "ELEMENT_181": {}, "ELEMENT_182": {}, "ELEMENT_183": {}, "ELEMENT_184": {}, "ELEMENT_185": {}, "ELEMENT_186": {}, "ELEMENT_187": {}, "ELEMENT_188": {}, "ELEMENT_189": {}, "ELEMENT_190": {}, "ELEMENT_191": {}, "ELEMENT_192": {}, "ELEMENT_193": {}, "ELEMENT_194": {}, "ELEMENT_195": {}, "ELEMENT_196": {}, "ELEMENT_197": {}, "ELEMENT_198": {}, "ELEMENT_199": {}, "ELEMENT_200": {}, "ELEMENT_201": {}, "ELEMENT_202": {}, "ELEMENT_203": {}, "ELEMENT_204": {}, "ELEMENT_205": {}, "ELEMENT_206": {}, "ELEMENT_207": {}, "ELEMENT_208": {}, "ELEMENT_209": {}, "ELEMENT_210": {}, "ELEMENT_211": {}, "ELEMENT_212": {}, "ELEMENT_213": {}, "ELEMENT_214": {}, "ELEMENT_215": {}, "ELEMENT_216": {}, "ELEMENT_217": {}, "ELEMENT_218": {}, "ELEMENT_219": {}, "ELEMENT_220": {}, "ELEMENT_221": {}, "ELEMENT_222": {}, "ELEMENT_223": {}, "ELEMENT_224": {}, "ELEMENT_225": {}, "ELEMENT_226": {}, "ELEMENT_227": {}, "ELEMENT_228": {}, "ELEMENT_229": {}, "ELEMENT_230": {}, "ELEMENT_231": {}, "ELEMENT_232": {}, "ELEMENT_233": {}, "ELEMENT_234": {}, "ELEMENT_235": {}, "ELEMENT_236": {}, "ELEMENT_237": {}, "ELEMENT_238": {}, "ELEMENT_239": {}, "ELEMENT_240": {}, "ELEMENT_241": {}, "ELEMENT_242": {}, "ELEMENT_243": {}, "ELEMENT_244": {}, "ELEMENT_245": {}, "ELEMENT_246": {}, "ELEMENT_247": {}, "ELEMENT_248": {}, "ELEMENT_249": {}, "ELEMENT_250": {}, "ELEMENT_251": {}, "ELEMENT_252": {}, "ELEMENT_253": {}, "ELEMENT_254": {}, "ELEMENT_255": {}, "ELEMENT_256": {}, "ELEMENT_257": {}, "ELEMENT_258": {}, "ELEMENT_259": {}, "ELEMENT_260": {}, "ELEMENT_261": {}, "ELEMENT_262": {}, "ELEMENT_263": {}, "ELEMENT_264": {}, "ELEMENT_265": {}, "ELEMENT_266": {}, "ELEMENT_267": {}, "ELEMENT_268": {}, "ELEMENT_269": {}, "ELEMENT_270": {}, "ELEMENT_271": {}, "ELEMENT_272": {}, "ELEMENT_273": {}, "ELEMENT_274": {}, "ELEMENT_275": {}, "ELEMENT_276": {}, "ELEMENT_277": {}, "ELEMENT_278": {}, "ELEMENT_279": {}, "ELEMENT_280": {}, "ELEMENT_281": {}, "ELEMENT_282": {}, "ELEMENT_283": {}, "ELEMENT_284": {}, "ELEMENT_285": {}, "ELEMENT_286": {}, "ELEMENT_287": {}, "ELEMENT_288": {}, "ELEMENT_289": {}, "ELEMENT_290": {}, "ELEMENT_291": {}, "ELEMENT_292": {}, "ELEMENT_293": {}, "ELEMENT_294": {}, "ELEMENT_295": {}, "ELEMENT_296": {}, "ELEMENT_297": {}, "ELEMENT_298": {}, "ELEMENT_299": {}, "ELEMENT_300": {}, "ELEMENT_301": {}, "ELEMENT_302": {}, "ELEMENT_303": {}, "ELEMENT_304": {}, "ELEMENT_305": {}, "ELEMENT_306": {}, "ELEMENT_307": {}, "ELEMENT_308": {}, "ELEMENT_309": {}, "ELEMENT_310": {}, "ELEMENT_311": {}, "ELEMENT_312": {}, "ELEMENT_313": {}, "ELEMENT_314": {}, "ELEMENT_315": {}, "ELEMENT_316": {}, "ELEMENT_317": {}, "ELEMENT_318": {}, "ELEMENT_319": {}, "ELEMENT_320": {}, "ELEMENT_321": {}, "ELEMENT_322": {}, "ELEMENT_323": {}, "ELEMENT_324": {}, "ELEMENT_325": {}, "ELEMENT_326": {}, "ELEMENT_327": {}, "ELEMENT_328": {}, "ELEMENT_329": {}, "ELEMENT_330": {}, "ELEMENT_331": {}, "ELEMENT_332": {}, "ELEMENT_333": {}, "ELEMENT_334": {}, "ELEMENT_335": {}, "ELEMENT_336": {}, "ELEMENT_337": {}, "ELEMENT_338": {}, "ELEMENT_339": {}, "ELEMENT_340": {}, "ELEMENT_341": {}, "ELEMENT_342": {}, "ELEMENT_343": {}, "ELEMENT_344": {}, "ELEMENT_345": {}, "ELEMENT_346": {}, "ELEMENT_347": {}, "ELEMENT_348": {}, "ELEMENT_349": {}, "ELEMENT_350": {}, "ELEMENT_351": {}, "ELEMENT_352": {}, "ELEMENT_353": {}, "ELEMENT_354": {}, "ELEMENT_355": {}, "ELEMENT_356": {}, "ELEMENT_357": {}, "ELEMENT_358": {}, "ELEMENT_359": {}, "ELEMENT_360": {}, "ELEMENT_361": {}, "ELEMENT_362": {}, "ELEMENT_363": {}, "ELEMENT_364": {}, "ELEMENT_365": {}, "ELEMENT_366": {}, "ELEMENT_367": {}, "ELEMENT_368": {}, "ELEMENT_369": {}, "ELEMENT_370": {}, "ELEMENT_371": {}, "ELEMENT_372": {}, "ELEMENT_373": {}, "ELEMENT_374": {}, "ELEMENT_375": {}, "ELEMENT_376": {}, "ELEMENT_377": {}, "ELEMENT_378": {}, "ELEMENT_379": {}, "ELEMENT_380": {}, "ELEMENT_381": {}, "ELEMENT_382": {}, "ELEMENT_383": {}, "ELEMENT_384": {}, "ELEMENT_385": {}, "ELEMENT_386": {}, "ELEMENT_387": {}, "ELEMENT_388": {}, "ELEMENT_389": {}, "ELEMENT_390": {}, "ELEMENT_391": {}, "ELEMENT_392": {}, "ELEMENT_393": {}, "ELEMENT_394": {}, "ELEMENT_395": {}, "ELEMENT_396": {}, "ELEMENT_397": {}, "ELEMENT_398": {}, "ELEMENT_399": {}, "ELEMENT_400": {}, "ELEMENT_401": {}, "ELEMENT_402": {}, "ELEMENT_403": {}, "ELEMENT_404": {}, "ELEMENT_405": {}, "ELEMENT_406": {}, "ELEMENT_407": {}, "ELEMENT_408": {}, "ELEMENT_409": {}, "ELEMENT_410": {}, "ELEMENT_411": {}, "ELEMENT_412": {}, "ELEMENT_413": {}, "ELEMENT_414": {}, "ELEMENT_415": {}, "ELEMENT_416": {}, "ELEMENT_417": {}, "ELEMENT_418": {}, "ELEMENT_419": {}, "ELEMENT_420": {}, "ELEMENT_421": {}, "ELEMENT_422": {}, "ELEMENT_423": {}, "ELEMENT_424": {}, "ELEMENT_425": {}, "ELEMENT_426": {}, "ELEMENT_427": {}, "ELEMENT_428": {}, "ELEMENT_429": {}, "ELEMENT_430": {}, "ELEMENT_431": {}, "ELEMENT_432": {}, "ELEMENT_433": {}, "ELEMENT_434": {}, "ELEMENT_435": {}, "ELEMENT_436": {}, "ELEMENT_437": {}, "ELEMENT_438": {}, "ELEMENT_439": {}, "ELEMENT_440": {}, "ELEMENT_441": {}, "ELEMENT_442": {}, "ELEMENT_443": {}, "ELEMENT_444": {}, "ELEMENT_445": {}, "ELEMENT_446": {}, "ELEMENT_447": {}, "ELEMENT_448": {}, "ELEMENT_449": {}, "ELEMENT_450": {}, "ELEMENT_451": {}, "ELEMENT_452": {}, "ELEMENT_453": {}, "ELEMENT_454": {}, "ELEMENT_455": {}, "ELEMENT_456": {}, "ELEMENT_457": {}, "ELEMENT_458": {}, "ELEMENT_459": {}, "ELEMENT_460": {}, "ELEMENT_461": {}, "ELEMENT_462": {}, "ELEMENT_463": {}, "ELEMENT_464": {}, "ELEMENT_465": {}, "ELEMENT_466": {}, "ELEMENT_467": {}, "ELEMENT_468": {}, "ELEMENT_469": {}, "ELEMENT_470": {}, "ELEMENT_471": {}, "ELEMENT_472": {}, "ELEMENT_473": {}, "ELEMENT_474": {}, "ELEMENT_475": {}, "ELEMENT_476": {}, "ELEMENT_477": {}, "ELEMENT_478": {}, "ELEMENT_479": {}, "ELEMENT_480": {}, "ELEMENT_481": {}, "ELEMENT_482": {}, "ELEMENT_483": {}, "ELEMENT_484": {}, "ELEMENT_485": {}, "ELEMENT_486": {}, "ELEMENT_487": {}, "ELEMENT_488": {}, "ELEMENT_489": {}, "ELEMENT_490": {}, "ELEMENT_491": {}, "ELEMENT_492": {}, "ELEMENT_493": {}, "ELEMENT_494": {}, "ELEMENT_495": {}, "ELEMENT_496": {}, "ELEMENT_497": {}, "ELEMENT_498": {}, "ELEMENT_499": {}, "ELEMENT_500": {}, "ELEMENT_501": {}, "ELEMENT_502": {}, "ELEMENT_503": {}, "ELEMENT_504": {}, "ELEMENT_505": {}, "ELEMENT_506": {}, "ELEMENT_507": {}, "ELEMENT_508": {}, "ELEMENT_509": {}, "ELEMENT_510": {}, "ELEMENT_511": {}, "ELEMENT_512": {}, "ELEMENT_513": {}, "ELEMENT_514": {}, "ELEMENT_515": {}, "ELEMENT_516": {}, "ELEMENT_517": {}, "ELEMENT_518": {}, "ELEMENT_519": {}, "ELEMENT_520": {}, "ELEMENT_521": {}, "ELEMENT_522": {}, "ELEMENT_523": {}, "ELEMENT_524": {}, "ELEMENT_525": {}, "ELEMENT_526": {}, "ELEMENT_527": {}, "ELEMENT_528": {}, "ELEMENT_529": {}, "ELEMENT_530": {}, "ELEMENT_531": {}, "ELEMENT_532": {}, "ELEMENT_533": {}, "ELEMENT_534": {}, "ELEMENT_535": {}, "ELEMENT_536": {}, "ELEMENT_537": {}, "ELEMENT_538": {}, "ELEMENT_539": {}, "ELEMENT_540": {}, "ELEMENT_541": {}, "ELEMENT_542": {}, "ELEMENT_543": {}, "ELEMENT_544": {}, "ELEMENT_545": {}, "ELEMENT_546": {}, "ELEMENT_547": {}, "ELEMENT_548": {}, "ELEMENT_549": {}, "ELEMENT_550": {}, "ELEMENT_551": {}, "ELEMENT_552": {}, "ELEMENT_553": {}, "ELEMENT_554": {}, "ELEMENT_555": {}, "ELEMENT_556": {}, "ELEMENT_557": {}, "ELEMENT_558": {}, "ELEMENT_559": {}, "ELEMENT_560": {}, "ELEMENT_561": {}, "ELEMENT_562": {}, "ELEMENT_563": {}, "ELEMENT_564": {}, "ELEMENT_565": {}, "ELEMENT_566": {}, "ELEMENT_567": {}, "ELEMENT_568": {}, "ELEMENT_569": {}, "ELEMENT_570": {}, "ELEMENT_571": {}, "ELEMENT_572": {}, "ELEMENT_573": {}, "ELEMENT_574": {}, "ELEMENT_575": {}, "ELEMENT_576": {}, "ELEMENT_577": {}, "ELEMENT_578": {}, "ELEMENT_579": {}, "ELEMENT_580": {}, "ELEMENT_581": {}, "ELEMENT_582": {}, "ELEMENT_583": {}, "ELEMENT_584": {}, "ELEMENT_585": {}, "ELEMENT_586": {}, "ELEMENT_587": {}, "ELEMENT_588": {}, "ELEMENT_589": {}, "ELEMENT_590": {}, "ELEMENT_591": {}, "ELEMENT_592": {}, "ELEMENT_593": {}, "ELEMENT_594": {}, "ELEMENT_595": {}, "ELEMENT_596": {}, "ELEMENT_597": {}, "ELEMENT_598": {}, "ELEMENT_599": {}, "ELEMENT_600": {}, "ELEMENT_601": {}, "ELEMENT_602": {}, "ELEMENT_603": {}, "ELEMENT_604": {}, "ELEMENT_605": {}, "ELEMENT_606": {}, "ELEMENT_607": {}, "ELEMENT_608": {}, "ELEMENT_609": {}, "ELEMENT_610": {}, "ELEMENT_611": {}, "ELEMENT_612": {}, "ELEMENT_613": {}, "ELEMENT_614": {}, "ELEMENT_615": {}, "ELEMENT_616": {}, "ELEMENT_617": {}, "ELEMENT_618": {}, "ELEMENT_619": {}, "ELEMENT_620": {}, "ELEMENT_621": {}, "ELEMENT_622": {}, "ELEMENT_623": {}, "ELEMENT_624": {}, "ELEMENT_625": {}, "ELEMENT_626": {}, "ELEMENT_627": {}, "ELEMENT_628": {}, "ELEMENT_629": {}, "ELEMENT_630": {}, "ELEMENT_631": {}, "ELEMENT_632": {}, "ELEMENT_633": {}, "ELEMENT_634": {}, "ELEMENT_635": {}, "ELEMENT_636": {}, "ELEMENT_637": {}, "ELEMENT_638": {}, "ELEMENT_639": {}, "ELEMENT_640": {}, "ELEMENT_641": {}, "ELEMENT_642": {}, "ELEMENT_643": {}, "ELEMENT_644": {}, "ELEMENT_645": {}, "ELEMENT_646": {}, "ELEMENT_647": {}, "ELEMENT_648": {}, "ELEMENT_649": {}, "ELEMENT_650": {}, "ELEMENT_651": {}, "ELEMENT_652": {}, "ELEMENT_653": {}, "ELEMENT_654": {}, "ELEMENT_655": {}, "ELEMENT_656": {}, "ELEMENT_657": {}, "ELEMENT_658": {}, "ELEMENT_659": {}, "ELEMENT_660": {}, "ELEMENT_661": {}, "ELEMENT_662": {}, "ELEMENT_663": {}, "ELEMENT_664": {}, "ELEMENT_665": {}, "ELEMENT_666": {}, "ELEMENT_667": {}, "ELEMENT_668": {}, "ELEMENT_669": {}, "ELEMENT_670": {}, "ELEMENT_671": {}, "ELEMENT_672": {}, "ELEMENT_673": {}, "ELEMENT_674": {}, "ELEMENT_675": {}, "ELEMENT_676": {}, "ELEMENT_677": {}, "ELEMENT_678": {}, "ELEMENT_679": {}, "ELEMENT_680": {}, "ELEMENT_681": {}, "ELEMENT_682": {}, "ELEMENT_683": {}, "ELEMENT_684": {}, "ELEMENT_685": {}, "ELEMENT_686": {}, "ELEMENT_687": {}, "ELEMENT_688": {}, "ELEMENT_689": {}, "ELEMENT_690": {}, "ELEMENT_691": {}, "ELEMENT_692": {}, "ELEMENT_693": {}, "ELEMENT_694": {}, "ELEMENT_695": {}, "ELEMENT_696": {}, "ELEMENT_697": {}, "ELEMENT_698": {}, "ELEMENT_699": {}, "ELEMENT_700": {}, "ELEMENT_701": {}, "ELEMENT_702": {}, "ELEMENT_703": {}, "ELEMENT_704": {}, "ELEMENT_705": {}, "ELEMENT_706": {}, "ELEMENT_707": {}, "ELEMENT_708": {}, "ELEMENT_709": {}, "ELEMENT_710": {}, "ELEMENT_711": {}, "ELEMENT_712": {}, "ELEMENT_713": {}, "ELEMENT_714": {}, "ELEMENT_715": {}, "ELEMENT_716": {}, "ELEMENT_717": {}, "ELEMENT_718": {}, "ELEMENT_719": {}, "ELEMENT_720": {}, "ELEMENT_721": {}, "ELEMENT_722": {}, "ELEMENT_723": {}, "ELEMENT_724": {}, "ELEMENT_725": {}, "ELEMENT_726": {}, "ELEMENT_727": {}, "ELEMENT_728": {}, "ELEMENT_729": {}, "ELEMENT_730": {}, "ELEMENT_731": {}, "ELEMENT_732": {}, "ELEMENT_733": {}, "ELEMENT_734": {}, "ELEMENT_735": {}, "ELEMENT_736": {}, "ELEMENT_737": {}, "ELEMENT_738": {}, "ELEMENT_739": {}, "ELEMENT_740": {}, "ELEMENT_741": {}, "ELEMENT_742": {}, "ELEMENT_743": {}, "ELEMENT_744": {}, "ELEMENT_745": {}, "ELEMENT_746": {}, "ELEMENT_747": {}, "ELEMENT_748": {}, "ELEMENT_749": {}, "ELEMENT_750": {}, "ELEMENT_751": {}, "ELEMENT_752": {}, "ELEMENT_753": {}, "ELEMENT_754": {}, "ELEMENT_755": {}, "ELEMENT_756": {}, "ELEMENT_757": {}, "ELEMENT_758": {}, "ELEMENT_759": {}, "ELEMENT_760": {}, "ELEMENT_761": {}, "ELEMENT_762": {}, "ELEMENT_763": {}, "ELEMENT_764": {}, "ELEMENT_765": {}, "ELEMENT_766": {}, "ELEMENT_767": {}, "ELEMENT_768": {}, "ELEMENT_769": {}, "ELEMENT_770": {}, "ELEMENT_771": {}, "ELEMENT_772": {}, "ELEMENT_773": {}, "ELEMENT_774": {}, "ELEMENT_775": {}, "ELEMENT_776": {}, "ELEMENT_777": {}, "ELEMENT_778": {}, "ELEMENT_779": {}, "ELEMENT_780": {}, "ELEMENT_781": {}, "ELEMENT_782": {}, "ELEMENT_783": {}, "ELEMENT_784": {}, "ELEMENT_785": {}, "ELEMENT_786": {}, "ELEMENT_787": {}, "ELEMENT_788": {}, "ELEMENT_789": {}, "ELEMENT_790": {}, "ELEMENT_791": {}, "ELEMENT_792": {}, "ELEMENT_793": {}, "ELEMENT_794": {}, "ELEMENT_795": {}, "ELEMENT_796": {}, "ELEMENT_797": {}, "ELEMENT_798": {}, "ELEMENT_799": {}, "ELEMENT_800": {}, "ELEMENT_801": {}, "ELEMENT_802": {}, "ELEMENT_803": {}, "ELEMENT_804": {}, "ELEMENT_805": {}, "ELEMENT_806": {}, "ELEMENT_807": {}, "ELEMENT_808": {}, "ELEMENT_809": {}, "ELEMENT_810": {}, "ELEMENT_811": {}, "ELEMENT_812": {}, "ELEMENT_813": {}, "ELEMENT_814": {}, "ELEMENT_815": {}, "ELEMENT_816": {}, "ELEMENT_817": {}, "ELEMENT_818": {}, "ELEMENT_819": {}, "ELEMENT_820": {}, "ELEMENT_821": {}, "ELEMENT_822": {}, "ELEMENT_823": {}, "ELEMENT_824": {}, "ELEMENT_825": {}, "ELEMENT_826": {}, "ELEMENT_827": {}, "ELEMENT_828": {}, "ELEMENT_829": {}, "ELEMENT_830": {}, "ELEMENT_831": {}, "ELEMENT_832": {}, "ELEMENT_833": {}, "ELEMENT_834": {}, "ELEMENT_835": {}, "ELEMENT_836": {}, "ELEMENT_837": {}, "ELEMENT_838": {}, "ELEMENT_839": {}, "ELEMENT_840": {}, "ELEMENT_841": {}, "ELEMENT_842": {}, "ELEMENT_843": {}, "ELEMENT_844": {}, "ELEMENT_845": {}, "ELEMENT_846": {}, "ELEMENT_847": {}, "ELEMENT_848": {}, "ELEMENT_849": {}, "ELEMENT_850": {}, "ELEMENT_851": {}, "ELEMENT_852": {}, "ELEMENT_853": {}, "ELEMENT_854": {}, "ELEMENT_855": {}, "ELEMENT_856": {}, "ELEMENT_857": {}, "ELEMENT_858": {}, "ELEMENT_859": {}, "ELEMENT_860": {}, "ELEMENT_861": {}, "ELEMENT_862": {}, "ELEMENT_863": {}, "ELEMENT_864": {}, "ELEMENT_865": {}, "ELEMENT_866": {}, "ELEMENT_867": {}, "ELEMENT_868": {}, "ELEMENT_869": {}, "ELEMENT_870": {}, "ELEMENT_871": {}, "ELEMENT_872": {}, "ELEMENT_873": {}, "ELEMENT_874": {}, "ELEMENT_875": {}, "ELEMENT_876": {}, "ELEMENT_877": {}, "ELEMENT_878": {}, "ELEMENT_879": {}, "ELEMENT_880": {}, "ELEMENT_881": {}, "ELEMENT_882": {}, "ELEMENT_883": {}, "ELEMENT_884": {}, "ELEMENT_885": {}, "ELEMENT_886": {}, "ELEMENT_887": {}, "ELEMENT_888": {}, "ELEMENT_889": {}, "ELEMENT_890": {}, "ELEMENT_891": {}, "ELEMENT_892": {}, "ELEMENT_893": {}, "ELEMENT_894": {}, "ELEMENT_895": {}, "ELEMENT_896": {}, "ELEMENT_897": {}, "ELEMENT_898": {}, "ELEMENT_899": {}, "ELEMENT_900": {}, "ELEMENT_901": {}, "ELEMENT_902": {}, "ELEMENT_903": {}, "ELEMENT_904": {}, "ELEMENT_905": {}, "ELEMENT_906": {}, "ELEMENT_907": {}, "ELEMENT_908": {}, "ELEMENT_909": {}, "ELEMENT_910": {}, "ELEMENT_911": {}, "ELEMENT_912": {}, "ELEMENT_913": {}, "ELEMENT_914": {}, "ELEMENT_915": {}, "ELEMENT_916": {}, "ELEMENT_917": {}, "ELEMENT_918": {}, "ELEMENT_919": {}, "ELEMENT_920": {}, "ELEMENT_921": {}, "ELEMENT_922": {}, "ELEMENT_923": {}, "ELEMENT_924": {}, "ELEMENT_925": {}, "ELEMENT_926": {}, "ELEMENT_927": {}, "ELEMENT_928": {}, "ELEMENT_929": {}, "ELEMENT_930": {}, "ELEMENT_931": {}, "ELEMENT_932": {}, "ELEMENT_933": {}, "ELEMENT_934": {}, "ELEMENT_935": {}, "ELEMENT_936": {}, "ELEMENT_937": {}, "ELEMENT_938": {}, "ELEMENT_939": {}, "ELEMENT_940": {}, "ELEMENT_941": {}, "ELEMENT_942": {}, "ELEMENT_943": {}, "ELEMENT_944": {}, "ELEMENT_945": {}, "ELEMENT_946": {}, "ELEMENT_947": {}, "ELEMENT_948": {}, "ELEMENT_949": {}, "ELEMENT_950": {}, "ELEMENT_951": {}, "ELEMENT_952": {}, "ELEMENT_953": {}, "ELEMENT_954": {}, "ELEMENT_955": {}, "ELEMENT_956": {}, "ELEMENT_957": {}, "ELEMENT_958": {}, "ELEMENT_959": {}, "ELEMENT_960": {}, "ELEMENT_961": {}, "ELEMENT_962": {}, "ELEMENT_963": {}, "ELEMENT_964": {}, "ELEMENT_965": {}, "ELEMENT_966": {}, "ELEMENT_967": {}, "ELEMENT_968": {}, "ELEMENT_969": {}, "ELEMENT_970": {}, "ELEMENT_971": {}, "ELEMENT_972": {}, "ELEMENT_973": {}, "ELEMENT_974": {}, "ELEMENT_975": {}, "ELEMENT_976": {}, "ELEMENT_977": {}, "ELEMENT_978": {}, "ELEMENT_979": {}, "ELEMENT_980": {}, "ELEMENT_981": {}, "ELEMENT_982": {}, "ELEMENT_983": {}, "ELEMENT_984": {}, "ELEMENT_985": {}, "ELEMENT_986": {}, "ELEMENT_987": {}, "ELEMENT_988": {}, "ELEMENT_989": {}, "ELEMENT_990": {}, "ELEMENT_991": {}, "ELEMENT_992": {}, "ELEMENT_993": {}, "ELEMENT_994": {}, "ELEMENT_995": {}, "ELEMENT_996": {}, "ELEMENT_997": {}, "ELEMENT_998": {}, "ELEMENT_999": {}, "ELEMENT_1000": {}, "ELEMENT_1001": {}, "ELEMENT_1002": {}, "ELEMENT_1003": {}, "ELEMENT_1004": {}, "ELEMENT_1005": {}, "ELEMENT_1006": {}, "ELEMENT_1007": {}, "ELEMENT_1008": {}, "ELEMENT_1009": {}, "ELEMENT_1010": {}, "ELEMENT_1011": {}, "ELEMENT_1012": {}, "ELEMENT_1013": {}, "ELEMENT_1014": {}, "ELEMENT_1015": {}, "ELEMENT_1016": {}, "ELEMENT_1017": {}, "ELEMENT_1018": {}, "ELEMENT_1019": {}, "ELEMENT_1020": {}, "ELEMENT_1021": {}, "ELEMENT_1022": {}, "ELEMENT_1023": {}, "ELEMENT_1024": {}, "ELEMENT_1025": {}, "ELEMENT_1026": {}, "ELEMENT_1027": {}, "ELEMENT_1028": {}, "ELEMENT_1029": {}, "ELEMENT_1030": {}, "ELEMENT_1031": {}, "ELEMENT_1032": {}, "ELEMENT_1033": {}, "ELEMENT_1034": {}, "ELEMENT_1035": {}, "ELEMENT_1036": {}, "ELEMENT_1037": {}, "ELEMENT_1038": {}, "ELEMENT_1039": {}, "ELEMENT_1040": {}, "ELEMENT_1041": {}, "ELEMENT_1042": {}, "ELEMENT_1043": {}, "ELEMENT_1044": {}, "ELEMENT_1045": {}, "ELEMENT_1046": {}, "ELEMENT_1047": {}, "ELEMENT_1048": {}, "ELEMENT_1049": {}, "ELEMENT_1050": {}, "ELEMENT_1051": {}, "ELEMENT_1052": {}, "ELEMENT_1053": {}, "ELEMENT_1054": {}, "ELEMENT_1055": {}, "ELEMENT_1056": {}, "ELEMENT_1057": {}, "ELEMENT_1058": {}, "ELEMENT_1059": {}, "ELEMENT_1060": {}, "ELEMENT_1061": {}, "ELEMENT_1062": {}, "ELEMENT_1063": {}, "ELEMENT_1064": {}, "ELEMENT_1065": {}, "ELEMENT_1066": {}, "ELEMENT_1067": {}, "ELEMENT_1068": {}, "ELEMENT_1069": {}, "ELEMENT_1070": {}, "ELEMENT_1071": {}, "ELEMENT_1072": {}, "ELEMENT_1073": {}, "ELEMENT_1074": {}, "ELEMENT_1075": {}, "ELEMENT_1076": {}, "ELEMENT_1077": {}, "ELEMENT_1078": {}, "ELEMENT_1079": {}, "ELEMENT_1080": {}, "ELEMENT_1081": {}, "ELEMENT_1082": {}, "ELEMENT_1083": {}, "ELEMENT_1084": {}, "ELEMENT_1085": {}, "ELEMENT_1086": {}, "ELEMENT_1087": {}, "ELEMENT_1088": {}, "ELEMENT_1089": {}, "ELEMENT_1090": {}, "ELEMENT_1091": {}, "ELEMENT_1092": {}, "ELEMENT_1093": {}, "ELEMENT_1094": {}, "ELEMENT_1095": {}, "ELEMENT_1096": {}, "ELEMENT_1097": {}, "ELEMENT_1098": {}, "ELEMENT_1099": {}, "ELEMENT_1100": {}, "ELEMENT_1101": {}, "ELEMENT_1102": {}, "ELEMENT_1103": {}, "ELEMENT_1104": {}, "ELEMENT_1105": {}, "ELEMENT_1106": {}, "ELEMENT_1107": {}, "ELEMENT_1108": {}, "ELEMENT_1109": {}, "ELEMENT_1110": {}, "ELEMENT_1111": {}, "ELEMENT_1112": {}, "ELEMENT_1113": {}, "ELEMENT_1114": {}, "ELEMENT_1115": {}, "ELEMENT_1116": {}, "ELEMENT_1117": {}, "ELEMENT_1118": {}, "ELEMENT_1119": {}, "ELEMENT_1120": {}, "ELEMENT_1121": {}, "ELEMENT_1122": {}, "ELEMENT_1123": {}, "ELEMENT_1124": {}, "ELEMENT_1125": {}, "ELEMENT_1126": {}, "ELEMENT_1127": {}, "ELEMENT_1128": {}, "ELEMENT_1129": {}, "ELEMENT_1130": {}, "ELEMENT_1131": {}, "ELEMENT_1132": {}, "ELEMENT_1133": {}, "ELEMENT_1134": {}, "ELEMENT_1135": {}, "ELEMENT_1136": {}, "ELEMENT_1137": {}, "ELEMENT_1138": {}, "ELEMENT_1139": {}, "ELEMENT_1140": {}, "ELEMENT_1141": {}, "ELEMENT_1142": {}, "ELEMENT_1143": {}, "ELEMENT_1144": {}, "ELEMENT_1145": {}, "ELEMENT_1146": {}, "ELEMENT_1147": {}, "ELEMENT_1148": {}, "ELEMENT_1149": {}, "ELEMENT_1150": {}, "ELEMENT_1151": {}, "ELEMENT_1152": {}, "ELEMENT_1153": {}, "ELEMENT_1154": {}, "ELEMENT_1155": {}, "ELEMENT_1156": {}, "ELEMENT_1157": {}, "ELEMENT_1158": {}, "ELEMENT_1159": {}, "ELEMENT_1160": {}, "ELEMENT_1161": {}, "ELEMENT_1162": {}, "ELEMENT_1163": {}, "ELEMENT_1164": {}, "ELEMENT_1165": {}, "ELEMENT_1166": {}, "ELEMENT_1167": {}, "ELEMENT_1168": {}, "ELEMENT_1169": {}, "ELEMENT_1170": {}, "ELEMENT_1171": {}, "ELEMENT_1172": {}, "ELEMENT_1173": {}, "ELEMENT_1174": {}, "ELEMENT_1175": {}, "ELEMENT_1176": {}, "ELEMENT_1177": {}, "ELEMENT_1178": {}, "ELEMENT_1179": {}, "ELEMENT_1180": {}, "ELEMENT_1181": {}, "ELEMENT_1182": {}, "ELEMENT_1183": {}, "ELEMENT_1184": {}, "ELEMENT_1185": {}, "ELEMENT_1186": {}, "ELEMENT_1187": {}, "ELEMENT_1188": {}, "ELEMENT_1189": {}, "ELEMENT_1190": {}, "ELEMENT_1191": {}, "ELEMENT_1192": {}, "ELEMENT_1193": {}, "ELEMENT_1194": {}, "ELEMENT_1195": {}, "ELEMENT_1196": {}, "ELEMENT_1197": {}, "ELEMENT_1198": {}, "ELEMENT_1199": {}, "ELEMENT_1200": {}, "ELEMENT_1201": {}, "ELEMENT_1202": {}, "ELEMENT_1203": {}, "ELEMENT_1204": {}, "ELEMENT_1205": {}, "ELEMENT_1206": {}, "ELEMENT_1207": {}, "ELEMENT_1208": {}, "ELEMENT_1209": {}, "ELEMENT_1210": {}, "ELEMENT_1211": {}, "ELEMENT_1212": {}, "ELEMENT_1213": {}, "ELEMENT_1214": {}, "ELEMENT_1215": {}, "ELEMENT_1216": {}, "ELEMENT_1217": {}, "ELEMENT_1218": {}, "ELEMENT_1219": {}, "ELEMENT_1220": {}, "ELEMENT_1221": {}, "ELEMENT_1222": {}, "ELEMENT_1223": {}, "ELEMENT_1224": {}, "ELEMENT_1225": {}, "ELEMENT_1226": {}, "ELEMENT_1227": {}, "ELEMENT_1228": {}, "ELEMENT_1229": {}, "ELEMENT_1230": {}, "ELEMENT_1231": {}, "ELEMENT_1232": {}, "ELEMENT_1233": {}, "ELEMENT_1234": {}, "ELEMENT_1235": {}, "ELEMENT_1236": {}, "ELEMENT_1237": {}, "ELEMENT_1238": {}, "ELEMENT_1239": {}, "ELEMENT_1240": {}, "ELEMENT_1241": {}, "ELEMENT_1242": {}, "ELEMENT_1243": {}, "ELEMENT_1244": {}, "ELEMENT_1245": {}, "ELEMENT_1246": {}, "ELEMENT_1247": {}, "ELEMENT_1248": {}, "ELEMENT_1249": {}, "ELEMENT_1250": {}, "ELEMENT_1251": {}, "ELEMENT_1252": {}, "ELEMENT_1253": {}, "ELEMENT_1254": {}, "ELEMENT_1255": {}, "ELEMENT_1256": {}, "ELEMENT_1257": {}, "ELEMENT_1258": {}, "ELEMENT_1259": {}, "ELEMENT_1260": {}, "ELEMENT_1261": {}, "ELEMENT_1262": {}, "ELEMENT_1263": {}, "ELEMENT_1264": {}, "ELEMENT_1265": {}, "ELEMENT_1266": {}, "ELEMENT_1267": {}, "ELEMENT_1268": {}, "ELEMENT_1269": {}, "ELEMENT_1270": {}, "ELEMENT_1271": {}, "ELEMENT_1272": {}, "ELEMENT_1273": {}, "ELEMENT_1274": {}, "ELEMENT_1275": {}, "ELEMENT_1276": {}, "ELEMENT_1277": {}, "ELEMENT_1278": {}, "ELEMENT_1279": {}, "ELEMENT_1280": {}, "ELEMENT_1281": {}, "ELEMENT_1282": {}, "ELEMENT_1283": {}, "ELEMENT_1284": {}, "ELEMENT_1285": {}, "ELEMENT_1286": {}, "ELEMENT_1287": {}, "ELEMENT_1288": {}, "ELEMENT_1289": {}, "ELEMENT_1290": {}, "ELEMENT_1291": {}, "ELEMENT_1292": {}, "ELEMENT_1293": {}, "ELEMENT_1294": {}, "ELEMENT_1295": {}, "ELEMENT_1296": {}, "ELEMENT_1297": {}, "ELEMENT_1298": {}, "ELEMENT_1299": {}, "ELEMENT_1300": {}, "ELEMENT_1301": {}, "ELEMENT_1302": {}, "ELEMENT_1303": {}, "ELEMENT_1304": {}, "ELEMENT_1305": {}, "ELEMENT_1306": {}, "ELEMENT_1307": {}, "ELEMENT_1308": {}, "ELEMENT_1309": {}, "ELEMENT_1310": {}, "ELEMENT_1311": {}, "ELEMENT_1312": {}, "ELEMENT_1313": {}, "ELEMENT_1314": {}, "ELEMENT_1315": {}, "ELEMENT_1316": {}, "ELEMENT_1317": {}, "ELEMENT_1318": {}, "ELEMENT_1319": {}, "ELEMENT_1320": {}, "ELEMENT_1321": {}, "ELEMENT_1322": {}, "ELEMENT_1323": {}, "ELEMENT_1324": {}, "ELEMENT_1325": {}, "ELEMENT_1326": {}, "ELEMENT_1327": {}, "ELEMENT_1328": {}, "ELEMENT_1329": {}, "ELEMENT_1330": {}, "ELEMENT_1331": {}, "ELEMENT_1332": {}, "ELEMENT_1333": {}, "ELEMENT_1334": {}, "ELEMENT_1335": {}, "ELEMENT_1336": {}, "ELEMENT_1337": {}, "ELEMENT_1338": {}, "ELEMENT_1339": {}, "ELEMENT_1340": {}, "ELEMENT_1341": {}, "ELEMENT_1342": {}, "ELEMENT_1343": {}, "ELEMENT_1344": {}, "ELEMENT_1345": {}, "ELEMENT_1346": {}, "ELEMENT_1347": {}, "ELEMENT_1348": {}, "ELEMENT_1349": {}, "ELEMENT_1350": {}, "ELEMENT_1351": {}, "ELEMENT_1352": {}, "ELEMENT_1353": {}, "ELEMENT_1354": {}, "ELEMENT_1355": {}, "ELEMENT_1356": {}, "ELEMENT_1357": {}, "ELEMENT_1358": {}, "ELEMENT_1359": {}, "ELEMENT_1360": {}, "ELEMENT_1361": {}, "ELEMENT_1362": {}, "ELEMENT_1363": {}, "ELEMENT_1364": {}, "ELEMENT_1365": {}, "ELEMENT_1366": {}, "ELEMENT_1367": {}, "ELEMENT_1368": {}, "ELEMENT_1369": {}, "ELEMENT_1370": {}, "ELEMENT_1371": {}, "ELEMENT_1372": {}, "ELEMENT_1373": {}, "ELEMENT_1374": {}, "ELEMENT_1375": {}, "ELEMENT_1376": {}, "ELEMENT_1377": {}, "ELEMENT_1378": {}, "ELEMENT_1379": {}, "ELEMENT_1380": {}, "ELEMENT_1381": {}, "ELEMENT_1382": {}, "ELEMENT_1383": {}, "ELEMENT_1384": {}, "ELEMENT_1385": {}, "ELEMENT_1386": {}, "ELEMENT_1387": {}, "ELEMENT_1388": {}, "ELEMENT_1389": {}, "ELEMENT_1390": {}, "ELEMENT_1391": {}, "ELEMENT_1392": {}, "ELEMENT_1393": {}, "ELEMENT_1394": {}, "ELEMENT_1395": {}, "ELEMENT_1396": {}, "ELEMENT_1397": {}, "ELEMENT_1398": {}, "ELEMENT_1399": {}, "ELEMENT_1400": {}, "ELEMENT_1401": {}, "ELEMENT_1402": {}, "ELEMENT_1403": {}, "ELEMENT_1404": {}, "ELEMENT_1405": {}, "ELEMENT_1406": {}, "ELEMENT_1407": {}, "ELEMENT_1408": {}, "ELEMENT_1409": {}, "ELEMENT_1410": {}, "ELEMENT_1411": {}, "ELEMENT_1412": {}, "ELEMENT_1413": {}, "ELEMENT_1414": {}, "ELEMENT_1415": {}, "ELEMENT_1416": {}, "ELEMENT_1417": {}, "ELEMENT_1418": {}, "ELEMENT_1419": {}, "ELEMENT_1420": {}, "ELEMENT_1421": {}, "ELEMENT_1422": {}, "ELEMENT_1423": {}, "ELEMENT_1424": {}, "ELEMENT_1425": {}, "ELEMENT_1426": {}, "ELEMENT_1427": {}, "ELEMENT_1428": {}, "ELEMENT_1429": {}, "ELEMENT_1430": {}, "ELEMENT_1431": {}, "ELEMENT_1432": {}, "ELEMENT_1433": {}, "ELEMENT_1434": {}, "ELEMENT_1435": {}, "ELEMENT_1436": {}, "ELEMENT_1437": {}, "ELEMENT_1438": {}, "ELEMENT_1439": {}, "ELEMENT_1440": {}, "ELEMENT_1441": {}, "ELEMENT_1442": {}, "ELEMENT_1443": {}, "ELEMENT_1444": {}, "ELEMENT_1445": {}, "ELEMENT_1446": {}, "ELEMENT_1447": {}, "ELEMENT_1448": {}, "ELEMENT_1449": {}, "ELEMENT_1450": {}, "ELEMENT_1451": {}, "ELEMENT_1452": {}, "ELEMENT_1453": {}, "ELEMENT_1454": {}, "ELEMENT_1455": {}, "ELEMENT_1456": {}, "ELEMENT_1457": {}, "ELEMENT_1458": {}, "ELEMENT_1459": {}, "ELEMENT_1460": {}, "ELEMENT_1461": {}, "ELEMENT_1462": {}, "ELEMENT_1463": {}, "ELEMENT_1464": {}, "ELEMENT_1465": {}, "ELEMENT_1466": {}, "ELEMENT_1467": {}, "ELEMENT_1468": {}, "ELEMENT_1469": {}, "ELEMENT_1470": {}, "ELEMENT_1471": {}, "ELEMENT_1472": {}, "ELEMENT_1473": {}, "ELEMENT_1474": {}, "ELEMENT_1475": {}, "ELEMENT_1476": {}, "ELEMENT_1477": {}, "ELEMENT_1478": {}, "ELEMENT_1479": {}, "ELEMENT_1480": {}, "ELEMENT_1481": {}, "ELEMENT_1482": {}, "ELEMENT_1483": {}, "ELEMENT_1484": {}, "ELEMENT_1485": {}, "ELEMENT_1486": {}, "ELEMENT_1487": {}, "ELEMENT_1488": {}, "ELEMENT_1489": {}, "ELEMENT_1490": {}, "ELEMENT_1491": {}, "ELEMENT_1492": {}, "ELEMENT_1493": {}, "ELEMENT_1494": {}, "ELEMENT_1495": {}, "ELEMENT_1496": {}, "ELEMENT_1497": {}, "ELEMENT_1498": {}, "ELEMENT_1499": {}, "ELEMENT_1500": {}, "ELEMENT_1501": {}, "ELEMENT_1502": {}, "ELEMENT_1503": {}, "ELEMENT_1504": {}, "ELEMENT_1505": {}, "ELEMENT_1506": {}, "ELEMENT_1507": {}, "ELEMENT_1508": {}, "ELEMENT_1509": {}, "ELEMENT_1510": {}, "ELEMENT_1511": {}, "ELEMENT_1512": {}, "ELEMENT_1513": {}, "ELEMENT_1514": {}, "ELEMENT_1515": {}, "ELEMENT_1516": {}, "ELEMENT_1517": {}, "ELEMENT_1518": {}, "ELEMENT_1519": {}, "ELEMENT_1520": {}, "ELEMENT_1521": {}, "ELEMENT_1522": {}, "ELEMENT_1523": {}, "ELEMENT_1524": {}, "ELEMENT_1525": {}, "ELEMENT_1526": {}, "ELEMENT_1527": {}, "ELEMENT_1528": {}, "ELEMENT_1529": {}, "ELEMENT_1530": {}, "ELEMENT_1531": {}, "ELEMENT_1532": {}, "ELEMENT_1533": {}, "ELEMENT_1534": {}, "ELEMENT_1535": {}, "ELEMENT_1536": {}, "ELEMENT_1537": {}, "ELEMENT_1538": {}, "ELEMENT_1539": {}, "ELEMENT_1540": {}, "ELEMENT_1541": {}, "ELEMENT_1542": {}, "ELEMENT_1543": {}, "ELEMENT_1544": {}, "ELEMENT_1545": {}, "ELEMENT_1546": {}, "ELEMENT_1547": {}, "ELEMENT_1548": {}, "ELEMENT_1549": {}, "ELEMENT_1550": {}, "ELEMENT_1551": {}, "ELEMENT_1552": {}, "ELEMENT_1553": {}, "ELEMENT_1554": {}, "ELEMENT_1555": {}, "ELEMENT_1556": {}, "ELEMENT_1557": {}, "ELEMENT_1558": {}, "ELEMENT_1559": {}, "ELEMENT_1560": {}, "ELEMENT_1561": {}, "ELEMENT_1562": {}, "ELEMENT_1563": {}, "ELEMENT_1564": {}, "ELEMENT_1565": {}, "ELEMENT_1566": {}, "ELEMENT_1567": {}, "ELEMENT_1568": {}, "ELEMENT_1569": {}, "ELEMENT_1570": {}, "ELEMENT_1571": {}, "ELEMENT_1572": {}, "ELEMENT_1573": {}, "ELEMENT_1574": {}, "ELEMENT_1575": {}, "ELEMENT_1576": {}, "ELEMENT_1577": {}, "ELEMENT_1578": {}, "ELEMENT_1579": {}, "ELEMENT_1580": {}, "ELEMENT_1581": {}, "ELEMENT_1582": {}, "ELEMENT_1583": {}, "ELEMENT_1584": {}, "ELEMENT_1585": {}, "ELEMENT_1586": {}, "ELEMENT_1587": {}, "ELEMENT_1588": {}, "ELEMENT_1589": {}, "ELEMENT_1590": {}, "ELEMENT_1591": {}, "ELEMENT_1592": {}, "ELEMENT_1593": {}, "ELEMENT_1594": {}, "ELEMENT_1595": {}, "ELEMENT_1596": {}, "ELEMENT_1597": {}, "ELEMENT_1598": {}, "ELEMENT_1599": {}, "ELEMENT_1600": {}, "ELEMENT_1601": {}, "ELEMENT_1602": {}, "ELEMENT_1603": {}, "ELEMENT_1604": {}, "ELEMENT_1605": {}, "ELEMENT_1606": {}, "ELEMENT_1607": {}, "ELEMENT_1608": {}, "ELEMENT_1609": {}, "ELEMENT_1610": {}, "ELEMENT_1611": {}, "ELEMENT_1612": {}, "ELEMENT_1613": {}, "ELEMENT_1614": {}, "ELEMENT_1615": {}, "ELEMENT_1616": {}, "ELEMENT_1617": {}, "ELEMENT_1618": {}, "ELEMENT_1619": {}, "ELEMENT_1620": {}, "ELEMENT_1621": {}, "ELEMENT_1622": {}, "ELEMENT_1623": {}, "ELEMENT_1624": {}, "ELEMENT_1625": {}, "ELEMENT_1626": {}, "ELEMENT_1627": {}, "ELEMENT_1628": {}, "ELEMENT_1629": {}, "ELEMENT_1630": {}, "ELEMENT_1631": {}, "ELEMENT_1632": {}, "ELEMENT_1633": {}, "ELEMENT_1634": {}, "ELEMENT_1635": {}, "ELEMENT_1636": {}, "ELEMENT_1637": {}, "ELEMENT_1638": {}, "ELEMENT_1639": {}, "ELEMENT_1640": {}, "ELEMENT_1641": {}, "ELEMENT_1642": {}, "ELEMENT_1643": {}, "ELEMENT_1644": {}, "ELEMENT_1645": {}, "ELEMENT_1646": {}, "ELEMENT_1647": {}, "ELEMENT_1648": {}, "ELEMENT_1649": {}, "ELEMENT_1650": {}, "ELEMENT_1651": {}, "ELEMENT_1652": {}, "ELEMENT_1653": {}, "ELEMENT_1654": {}, "ELEMENT_1655": {}, "ELEMENT_1656": {}, "ELEMENT_1657": {}, "ELEMENT_1658": {}, "ELEMENT_1659": {}, "ELEMENT_1660": {}, "ELEMENT_1661": {}, "ELEMENT_1662": {}, "ELEMENT_1663": {}, "ELEMENT_1664": {}, "ELEMENT_1665": {}, "ELEMENT_1666": {}, "ELEMENT_1667": {}, "ELEMENT_1668": {}, "ELEMENT_1669": {}, "ELEMENT_1670": {}, "ELEMENT_1671": {}, "ELEMENT_1672": {}, "ELEMENT_1673": {}, "ELEMENT_1674": {}, "ELEMENT_1675": {}, "ELEMENT_1676": {}, "ELEMENT_1677": {}, "ELEMENT_1678": {}, "ELEMENT_1679": {}, "ELEMENT_1680": {}, "ELEMENT_1681": {}, "ELEMENT_1682": {}, "ELEMENT_1683": {}, "ELEMENT_1684": {}, "ELEMENT_1685": {}, "ELEMENT_1686": {}, "ELEMENT_1687": {}, "ELEMENT_1688": {}, "ELEMENT_1689": {}, "ELEMENT_1690": {}, "ELEMENT_1691": {}, "ELEMENT_1692": {}, "ELEMENT_1693": {}, "ELEMENT_1694": {}, "ELEMENT_1695": {}, "ELEMENT_1696": {}, "ELEMENT_1697": {}, "ELEMENT_1698": {}, "ELEMENT_1699": {}, "ELEMENT_1700": {}, "ELEMENT_1701": {}, "ELEMENT_1702": {}, "ELEMENT_1703": {}, "ELEMENT_1704": {}, "ELEMENT_1705": {}, "ELEMENT_1706": {}, "ELEMENT_1707": {}, "ELEMENT_1708": {}, "ELEMENT_1709": {}, "ELEMENT_1710": {}, "ELEMENT_1711": {}, "ELEMENT_1712": {}, "ELEMENT_1713": {}, "ELEMENT_1714": {}, "ELEMENT_1715": {}, "ELEMENT_1716": {}, "ELEMENT_1717": {}, "ELEMENT_1718": {}, "ELEMENT_1719": {}, "ELEMENT_1720": {}, "ELEMENT_1721": {}, "ELEMENT_1722": {}, "ELEMENT_1723": {}, "ELEMENT_1724": {}, "ELEMENT_1725": {}, "ELEMENT_1726": {}, "ELEMENT_1727": {}, "ELEMENT_1728": {}, "ELEMENT_1729": {}, "ELEMENT_1730": {}, "ELEMENT_1731": {}, "ELEMENT_1732": {}, "ELEMENT_1733": {}, "ELEMENT_1734": {}, "ELEMENT_1735": {}, "ELEMENT_1736": {}, "ELEMENT_1737": {}, "ELEMENT_1738": {}, "ELEMENT_1739": {}, "ELEMENT_1740": {}, "ELEMENT_1741": {}, "ELEMENT_1742": {}, "ELEMENT_1743": {}, "ELEMENT_1744": {}, "ELEMENT_1745": {}, "ELEMENT_1746": {}, "ELEMENT_1747": {}, "ELEMENT_1748": {}, "ELEMENT_1749": {}, "ELEMENT_1750": {}, "ELEMENT_1751": {}, "ELEMENT_1752": {}, "ELEMENT_1753": {}, "ELEMENT_1754": {}, "ELEMENT_1755": {}, "ELEMENT_1756": {}, "ELEMENT_1757": {}, "ELEMENT_1758": {}, "ELEMENT_1759": {}, "ELEMENT_1760": {}, "ELEMENT_1761": {}, "ELEMENT_1762": {}, "ELEMENT_1763": {}, "ELEMENT_1764": {}, "ELEMENT_1765": {}, "ELEMENT_1766": {}, "ELEMENT_1767": {}, "ELEMENT_1768": {}, "ELEMENT_1769": {}, "ELEMENT_1770": {}, "ELEMENT_1771": {}, "ELEMENT_1772": {}, "ELEMENT_1773": {}, "ELEMENT_1774": {}, "ELEMENT_1775": {}, "ELEMENT_1776": {}, "ELEMENT_1777": {}, "ELEMENT_1778": {}, "ELEMENT_1779": {}, "ELEMENT_1780": {}, "ELEMENT_1781": {}, "ELEMENT_1782": {}, "ELEMENT_1783": {}, "ELEMENT_1784": {}, "ELEMENT_1785": {}, "ELEMENT_1786": {}, "ELEMENT_1787": {}, "ELEMENT_1788": {}, "ELEMENT_1789": {}, "ELEMENT_1790": {}, "ELEMENT_1791": {}, "ELEMENT_1792": {}, "ELEMENT_1793": {}, "ELEMENT_1794": {}, "ELEMENT_1795": {}, "ELEMENT_1796": {}, "ELEMENT_1797": {}, "ELEMENT_1798": {}, "ELEMENT_1799": {}, "ELEMENT_1800": {}, "ELEMENT_1801": {}, "ELEMENT_1802": {}, "ELEMENT_1803": {}, "ELEMENT_1804": {}, "ELEMENT_1805": {}, "ELEMENT_1806": {}, "ELEMENT_1807": {}, "ELEMENT_1808": {}, "ELEMENT_1809": {}, "ELEMENT_1810": {}, "ELEMENT_1811": {}, "ELEMENT_1812": {}, "ELEMENT_1813": {}, "ELEMENT_1814": {}, "ELEMENT_1815": {}, "ELEMENT_1816": {}, "ELEMENT_1817": {}, "ELEMENT_1818": {}, "ELEMENT_1819": {}, "ELEMENT_1820": {}, "ELEMENT_1821": {}, "ELEMENT_1822": {}, "ELEMENT_1823": {}, "ELEMENT_1824": {}, "ELEMENT_1825": {}, "ELEMENT_1826": {}, "ELEMENT_1827": {}, "ELEMENT_1828": {}, "ELEMENT_1829": {}, "ELEMENT_1830": {}, "ELEMENT_1831": {}, "ELEMENT_1832": {}, "ELEMENT_1833": {}, "ELEMENT_1834": {}, "ELEMENT_1835": {}, "ELEMENT_1836": {}, "ELEMENT_1837": {}, "ELEMENT_1838": {}, "ELEMENT_1839": {}, "ELEMENT_1840": {}, "ELEMENT_1841": {}, "ELEMENT_1842": {}, "ELEMENT_1843": {}, "ELEMENT_1844": {}, "ELEMENT_1845": {}, "ELEMENT_1846": {}, "ELEMENT_1847": {}, "ELEMENT_1848": {}, "ELEMENT_1849": {}, "ELEMENT_1850": {}, "ELEMENT_1851": {}, "ELEMENT_1852": {}, "ELEMENT_1853": {}, "ELEMENT_1854": {}, "ELEMENT_1855": {}, "ELEMENT_1856": {}, "ELEMENT_1857": {}, "ELEMENT_1858": {}, "ELEMENT_1859": {}, "ELEMENT_1860": {}, "ELEMENT_1861": {}, "ELEMENT_1862": {}, "ELEMENT_1863": {}, "ELEMENT_1864": {}, "ELEMENT_1865": {}, "ELEMENT_1866": {}, "ELEMENT_1867": {}, "ELEMENT_1868": {}, "ELEMENT_1869": {}, "ELEMENT_1870": {}, "ELEMENT_1871": {}, "ELEMENT_1872": {}, "ELEMENT_1873": {}, "ELEMENT_1874": {}, "ELEMENT_1875": {}, "ELEMENT_1876": {}, "ELEMENT_1877": {}, "ELEMENT_1878": {}, "ELEMENT_1879": {}, "ELEMENT_1880": {}, "ELEMENT_1881": {}, "ELEMENT_1882": {}, "ELEMENT_1883": {}, "ELEMENT_1884": {}, "ELEMENT_1885": {}, "ELEMENT_1886": {}, "ELEMENT_1887": {}, "ELEMENT_1888": {}, "ELEMENT_1889": {}, "ELEMENT_1890": {}, "ELEMENT_1891": {}, "ELEMENT_1892": {}, "ELEMENT_1893": {}, "ELEMENT_1894": {}, "ELEMENT_1895": {}, "ELEMENT_1896": {}, "ELEMENT_1897": {}, "ELEMENT_1898": {}, "ELEMENT_1899": {}, "ELEMENT_1900": {}, "ELEMENT_1901": {}, "ELEMENT_1902": {}, "ELEMENT_1903": {}, "ELEMENT_1904": {}, "ELEMENT_1905": {}, "ELEMENT_1906": {}, "ELEMENT_1907": {}, "ELEMENT_1908": {}, "ELEMENT_1909": {}, "ELEMENT_1910": {}, "ELEMENT_1911": {}, "ELEMENT_1912": {}, "ELEMENT_1913": {}, "ELEMENT_1914": {}, "ELEMENT_1915": {}, "ELEMENT_1916": {}, "ELEMENT_1917": {}, "ELEMENT_1918": {}, "ELEMENT_1919": {}, "ELEMENT_1920": {}, "ELEMENT_1921": {}, "ELEMENT_1922": {}, "ELEMENT_1923": {}, "ELEMENT_1924": {}, "ELEMENT_1925": {}, "ELEMENT_1926": {}, "ELEMENT_1927": {}, "ELEMENT_1928": {}, "ELEMENT_1929": {}, "ELEMENT_1930": {}, "ELEMENT_1931": {}, "ELEMENT_1932": {}, "ELEMENT_1933": {}, "ELEMENT_1934": {}, "ELEMENT_1935": {}, "ELEMENT_1936": {}, "ELEMENT_1937": {}, "ELEMENT_1938": {}, "ELEMENT_1939": {}, "ELEMENT_1940": {}, "ELEMENT_1941": {}, "ELEMENT_1942": {}, "ELEMENT_1943": {}, "ELEMENT_1944": {}, "ELEMENT_1945": {}, "ELEMENT_1946": {}, "ELEMENT_1947": {}, "ELEMENT_1948": {}, "ELEMENT_1949": {}, "ELEMENT_1950": {}, "ELEMENT_1951": {}, "ELEMENT_1952": {}, "ELEMENT_1953": {}, "ELEMENT_1954": {}, "ELEMENT_1955": {}, "ELEMENT_1956": {}, "ELEMENT_1957": {}, "ELEMENT_1958": {}, "ELEMENT_1959": {}, "ELEMENT_1960": {}, "ELEMENT_1961": {}, "ELEMENT_1962": {}, "ELEMENT_1963": {}, "ELEMENT_1964": {}, "ELEMENT_1965": {}, "ELEMENT_1966": {}, "ELEMENT_1967": {}, "ELEMENT_1968": {}, "ELEMENT_1969": {}, "ELEMENT_1970": {}, "ELEMENT_1971": {}, "ELEMENT_1972": {}, "ELEMENT_1973": {}, "ELEMENT_1974": {}, "ELEMENT_1975": {}, "ELEMENT_1976": {}, "ELEMENT_1977": {}, "ELEMENT_1978": {}, "ELEMENT_1979": {}, "ELEMENT_1980": {}, "ELEMENT_1981": {}, "ELEMENT_1982": {}, "ELEMENT_1983": {}, "ELEMENT_1984": {}, "ELEMENT_1985": {}, "ELEMENT_1986": {}, "ELEMENT_1987": {}, "ELEMENT_1988": {}, "ELEMENT_1989": {}, "ELEMENT_1990": {}, "ELEMENT_1991": {}, "ELEMENT_1992": {}, "ELEMENT_1993": {}, "ELEMENT_1994": {}, "ELEMENT_1995": {}, "ELEMENT_1996": {}, "ELEMENT_1997": {}, "ELEMENT_1998": {}, "ELEMENT_1999": {}, "ELEMENT_2000": {}} \ No newline at end of file diff --git a/applications/FluidDynamicsApplication/tests/sod_shock_tube_test/sod_shock_tube_explicit_OSS_SC_results.json b/applications/FluidDynamicsApplication/tests/sod_shock_tube_test/sod_shock_tube_explicit_OSS_SC_results.json index 211f3e2b2c24..535b0602c471 100644 --- a/applications/FluidDynamicsApplication/tests/sod_shock_tube_test/sod_shock_tube_explicit_OSS_SC_results.json +++ b/applications/FluidDynamicsApplication/tests/sod_shock_tube_test/sod_shock_tube_explicit_OSS_SC_results.json @@ -1 +1 @@ -{"NODE_491": {"DENSITY": [0.9920418357689255, 0.8552447738812659, 0.7135932673316562, 0.6269666499659722, 0.5758934516850233, 0.543551060820484, 0.5213164287923538], "TOTAL_ENERGY": [2.472274191188986, 2.0243784096152453, 1.6127680727822384, 1.3881473860259452, 1.2655264252087157, 1.190503954114538, 1.1403804702419245], "MOMENTUM_X": [0.008819480179509322, 0.1555999107972917, 0.2751463300353447, 0.3302994383215582, 0.3555716353066148, 0.3689389502349129, 0.37679839703001927], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_122": {}, "ELEMENT_154": {}, "NODE_324": {"DENSITY": [0.9999999999999949, 1.0000000000476583, 0.9999999016796, 0.9999501632827531, 0.9980983566791014, 0.9823568490341228, 0.9369691532815759], "TOTAL_ENERGY": [2.4999999999999822, 2.5000000001668035, 2.4999996558786304, 2.4998255765024697, 2.493350427086733, 2.438726939756523, 2.2851455602367707], "MOMENTUM_X": [-6.483936906268684e-15, -5.933657616347471e-11, 1.1484054250315125e-07, 5.874609748135974e-05, 0.002243772383826259, 0.02062308975012453, 0.07160108505653984], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_78": {}, "NODE_720": {"DENSITY": [0.12500000003322406, 0.1250056331077076, 0.1595309238683049, 0.28532036691670176, 0.2717249137548446, 0.30451942111690306, 0.38412043752503044], "TOTAL_ENERGY": [0.2500000000930274, 0.2500157743001636, 0.369731078136827, 0.9780013874382417, 0.8699658535117614, 0.8850551020740886, 0.9234308110223685], "MOMENTUM_X": [1.9181940412894273e-11, 8.360075147765267e-06, 0.053387509711877515, 0.28818579656656085, 0.25052276132497553, 0.2811042278154165, 0.35594858819652625], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_666": {"DENSITY": [0.1249993078033732, 0.18658036608350992, 0.28183006746935185, 0.31370130106871297, 0.40998596946946547, 0.4662633885759447, 0.42614333268802196], "TOTAL_ENERGY": [0.2499980619183777, 0.48484143011063247, 0.9275489522761043, 0.8952284757521956, 0.9351625407090703, 0.9596743835742734, 0.9414084117087982], "MOMENTUM_X": [7.715943088822564e-07, 0.10181497629880495, 0.27312510635848253, 0.2907582889179236, 0.3798078386126364, 0.43210059892458297, 0.3946561239790987], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_558": {"DENSITY": [0.3571551186453918, 0.34671695062018104, 0.3666369291291928, 0.3638332596121618, 0.3721588906680144, 0.3738534798742977, 0.3762390896793362], "TOTAL_ENERGY": [0.8018729470184508, 0.7998859854908232, 0.818658907787238, 0.8258467247609976, 0.8355403008087734, 0.8405234602637286, 0.8449782286291612], "MOMENTUM_X": [0.4212592593578682, 0.3870235539476955, 0.39915130393316806, 0.3918502816706694, 0.39700583520833765, 0.3957444921444983, 0.3957166388289338], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_314": {"DENSITY": [1.0000000000000013, 0.9999999999986401, 0.9999999976187207, 0.9999887087987364, 0.9992866736395637, 0.9904947721978953, 0.9562118723515942], "TOTAL_ENERGY": [2.500000000000005, 2.4999999999952403, 2.4999999916655224, 2.4999604810649028, 2.4975042516175603, 2.46687324617824, 2.3495470379534975], "MOMENTUM_X": [1.5860293594544924e-15, 1.4716250864577923e-12, 2.8712357005439072e-09, 1.3311569550234463e-05, 0.0008418412307411129, 0.01116462235940405, 0.05035210665766354], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1268": {}, "ELEMENT_815": {}, "NODE_57": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, -9.817610644298425e-39, 3.393878323378081e-35, -3.626884777433735e-30, -2.1870574948286695e-27, 2.1382902639451274e-23, -2.171326565929549e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_887": {}, "NODE_652": {"DENSITY": [0.12501346276476952, 0.23734862891706535, 0.27067714002936377, 0.3595197700947542, 0.4539247982896789, 0.4447767570678145, 0.40339403611846536], "TOTAL_ENERGY": [0.2500377072443322, 0.7296038732276624, 0.8256646019310006, 0.9358954869127745, 0.9471298947576541, 0.9530039174229756, 0.9321138959839734], "MOMENTUM_X": [1.8513723435968042e-05, 0.19689253560804731, 0.23838444282382884, 0.3390484708327386, 0.41857479686417526, 0.41297089360150213, 0.3736447548269947], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1417": {}, "ELEMENT_1320": {}, "NODE_1077": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125000000000006], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000169], "MOMENTUM_X": [-7.497766505804919e-44, -1.8818876214168124e-35, -1.2887883644663186e-31, 2.7519909599405182e-27, 2.94623589048001e-23, -8.385717709071193e-20, 2.5226249673961558e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_990": {}, "ELEMENT_2": {}, "ELEMENT_310": {}, "ELEMENT_1562": {}, "ELEMENT_1734": {}, "ELEMENT_423": {}, "NODE_415": {"DENSITY": [1.000000008540363, 0.9998621253328162, 0.991607429944795, 0.9396796918404412, 0.8497258736737044, 0.7680932256148404, 0.7075162071347453], "TOTAL_ENERGY": [2.5000000298912712, 2.49951748186451, 2.4707451346834417, 2.294280076930755, 2.0060639030014844, 1.763647291256442, 1.5955995532136988], "MOMENTUM_X": [-1.9838318209198994e-08, 0.00016204535033248336, 0.00984594606476787, 0.0685487307467014, 0.1607840061445432, 0.23332810654671107, 0.2796846623198045], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1008": {}, "NODE_335": {"DENSITY": [0.9999999999999148, 1.0000000004806389, 0.9999992576095892, 0.9998259905507768, 0.9955662394390549, 0.9699245947836193, 0.9136019449702149], "TOTAL_ENERGY": [2.4999999999997025, 2.5000000016822366, 2.4999974016350435, 2.4993910254348126, 2.484514355998541, 2.3960947430333404, 2.208306798692846], "MOMENTUM_X": [-1.1104501163312869e-13, -5.444821158536795e-10, 8.698115030126291e-07, 0.00020525660562615512, 0.005224219780977674, 0.03488162411676329, 0.09665982215141188], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_66": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999998], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999], "MOMENTUM_X": [-2.8402857088350904e-45, 2.1112785760547483e-36, 1.834522517996871e-32, -1.3597306803689326e-27, -7.495661540730483e-24, 3.4048762024830597e-20, 2.7272090002737314e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_205": {}, "ELEMENT_64": {}, "ELEMENT_1284": {}, "NODE_202": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000004, 0.9999999999995619, 1.0000000004708187, 0.9999999362499008], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000000013, 2.499999999998467, 2.5000000016478663, 2.4999997768746653], "MOMENTUM_X": [-1.977255428007838e-30, 3.062174904208005e-25, 1.14036274333276e-21, -4.869737580147022e-16, 4.0400387243870174e-13, -5.356064951909197e-10, 9.105553748389264e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_247": {}, "NODE_366": {"DENSITY": [0.9999999999694668, 0.9999999824200566, 0.9999093700415524, 0.9960779407809853, 0.9678600944991391, 0.9030292669687009, 0.8291560232859803], "TOTAL_ENERGY": [2.499999999893133, 2.499999938470204, 2.4996828126737127, 2.486299220487007, 2.38907994584454, 2.1741129092814813, 1.9432024818339195], "MOMENTUM_X": [-2.6580667420170005e-11, 2.10928760169394e-08, 0.00010711217978161418, 0.004629151494946648, 0.037257133534131404, 0.10779875852098386, 0.18037378249501998], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_970": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999921, 0.12500000001632444, 0.1249996635296662], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2499999999999978, 0.2500000000457084, 0.24999905788535595], "MOMENTUM_X": [-5.78213706618342e-36, 4.971562270707404e-30, 1.0714756475532681e-25, -2.2143709769603002e-21, -1.0876628682732504e-15, 1.960640860997344e-11, -4.2957551910106936e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_982": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1249999999999998, 0.12500000000379113, 0.12499992849697443], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999944, 0.2500000000106151, 0.24999979979163023], "MOMENTUM_X": [1.4245259707835456e-36, -1.0571054334864092e-30, 1.9573169603678054e-26, -3.11341041494673e-22, -2.2822381145007287e-16, 3.98026851389538e-12, -8.254575992369504e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1386": {}, "ELEMENT_1896": {}, "NODE_233": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999998082, 1.0000000001610805, 0.9999999913489045, 0.999991614826343], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000004, 2.4999999999993294, 2.500000000563783, 2.499999969721167, 2.4999706520358016], "MOMENTUM_X": [1.7366806936062487e-26, 1.591666356394211e-21, -1.0705446851651066e-16, 2.31545870936644e-13, -1.995102071910813e-10, 1.832372032436605e-08, 1.0480238285752388e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_648": {}, "ELEMENT_484": {}, "ELEMENT_681": {}, "ELEMENT_509": {}, "NODE_866": {"DENSITY": [0.125, 0.125, 0.12500000000007186, 0.12499999911171247, 0.1250059598513597, 0.16622017116407348, 0.2761355066189758], "TOTAL_ENERGY": [0.25, 0.24999999999999997, 0.2500000000002011, 0.2499999975127949, 0.250016689477673, 0.39765539098619607, 0.932177230317723], "MOMENTUM_X": [-1.4719476778171037e-23, -7.890972055580465e-18, 1.1178999335610382e-13, -1.6171769829531061e-09, 9.336341345957815e-06, 0.06608829690144111, 0.2698707984100734], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_774": {}, "ELEMENT_1635": {}, "NODE_798": {"DENSITY": [0.12499999999999996, 0.1250000000013802, 0.12499997516563006, 0.12544120989692467, 0.24300746234412704, 0.25246774573143443, 0.2727121158987938], "TOTAL_ENERGY": [0.24999999999999986, 0.2500000000038646, 0.24999993046377192, 0.25123941067459277, 0.7633267330147342, 0.7978412014602144, 0.9016118808151153], "MOMENTUM_X": [5.379047837120653e-17, 1.5809474528979546e-12, -2.449154922898883e-08, 0.0004047885423488082, 0.209594546308933, 0.21751613456563013, 0.2591908565357101], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_770": {}, "ELEMENT_1440": {}, "ELEMENT_1478": {}, "ELEMENT_526": {}, "NODE_911": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000009906, 0.12499999787699584, 0.12501896424606618, 0.18552200894540957], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000027733, 0.24999999405558845, 0.25005311579062084, 0.481167661410868], "MOMENTUM_X": [5.186788795644341e-26, -1.316215664293697e-21, -1.4057342762958732e-18, 1.1737864695233485e-13, -3.300331331198051e-09, 2.582322007942486e-05, 0.10096380265555772], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_543": {"DENSITY": [0.5389098980607296, 0.44922979437207966, 0.42676420339025434, 0.4155702223580253, 0.41750673105348746, 0.4125044207803265, 0.41036239734679086], "TOTAL_ENERGY": [1.1719619619375954, 0.9916949886129575, 0.9373566578683963, 0.9232896308382765, 0.9190967081927923, 0.9131930520200536, 0.9102451908382795], "MOMENTUM_X": [0.39461162363863855, 0.40871671597917614, 0.39832027534056474, 0.3944739407321725, 0.3997456229156578, 0.3965230239355477, 0.39568222470113384], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_27": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 1.2431620540903432e-36, 3.20949813811077e-33, 1.7769429390963033e-28, 7.568718396456285e-26, 1.6090602567118437e-22, -1.3098478529988882e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_28": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000453], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000001594], "MOMENTUM_X": [-5.888156853273181e-39, 1.2108299957484095e-31, 5.632094774536011e-28, 7.130751328218606e-26, 1.8010535862535505e-20, -3.2915281163299997e-18, -5.408967639546893e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_741": {"DENSITY": [0.12499999999997066, 0.12499991841482248, 0.12674180059560183, 0.26899865420908264, 0.2523042661654354, 0.27882200491808246, 0.31394507851547504], "TOTAL_ENERGY": [0.2499999999999179, 0.24999977156161185, 0.2549379980723908, 0.8975657152186207, 0.7907958436974215, 0.894045297364032, 0.8936613286078328], "MOMENTUM_X": [1.2821704598965847e-13, -1.0601440899379423e-07, 0.0016792422025078773, 0.25853293525477794, 0.21520611642415016, 0.2623253768220824, 0.29109529361206615], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1479": {}, "NODE_1041": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002, 0.124999999999767], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000005, 0.24999999999934755], "MOMENTUM_X": [5.061038980565536e-41, 1.0293767015326414e-33, -2.0696863910053107e-29, -4.0379426848045027e-25, 7.465607850761014e-21, 7.170736414352146e-17, -2.251908197286503e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1742": {}, "NODE_1045": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000064, 0.12500000000047828], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000018, 0.25000000000133926], "MOMENTUM_X": [-7.369348407922902e-39, -1.9420690867738021e-32, -4.740418528194126e-28, -1.7388957808847572e-25, 6.021600414744302e-20, 2.551698128386613e-16, 1.6316295705209163e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_49": {}, "ELEMENT_1126": {}, "ELEMENT_504": {}, "NODE_1074": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000544], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000152], "MOMENTUM_X": [-2.3625827025357594e-45, -1.3486181514517563e-36, -1.9042442728993993e-32, 4.090028043659883e-28, 2.087276283936225e-23, 1.3158688461401025e-19, 3.4593439963812627e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1372": {}, "ELEMENT_1717": {}, "ELEMENT_1512": {}, "NODE_384": {"DENSITY": [1.0000000031857947, 0.9999904978724611, 0.9981218170022833, 0.9742024506255712, 0.9076195507724978, 0.8293692440152789, 0.7644099629079404], "TOTAL_ENERGY": [2.5000000111502816, 2.4999667427986756, 2.493432871433497, 2.4107657932191575, 2.189337640543078, 1.9449112556005332, 1.7548035684745427], "MOMENTUM_X": [4.247022277821495e-09, 1.0450340303974178e-05, 0.0022043547727059703, 0.03022884044572949, 0.10393166923684984, 0.1814277951295609, 0.23776990751107346], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_373": {}, "NODE_977": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000713, 0.12499999993846271, 0.12499985058498701], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000002, 0.24999999982769563, 0.2499995816371461], "MOMENTUM_X": [-3.3290589465757563e-34, 1.2977662803251868e-27, 4.8700362333162586e-23, -4.112436135848112e-19, 6.0425692270547145e-15, -5.902212218881725e-11, -3.119467001957527e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1723": {}, "NODE_830": {"DENSITY": [0.125, 0.12500000000000047, 0.12499999997283474, 0.1250000586180401, 0.13150744075623286, 0.28714628011565957, 0.25420731381595263], "TOTAL_ENERGY": [0.25, 0.25000000000000133, 0.24999999992393726, 0.25000016413043574, 0.2691772204752654, 0.9971794400305516, 0.8072017261131174], "MOMENTUM_X": [2.876271275454909e-20, -9.680846365202877e-16, -2.0866138724582288e-11, -8.944567687225443e-08, 0.00779006293853988, 0.29537358490801874, 0.22116337836203287], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_241": {"DENSITY": [1.0, 1.0, 0.9999999999999764, 1.0000000000446592, 0.9999999751731163, 0.9999919168391161, 0.999647892025764], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999174, 2.5000000001563074, 2.4999999131059085, 2.499971709063334, 2.498767833161662], "MOMENTUM_X": [-8.608312572204845e-23, 8.1009391116418365e-19, 2.7797579578276083e-14, -5.2492871441213176e-11, 2.9946680437225133e-08, 9.586031273704728e-06, 0.00041653639780604544], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1473": {}, "ELEMENT_1449": {}, "ELEMENT_123": {}, "ELEMENT_722": {}, "ELEMENT_544": {}, "ELEMENT_1552": {}, "ELEMENT_1568": {}, "NODE_902": {"DENSITY": [0.125, 0.125, 0.12500000000000036, 0.12500000000063566, 0.12499993925727153, 0.12631460649176074, 0.24699240963006586], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000094, 0.25000000000177985, 0.24999982992041145, 0.2537114756300204, 0.7802823020118386], "MOMENTUM_X": [1.2279928554740301e-24, 3.2437036274338167e-20, 1.7773660225028936e-16, -1.4518927657296128e-13, -5.790633682203357e-08, 0.0011519464310311123, 0.21483547836008798], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_172": {}, "ELEMENT_1803": {}, "ELEMENT_1383": {}, "NODE_841": {"DENSITY": [0.125, 0.12499999999999985, 0.12500000000124653, 0.12499995951782084, 0.12604288089886329, 0.2605380405062113, 0.24945324973401034], "TOTAL_ENERGY": [0.25, 0.24999999999999956, 0.2500000000034903, 0.24999988664991954, 0.25294211768057384, 0.8546952223035048, 0.7821714891251252], "MOMENTUM_X": [4.71894649873154e-21, -3.275879470227536e-16, 2.100710114785746e-12, -5.1218351149905845e-08, 0.0009723173821891894, 0.24302505244823325, 0.21111625400705736], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_641": {"DENSITY": [0.12536584952030166, 0.27709469654715085, 0.2899867811372843, 0.41090116096737267, 0.46429293780153436, 0.4144824334343876, 0.4185683341626199], "TOTAL_ENERGY": [0.2510273910933348, 0.9289923685750054, 0.8287215130871314, 0.9494139682200045, 0.9540102295319659, 0.9375786614758507, 0.9394712704629515], "MOMENTUM_X": [0.0002929203099594724, 0.27167013779966553, 0.2545432249057566, 0.3845430051807922, 0.4287547312573491, 0.3840060844809632, 0.38778405036493646], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_212": {}, "ELEMENT_645": {}, "ELEMENT_1960": {}, "NODE_943": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000005, 0.12499999999860952, 0.12499996500319498, 0.12565285261470654], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000014, 0.2499999999961066, 0.24999990200896202, 0.2518369318672172], "MOMENTUM_X": [-1.4483831448891454e-29, -6.115881120442139e-26, 2.824582302744824e-20, 1.8570866237127516e-16, -9.35097518598089e-13, -3.592151823978321e-08, 0.0005965254863901241], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1329": {}, "NODE_1042": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000025, 0.1249999999997505], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000067, 0.24999999999930136], "MOMENTUM_X": [-3.505276521760053e-41, 1.3958765838094881e-33, -5.19446609400992e-29, -5.034452284773548e-25, 1.0480980945723772e-20, 9.617611257570614e-17, -4.025016749255787e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_510": {}, "NODE_639": {"DENSITY": [0.12501735556345323, 0.2727970718782481, 0.27106923266250993, 0.3895896710298764, 0.48184480290140114, 0.4327904077627587, 0.3889697762984666], "TOTAL_ENERGY": [0.2500486218988262, 0.9115338169876164, 0.7910444621836175, 0.9514319038631414, 0.954627521748408, 0.9469794383288055, 0.9216898726898405], "MOMENTUM_X": [2.981275006623899e-05, 0.26534843834263894, 0.22874393595889259, 0.3660773744109465, 0.4411827361433033, 0.39966472975583756, 0.3571336996443045], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_730": {"DENSITY": [0.12500000000249012, 0.12499988576462633, 0.13487371693210853, 0.2888851637014226, 0.26095430288814525, 0.28586753269812215, 0.3464332394965446], "TOTAL_ENERGY": [0.25000000000697237, 0.24999968014073648, 0.27979884614042744, 1.0024945505227305, 0.8307385301863252, 0.8798323124909826, 0.9079650787875906], "MOMENTUM_X": [3.1317755465294075e-12, -2.1318139896053398e-07, 0.012598774038141525, 0.29720073323321955, 0.2322296656581932, 0.2645862602061196, 0.32124775440834485], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1798": {}, "ELEMENT_150": {}, "ELEMENT_287": {}, "ELEMENT_627": {}, "ELEMENT_1395": {}, "NODE_827": {"DENSITY": [0.125, 0.12499999999999965, 0.12500000001240447, 0.12499979113699722, 0.12988037925570278, 0.29471264850211315, 0.24687862824741524], "TOTAL_ENERGY": [0.25, 0.24999999999999903, 0.2500000000347325, 0.2499994151845263, 0.26423705005270687, 1.0484349388719583, 0.7722667309333409], "MOMENTUM_X": [3.0551798781603978e-21, -5.287235972118768e-16, 1.435761679958215e-11, -2.6558793495650715e-07, 0.005884386476797029, 0.31636450072858163, 0.2089639122638196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1394": {}, "NODE_578": {"DENSITY": [0.3523687697189574, 0.43706731841444507, 0.3922684814419825, 0.4042487164635878, 0.4047147626590578, 0.3942049794457479, 0.4019426741796479], "TOTAL_ENERGY": [0.9596186982899142, 0.9016676103006824, 0.8956571304084102, 0.8948609336245349, 0.8894180799278657, 0.8837224848122397, 0.8862013774098877], "MOMENTUM_X": [0.3549681138471762, 0.41725944186950525, 0.38420115657002807, 0.39724321473024143, 0.3992537680044698, 0.3904117500027017, 0.39919451489468694], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_301": {"DENSITY": [1.0, 0.9999999999993172, 1.000000000673291, 0.9999970629735927, 0.999734246411994, 0.995237133704548, 0.9718408639152759], "TOTAL_ENERGY": [2.5000000000000004, 2.4999999999976112, 2.5000000023565185, 2.499989720426803, 2.499069991419034, 2.4833666178154794, 2.402625485169812], "MOMENTUM_X": [4.3955279344859785e-17, 1.0276940432147955e-12, -8.09869424782812e-10, 3.455794181816329e-06, 0.0003136549763125938, 0.005611948573699848, 0.032705408063971306], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_453": {}, "NODE_120": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999991, 1.0000000000004923], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.5000000000017226], "MOMENTUM_X": [-1.0241696611255335e-38, -1.2545429651617626e-33, -1.471045842807811e-27, 5.09303853619915e-24, 6.92058612996682e-20, 1.1907994655427288e-15, -5.961587420889616e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_877": {}, "ELEMENT_976": {}, "NODE_1104": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, -1.0822244859789328e-40, 1.4118115122648827e-37, -9.364768915956577e-32, 1.4923904369927923e-27, 6.137027315155015e-23, -3.243334143918903e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1": {}, "NODE_105": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000022, 1.0000000000007132, 0.9999999956352833], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000000075, 2.500000000002496, 2.499999984723491], "MOMENTUM_X": [8.474567769200951e-32, 4.9436638969139193e-26, -5.776166582344358e-24, -9.479598889309757e-19, -2.2621686493879265e-15, -8.832051799301709e-13, 4.974150368800039e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_941": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000017, 0.12499999999963399, 0.12499997123296012, 0.12564096002890143], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000044, 0.24999999999897515, 0.24999991945229846, 0.25180320092390884], "MOMENTUM_X": [-1.1870398494525364e-30, -1.031760955797722e-25, 7.935391805116577e-21, 4.2929670773130766e-17, 1.3471343082108022e-13, -3.0844873788326105e-08, 0.0005899195386533392], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1718": {}, "ELEMENT_164": {}, "ELEMENT_1385": {}, "ELEMENT_1909": {}, "ELEMENT_941": {}, "NODE_711": {"DENSITY": [0.1250000000878983, 0.1250830781308512, 0.20364222777198762, 0.26946191417884663, 0.2843268399681718, 0.3336880144756053, 0.4254041302615037], "TOTAL_ENERGY": [0.25000000024611535, 0.2502327979993362, 0.5647023512523839, 0.8827804869307455, 0.897444801005689, 0.8988290832852491, 0.9422400626022627], "MOMENTUM_X": [-5.509245493208748e-10, 8.644866671142081e-05, 0.13371858127753614, 0.25205294891951746, 0.2677243452587083, 0.3084722172393904, 0.39455350219467866], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1857": {}, "NODE_18": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000127], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000045], "MOMENTUM_X": [7.572346753195794e-40, 2.08128301955834e-32, 3.3473425081144853e-29, -1.7630712320292876e-25, -1.4506863542001685e-21, 1.812563170908002e-18, -1.533061527629208e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_220": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000003497, 1.0000000000927367, 0.9999995403396674, 0.9999574247162445], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000004, 2.5000000000012244, 2.5000000003245786, 2.4999983911892807, 2.499850989769399], "MOMENTUM_X": [3.451406912543677e-25, -1.530779751238569e-20, -1.6261269370529106e-16, -4.4594156060562176e-13, -8.07363743393821e-11, 5.473278031553898e-07, 5.043289342297435e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_963": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000466, 0.12499999950596948, 0.12500398623757575], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000001305, 0.2499999986167145, 0.25001116228391357], "MOMENTUM_X": [1.2698168239609e-32, 2.17503887859854e-28, -2.641166638107993e-23, -5.939997789517664e-18, 6.213092922336859e-14, -9.55883611924558e-10, 6.171474543576803e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_407": {}, "ELEMENT_1048": {}, "NODE_677": {"DENSITY": [0.12499974686572579, 0.14824991500055187, 0.2912435831227174, 0.2836380488956954, 0.3638869437596064, 0.45240028206176947, 0.4530954011982488], "TOTAL_ENERGY": [0.2499992912247864, 0.32627477073945454, 1.0029675147866646, 0.8548966179789913, 0.9166715562496823, 0.9524385263345044, 0.9541483960831282], "MOMENTUM_X": [-4.2271567897085017e-07, 0.034145357512808165, 0.2994068718290701, 0.2561926351087196, 0.3375164343438178, 0.41896205093225664, 0.4200681889411178], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_459": {}, "ELEMENT_457": {}, "ELEMENT_658": {}, "ELEMENT_1193": {}, "ELEMENT_1844": {}, "ELEMENT_830": {}, "NODE_925": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999989, 0.12500000000221073, 0.12499995242491325, 0.12651316331826068], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2499999999999997, 0.25000000000619005, 0.24999986678982575, 0.25429237251330705], "MOMENTUM_X": [1.7923210113516618e-31, 5.8224646981825645e-27, -2.1874435701436435e-22, -1.5168920662232923e-16, 2.700085744607649e-12, -6.47460984442471e-08, 0.0016100437004203756], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1180": {}, "ELEMENT_181": {}, "NODE_811": {"DENSITY": [0.125, 0.12500000000036288, 0.12499999561367839, 0.1250381690705647, 0.19294396186283008, 0.2671842520956759, 0.2724559493272842], "TOTAL_ENERGY": [0.25000000000000006, 0.25000000000101613, 0.24999998771829995, 0.2501069184150998, 0.5155851156961968, 0.8807481007705743, 0.9060284398348002], "MOMENTUM_X": [-8.262783667248705e-18, 2.989526631283075e-13, -5.4080175199926205e-09, 4.4681438566780116e-05, 0.1145456688007932, 0.24991292893966896, 0.26045634319021116], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1879": {}, "ELEMENT_987": {}, "ELEMENT_1651": {}, "ELEMENT_496": {}, "ELEMENT_1278": {}, "NODE_837": {"DENSITY": [0.125, 0.125, 0.12500000000013045, 0.12499999655087311, 0.12513650337632537, 0.2571152426397511, 0.23054800033454553], "TOTAL_ENERGY": [0.25, 0.25000000000000006, 0.2500000000003654, 0.2499999903424455, 0.2503827884537049, 0.8410131288310823, 0.6821929846276783], "MOMENTUM_X": [-1.5986032170126727e-23, 1.3461679403006248e-17, 2.0217412519673887e-13, -5.631226896809651e-09, 0.00014623404123193055, 0.24036936710922852, 0.17129019441361326], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_572": {"DENSITY": [0.3519546980685994, 0.3229787111136292, 0.3395839166328862, 0.33426426938566123, 0.3449026102825879, 0.3449800943199133, 0.350948154498322], "TOTAL_ENERGY": [0.7627614460542544, 0.7437218244073773, 0.7616229859803414, 0.767225575117107, 0.7806141382295654, 0.7866516874518522, 0.7951119638585075], "MOMENTUM_X": [0.41589123572609876, 0.3855343072104613, 0.4006613385078883, 0.39097907807451904, 0.3986829493423184, 0.3946318462926773, 0.39705641709977757], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_692": {}, "NODE_167": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999988, 1.0000000000020342, 0.9999999986881027, 0.9999995121229139], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999956, 2.5000000000071196, 2.49999999540836, 2.499998292430677], "MOMENTUM_X": [-2.1179599483137205e-28, -1.3069990215250467e-23, 2.1537550157327148e-20, 1.4685891540470803e-15, -2.3777924699334944e-12, 1.5592657417837854e-09, 5.762641751906595e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_583": {"DENSITY": [0.3606879455217898, 0.39102690020410474, 0.37221825956073673, 0.3740026259017603, 0.36420868750434326, 0.36764038882787564, 0.36197679687475315], "TOTAL_ENERGY": [0.8865409525057893, 0.8474519338911929, 0.8301415179744052, 0.8287306746958064, 0.8207965803483324, 0.8214265194053603, 0.8179282302954181], "MOMENTUM_X": [0.36838875806723703, 0.40897575390535706, 0.39719121883287223, 0.4047873306786249, 0.3969261346153069, 0.4018694292753303, 0.39632915027496085], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_267": {"DENSITY": [1.0, 1.0, 0.9999999999993994, 1.0000000007539243, 0.9999995276675395, 0.9999325635167947, 0.998262968887754], "TOTAL_ENERGY": [2.5, 2.5000000000000004, 2.499999999997899, 2.5000000026387355, 2.499998346836892, 2.4997639805994867, 2.493925283573294], "MOMENTUM_X": [1.869229210879403e-21, -1.3810088117433333e-16, 6.796774312526004e-13, -8.650109008954017e-10, 5.680591363104859e-07, 8.004367400205436e-05, 0.0020548407577347114], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_201": {}, "NODE_1033": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000305, 0.1249999999919082], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000855, 0.24999999997734304], "MOMENTUM_X": [-5.404583743823858e-38, -9.241905021152027e-32, -3.787398384493659e-29, 1.953025573172037e-23, 8.275722075849244e-20, 3.579861379382418e-16, 1.2574237472476604e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_362": {"DENSITY": [0.9999999998591447, 0.9999999682035725, 0.9998324425580141, 0.9938846788336186, 0.9583228286409501, 0.890595204408578, 0.8210451100182655], "TOTAL_ENERGY": [2.4999999995070064, 2.4999998887125354, 2.4994136060564696, 2.4786594863473286, 2.356787061229828, 2.1346156136124943, 1.9197500853665566], "MOMENTUM_X": [-1.565778622261869e-10, 4.014544093018913e-08, 0.00019406323572230747, 0.007212063325060039, 0.04842307399087519, 0.12162845501013153, 0.1890091977638044], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1662": {}, "ELEMENT_1295": {}, "ELEMENT_1305": {}, "NODE_658": {"DENSITY": [0.12502341263002398, 0.23485722048825536, 0.279170399130237, 0.356124207630583, 0.446491824248555, 0.4430574426777176, 0.4148351811893091], "TOTAL_ENERGY": [0.25006558501550685, 0.7150486411825602, 0.8661756314733359, 0.9198556121418194, 0.9498965635896884, 0.9489450674604251, 0.9366960247781118], "MOMENTUM_X": [2.913569403920078e-05, 0.19053826240781538, 0.2557349908217313, 0.33244579518690265, 0.4138906237339565, 0.41090170947301974, 0.38476627645363254], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_435": {"DENSITY": [1.0000008577468675, 0.9976379956799718, 0.9612701021235558, 0.8674633266599531, 0.7710681181413801, 0.7003207263864308, 0.6506474538068134], "TOTAL_ENERGY": [2.500003002114292, 2.491743953610977, 2.366795116235341, 2.0613761519106437, 1.7723865568131099, 1.5764680651317482, 1.4470412534422559], "MOMENTUM_X": [-3.399472079380289e-08, 0.0027819161111044873, 0.044655346690747916, 0.14359846208599164, 0.23096643662574348, 0.2848716618664177, 0.31709483804996563], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1704": {}, "NODE_388": {"DENSITY": [0.9999999999894927, 1.000000105723412, 0.999860148847712, 0.9936811292560258, 0.9532333043053844, 0.8749734722089649, 0.7978960953623142], "TOTAL_ENERGY": [2.499999999963225, 2.5000003700319575, 2.4995105614338025, 2.4779500623266864, 2.3395578454569366, 2.0846347256350235, 1.8500471552822244], "MOMENTUM_X": [-3.103992862212149e-12, -1.225938110164775e-07, 0.00016793492860164597, 0.007517607174682009, 0.05412958531841725, 0.1372206265126373, 0.20941091467632356], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1982": {}, "NODE_355": {"DENSITY": [1.0000000000033082, 1.0000000087724012, 0.9999785900328296, 0.9984631718458764, 0.9818920860790364, 0.9301991121802835, 0.8590189072951759], "TOTAL_ENERGY": [2.5000000000115783, 2.500000030703404, 2.4999250661578265, 2.4946253282564186, 2.437134202038391, 2.262781306614586, 2.0347109771600715], "MOMENTUM_X": [4.453790271230714e-12, -1.1251541537818904e-08, 2.5280410202957375e-05, 0.001816341771357639, 0.02117869150780433, 0.07899405797178807, 0.15207771660840305], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_536": {"DENSITY": [0.6665685391255588, 0.5185986658600468, 0.47498778793060226, 0.4578027060870246, 0.4441127367756096, 0.4373857651244835, 0.43205146543265355], "TOTAL_ENERGY": [1.473976371249189, 1.1388091537308367, 1.045290283303403, 1.00255584537508, 0.978001953084326, 0.9633529844570311, 0.9527334435380135], "MOMENTUM_X": [0.25268583422806284, 0.3744880211415151, 0.38704198740043916, 0.3932898459787733, 0.393153038496352, 0.39479675783255763, 0.39512326642034024], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_639": {}, "NODE_197": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000002927, 1.000000000492662, 0.9999997700402948], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000001024, 2.500000001724316, 2.499999195141143], "MOMENTUM_X": [-2.6868019330520595e-29, -1.8198627203843155e-24, 1.3960621844617382e-19, 7.130510501120721e-17, -3.850738956836676e-13, -5.738481891485574e-10, 2.7651239120383284e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_959": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1249999999999951, 0.12500000011588427, 0.12499792650153894], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2499999999999863, 0.250000000324476, 0.2499941942172791], "MOMENTUM_X": [-2.367507150519431e-34, 1.2525797701404035e-28, -2.9989357138382198e-24, 5.175859893890033e-20, -5.948550403032058e-15, 8.734109308104624e-11, -1.5081681736595247e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_199": {}, "ELEMENT_1428": {}, "ELEMENT_1387": {}, "NODE_580": {"DENSITY": [0.351920741822975, 0.4372019648182102, 0.39387884246018123, 0.40640637981959465, 0.4011039366698103, 0.39809147138870526, 0.4000044235300195], "TOTAL_ENERGY": [0.9576537070356937, 0.9059987880949941, 0.8931677160162075, 0.8973294046263192, 0.890061570271029, 0.8870161692684235, 0.886690222192817], "MOMENTUM_X": [0.3544371889649181, 0.41858517107887055, 0.38451204047132426, 0.39947133627300385, 0.3958817134192754, 0.394063145553698, 0.3969196721348531], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_868": {"DENSITY": [0.125, 0.125, 0.12500000000008155, 0.12499999902324815, 0.12500465581442974, 0.1760269176838364, 0.2675704112281159], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000002284, 0.24999999726509498, 0.2500130397111467, 0.43864763490617664, 0.88233910660173], "MOMENTUM_X": [-9.196659636305428e-23, -8.931020102915514e-18, 1.5217293810213819e-13, -2.0199875992267766e-09, 1.2189396580157231e-05, 0.08390269537389243, 0.24967950698589192], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_754": {"DENSITY": [0.12499999999991304, 0.12499998387327332, 0.12519773944001308, 0.22319045332773635, 0.2596805414406748, 0.27583143152335127, 0.29208067875863636], "TOTAL_ENERGY": [0.2499999999997565, 0.24999995484516924, 0.2505545297877648, 0.6614307559187845, 0.834899635071841, 0.9026328027570263, 0.8819414474510651], "MOMENTUM_X": [9.43168924290608e-14, -1.5273477867744796e-08, 0.00018922250778988773, 0.17116955339835727, 0.23236995914132783, 0.2619722029591783, 0.27023326938968545], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1557": {}, "ELEMENT_1738": {}, "ELEMENT_864": {}, "NODE_1066": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002146], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000601], "MOMENTUM_X": [-8.643628771409458e-43, 4.910070570025867e-35, 1.603044591263508e-30, 2.0516458897693195e-26, -1.9267068746587253e-22, -2.9714017106832624e-18, 5.411645319997099e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1500": {}, "NODE_458": {"DENSITY": [0.9999613608321082, 0.9805969841204748, 0.8878859213429237, 0.7732142278592339, 0.6899625742091877, 0.6347777499759428, 0.5967123892836604], "TOTAL_ENERGY": [2.4998647671267658, 2.432735518230743, 2.1260308913103363, 1.7787076361846226, 1.5489498575474145, 1.4070083315958943, 1.313857861702333], "MOMENTUM_X": [3.0770794214679454e-05, 0.022659436032703636, 0.12296040425067292, 0.2289219326311567, 0.29172364140567025, 0.3261397071358474, 0.3462651457223014], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_150": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000004692, 0.9999999995917518, 0.9999998353264337], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.500000000001642, 2.499999998571131, 2.4999994236425738], "MOMENTUM_X": [-5.345835384759503e-29, -7.805348726495694e-24, -7.353564648340594e-21, 2.7495194700755477e-16, -5.509085246137135e-13, 4.788816513972302e-10, 1.9432413223548775e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_464": {}, "NODE_737": {"DENSITY": [0.12500000001672665, 0.12500092738901344, 0.14791204882028988, 0.272899241422523, 0.2697515320338333, 0.2928382554323357, 0.3650573447396508], "TOTAL_ENERGY": [0.25000000004683465, 0.25000259678121445, 0.3249388634425576, 0.9153630226875229, 0.8776763654031553, 0.8779493385151315, 0.9153367571692607], "MOMENTUM_X": [7.815029899426175e-12, 9.50007496706251e-07, 0.03447893555817942, 0.264589626025343, 0.2521278761194666, 0.2708517599723932, 0.33942879075996263], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_455": {"DENSITY": [0.9999592004265149, 0.9808179655890928, 0.8883305750759767, 0.7735264735406641, 0.6900712297357944, 0.6347355823757945, 0.5965861211436123], "TOTAL_ENERGY": [2.4998572053474883, 2.4334980418565744, 2.127465365900719, 1.7796940860078414, 1.5493702505575266, 1.4070287363109146, 1.3135437047856218], "MOMENTUM_X": [2.5275682909273596e-05, 0.022504790869376186, 0.12269654169370718, 0.22905904977555933, 0.29207439814167996, 0.3265971442767608, 0.3467645239135458], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_822": {}, "ELEMENT_826": {}, "ELEMENT_1928": {}, "ELEMENT_1006": {}, "ELEMENT_197": {}, "NODE_1076": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000522], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001465], "MOMENTUM_X": [-2.7104252464382483e-44, -8.434758271735665e-36, -6.176961406158116e-32, 2.236378007564364e-27, 2.5005009767284852e-23, -1.0161182850296512e-19, 2.829441645201448e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1107": {}, "ELEMENT_1884": {}, "ELEMENT_751": {}, "NODE_290": {"DENSITY": [1.0, 0.9999999999998284, 1.0000000003938216, 0.9999994094296031, 0.9999132640313103, 0.9978154347135284, 0.98297292185156], "TOTAL_ENERGY": [2.5, 2.4999999999994, 2.500000001378377, 2.49999793300444, 2.499696438329894, 2.4923619455195243, 2.440845801691575], "MOMENTUM_X": [-8.189601549714877e-17, 2.1224173728108022e-13, -4.635375891808526e-10, 6.941888946269251e-07, 0.00010233544872034533, 0.002577816555825477, 0.019914602302123587], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_15": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000001], "MOMENTUM_X": [-6.820534910128963e-44, -4.0079547451304065e-35, -4.5080213368853045e-32, -1.034846080475963e-27, 1.1339492332336761e-23, 5.075514586631011e-20, -2.54772321547387e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_920": {}, "ELEMENT_325": {}, "ELEMENT_25": {}, "ELEMENT_1710": {}, "NODE_873": {"DENSITY": [0.125, 0.125, 0.12500000000000133, 0.12499999998185177, 0.1249999602335847, 0.13794566347149795, 0.28624116787110954], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000038, 0.249999999949185, 0.24999988865443099, 0.28998465010046115, 0.9895180536711364], "MOMENTUM_X": [-1.1113223562028656e-24, 2.2038841291451208e-20, 2.403203769073754e-16, -2.3001816123958895e-11, -9.017705702074272e-08, 0.017277198691531576, 0.29156096232439094], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_749": {"DENSITY": [0.12500000000000427, 0.12500000090154975, 0.12499592884348207, 0.207779737929224, 0.2561305106319708, 0.2852491941884114, 0.2779351508224327], "TOTAL_ENERGY": [0.250000000000012, 0.25000000252433935, 0.2499885993765772, 0.5882119701756584, 0.8150490150921701, 0.9628341993646382, 0.8588253239991206], "MOMENTUM_X": [-3.028101668011213e-15, 1.8089903802878187e-10, 6.6593742076270766e-06, 0.14648891824298907, 0.2236241559808118, 0.2830994321417196, 0.25162980584468403], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1085": {}, "NODE_947": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999997616, 0.1250000005363256, 0.12499220276822988], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999993325, 0.2500000015017117, 0.24997816730127187], "MOMENTUM_X": [-5.79442072129958e-34, 1.096593239132786e-28, -6.712105371784085e-24, 4.442265324189862e-19, -2.046143374932645e-14, 2.758350922182492e-10, -2.5824886155600228e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_445": {}, "NODE_673": {"DENSITY": [0.12499985656701952, 0.14450036074506178, 0.2941971360032201, 0.27924356426735925, 0.3584837556155182, 0.4676065222999558, 0.4575273320208525], "TOTAL_ENERGY": [0.24999959838829003, 0.3131947866277771, 1.0281564443889357, 0.8596192439792654, 0.9083631992501618, 0.9609302004649614, 0.9563264169346433], "MOMENTUM_X": [-2.0560256244522396e-07, 0.02991056742762483, 0.3095874588993746, 0.25497238661066934, 0.3316826191044233, 0.43427086615789035, 0.4249381447743762], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_814": {}, "ELEMENT_501": {}, "ELEMENT_535": {}, "ELEMENT_341": {}, "ELEMENT_1032": {}, "NODE_799": {"DENSITY": [0.1249999999999999, 0.12500000000111927, 0.12499997331784811, 0.12543448873553006, 0.24261595467154043, 0.25332725604691564, 0.27164423159053835], "TOTAL_ENERGY": [0.24999999999999972, 0.2500000000031339, 0.24999992528998327, 0.2512205013929503, 0.7610804375775304, 0.8027192062687637, 0.896171679190337], "MOMENTUM_X": [1.1184273179035615e-16, 1.3501455956689689e-12, -2.5764122124752585e-08, 0.0003972246551803788, 0.2086151188483614, 0.2194714886217447, 0.2571752087186825], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_794": {}, "ELEMENT_590": {}, "NODE_113": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000004, 1.000000000000648, 0.9999999981694065], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000001, 2.5000000000022675, 2.499999993592923], "MOMENTUM_X": [-1.4198927620573864e-32, 5.735586738232214e-28, -1.821903508200991e-23, -6.956536143844658e-20, -3.4825338036285913e-16, -7.655475591382268e-13, 2.156237818384449e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_319": {"DENSITY": [0.9999999999999591, 1.0000000000599132, 0.9999999093816583, 0.9999506006037225, 0.9980577794690981, 0.9818047737197438, 0.9356064231348096], "TOTAL_ENERGY": [2.4999999999998574, 2.5000000002096967, 2.4999996828358335, 2.4998271071915874, 2.4932087501355835, 2.4368265360933234, 2.2806361289341406], "MOMENTUM_X": [-4.920848377138471e-14, -7.141072162071716e-11, 1.0773416534073677e-07, 5.884740162868812e-05, 0.0023026453214460762, 0.021287541666666996, 0.07306989265881492], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_167": {}, "ELEMENT_967": {}, "ELEMENT_1219": {}, "NODE_956": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000039233, 0.12499999194050467, 0.12509181713862816], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000109857, 0.24999997743341465, 0.2502573647214141], "MOMENTUM_X": [3.590203132354599e-30, -4.652141749595893e-25, -3.3371148904120147e-21, 1.950920803880071e-17, 3.234550728308811e-13, -1.0097482422483662e-08, 0.00010448042713702713], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1864": {}, "NODE_564": {"DENSITY": [0.3932408208345269, 0.37031153657125454, 0.3634866643807405, 0.3782258313449995, 0.36826836544342173, 0.3754493695981923, 0.3750421593313936], "TOTAL_ENERGY": [0.9001450220360161, 0.8325199744561084, 0.8188310375333417, 0.8358839745313628, 0.8319013152791018, 0.8374076432715412, 0.8403326197059974], "MOMENTUM_X": [0.41981613833360903, 0.39336807295063175, 0.38374460074179373, 0.39987673747517993, 0.3880757267877422, 0.39466816007369876, 0.39313481424231717], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_529": {"DENSITY": [0.6668325580928465, 0.5251552815699394, 0.4816804201315362, 0.46190349980865014, 0.44723967647051455, 0.43843044676678045, 0.43536383104998144], "TOTAL_ENERGY": [1.4765840661216358, 1.1451270996361163, 1.05803749807528, 1.0076667154713221, 0.9844144607330296, 0.9676654230381763, 0.9572967685089478], "MOMENTUM_X": [0.2566326849652224, 0.37260425780547907, 0.3893941664715341, 0.39352192555644117, 0.39444727398669716, 0.3947647292075917, 0.39750493176388624], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_44": {}, "NODE_16": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000226], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.50000000000008], "MOMENTUM_X": [2.9999928230778235e-39, 7.192466010004103e-32, 1.4056894364990378e-28, -4.516334003224386e-25, -1.4577426466041119e-21, 3.758159459697327e-18, -2.6330655902054943e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1095": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999994], "MOMENTUM_X": [0.0, 3.4056055567633927e-39, 5.609014159411399e-35, 2.1560421956660142e-30, -7.934562486249664e-26, -2.7738077883168607e-21, -1.4938614974136633e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_770": {"DENSITY": [0.12499999999993601, 0.12499999368437244, 0.1250908042986772, 0.19916843915796048, 0.2597391818071644, 0.2694644128690147, 0.2849051800695055], "TOTAL_ENERGY": [0.2499999999998208, 0.24999998231624376, 0.25025443075526416, 0.5433304723116454, 0.8410063405767016, 0.8816877860363713, 0.8812062208254786], "MOMENTUM_X": [6.892261610067079e-14, -7.575839088495669e-09, 8.430483675923818e-05, 0.1259722279534723, 0.2350772261749445, 0.2527497007263, 0.2651441872880984], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_620": {"DENSITY": [0.14307155560207682, 0.3045250899503436, 0.3937990902949665, 0.460490684714401, 0.42297059045258956, 0.41789948176727976, 0.43389484636516157], "TOTAL_ENERGY": [0.3080579686218315, 0.949663452897382, 0.9255116787593017, 0.9548296404762909, 0.939500032197067, 0.9372259453902353, 0.9444637336928011], "MOMENTUM_X": [0.02600640697194861, 0.2976497917467926, 0.36428608585424976, 0.42612066544348537, 0.39152243680909793, 0.386708301568711, 0.4015699784254214], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_919": {}, "ELEMENT_912": {}, "ELEMENT_1962": {}, "ELEMENT_1378": {}, "NODE_281": {"DENSITY": [1.0, 0.999999999999986, 1.0000000000728488, 0.9999999301275033, 0.9999773081918513, 0.9991224298024287, 0.9905217664267911], "TOTAL_ENERGY": [2.5, 2.4999999999999516, 2.500000000254971, 2.499999755446275, 2.4999205796788693, 2.496929813533923, 2.466965044233755], "MOMENTUM_X": [-4.497515051681089e-19, 1.1091452522890194e-14, -8.519905237001975e-11, 8.269864218741508e-08, 2.679044714666732e-05, 0.0010361889608508509, 0.011136913659809317], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1150": {}, "ELEMENT_255": {}, "ELEMENT_1096": {}, "ELEMENT_393": {}, "NODE_678": {"DENSITY": [0.12499971559177483, 0.14831079424157487, 0.29056718080780675, 0.28503406187524594, 0.3635475607845056, 0.4529938696013316, 0.4508166157899208], "TOTAL_ENERGY": [0.24999920365805844, 0.32651149687269615, 0.9993869134986981, 0.8622820145170526, 0.9134090284741286, 0.9531682682700746, 0.9522814868904014], "MOMENTUM_X": [-4.4206300448404314e-07, 0.03429597122273613, 0.2980382859307786, 0.25938069385379786, 0.3364956979605992, 0.41969410717675076, 0.41770366497011585], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_389": {}, "NODE_909": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.12500000000012257, 0.1249999979728719, 0.12501996729728582, 0.18276649314968899], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.25000000000034334, 0.24999999432404155, 0.2500559229962904, 0.469517067960807], "MOMENTUM_X": [1.2929100798484506e-26, -5.064972330059286e-22, -9.48010792968837e-18, 1.330020407589176e-13, -3.118231344864458e-09, 2.6097837829833002e-05, 0.09601790237114755], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_529": {}, "NODE_689": {"DENSITY": [0.12499994893393129, 0.13039824264598818, 0.28406730455582974, 0.2661202271649306, 0.3248413749415237, 0.41767692524608646, 0.4658624679898524], "TOTAL_ENERGY": [0.24999985701507085, 0.26576381125039666, 0.9738989737715869, 0.823062913464874, 0.9012208144799442, 0.9369915614500859, 0.9600499436546047], "MOMENTUM_X": [-6.439478663669595e-08, 0.0063227387980134275, 0.2876598713432709, 0.23437717052654075, 0.30186648380832737, 0.3867390389484529, 0.43210272859938814], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1063": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002479], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000694], "MOMENTUM_X": [-1.5769891909892362e-43, -1.2211307189966685e-35, 1.267262036185705e-31, 7.050989784714909e-27, -3.125251995663677e-23, -1.3470944734227073e-18, 4.30709980771125e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_581": {}, "NODE_193": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998617, 1.0000000000976295, 0.9999999949812256], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000000004, 2.4999999999995155, 2.500000000341702, 2.4999999824342893], "MOMENTUM_X": [6.3639146061295805e-31, 9.453475298325108e-26, -5.769401386374804e-21, -1.1896148714443812e-16, 1.551770278626014e-13, -1.1777902587408584e-10, 9.676029962436107e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_569": {"DENSITY": [0.395296374059268, 0.37298094387177894, 0.36691796947446004, 0.3779535194908932, 0.37024008634940747, 0.3778127570863481, 0.37472250038109256], "TOTAL_ENERGY": [0.9159281848479321, 0.8282950022978747, 0.8294413803881514, 0.8398535069087345, 0.8371069356561923, 0.842969173507391, 0.8430554853391315], "MOMENTUM_X": [0.42664263306605726, 0.39301441491703154, 0.38759658980794925, 0.3997943652096573, 0.39069382565063543, 0.3975416405647635, 0.39336041693892276], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1467": {}, "ELEMENT_432": {}, "ELEMENT_1652": {}, "ELEMENT_820": {}, "ELEMENT_1339": {}, "NODE_410": {"DENSITY": [0.999999989278182, 0.9998522739268735, 0.9915968628297377, 0.9405358923831908, 0.8515990445195475, 0.7699328313163518, 0.7087243854133379], "TOTAL_ENERGY": [2.4999999624736384, 2.499483009922919, 2.470710536961644, 2.297171595143754, 2.0119826798958895, 1.7691224465095847, 1.5990747665087472], "MOMENTUM_X": [-5.6107718835724883e-08, 0.00017603757968049646, 0.009900763649410524, 0.06776081769818747, 0.15921453041929012, 0.2320694486837463, 0.2790537070757253], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_564": {}, "NODE_29": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000409], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000143], "MOMENTUM_X": [-3.2498722486978956e-39, 5.899536955222581e-32, 3.143677281187983e-28, 7.930522168085586e-26, 1.4867137880264702e-20, -5.838452764036289e-18, -4.858988253965213e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_840": {"DENSITY": [0.125, 0.12499999999999982, 0.1250000000033453, 0.1249999472490735, 0.1261038763618965, 0.26181185056744705, 0.2485767356376835], "TOTAL_ENERGY": [0.25, 0.2499999999999995, 0.25000000000936684, 0.24999985229745134, 0.25311508280916917, 0.8609833969963423, 0.7773878818924267], "MOMENTUM_X": [1.2140437325970584e-21, -2.4064769256515493e-16, 3.5790746707094173e-12, -6.083221683405492e-08, 0.0010032761811151064, 0.24475621817771617, 0.20903489379232976], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_422": {"DENSITY": [1.0000001164204322, 0.9993575475283444, 0.9808310985022367, 0.9078285001197886, 0.8120581220974871, 0.734766361306431, 0.6791534261396547], "TOTAL_ENERGY": [2.500000407471537, 2.4977522976742224, 2.433510343734897, 2.1898277462570217, 1.892129712797175, 1.670161725804404, 1.5205595929447866], "MOMENTUM_X": [-1.6338896566739972e-07, 0.0007611333990174209, 0.02240273363263494, 0.1027406904947484, 0.19587467962001243, 0.259963825549974, 0.29937559581555395], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_790": {"DENSITY": [0.12500000000000014, 0.12499999998553946, 0.12499990568285578, 0.12877409783642646, 0.274970488910381, 0.2610515204667991, 0.26714437400046975], "TOTAL_ENERGY": [0.25000000000000033, 0.24999999995951042, 0.2499997359120128, 0.260890812617251, 0.9288653804018034, 0.8443762952460604, 0.8638744147218872], "MOMENTUM_X": [-2.3216404727651035e-16, -2.7164938031481032e-12, -1.8122652572612488e-07, 0.004247651251015833, 0.26948636158956735, 0.23586019348032092, 0.24555352164084449], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_607": {}, "ELEMENT_1167": {}, "ELEMENT_1152": {}, "NODE_530": {"DENSITY": [0.6683121904990957, 0.5180798848112829, 0.4730400372194485, 0.4541517537814687, 0.4426493674310146, 0.4339897699272272, 0.43001574692361705], "TOTAL_ENERGY": [1.4810576057026639, 1.1367779977141421, 1.043113817549764, 0.9968148342173517, 0.9737362548496016, 0.9579576423941599, 0.9480177131341777], "MOMENTUM_X": [0.25598387600059797, 0.37316304651996607, 0.38645926470427605, 0.39129189795037905, 0.393682010203508, 0.39358754598301604, 0.3952138477732824], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_165": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000289, 1.0000000000424232, 0.9999999536265327], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000001017, 2.500000000148482, 2.49999983769287], "MOMENTUM_X": [2.0814658453633125e-30, 9.611969669376945e-26, -1.0685751356795634e-20, 1.336453598925208e-17, -3.938736712806903e-14, -4.684419807534014e-11, 5.5515585891023784e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_110": {}, "NODE_360": {"DENSITY": [1.0000000000011968, 1.0000000113295124, 0.9999841551281924, 0.9985919673875763, 0.9820124042027991, 0.9291171481927649, 0.8569928480126413], "TOTAL_ENERGY": [2.500000000004189, 2.5000000396532944, 2.4999445435155567, 2.495075376048592, 2.4375426784850327, 2.259166741149255, 2.0283238696774477], "MOMENTUM_X": [1.2730955156156284e-12, -1.3225558594583036e-08, 1.871053824130803e-05, 0.0016610382556298997, 0.02101609515394604, 0.08012071112995699, 0.15397199861522104], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1465": {}, "ELEMENT_1015": {}, "ELEMENT_462": {}, "NODE_930": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000033, 0.12499999997371852, 0.12500000920056015, 0.12941654168855865], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000916, 0.24999999992641175, 0.25000002576138514, 0.26280768372155755], "MOMENTUM_X": [-4.43080406486853e-29, 1.760143518348293e-24, 1.4938687945744223e-19, 1.815984651366457e-15, -1.5995141808902105e-11, -1.097390962207937e-07, 0.0050178495577862655], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1495": {}, "ELEMENT_1439": {}, "ELEMENT_85": {}, "ELEMENT_59": {}, "ELEMENT_715": {}, "ELEMENT_324": {}, "ELEMENT_79": {}, "NODE_24": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000633], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000222], "MOMENTUM_X": [-3.894289634951951e-38, 1.1815835095366326e-31, 1.0351378139095052e-27, 2.1961458326929556e-24, 3.9244048085155194e-20, -2.9311097442778706e-17, -7.614757326436101e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1681": {}, "ELEMENT_854": {}, "NODE_97": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000003058, 0.9999999996681652], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000010707, 2.499999998838579], "MOMENTUM_X": [-1.9613519866535147e-33, -4.826087524918444e-28, -6.85041851227634e-24, 2.6420765588244248e-20, 1.9199677384820116e-16, -3.5904255151009647e-13, 3.9071999324738197e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_587": {}, "NODE_522": {"DENSITY": [0.8366480261891144, 0.6062402693972497, 0.5349376374979645, 0.4970973143624172, 0.47473011199461307, 0.46288404360093255, 0.45295200514309897], "TOTAL_ENERGY": [1.9725758517079832, 1.3318593734804909, 1.1685318789719576, 1.085193648318207, 1.041063170549975, 1.0138496169884275, 0.9943449397726974], "MOMENTUM_X": [0.1862124526899588, 0.3390725746543863, 0.37706074450653143, 0.3852519106823252, 0.3886520537748288, 0.39234591257666424, 0.3931248257117195], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1828": {}, "NODE_1110": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, 2.5691343362024834e-38, 1.0051467709499014e-34, 1.0414427957101122e-29, 7.354549993718374e-26, -1.240567868426385e-21, -1.3489699985056352e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1937": {}, "ELEMENT_1664": {}, "NODE_445": {"DENSITY": [1.000000145399909, 0.9991902941399448, 0.9734802523354864, 0.8806448327971613, 0.7746374836542554, 0.69774387204982, 0.6453909594862532], "TOTAL_ENERGY": [2.5000005088997677, 2.497167393793768, 2.4082502202913174, 2.101972688984847, 1.780485897465733, 1.5667376775273616, 1.430675287363351], "MOMENTUM_X": [-2.2737961229647785e-07, 0.0009890505589116268, 0.03050073793499771, 0.12905628707847672, 0.22640496318893116, 0.28546680249894, 0.3194848191029813], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_452": {}, "ELEMENT_1388": {}, "ELEMENT_897": {}, "ELEMENT_1172": {}, "ELEMENT_420": {}, "ELEMENT_1726": {}, "ELEMENT_1407": {}, "ELEMENT_541": {}, "ELEMENT_296": {}, "NODE_107": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000002809, 0.9999999998767493], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000984, 2.4999999995686237], "MOMENTUM_X": [-1.5210258258743153e-34, 2.1906715238164663e-29, -4.264588489276402e-24, 9.168917152590814e-21, 2.23107901496031e-16, -3.293394473117452e-13, 1.479480934514368e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1759": {}, "ELEMENT_811": {}, "ELEMENT_1310": {}, "ELEMENT_1868": {}, "ELEMENT_1012": {}, "ELEMENT_104": {}, "ELEMENT_937": {}, "NODE_432": {"DENSITY": [1.0000010799655925, 0.9976642814159193, 0.9613684541826263, 0.8676541891040227, 0.7717120575777501, 0.7011113713572965, 0.6512913288386315], "TOTAL_ENERGY": [2.5000037798796106, 2.4918357350470437, 2.367132995809102, 2.0620219277129306, 1.7743487437720755, 1.5787159334896066, 1.4487874914198369], "MOMENTUM_X": [1.6280042137193677e-07, 0.0027518944387068507, 0.04462351668797556, 0.14356349428786283, 0.2305963074076468, 0.2844404240363761, 0.31677996855123286], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1050": {}, "NODE_1052": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000016867], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000004724], "MOMENTUM_X": [7.869987471665739e-42, 9.621354397228187e-35, 1.9394222966842245e-30, -8.563622962265721e-26, -1.6705129073351507e-21, 6.296285097472174e-19, 1.3357295650978484e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_924": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000594, 0.12499999914282335, 0.12500875495416366, 0.166305621191635], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000001663, 0.24999999759990546, 0.25002451652731367, 0.39732630660803], "MOMENTUM_X": [1.0750209849686515e-26, -3.3756231558158452e-22, -6.563618575816016e-18, 9.250406148474149e-14, -1.2065905257542643e-09, 9.959820757619665e-06, 0.06692578269771349], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1882": {}, "NODE_387": {"DENSITY": [1.0000000011123908, 0.999995506193683, 0.998893458964491, 0.9812817780829782, 0.9206523859709336, 0.8390809259210781, 0.7685201676721266], "TOTAL_ENERGY": [2.500000003893368, 2.4999842717383816, 2.4961294501306135, 2.4350445530923386, 2.2314734592657546, 1.9734629518491162, 1.7649958744515186], "MOMENTUM_X": [1.4310760971923335e-09, 5.262849125818532e-06, 0.00131123821927461, 0.021905451618319135, 0.08926051376719418, 0.17111486010670646, 0.23322440637080044], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_728": {}, "ELEMENT_606": {}, "ELEMENT_336": {}, "ELEMENT_930": {}, "NODE_270": {"DENSITY": [1.0, 1.0000000000000009, 1.0000000000080462, 0.9999999925651389, 0.9999941032430665, 0.9996664314474449, 0.9951165168462157], "TOTAL_ENERGY": [2.5, 2.5000000000000027, 2.500000000028161, 2.4999999739779866, 2.4999793614215773, 2.4988327047939083, 2.4829455128288824], "MOMENTUM_X": [2.1564490994445567e-19, -2.6976377054326507e-16, -9.5007032510897e-12, 8.881682404213325e-09, 6.963941396577443e-06, 0.0003939775630687472, 0.005754490482543677], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_177": {}, "ELEMENT_1769": {}, "NODE_180": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000001072, 1.0000000001458675, 0.9999998884854476], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000003757, 2.5000000005105365, 2.4999996096990937], "MOMENTUM_X": [-1.9679844495269777e-31, 6.477785527890604e-26, -6.876892538860668e-21, 2.9134183256232574e-17, -1.5013337589140057e-13, -1.600280140500793e-10, 1.3424161781081187e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1472": {}, "NODE_145": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999996, 1.000000000000525, 0.9999999995559724, 0.9999998027655613], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.500000000001837, 2.499999998445903, 2.499999309679548], "MOMENTUM_X": [-2.4711096549078257e-28, -1.4547266951205004e-23, 4.7902492505808135e-21, 4.197086430196641e-16, -6.483476561368293e-13, 5.400487269366903e-10, 2.3618451208862828e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_429": {"DENSITY": [1.0000013932237652, 0.9973768255226847, 0.9575724791281267, 0.8621871320948518, 0.7693428837630311, 0.7014784540420925, 0.6531997466005433], "TOTAL_ENERGY": [2.5000048762836964, 2.4908323819008755, 2.354292176433214, 2.044836766253821, 1.767318846978798, 1.579343989351663, 1.4532445296616867], "MOMENTUM_X": [1.2575716948305326e-07, 0.003082302386776486, 0.048476330477862026, 0.14773313018626918, 0.23108591931162412, 0.2828094265439069, 0.31451296631828096], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1724": {}, "ELEMENT_230": {}, "ELEMENT_1235": {}, "ELEMENT_664": {}, "ELEMENT_917": {}, "ELEMENT_1951": {}, "ELEMENT_1498": {}, "ELEMENT_1120": {}, "ELEMENT_816": {}, "NODE_882": {"DENSITY": [0.125, 0.125, 0.12499999999999986, 0.1250000000030528, 0.12499994408226221, 0.12647485523994648, 0.2819560282226135], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999958, 0.25000000000854783, 0.24999984343040638, 0.2541771277234289, 0.9790249074905706], "MOMENTUM_X": [1.4474492049659924e-26, 2.098743948985479e-21, -1.6813420311586232e-16, 3.169969686225796e-12, -6.480977666424123e-08, 0.0014486915622473732, 0.2913611058146637], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_365": {"DENSITY": [0.9999999999565559, 0.9999999893215091, 0.9999111094409466, 0.9960938745436413, 0.9677636966155142, 0.9028289614365324, 0.8292050669295741], "TOTAL_ENERGY": [2.4999999998479447, 2.4999999626252873, 2.499688900026918, 2.486354860275742, 2.388753993159795, 2.1734816827559182, 1.9433844038880281], "MOMENTUM_X": [-4.144542705118153e-11, 1.4905176088546922e-08, 0.00010533966615123807, 0.004618001457416145, 0.03739361227181615, 0.1080303160431074, 0.1803124891250692], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_663": {"DENSITY": [0.12499836694714316, 0.1876449897694524, 0.27543573282031747, 0.31666892392584534, 0.41457861245184946, 0.4674980532140524, 0.4133005245998118], "TOTAL_ENERGY": [0.2499954274602314, 0.49048343029113883, 0.8966748926002234, 0.9150211482384113, 0.9304716843565464, 0.9627836457284117, 0.935019306437271], "MOMENTUM_X": [-7.214703065938606e-07, 0.10492776498328246, 0.2600091614295415, 0.29849086770290106, 0.38241033290029197, 0.4342141190339758, 0.3825942829326399], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_985": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000067, 0.12499999999595762, 0.12499996355138536], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000183, 0.24999999998868125, 0.24999989794389096], "MOMENTUM_X": [-1.0532359735067557e-34, 4.565047673364014e-30, -4.910923560715095e-25, 5.672530502634739e-20, 2.0199707737390802e-16, -6.953029151069104e-13, -6.122191857613278e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1489": {}, "ELEMENT_129": {}, "ELEMENT_1984": {}, "ELEMENT_1041": {}, "ELEMENT_1532": {}, "ELEMENT_949": {}, "NODE_1087": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000075], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000216], "MOMENTUM_X": [0.0, -1.2448337735280612e-37, -6.061161450633282e-33, -2.3541425415337664e-28, -3.5525124559809597e-25, 3.6214349306145794e-20, 5.890168999915752e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1838": {}, "ELEMENT_1130": {}, "NODE_716": {"DENSITY": [0.12499999999872553, 0.12499838701781998, 0.1448732150854543, 0.30105582464126773, 0.2674760400303491, 0.28613845092545004, 0.36410721060107415], "TOTAL_ENERGY": [0.24999999999643155, 0.24999548368773813, 0.3145033515367758, 1.0685899365789364, 0.8605937018649462, 0.859347761912713, 0.917119558746805], "MOMENTUM_X": [-4.622136402554337e-13, -1.7208701501799297e-06, 0.03053747151200416, 0.3215296321493567, 0.2443917838587993, 0.2584168259812504, 0.3366410722940494], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_225": {}, "NODE_372": {"DENSITY": [1.0000000000011366, 1.0000000378024607, 0.9999474858030897, 0.9967754117644402, 0.9693262208234474, 0.9026288018352489, 0.8270278755490328], "TOTAL_ENERGY": [2.5000000000039777, 2.5000001323086143, 2.4998162061829845, 2.4887315321665047, 2.394055004641689, 2.1727333671281146, 1.9366467690399145], "MOMENTUM_X": [2.2392194540030532e-12, -4.309187215250885e-08, 6.228426282611363e-05, 0.003806234926281407, 0.03561590435666065, 0.108371009945427, 0.18259224116270312], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1880": {}, "ELEMENT_761": {}, "NODE_139": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999785, 1.00000000001923], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999245, 2.5000000000673044], "MOMENTUM_X": [2.6308554160052846e-36, -1.6586997989614353e-30, 1.3456012667145335e-25, -1.6673538034063596e-21, -5.420200734662899e-18, 2.5031095292068004e-14, -2.2856385351459946e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1258": {}, "ELEMENT_846": {}, "ELEMENT_1249": {}, "ELEMENT_1966": {}, "ELEMENT_1197": {}, "NODE_104": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000178, 1.0000000000034202], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000626, 2.500000000011971], "MOMENTUM_X": [4.799568744489561e-36, 2.906157328069184e-30, 1.5850469775920778e-25, 5.93332183718488e-22, 4.05860926599565e-18, -2.1701060737011445e-14, -3.4934327449232375e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_189": {}, "NODE_717": {"DENSITY": [0.1250000000058848, 0.12499797280905273, 0.15548488459558546, 0.28625442211170576, 0.27341575970642534, 0.293836357139739, 0.3821988770069603], "TOTAL_ENERGY": [0.2500000000164774, 0.24999432386675774, 0.3551661703336645, 0.9891364735200794, 0.8919935276814942, 0.8659814582826862, 0.9251752439740392], "MOMENTUM_X": [7.05053078991493e-12, -1.4346878190431607e-06, 0.049910973304440324, 0.29346997300131755, 0.25873768806422454, 0.2680551384270152, 0.3553486481790135], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1292": {}, "ELEMENT_486": {}, "ELEMENT_1790": {}, "NODE_649": {"DENSITY": [0.12642750400777256, 0.2721604065222084, 0.3135293028526992, 0.4219789520493716, 0.4477451161369332, 0.42179116976604986, 0.4365893794276425], "TOTAL_ENERGY": [0.25403934876112877, 0.8977577748381091, 0.8787155885695384, 0.9381770803057268, 0.9545809674508823, 0.943310380708513, 0.9508010153626409], "MOMENTUM_X": [0.0012282617875935338, 0.2607191999721792, 0.28859405059809606, 0.39239052729154406, 0.4178467280493173, 0.39381973339395815, 0.40805186222955436], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_671": {}, "NODE_143": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000326, 0.9999999999969951, 0.9999999736605951], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000001146, 2.499999999989483, 2.4999999078120845], "MOMENTUM_X": [1.2821670343133633e-30, 1.0936181553154972e-25, -6.172346231558785e-23, 7.931594511129341e-18, -3.9070763217209366e-14, 4.308653994658427e-12, 3.117323823210429e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1701": {}, "ELEMENT_470": {}, "ELEMENT_279": {}, "ELEMENT_1690": {}, "NODE_869": {"DENSITY": [0.125, 0.12499999999999999, 0.1250000000002368, 0.12499999628586428, 0.1250503056685464, 0.19050445814937678, 0.2596531666338128], "TOTAL_ENERGY": [0.25, 0.24999999999999994, 0.250000000000663, 0.24999998960042027, 0.2501409162777683, 0.5032902426939143, 0.8420319728530958], "MOMENTUM_X": [1.0073473689233167e-21, -1.3802363096170669e-17, 3.1690835143957847e-13, -4.8651304089603e-09, 4.958926890082885e-05, 0.11032820735856522, 0.2353167604012162], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_282": {"DENSITY": [1.0, 0.9999999999999976, 1.0000000000442049, 0.9999999662098558, 0.9999825580058886, 0.9992276379300271, 0.9909977363749982], "TOTAL_ENERGY": [2.5, 2.4999999999999916, 2.5000000001547167, 2.4999998817344973, 2.4999389536190377, 2.4972977455649907, 2.4686169688253394], "MOMENTUM_X": [-1.0135019598141183e-20, 1.4611063515042947e-15, -5.248843617318913e-11, 4.083657809770886e-08, 2.065861875639154e-05, 0.0009128883218690266, 0.010585968320645655], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_331": {"DENSITY": [1.0000000000000018, 0.9999999999890267, 1.0000000050278017, 0.9999753183966921, 0.9986060090608836, 0.9842246919676827, 0.9383275716692311], "TOTAL_ENERGY": [2.500000000000006, 2.499999999961594, 2.5000000175973063, 2.4999136156354393, 2.4951243325727552, 2.445165446156366, 2.2896215941969795], "MOMENTUM_X": [2.416325185899491e-15, 1.0832407002255599e-11, -4.273457154452434e-09, 2.934226611265576e-05, 0.0016487650005954989, 0.018491842676847906, 0.07027467061524245], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_913": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000040454, 0.12499999103607835, 0.12514161997643697, 0.20742119588436922], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.2500000000011326, 0.24999997490102085, 0.2503969395763763, 0.582370687760626], "MOMENTUM_X": [3.11470703122738e-25, -5.3880475904357596e-21, 1.8434667338609027e-18, 3.9772210599538534e-13, -1.00537547139462e-08, 0.00012467196253344463, 0.14092772095280925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1108": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, -1.8352231895533058e-39, 1.117959664435291e-35, 3.281560463480953e-30, 5.974832826432455e-26, -7.697823898093269e-22, -6.483073084847984e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_856": {"DENSITY": [0.125, 0.12499999999999996, 0.12500000000039627, 0.12499999054267744, 0.1251105865052336, 0.21416193170702563, 0.26017022638096454], "TOTAL_ENERGY": [0.25, 0.2499999999999999, 0.2500000000011095, 0.24999997351949846, 0.25030997256425547, 0.6159787925271439, 0.8420327517251427], "MOMENTUM_X": [5.9902290628643554e-21, -2.3362315086057565e-17, 1.42481751137913e-13, -1.0002158369420048e-08, 0.0001120155495640964, 0.15347951748391664, 0.23448847796491257], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_189": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999988, 1.000000000018773, 0.9999999538255107, 0.9999935914670395], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999996, 2.500000000065706, 2.499999838389293, 2.4999775702123914], "MOMENTUM_X": [2.185131332602414e-26, 7.931125448811807e-22, -1.2407181481911011e-18, 8.316497858407301e-16, -2.131309718794297e-11, 5.455341785751045e-08, 7.56835282396991e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_740": {"DENSITY": [0.12499999999985245, 0.12499991929907635, 0.12654645372576204, 0.2719117911056666, 0.24733754031731517, 0.27776906123201395, 0.3116771618562857], "TOTAL_ENERGY": [0.24999999999958686, 0.24999977403754148, 0.2543780840361994, 0.9161708950454125, 0.7655772778177573, 0.8934479332064176, 0.8932745784986367], "MOMENTUM_X": [-1.6794245772703437e-14, -9.259653466019037e-08, 0.001459846321429047, 0.2660835656009536, 0.20538185690645505, 0.26154237120475116, 0.28930695544309], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1820": {}, "ELEMENT_24": {}, "ELEMENT_1919": {}, "NODE_212": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999098, 1.0000000000992275, 0.999999960961245, 0.9999915245144329], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999684, 2.500000000347296, 2.4999998633643603, 2.4999703359354295], "MOMENTUM_X": [1.505283778834982e-26, 9.442448839496837e-22, -5.644850540578753e-17, 1.0244485450386133e-13, -1.1521871060947095e-10, 4.751135660290297e-08, 1.008698534320848e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_159": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999989, 1.0000000000017624, 0.9999999973525948, 0.9999993535656486], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999964, 2.500000000006169, 2.499999990734082, 2.499997737480628], "MOMENTUM_X": [-1.5912333174444614e-27, -1.924713451465457e-23, -9.04626851207307e-21, 1.2978966044417392e-15, -2.137662855131067e-12, 3.1302084248995774e-09, 7.678861914645344e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_394": {}, "NODE_923": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000002084, 0.12499999982174301, 0.12499911375589956, 0.1537650313119827], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000584, 0.24999999950088048, 0.24999751855847246, 0.34730031702749586], "MOMENTUM_X": [2.1031999268810594e-27, -5.181923681032873e-23, -2.537818523801944e-18, 3.913517588754047e-14, -4.030270261677284e-10, 6.213549912186316e-07, 0.044812382347474845], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_514": {"DENSITY": [0.9264621964297344, 0.6937789170763714, 0.5893231776626834, 0.5370582833672921, 0.5081998600732757, 0.48884849704627387, 0.4754914425221333], "TOTAL_ENERGY": [2.2525542703167596, 1.560212709560248, 1.2982448918717824, 1.1780662637546002, 1.1118893434127335, 1.070403711393013, 1.042180670511823], "MOMENTUM_X": [0.08956186445434457, 0.28765248009299677, 0.34845462999881216, 0.3703281448641347, 0.3806845080465665, 0.3856214669033979, 0.3886003837034937], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1382": {}, "NODE_576": {"DENSITY": [0.3518374064911028, 0.43598700330046336, 0.39349977729202384, 0.40044260403710963, 0.4046006487023658, 0.3922429037110014, 0.39809304572512316], "TOTAL_ENERGY": [0.9565565093078001, 0.9037736708329197, 0.8925097477043842, 0.8887907872640423, 0.8880202987973614, 0.8801888478043757, 0.8814891717928756], "MOMENTUM_X": [0.353631699500099, 0.4177647620842892, 0.38539331514523734, 0.39428987218759837, 0.40032142820715966, 0.38986758816846684, 0.39647167794600097], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1302": {}, "ELEMENT_767": {}, "ELEMENT_1869": {}, "NODE_356": {"DENSITY": [0.9999999999999625, 1.0000000004029175, 0.9999995637923539, 0.9997655844242318, 0.9935389264295105, 0.9584630070378409, 0.8908949012863044], "TOTAL_ENERGY": [2.499999999999868, 2.5000000014102106, 2.4999984732738567, 2.4991796500814867, 2.4774536174347275, 2.3571640098280624, 2.135055349689673], "MOMENTUM_X": [-5.722765116710482e-14, -4.900363443048031e-10, 5.365420812946955e-07, 0.00028068554373115594, 0.007677708719279095, 0.04820584324099958, 0.12101183930916296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_714": {"DENSITY": [0.12500000025947172, 0.1251107444919322, 0.2121204688659468, 0.2644101585277659, 0.2842742493651398, 0.340609714655312, 0.4265491193464217], "TOTAL_ENERGY": [0.2500000007265208, 0.25031046562528303, 0.6033952021954183, 0.8559442573092199, 0.8905036045059234, 0.9043846566049342, 0.94070643131697], "MOMENTUM_X": [-4.169438332730764e-10, 0.00012117717555372837, 0.14806417246827625, 0.24041051035566038, 0.2654918874959467, 0.3151880311257468, 0.3946831125562641], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_79": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 1.0000000000006726], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.500000000002355], "MOMENTUM_X": [-8.831086866857471e-39, -9.344068940806196e-32, -2.09987421549966e-27, -1.8658640113966222e-23, -3.889829822809008e-20, 5.605578165435635e-16, -7.845064282731192e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_787": {}, "ELEMENT_474": {}, "ELEMENT_1091": {}, "ELEMENT_392": {}, "ELEMENT_42": {}, "ELEMENT_499": {}, "ELEMENT_1987": {}, "ELEMENT_1683": {}, "NODE_166": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999922, 1.0000000000055875, 0.9999999999654492], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999973, 2.500000000019556, 2.499999999879071], "MOMENTUM_X": [-1.0206348586733185e-33, -3.296130012514536e-27, 1.858474846981005e-22, 1.24259956478749e-18, 9.202689433830923e-15, -6.7187275578347666e-12, 7.985387384005965e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1607": {}, "NODE_764": {"DENSITY": [0.12500000000000294, 0.12499999848153381, 0.12501667069550312, 0.17459137094700336, 0.2770654604795275, 0.271142988427239, 0.278134228079959], "TOTAL_ENERGY": [0.2500000000000082, 0.2499999957482947, 0.250046687816983, 0.4328733071773825, 0.9343868372633842, 0.8900237619792438, 0.869980589468911], "MOMENTUM_X": [-8.510038517955534e-15, -2.2457361649306044e-09, 2.191633739566512e-05, 0.08041233989067742, 0.27086667567140765, 0.25512504970627015, 0.25588873484982355], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_316": {"DENSITY": [1.0000000000000007, 0.9999999999965794, 1.0000000029582228, 0.9999914825247475, 0.9993698997708418, 0.990919869556803, 0.9565639528850349], "TOTAL_ENERGY": [2.500000000000002, 2.4999999999880282, 2.50000001035378, 2.4999701889911825, 2.497795345297128, 2.4683482339543996, 2.3507259049511546], "MOMENTUM_X": [6.628059484979587e-16, 3.996116808164166e-12, -3.2421071357625433e-09, 1.008557845774994e-05, 0.0007444314009958076, 0.010673385139986082, 0.049991133433927366], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1783": {}, "ELEMENT_159": {}, "ELEMENT_1110": {}, "ELEMENT_54": {}, "ELEMENT_1855": {}, "ELEMENT_1536": {}, "ELEMENT_1485": {}, "NODE_37": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0000000000000584], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000004, 2.5000000000002034], "MOMENTUM_X": [-2.818930885873841e-37, -8.851476434351596e-31, -2.529111450825447e-27, 1.3928493669727083e-23, 5.612715734450942e-20, -2.436108655944783e-16, -6.38173221118621e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_707": {"DENSITY": [0.1250000002619865, 0.12505547416147056, 0.20590152923711208, 0.2612321803539017, 0.28700635485470943, 0.3324300761352415, 0.43385262909989053], "TOTAL_ENERGY": [0.25000000073356216, 0.25015541321341594, 0.5768516929405387, 0.839190291103581, 0.9204123515496025, 0.8934696378264261, 0.9471149805066208], "MOMENTUM_X": [6.907999079218154e-11, 5.774108211804024e-05, 0.1392245004641785, 0.23444026958754488, 0.2757339700522982, 0.30613805687610673, 0.40287860510815193], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_862": {}, "ELEMENT_1215": {}, "ELEMENT_1686": {}, "NODE_414": {"DENSITY": [1.0000000059768217, 0.9998482701161002, 0.991445323584364, 0.9399682110669229, 0.8507374693351685, 0.7689725886104297, 0.7079612641257098], "TOTAL_ENERGY": [2.5000000209188777, 2.499468998021227, 2.470183333411261, 2.2952607950944364, 2.0092310557506377, 1.7662077135734995, 1.596825969175302], "MOMENTUM_X": [-2.9786437324710997e-08, 0.00017854659994534858, 0.010039550553140417, 0.06821688534354399, 0.1597478319472675, 0.23251343897244514, 0.27926885826413905], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1590": {}, "ELEMENT_281": {}, "ELEMENT_369": {}, "ELEMENT_1891": {}, "NODE_53": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999], "MOMENTUM_X": [-1.6651688694050742e-44, -3.5724986886079307e-36, -2.194501040124181e-34, -3.678917603797622e-27, -8.315123003624335e-24, 4.824113159483695e-20, 3.1028166733275003e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_653": {}, "ELEMENT_234": {}, "ELEMENT_1617": {}, "ELEMENT_1029": {}, "NODE_46": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 6.921893014170503e-38, -4.374983400143494e-34, 4.45699390620677e-29, 1.5447549175908835e-25, -8.033326168980007e-22, 3.692188764941791e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_303": {"DENSITY": [1.0, 0.9999999999991609, 1.00000000126918, 0.9999975460886529, 0.9997511085926946, 0.9953127285801592, 0.9717236790529559], "TOTAL_ENERGY": [2.5, 2.4999999999970632, 2.5000000044421307, 2.499991411323752, 2.499128992694413, 2.483629878312454, 2.402221208409147], "MOMENTUM_X": [-8.427129512371055e-17, 1.1093165526813528e-12, -1.4730432417230777e-09, 2.8933870666954e-06, 0.00029377716465196703, 0.005522012673248448, 0.032835868547732835], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_12": {}, "NODE_915": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999734, 0.12500000005330644, 0.12499893268266, 0.14440392647533917], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2499999999999925, 0.25000000014925805, 0.24999701152614892, 0.3131795482855774], "MOMENTUM_X": [-9.846834021572958e-30, 5.277756175685208e-25, 5.1738704331615864e-21, -3.615238159585093e-15, 5.558787572191113e-11, -1.119341890761536e-06, 0.03005599908071479], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_308": {"DENSITY": [1.0000000000000058, 1.00000000000092, 0.999999993367153, 0.9999872575565477, 0.9992415822153261, 0.9901308120153571, 0.9553512363776911], "TOTAL_ENERGY": [2.5000000000000204, 2.50000000000322, 2.4999999767850354, 2.4999554018040544, 2.4973465700928186, 2.4656118329464585, 2.346659022254176], "MOMENTUM_X": [6.635958270215246e-15, -4.786611865370221e-12, 7.846365001010512e-09, 1.5185358542415312e-05, 0.0009006861820080694, 0.011615193072384417, 0.05132361537046631], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1460": {}, "ELEMENT_1994": {}, "ELEMENT_1115": {}, "NODE_457": {"DENSITY": [0.9999602546116917, 0.9807596277321438, 0.88824654158693, 0.7733420282377714, 0.6898358377967191, 0.6345415344908343, 0.596451145025638], "TOTAL_ENERGY": [2.499860895133983, 2.4332967868030755, 2.12719213165877, 1.7791215247083116, 1.5486801701301425, 1.406477125831707, 1.3132202334155163], "MOMENTUM_X": [2.749246127301743e-05, 0.022534201183227888, 0.12271344526620631, 0.22905602153630886, 0.2920632307506945, 0.3265298829451454, 0.3466470980974085], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_889": {}, "NODE_657": {"DENSITY": [0.12502500162491326, 0.2347697671412033, 0.2790724738686196, 0.35525950613091994, 0.44839985223256257, 0.4493149881716322, 0.4132711444251642], "TOTAL_ENERGY": [0.2500700351442804, 0.7148306418986117, 0.8644499940657718, 0.9195895455583178, 0.9491128527270524, 0.953449797434795, 0.9368194424013814], "MOMENTUM_X": [3.0331426890927506e-05, 0.1908458791651899, 0.2555203484882314, 0.3317437894792171, 0.41511595706053195, 0.41710892290526247, 0.383365434116624], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1047": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999042], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999999732], "MOMENTUM_X": [-4.1885272083966606e-45, -1.1009827739287826e-36, 9.150310672707859e-33, -6.4546705079584015e-28, 2.7733099318003626e-23, -3.2319057615940706e-19, -4.323434117620209e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1243": {}, "ELEMENT_1539": {}, "NODE_592": {"DENSITY": [0.2839869316247551, 0.43879769249814393, 0.4332423900162962, 0.41567172073051833, 0.42800372206374676, 0.417762245560863, 0.4223878063013056], "TOTAL_ENERGY": [0.8639205958747734, 0.9390707262620982, 0.9423275018139199, 0.9328717393059174, 0.9347986543886, 0.9285775902521162, 0.9287925070058899], "MOMENTUM_X": [0.26424068174089543, 0.4081941417114735, 0.4059613429868277, 0.3894947159626978, 0.40152036337818864, 0.39300261808604625, 0.3984536463572218], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_686": {}, "ELEMENT_1996": {}, "ELEMENT_545": {}, "ELEMENT_1894": {}, "ELEMENT_1749": {}, "NODE_875": {"DENSITY": [0.125, 0.125, 0.12500000000001124, 0.1249999998938516, 0.12500036099923054, 0.13680470366085368, 0.29022643015268496], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000314, 0.24999999970278447, 0.2500010108041048, 0.28622291204166983, 1.014332628293562], "MOMENTUM_X": [-6.94747987903975e-24, -4.530966330876913e-20, 1.0805010181773617e-14, -1.3011201188581777e-10, 2.858875997021119e-07, 0.015722352198080044, 0.3018298176102292], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_247": {"DENSITY": [1.0, 1.0, 0.9999999999998641, 1.0000000001967273, 0.9999997177842507, 0.9999626976681287, 0.9989791405831746], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999995244, 2.5000000006885457, 2.4999990122450564, 2.499869444426547, 2.496428721408381], "MOMENTUM_X": [-1.256039142107517e-22, -6.730774982943504e-17, 1.5614792548012974e-13, -2.2597387837497234e-10, 3.3394681776817766e-07, 4.4075774011177485e-05, 0.0012057878075112803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_134": {}, "NODE_285": {"DENSITY": [0.9999999999999998, 0.9999999999999006, 1.000000000580368, 0.9999993415243627, 0.9998960362176447, 0.9973870108574232, 0.9804819641069464], "TOTAL_ENERGY": [2.499999999999999, 2.4999999999996514, 2.5000000020312876, 2.499997695336386, 2.499636147515842, 2.4908658199726434, 2.432260801626483], "MOMENTUM_X": [-3.4594754826126564e-16, 4.556607592225651e-13, -6.981631689711402e-10, 7.986119873265738e-07, 0.00012366271639378413, 0.0030792467881169796, 0.02269718377863997], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_783": {}, "NODE_818": {"DENSITY": [0.125, 0.12500000000000208, 0.12499999982507044, 0.12500146092926057, 0.15295712137745185, 0.2820582322219258, 0.26902317998529185], "TOTAL_ENERGY": [0.25, 0.25000000000000583, 0.24999999951019714, 0.2500040908000828, 0.3442817125728653, 0.9646139306005814, 0.888095869984611], "MOMENTUM_X": [-7.604619243037645e-20, 3.819257718438465e-15, -3.0592146484335994e-10, 2.6745153998362532e-06, 0.04211764487334127, 0.28187698788014465, 0.25304946110324816], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_94": {}, "NODE_293": {"DENSITY": [1.0, 1.000000000000002, 0.9999999999929298, 1.0000000074830733, 0.9999978619660191, 0.9997495575014868, 0.9951941374422778], "TOTAL_ENERGY": [2.5, 2.5000000000000075, 2.499999999975254, 2.5000000261907562, 2.4999925168928088, 2.499123564144949, 2.4832153056927595], "MOMENTUM_X": [6.287876669880197e-20, -2.4761150239857034e-15, 7.54078664693157e-12, -8.313841821606586e-09, 2.8269490496910907e-06, 0.0003027756653885467, 0.0056551919544908765], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_905": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000003567, 0.12499999953911725, 0.12501057261521642, 0.18747863074441132], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000998, 0.24999999870952816, 0.2500296088116029, 0.4917934157221582], "MOMENTUM_X": [-9.219097801550836e-30, -2.961925647179491e-23, -1.5595629509633117e-18, 4.680132286888171e-14, -9.652934386008307e-10, 1.5872794001849573e-05, 0.10561306856032503], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_862": {"DENSITY": [0.125, 0.125, 0.12500000000004152, 0.12499999947850544, 0.12500599222127692, 0.1677321031660826, 0.27355738593859286], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000001163, 0.24999999853981533, 0.25001678023281765, 0.40385306682048155, 0.9167138766804234], "MOMENTUM_X": [-4.515750427556083e-24, -7.263252621359144e-19, 4.977585206496036e-14, -8.782445469696699e-10, 9.556826763316808e-06, 0.06799894089984862, 0.26321892236591354], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_413": {}, "ELEMENT_1955": {}, "ELEMENT_1641": {}, "ELEMENT_1083": {}, "NODE_243": {"DENSITY": [1.0, 1.0, 1.0000000000000004, 0.9999999999989924, 1.0000000009020051, 0.9999998611028972, 0.9999689169238302], "TOTAL_ENERGY": [2.5, 2.5, 2.500000000000002, 2.499999999996474, 2.5000000031570186, 2.4999995138602027, 2.4998912110875016], "MOMENTUM_X": [2.2421911032777894e-25, 4.068913118266899e-22, -7.285729137613134e-16, 1.096572752434971e-12, -1.048389314098751e-09, 1.9921572472402635e-07, 3.8230924395820826e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_534": {"DENSITY": [0.6662149731965669, 0.5189922500670063, 0.4740257724687523, 0.4565205214039073, 0.4435977344386142, 0.43537805032042903, 0.43154920081268394], "TOTAL_ENERGY": [1.4739110889539822, 1.138623319376909, 1.0425524454745334, 0.9999283459455776, 0.9762377987591752, 0.9607651097016452, 0.9508094880531766], "MOMENTUM_X": [0.2538708181879299, 0.37591140650433064, 0.3866772988225958, 0.3927643598729224, 0.3935229714596181, 0.3937866790494091, 0.3955069373540539], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_416": {"DENSITY": [1.0000000061104326, 0.9998968344091944, 0.9924010007907227, 0.9411321014390368, 0.8497488781367133, 0.7671646976345462, 0.7064568558797942], "TOTAL_ENERGY": [2.500000021386514, 2.4996389448711653, 2.4735008931034206, 2.2990920259609475, 2.0061021868437163, 1.7610100689322552, 1.5928161054304968], "MOMENTUM_X": [-9.168279441433215e-09, 0.00012176535746239543, 0.00893406211087781, 0.06710645679640016, 0.1611497934493158, 0.23460461252055548, 0.280965744469449], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_693": {"DENSITY": [0.12499986795688998, 0.13928287566511624, 0.2737206454595602, 0.27785926398516414, 0.34142184634666256, 0.4322472583300618, 0.44463770375991024], "TOTAL_ENERGY": [0.24999963027968009, 0.29436249938558645, 0.9175076084132944, 0.8699730725129097, 0.900320649187511, 0.9458022286983827, 0.9516729573613278], "MOMENTUM_X": [-1.644874196301111e-07, 0.01990955291013439, 0.2660347688055394, 0.2569015040054837, 0.3163661529351631, 0.4023570248483237, 0.41408629437128314], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_901": {}, "NODE_284": {"DENSITY": [0.9999999999999996, 0.999999999999801, 1.0000000009902537, 0.9999987124296355, 0.999838343674576, 0.9965199619725142, 0.9769684337321786], "TOTAL_ENERGY": [2.4999999999999987, 2.4999999999993037, 2.5000000034658885, 2.499995493507489, 2.4994342509522123, 2.487839764973413, 2.4201995244883463], "MOMENTUM_X": [-5.222108429215802e-16, 9.529583647960725e-13, -1.146471321183766e-09, 1.4668822067285906e-06, 0.00018871699161454554, 0.004108891346573738, 0.02703984833934371], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_624": {}, "ELEMENT_442": {}, "NODE_844": {"DENSITY": [0.125, 0.12500000000000042, 0.12499999999652674, 0.12499995670652868, 0.1260113354405912, 0.25840130769445463, 0.2539571764351057], "TOTAL_ENERGY": [0.25, 0.2500000000000011, 0.24999999999027495, 0.2499998787783026, 0.2528531484196957, 0.8427618635510978, 0.8073941728488343], "MOMENTUM_X": [2.9212888174456287e-20, -3.4522169237492956e-16, -1.443961888783107e-12, -5.12500420377958e-08, 0.0009489572410603723, 0.23836964151218598, 0.2211847411354884], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_867": {"DENSITY": [0.125, 0.125, 0.1250000000000678, 0.12499999912978314, 0.12500504949427046, 0.16873052441771344, 0.27266877615421725], "TOTAL_ENERGY": [0.25, 0.24999999999999997, 0.2500000000001898, 0.24999999756339267, 0.2500141404276787, 0.4080515119935686, 0.9121883543454564], "MOMENTUM_X": [5.808933129233064e-23, -7.592838043577923e-18, 1.141086855768203e-13, -1.6138186640529858e-09, 8.799751333443416e-06, 0.07093398632458223, 0.26189919080772117], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_938": {}, "ELEMENT_1410": {}, "NODE_555": {"DENSITY": [0.3568383150682661, 0.3463793757961018, 0.3658350445481965, 0.3660532141352332, 0.3679932505954336, 0.3757731220068834, 0.37235074000612073], "TOTAL_ENERGY": [0.799922397657452, 0.8068831588885859, 0.813084304388058, 0.8274908790324277, 0.8314644220102679, 0.8395602246983845, 0.8406728437408366], "MOMENTUM_X": [0.42077477776976374, 0.38908760330061026, 0.3976984719306039, 0.39502976987613414, 0.39334184784179843, 0.39861606211495704, 0.39272314362401], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_142": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999963, 1.0000000000037763, 0.9999999988234143], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999987, 2.500000000013217, 2.49999999588195], "MOMENTUM_X": [-6.107672291236164e-33, -1.4079518995029169e-27, 7.414861844025277e-23, 2.709673875603064e-19, 4.219547927435535e-15, -4.43433770391824e-12, 1.4397999232030853e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_589": {"DENSITY": [0.2869028966685959, 0.4333630206004409, 0.44154960325828946, 0.4055351433599227, 0.4320623247642429, 0.4199549066971683, 0.4199964834344173], "TOTAL_ENERGY": [0.8776314865499819, 0.9110438311979372, 0.9537540111928218, 0.9250247474055874, 0.9374680122464466, 0.9306764632881989, 0.9306024411506123], "MOMENTUM_X": [0.2702852577222614, 0.395046761941165, 0.4158600802470975, 0.3783766613547064, 0.4044240283219225, 0.39377681543365495, 0.3944517555953122], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_126": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999999, 1.0000000000010847, 0.9999999995830144], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.500000000003797, 2.4999999985405514], "MOMENTUM_X": [-1.5743070052237305e-33, -2.6462115837253637e-28, -6.578070117821929e-24, -1.2060078280129266e-21, 1.083805207358119e-15, -1.2717672539784528e-12, 5.047535227247401e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1055": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000002573], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000007205], "MOMENTUM_X": [1.3819536150025049e-40, 1.5207150563503375e-33, 7.432921565966709e-30, -2.6892313391004704e-25, -1.631666186096382e-21, 6.341996971839823e-18, 2.812241135802173e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_35": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000007, 0.9999999999999404], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000002, 2.4999999999997913], "MOMENTUM_X": [-1.0488197229709063e-36, -3.214188933179881e-30, -8.336758864739226e-27, 2.8086457979419164e-23, 1.214381408344583e-20, -6.860005732289003e-16, 4.173401527804495e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_11": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 8.33205135285407e-37, -2.53300555113774e-33, 2.6048042618593224e-29, -3.792336382423144e-25, -2.236748704870841e-21, 1.6374249406823172e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1010": {}, "ELEMENT_923": {}, "ELEMENT_1784": {}, "ELEMENT_1133": {}, "NODE_460": {"DENSITY": [0.9999765114449723, 0.9813808950510484, 0.88721609256225, 0.7711284855770125, 0.6884986874559552, 0.6341184810794942, 0.5965648126824384], "TOTAL_ENERGY": [2.499917792129921, 2.435418109595218, 2.1237937405788965, 1.7726133837702867, 1.5450705980855315, 1.4054532079038715, 1.3136455261644222], "MOMENTUM_X": [2.2791996229658537e-05, 0.021697238946494307, 0.12388990177539265, 0.23110477905256702, 0.29324119484404026, 0.3269909376598276, 0.3467357168501029], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1299": {}, "ELEMENT_1671": {}, "ELEMENT_1986": {}, "ELEMENT_208": {}, "ELEMENT_277": {}, "NODE_127": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000047, 1.0000000000007794, 0.9999999925532391], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000017, 2.5000000000027276, 2.499999973936337], "MOMENTUM_X": [8.063344583819127e-32, 3.57836763614512e-26, 4.0837803564617707e-22, -1.2114753711752132e-18, -5.673609765415064e-15, -8.271614915064698e-13, 8.78769829185938e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1788": {}, "NODE_497": {"DENSITY": [0.9713824113875978, 0.7806706254314452, 0.6521109102383673, 0.5833993336837334, 0.5427608843333888, 0.5158345921954633, 0.49751154294119687], "TOTAL_ENERGY": [2.4012536528437245, 1.8021902740764573, 1.4504530794243187, 1.280996677990658, 1.1864816015815396, 1.1278907957184865, 1.0885763811986342], "MOMENTUM_X": [0.030291811573586312, 0.2247892018118175, 0.31552343317596443, 0.3537320563389634, 0.3704307398456136, 0.37859811062244336, 0.3835336450692551], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1813": {}, "ELEMENT_289": {}, "NODE_19": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 2.8438476834733952e-36, 1.2217632875678428e-32, 2.525098449193297e-28, 2.1096623978748665e-25, 2.586304433142415e-21, -5.4377824179038485e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1004": {}, "NODE_966": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000224, 0.12499999954443305, 0.12500210899760641], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000006267, 0.24999999872441253, 0.2500059057141372], "MOMENTUM_X": [2.1066995790000774e-31, 1.4554953011772546e-27, -4.725066624192032e-22, -1.7506249622447156e-18, 6.079820512783649e-14, -9.528829985496073e-10, 4.368628336965952e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_918": {}, "NODE_207": {"DENSITY": [1.0, 1.0, 0.9999999999999989, 1.000000000002872, 0.9999999970933545, 0.999998874807335, 0.9999333993129789], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999996, 2.5000000000100524, 2.499999989826741, 2.4999960618282935, 2.499766905658263], "MOMENTUM_X": [-5.6388248040569236e-24, -2.1954484806972757e-20, 1.3300245894804564e-15, -3.3838667361464897e-12, 3.40318273804759e-09, 1.3285683294939024e-06, 7.884797737101082e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_109": {}, "ELEMENT_427": {}, "ELEMENT_299": {}, "ELEMENT_475": {}, "ELEMENT_203": {}, "NODE_204": {"DENSITY": [1.0, 1.0, 0.9999999999999964, 1.0000000000077502, 0.9999999942623824, 0.9999977690787236, 0.9998784478684524], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999988, 2.5000000000271263, 2.499999979918339, 2.4999921917853962, 2.499574593529293], "MOMENTUM_X": [-8.678899094073554e-23, 6.580385418698984e-19, 3.3839414980300448e-15, -8.599242313623804e-12, 6.471974936252503e-09, 2.5763934503115906e-06, 0.00014236952908433867], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_270": {}, "ELEMENT_241": {}, "NODE_323": {"DENSITY": [1.0, 0.999999999997982, 1.0000000042604889, 0.9999977136100158, 0.9996711171236197, 0.9935066650425014, 0.9625309406881651], "TOTAL_ENERGY": [2.5, 2.4999999999929376, 2.5000000149117114, 2.4999919976472724, 2.498849105427872, 2.4773401589327535, 2.370919601187114], "MOMENTUM_X": [-3.667276758455886e-17, 2.501298428040537e-12, -5.060828947603583e-09, 2.7597776665394146e-06, 0.0003930847865351755, 0.007709593505080355, 0.043574492223479394], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_339": {}, "ELEMENT_1815": {}, "ELEMENT_1001": {}, "NODE_828": {"DENSITY": [0.125, 0.12499999999999911, 0.1250000000158963, 0.12499973444957871, 0.13173063865201085, 0.2887117760678472, 0.25519029956118694], "TOTAL_ENERGY": [0.25, 0.24999999999999747, 0.2500000000445097, 0.2499992564598127, 0.26988234714785864, 1.0078054453509113, 0.8149428596105668], "MOMENTUM_X": [8.37326347165302e-21, -1.3968478223637292e-15, 1.8733207522095942e-11, -3.4316676226752284e-07, 0.008173956875468305, 0.29919861057769165, 0.2250482889731424], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1964": {}, "ELEMENT_1584": {}, "ELEMENT_1725": {}, "ELEMENT_1545": {}, "ELEMENT_1429": {}, "NODE_1059": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999885], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999675], "MOMENTUM_X": [-4.487835722728619e-46, -5.145007470149634e-38, 4.612471180762939e-33, -2.3186729189856675e-28, 6.837573892166963e-24, 8.056066034351785e-20, -1.2724936325723887e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_831": {"DENSITY": [0.125, 0.12500000000000228, 0.12499999995313558, 0.12500009270054738, 0.13129156384802215, 0.28819487810759337, 0.2530084792066861], "TOTAL_ENERGY": [0.25, 0.2500000000000064, 0.24999999986877958, 0.2500002595615283, 0.26852051937579313, 1.004190730782026, 0.8009328832771352], "MOMENTUM_X": [4.0210846467596214e-20, 4.2394590125389704e-16, -3.9337707283488675e-11, -5.1636580946370886e-08, 0.007555945334635035, 0.2983509151668399, 0.21878834577430198], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_897": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.12500000000045927, 0.12499998330133111, 0.12526890277839384, 0.23283743212207905], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999994, 0.25000000000128597, 0.2499999532437309, 0.2507544933120765, 0.7111524549906808], "MOMENTUM_X": [4.271829471093526e-26, -7.427477585944961e-23, -4.670628078672355e-17, 3.013986949915654e-13, -1.5340651191347105e-08, 0.0002497307289715125, 0.19000466863672943], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_466": {"DENSITY": [0.9997331781327791, 0.9564584555618987, 0.8358209253181081, 0.7239640086113838, 0.6507768027691494, 0.603134242194048, 0.5703402233661992], "TOTAL_ENERGY": [2.4990663543580864, 2.350663950886947, 1.9641792987933797, 1.640717927564013, 1.447611313020117, 1.3298417367396778, 1.252141824742349], "MOMENTUM_X": [0.00034526123204957544, 0.0499214165772939, 0.17404653342395413, 0.26796645292645827, 0.3171530113811082, 0.3432888884596535, 0.35847075781489746], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_774": {"DENSITY": [0.12500000000000053, 0.12499999998532547, 0.125000275176817, 0.14200264388569578, 0.2879017313606383, 0.2639331476446001, 0.2701796850300859], "TOTAL_ENERGY": [0.25000000000000144, 0.24999999995891123, 0.25000077050957575, 0.30388644973058915, 0.9976775117859934, 0.8564694914947519, 0.8631656741605754], "MOMENTUM_X": [-5.531855002044054e-16, -4.728565673752833e-11, 4.5434022686459824e-07, 0.02375710826549631, 0.29492544593148917, 0.24122835944093746, 0.24772625629134257], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_725": {}, "ELEMENT_1280": {}, "ELEMENT_1217": {}, "ELEMENT_346": {}, "ELEMENT_747": {}, "ELEMENT_3": {}, "NODE_870": {"DENSITY": [0.125, 0.125, 0.12499999999999946, 0.1250000000112049, 0.12499979454499414, 0.13033194143714827, 0.304568731143675], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999985, 0.2500000000313737, 0.2499994247271051, 0.2656383805114117, 1.0966464828883271], "MOMENTUM_X": [8.805472181617523e-27, -3.224121585144626e-22, -7.921970412637697e-16, 1.4276106375872815e-11, -2.953341027962688e-07, 0.006702019461595502, 0.331648122501626], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1647": {}, "ELEMENT_1208": {}, "ELEMENT_1484": {}, "NODE_549": {"DENSITY": [0.5311473760765208, 0.4464974804893698, 0.42395833542306727, 0.4204833532469196, 0.41449631172993817, 0.41301295984982606, 0.4114183670071298], "TOTAL_ENERGY": [1.1731335181136513, 0.9728493180890863, 0.9373723275915408, 0.9249123601541418, 0.9169811618008011, 0.9133313271380268, 0.9104207321541066], "MOMENTUM_X": [0.4119504288404653, 0.4061474023460304, 0.39643937349531877, 0.39815530925601417, 0.39515095043632414, 0.3956989853475816, 0.3954328258748707], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_708": {}, "ELEMENT_586": {}, "NODE_940": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999997, 0.12500000000126413, 0.12499996661514631, 0.12569580406729955], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2499999999999999, 0.25000000000353945, 0.24999990652242496, 0.2519580338533623], "MOMENTUM_X": [9.320135637964374e-32, -3.813596557300147e-26, 1.8919213701683216e-21, -9.448224936750652e-17, 1.4622053968675678e-12, -3.6588457212841605e-08, 0.0006349188728793652], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_395": {}, "ELEMENT_151": {}, "ELEMENT_1432": {}, "ELEMENT_522": {}, "ELEMENT_1776": {}, "ELEMENT_979": {}, "ELEMENT_429": {}, "ELEMENT_252": {}, "ELEMENT_752": {}, "NODE_651": {"DENSITY": [0.1249972923903657, 0.23410022739771538, 0.26566348588171745, 0.35400690723333855, 0.46053528097778523, 0.45946208638046926, 0.39148966042297095], "TOTAL_ENERGY": [0.24999241787380846, 0.7175108311156707, 0.8118676520407115, 0.9404144152814463, 0.9491812978018865, 0.9647651558942257, 0.9278935033516666], "MOMENTUM_X": [1.8111813322614094e-06, 0.19528598439753506, 0.2319841764501405, 0.3363979072428402, 0.4250785279742422, 0.4289317125339129, 0.3637673686770624], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1035": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999996332], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999998973], "MOMENTUM_X": [-7.207082820303471e-45, -4.098837408287821e-36, -4.8318442882414555e-32, 1.178467610599551e-27, 9.073943763562382e-23, -5.899895820768752e-19, -7.4801224852535e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_61": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000149, 0.9999999999905185], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000052, 2.499999999966815], "MOMENTUM_X": [5.404717689942425e-35, 2.5439801837704645e-29, 1.3577463913883539e-25, -1.1875439486769556e-21, -1.8165613976369883e-18, -1.8332303033076945e-14, 1.1594677774668259e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1134": {}, "ELEMENT_1832": {}, "ELEMENT_39": {}, "NODE_849": {"DENSITY": [0.125, 0.125, 0.12500000000002706, 0.1249999994165919, 0.12502197721878855, 0.21429582282024517, 0.24352404990289522], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000758, 0.24999999836645737, 0.2500615525592703, 0.6242012692822019, 0.7557710721081567], "MOMENTUM_X": [-6.830903723172333e-24, 1.3870935379762216e-18, 3.6652935886072155e-14, -1.2652073166058191e-09, 2.671441124942484e-05, 0.16095933748543478, 0.2010709866681854], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_350": {}, "ELEMENT_696": {}, "ELEMENT_769": {}, "NODE_688": {"DENSITY": [0.12499995337858533, 0.13038711821960125, 0.2847422868968665, 0.2644499185328172, 0.3255563857051049, 0.4170472240073487, 0.4666939316841891], "TOTAL_ENERGY": [0.24999986946009284, 0.26572870375934354, 0.9775951554642571, 0.8137962015768327, 0.9052969869885308, 0.9372970008431637, 0.9607991900550285], "MOMENTUM_X": [-6.067156139196064e-08, 0.006302273164268641, 0.2891300660247421, 0.2305656004019285, 0.3033290606387907, 0.3862543813857787, 0.4329521868424586], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1009": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000005862, 0.12499999872924446], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001641, 0.2499999964418845], "MOMENTUM_X": [2.8664292367725785e-36, 6.645064468714155e-31, -7.5064785455538125e-28, -1.2915343493172875e-21, 6.976762305506369e-19, 9.393367790748382e-14, -2.2182967536796996e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1046": {}, "ELEMENT_543": {}, "ELEMENT_1027": {}, "ELEMENT_1510": {}, "NODE_1002": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1249999999999922, 0.12500000018136967], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999997818, 0.250000000507835], "MOMENTUM_X": [-6.0337865558190304e-40, 1.1405128300379444e-33, 2.5070115450943124e-29, -3.387921226460863e-24, 1.1836729370076227e-19, -9.162629088234796e-15, 1.5683179344863444e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1526": {}, "NODE_723": {"DENSITY": [0.12500000002043468, 0.12500459490141108, 0.15988392483897032, 0.283247229049, 0.27431765397562063, 0.30401637762059147, 0.38488814871387655], "TOTAL_ENERGY": [0.2500000000572171, 0.25001286696708686, 0.37126010686094557, 0.9672098649064762, 0.8849945996202047, 0.883464318846174, 0.9245771201292582], "MOMENTUM_X": [1.834739204880434e-11, 7.2195004392744095e-06, 0.05447749644733975, 0.28418996147004344, 0.2567661424606344, 0.28063427349635683, 0.3572428830116975], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_847": {"DENSITY": [0.125, 0.1250000000000014, 0.12499999999247813, 0.12499988831264708, 0.1289960768448433, 0.26357612524247476, 0.26064178235499336], "TOTAL_ENERGY": [0.25, 0.25000000000000394, 0.2499999999789388, 0.24999968727558874, 0.2615037658857229, 0.8678237222394789, 0.8468313525360658], "MOMENTUM_X": [2.7806744070068857e-19, -9.186331811597696e-16, -2.4175368735353067e-12, -1.5167544733407524e-07, 0.00424106259439069, 0.24702749573224478, 0.23710792975916628], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_401": {}, "ELEMENT_244": {}, "NODE_361": {"DENSITY": [1.0000000000006195, 1.0000000096905564, 0.9999900332834868, 0.9988462928311173, 0.9834161579969869, 0.9307717780205124, 0.85741304769095], "TOTAL_ENERGY": [2.5000000000021676, 2.5000000339169466, 2.499965116722524, 2.4959643741037776, 2.4423805029395576, 2.264613922802306, 2.029612918075907], "MOMENTUM_X": [4.217262097003357e-13, -1.1231967095474694e-08, 1.1873381057283038e-05, 0.0013641029782366556, 0.019423322763516396, 0.07848356563334015, 0.1538712072892252], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_338": {}, "ELEMENT_1679": {}, "NODE_59": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, -4.46057661419011e-39, -2.285025798021264e-34, 1.2871408924395605e-29, 1.0362318562202522e-25, -3.813368362012247e-22, -1.6062021384246493e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_383": {}, "ELEMENT_741": {}, "ELEMENT_1867": {}, "ELEMENT_546": {}, "ELEMENT_763": {}, "ELEMENT_911": {}, "ELEMENT_450": {}, "ELEMENT_460": {}, "ELEMENT_1768": {}, "NODE_760": {"DENSITY": [0.12500000000000053, 0.12500000020944657, 0.1249967724146995, 0.15808556520229966, 0.2892675640348292, 0.2749795261327971, 0.2661935182431274], "TOTAL_ENERGY": [0.2500000000000015, 0.25000000058645044, 0.2499909628543071, 0.3653617512094121, 1.0031773194826838, 0.9134784942176154, 0.8329794445158626], "MOMENTUM_X": [-2.6942608412980082e-17, 1.843180813994541e-10, -2.7115325560874317e-06, 0.05455042636011488, 0.2962606880367868, 0.263644953523053, 0.23580504006086667], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_66": {}, "ELEMENT_953": {}, "ELEMENT_69": {}, "ELEMENT_1389": {}, "ELEMENT_1207": {}, "NODE_581": {"DENSITY": [0.34962074711538615, 0.43580033809521673, 0.3939395332048066, 0.4079116463039208, 0.397885190106937, 0.3990511510868884, 0.39726947430271525], "TOTAL_ENERGY": [0.945560638248391, 0.9167894257396828, 0.8920573669190206, 0.8956952881982612, 0.8859433409180152, 0.8842674761660885, 0.8816227179402051], "MOMENTUM_X": [0.3488781690482022, 0.4213883562473511, 0.38516556306500493, 0.4019365780416679, 0.39383072206487035, 0.39633522262564486, 0.39567523012009587], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1772": {}, "ELEMENT_108": {}, "ELEMENT_1119": {}, "NODE_599": {"DENSITY": [0.22945379231514307, 0.37929518541361784, 0.46584594108520605, 0.41696182005970184, 0.4175018721085489, 0.43718543911464536, 0.42147697495748276], "TOTAL_ENERGY": [0.6775613157599876, 0.8948521660648135, 0.9687259732992919, 0.9312771765906943, 0.9383493386055479, 0.9453820351139285, 0.9387472726761094], "MOMENTUM_X": [0.1792436734145049, 0.345774006578178, 0.43618218963619365, 0.38572544592206315, 0.3878795825220182, 0.40550132165118363, 0.3906375616601254], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1707": {}, "ELEMENT_576": {}, "ELEMENT_171": {}, "NODE_955": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.1250000000001952, 0.12499999435884306, 0.12506226105495666], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000054656, 0.24999998420476124, 0.2501744512817971], "MOMENTUM_X": [1.5551578118577189e-30, -1.755929827171371e-25, -2.6105589949585408e-21, 2.863552646474996e-17, 7.231168938181317e-14, -6.6877177930214604e-09, 6.838236656106802e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_594": {"DENSITY": [0.2991402105438635, 0.4431344359829147, 0.4102633481408736, 0.4164449734542639, 0.4054348072410878, 0.40221641301830174, 0.39873720489441816], "TOTAL_ENERGY": [0.8786544289066072, 0.9268437028964563, 0.9109214021713397, 0.9106328709124067, 0.8975680956836007, 0.8906275402416328, 0.8840697032405822], "MOMENTUM_X": [0.28462970372793556, 0.4215617363777024, 0.3983310437223424, 0.41062486772930284, 0.40390353344881114, 0.4040925270181921, 0.40320695860493083], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_219": {"DENSITY": [1.0, 1.0, 0.9999999999999926, 1.000000000013581, 0.9999999819932873, 0.9999958554776697, 0.9998188207429207], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999974, 2.5000000000475335, 2.499999936976507, 2.4999854942063005, 2.4993659307573886], "MOMENTUM_X": [-1.0364999426017499e-22, -2.5921572928057762e-20, 8.778304366197601e-15, -1.6128217563819594e-11, 2.114863129292818e-08, 4.899070741655764e-06, 0.00021454366527643397], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_462": {"DENSITY": [0.9995166606193178, 0.9440808389099805, 0.8224247913363876, 0.721446599234526, 0.655324515774859, 0.6106005493987091, 0.5788432727577676], "TOTAL_ENERGY": [2.49830903347783, 2.309360918466062, 1.9252878454111912, 1.6367318838251472, 1.4627217413996112, 1.3516606824290913, 1.275751747038494], "MOMENTUM_X": [0.0006161571267862497, 0.06405631579850568, 0.1883219971210219, 0.2708767753242136, 0.3149214267327119, 0.3392746956965852, 0.3539981592707919], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_915": {}, "NODE_547": {"DENSITY": [0.5401543172641097, 0.4497307146188556, 0.42659021703126465, 0.41900987643007764, 0.4181447465830228, 0.413554574769259, 0.414112749118056], "TOTAL_ENERGY": [1.175099478747827, 0.986791746946841, 0.941705610856211, 0.9272129833149191, 0.9220252504516504, 0.9168955120638442, 0.9151465305845181], "MOMENTUM_X": [0.39523554602816435, 0.4059139054438179, 0.3971795841107335, 0.39609648279113346, 0.39848184962214434, 0.39590311350154317, 0.3976596955431588], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1663": {}, "NODE_146": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999821, 1.0000000000095255], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999937, 2.500000000033338], "MOMENTUM_X": [1.2225150552597935e-36, -2.473109239389017e-30, 4.976607863922422e-26, 2.2058174438217064e-22, -7.677993636484224e-18, 2.071735275114467e-14, -1.1940402886915661e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_210": {"DENSITY": [1.0, 1.0, 0.9999999999999989, 1.0000000000027327, 0.9999999975628988, 0.9999989215022914, 0.9999343194912044], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999997, 2.5000000000095652, 2.4999999914701463, 2.4999962252604093, 2.499770126001174], "MOMENTUM_X": [-2.3834392745489303e-24, 8.949380644426467e-21, 1.1134268217562911e-15, -3.2014565835525992e-12, 2.8612623195238224e-09, 1.2712004244823464e-06, 7.760492521670532e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1435": {}, "ELEMENT_1992": {}, "NODE_1034": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000077, 0.12499999995195145], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000002154, 0.24999999986546406], "MOMENTUM_X": [-1.359245605374469e-37, -1.7006715970698238e-31, 1.4756248371289112e-27, 4.0472335188708356e-23, 1.2287213525535048e-19, 2.088677791524077e-15, -2.5237668040914227e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_486": {"DENSITY": [0.9920881199912213, 0.8551724177835938, 0.7144141862485333, 0.628341515113921, 0.5767163373089343, 0.5437038420308609, 0.5213699348104014], "TOTAL_ENERGY": [2.4724353626294593, 2.024335609221544, 1.6151650333, 1.3918811289547701, 1.267844874625256, 1.1915090145239626, 1.1405993607551208], "MOMENTUM_X": [0.00877791040760445, 0.15621092772865286, 0.2742415683532296, 0.3295352421550689, 0.3549892510963972, 0.36843478171654714, 0.3766159101086932], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_438": {"DENSITY": [1.0000005383444004, 0.9979696671840091, 0.9621021879759263, 0.8661002790732634, 0.7688813780190806, 0.698840533774868, 0.6499494069717672], "TOTAL_ENERGY": [2.500001884205879, 2.492901792379337, 2.369578218186099, 2.0569906601284544, 1.7660102748962725, 1.57246041825817, 1.445266633159106], "MOMENTUM_X": [-4.869212498054742e-07, 0.00238910062433274, 0.043723666716736685, 0.14517238895353726, 0.23311342698766635, 0.28625500449519037, 0.31782883427467334], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_41": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000484], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000001696], "MOMENTUM_X": [-2.6935824855084187e-40, 1.942643304292384e-32, 1.0534396273100362e-28, 4.6431436847154885e-25, 4.919905709123489e-21, 9.128734258133247e-18, -5.6476815583090617e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_898": {"DENSITY": [0.125, 0.125, 0.12500000000000006, 0.12500000000007694, 0.12499998288397812, 0.1252613404385603, 0.2325097344303032], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000017, 0.25000000000021555, 0.24999995207514278, 0.250733251062429, 0.7092790226289161], "MOMENTUM_X": [8.92554808419929e-26, 2.975675850293879e-21, 4.3977200615017736e-18, -1.602425918342419e-13, -1.5527579290734874e-08, 0.0002414281815823782, 0.18916045586550667], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1834": {}, "ELEMENT_884": {}, "NODE_149": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000049, 1.0000000000127667, 0.99999998331407], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000000173, 2.5000000000446843, 2.499999941599247], "MOMENTUM_X": [4.152163176720049e-31, 5.578084287098324e-26, -2.5989470594356973e-23, 9.811376158685967e-20, -6.706140853646689e-15, -1.4296589957311862e-11, 1.9874749282918676e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_701": {"DENSITY": [0.12499999449497733, 0.1258332760013666, 0.2509922897378841, 0.2623490232903899, 0.29891272607739283, 0.37457532941137955, 0.45516492104960127], "TOTAL_ENERGY": [0.24999998458593753, 0.2523475083552598, 0.8004485087172591, 0.8318765148126039, 0.8960609415809687, 0.918688399279282, 0.9554559864022989], "MOMENTUM_X": [-5.7842141768602886e-09, 0.0007772341805624256, 0.22286725343857228, 0.23382345528928294, 0.27970113077524794, 0.3472253376561877, 0.42257422196385797], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1291": {}, "ELEMENT_608": {}, "ELEMENT_1145": {}, "ELEMENT_1089": {}, "ELEMENT_1257": {}, "NODE_20": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000018], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000006], "MOMENTUM_X": [-8.474114488367492e-43, -4.734337652304038e-34, -2.5913247960446533e-30, -1.1996114784573678e-26, -9.668744558375867e-23, -2.011981302848764e-19, -2.217557909843686e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_732": {}, "ELEMENT_337": {}, "ELEMENT_286": {}, "NODE_650": {"DENSITY": [0.1249931964631273, 0.2203863212114878, 0.26880943024578724, 0.3377259897484604, 0.44761805181065534, 0.4780963394544695, 0.39125056380105777], "TOTAL_ENERGY": [0.24998095026198575, 0.6456914782978249, 0.842156932572712, 0.9389278184816778, 0.9407467970216818, 0.9684931201565807, 0.9194183540257157], "MOMENTUM_X": [-4.1808106509157825e-06, 0.16744702666708638, 0.2399566879381541, 0.32025664089653, 0.41005165632192675, 0.44246274570515887, 0.3585811123785568], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_980": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.1250000000002716, 0.12499999195572328], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.25000000000076045, 0.24999997747602765], "MOMENTUM_X": [2.3836173478428855e-37, -2.66739920480299e-31, 2.1924824871150382e-27, 1.505206245688466e-22, -1.9435573068317235e-17, 3.460756609074416e-13, -1.117030503474761e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_333": {}, "ELEMENT_1959": {}, "NODE_1010": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000546, 0.12499999875794689], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001529, 0.24999999652225136], "MOMENTUM_X": [5.405455875741266e-36, 1.954007308801673e-30, -2.1004093463986695e-26, -1.1408259219951255e-21, 1.0904227941263114e-18, 9.797922200355235e-14, -2.217499921136619e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_874": {}, "NODE_174": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999973, 1.0000000000013625, 1.0000000007492038], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999991, 2.500000000004769, 2.500000002622215], "MOMENTUM_X": [-1.4589822382504126e-33, -7.144608320016646e-28, 2.135566227620474e-23, 1.0884907064318055e-18, 3.530093728798556e-15, -2.058890997912051e-12, -7.567329921368374e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_666": {}, "ELEMENT_601": {}, "ELEMENT_746": {}, "NODE_874": {"DENSITY": [0.125, 0.125, 0.1250000000000069, 0.12499999992446356, 0.12500033643076772, 0.13715147280457463, 0.28871418157103984], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000194, 0.249999999788498, 0.25000094201319745, 0.287342106596376, 1.0045825674552278], "MOMENTUM_X": [-2.7917452797507534e-24, 2.165936598811177e-20, 5.782621115692848e-15, -8.956609699365398e-11, 2.630683727087507e-07, 0.016110840017414835, 0.2977910309058806], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1854": {}, "ELEMENT_579": {}, "ELEMENT_133": {}, "ELEMENT_1622": {}, "NODE_379": {"DENSITY": [0.9999999998995908, 0.9999994660818244, 0.9996577999485741, 0.9908916548747554, 0.9473028819318622, 0.8719205679401693, 0.7983817665673076], "TOTAL_ENERGY": [2.499999999648568, 2.499998131287507, 2.4988025340357662, 2.4682573487727937, 2.3196775818075848, 2.0750581902328205, 1.8514213994527942], "MOMENTUM_X": [-5.712982746026841e-11, 6.301583883275304e-07, 0.0004037261511647056, 0.010700802538777483, 0.0602332430702284, 0.13927942841343754, 0.20783830471069453], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1040": {}, "NODE_513": {"DENSITY": [0.9272927610831077, 0.6929595765439424, 0.5887421248584437, 0.5361093935362197, 0.5073166626594693, 0.4882824191937608, 0.47464357298002785], "TOTAL_ENERGY": [2.2554040053449125, 1.5575996844350977, 1.296979081430614, 1.176222978896085, 1.1099144656853825, 1.0686127927503306, 1.0403948512147139], "MOMENTUM_X": [0.08992589267008604, 0.2867370605027637, 0.34890437114671685, 0.3705441188538872, 0.38087287710310896, 0.38600301019583644, 0.3886972727358503], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1105": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997], "MOMENTUM_X": [0.0, -4.668781109337564e-40, 2.5861367143962374e-37, -8.492318315362766e-32, 8.69440608558365e-27, 8.10194449332886e-24, -1.1319015877075806e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_749": {}, "ELEMENT_1637": {}, "ELEMENT_1341": {}, "ELEMENT_1348": {}, "ELEMENT_349": {}, "NODE_209": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999355, 1.0000000001079272, 0.999999909090271, 0.9999869047527894], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999775, 2.5000000003777463, 2.4999996818159684, 2.49995416695269], "MOMENTUM_X": [5.812587576220802e-26, 6.152191886105077e-22, -8.105069935473529e-17, 6.94821481883367e-14, -1.2294922484888463e-10, 1.0872721451165733e-07, 1.552681891377813e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_237": {"DENSITY": [1.0, 1.0, 1.0000000000000009, 0.9999999999993381, 1.0000000011265588, 0.9999994915606388, 0.9999422726252638], "TOTAL_ENERGY": [2.5, 2.5, 2.500000000000003, 2.4999999999976836, 2.500000003942956, 2.4999982204627975, 2.4997979602083342], "MOMENTUM_X": [2.5882689130578604e-25, -2.3199991543164192e-20, -1.0239057589101767e-15, 7.358532297571067e-13, -1.3203763584898468e-09, 6.118070345409554e-07, 6.895702020589801e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_216": {"DENSITY": [1.0, 1.0, 0.9999999999999907, 1.000000000018272, 0.9999999823795418, 0.9999951596185189, 0.9997788264715178], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999676, 2.5000000000639524, 2.4999999383283975, 2.4999830587125906, 2.499225978717825], "MOMENTUM_X": [-4.570779549858137e-22, -6.828268573824225e-18, 1.1497302122569897e-14, -2.2282725957626212e-11, 2.1451066195234992e-08, 5.783270558218094e-06, 0.00026204225783353586], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_661": {"DENSITY": [0.12499933885208059, 0.16836283894852133, 0.2893873024845125, 0.2995822082380661, 0.39213609315659287, 0.48747318110545845, 0.43195178272167806], "TOTAL_ENERGY": [0.24999814879769344, 0.40668063726425135, 0.9841638452957469, 0.9044777048286328, 0.9185863816134838, 0.9690814674849222, 0.9374234037488335], "MOMENTUM_X": [-9.136692978980975e-07, 0.07246063237083002, 0.29152310271112913, 0.2802616372315847, 0.35948386166204077, 0.4502746476805562, 0.3965136948104203], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1452": {}, "ELEMENT_1323": {}, "ELEMENT_451": {}, "ELEMENT_1205": {}, "NODE_228": {"DENSITY": [1.0, 1.0, 1.0000000000000002, 0.9999999999996951, 1.0000000003019363, 0.9999999170167843, 0.9999829071122021], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000004, 2.499999999998933, 2.5000000010567773, 2.499999709558762, 2.499940175438461], "MOMENTUM_X": [7.950855521222838e-26, 2.9300132606526746e-21, -2.2295876429095535e-16, 3.5721278983258505e-13, -3.5812878521564614e-10, 1.0049595230190965e-07, 2.0438414057456538e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_612": {}, "ELEMENT_433": {}, "NODE_25": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000013], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000004], "MOMENTUM_X": [-4.828522575317747e-43, -2.6592518984863893e-34, -1.2453613831788647e-30, -1.2660554858184578e-26, -2.892108161166356e-23, -1.7130702341587947e-19, -1.4177697740093467e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1556": {}, "NODE_598": {"DENSITY": [0.2295999697310832, 0.3802155535953869, 0.4623461575457918, 0.4180756488593078, 0.4199745890209505, 0.43361345868127493, 0.4233089891507941], "TOTAL_ENERGY": [0.6782675942765337, 0.8976683697966751, 0.9647321195625389, 0.9319644925237794, 0.9379486948877637, 0.9434591335306497, 0.9391085538457297], "MOMENTUM_X": [0.17922394197838495, 0.34714025491353445, 0.4321315439470591, 0.38669343034327835, 0.3897469427961481, 0.4020784935253415, 0.3923039878965777], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1113": {}, "ELEMENT_1789": {}, "NODE_685": {"DENSITY": [0.12499997416276082, 0.13030724168856883, 0.2863183108029745, 0.262644205743159, 0.3250069055042578, 0.424289515023778, 0.4672158786070807], "TOTAL_ENERGY": [0.2499999276557516, 0.2654804353013518, 0.9879807499515497, 0.8115474568083763, 0.9042210055659629, 0.9390075442498036, 0.9601415865276919], "MOMENTUM_X": [-3.075214145981539e-08, 0.006169154566007215, 0.2926392471729246, 0.2287506684337989, 0.30291771877482854, 0.3927830079402136, 0.4333886019324465], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1654": {}, "ELEMENT_36": {}, "NODE_669": {"DENSITY": [0.12499896058907393, 0.18844332148795756, 0.27813067273019465, 0.31693567482435797, 0.410361665619512, 0.45781888322338854, 0.42263336224687], "TOTAL_ENERGY": [0.24999708969474957, 0.4932228013855131, 0.910051622186962, 0.9063833783742395, 0.9335952164778737, 0.956385347978428, 0.9393028881266214], "MOMENTUM_X": [3.326464316398381e-07, 0.10542206700371289, 0.26572504567464933, 0.29683226620299513, 0.38014389342067, 0.4248771497068479, 0.39172677441559134], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_762": {}, "ELEMENT_77": {}, "ELEMENT_1657": {}, "ELEMENT_527": {}, "ELEMENT_360": {}, "ELEMENT_1247": {}, "NODE_1053": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000014577], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000004081], "MOMENTUM_X": [2.5211078744329983e-41, 2.8283425725885396e-34, 3.271907511931955e-30, -1.718025953504042e-25, -1.5500348391304005e-21, 9.51735961923924e-18, 1.0114182361853683e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_525": {}, "ELEMENT_435": {}, "ELEMENT_317": {}, "ELEMENT_1253": {}, "ELEMENT_465": {}, "ELEMENT_679": {}, "NODE_593": {"DENSITY": [0.2840323773158245, 0.43944564098460626, 0.42227528846170886, 0.4162862639795771, 0.41831178829425175, 0.4106153460948126, 0.4134995618479824], "TOTAL_ENERGY": [0.8562319012841837, 0.9371619658183166, 0.9299907634421448, 0.9248927268616925, 0.9193485261866186, 0.912618932382909, 0.9102779879204865], "MOMENTUM_X": [0.2593880097834112, 0.40506462746039845, 0.3920918004115508, 0.38867931537442907, 0.3925034710688618, 0.3878532456137917, 0.3929820226045413], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_418": {"DENSITY": [1.0000000974272667, 0.9992887459034414, 0.9784946345642596, 0.9020646565489102, 0.8084882915188787, 0.7344742631695007, 0.6807815948938597], "TOTAL_ENERGY": [2.5000003409954425, 2.49751170403399, 2.425478004905122, 2.171154383516356, 1.8813871049629123, 1.6691226346356072, 1.5245061629783505], "MOMENTUM_X": [-2.3207489303879255e-07, 0.0008486428699459887, 0.024920280062498502, 0.10790779243761284, 0.19774134614103409, 0.2587808615798612, 0.29703845928025596], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_616": {}, "NODE_953": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000021236, 0.12499999479228785, 0.1250591015383029], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000005947, 0.2499999854184066, 0.25016558227139235], "MOMENTUM_X": [4.919792730953665e-31, -4.5976581932932516e-26, -2.6168107424722556e-21, 4.63409832660181e-18, 1.1553682689888661e-13, -5.935644525356311e-09, 6.461640953408155e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1595": {}, "NODE_1043": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000025, 0.12500000000002873], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000067, 0.25000000000008044], "MOMENTUM_X": [-4.038163660817565e-40, 1.1845880271277998e-33, -9.541158430222487e-29, -5.898657730245364e-25, 1.5508232494870024e-20, 7.802588647904277e-17, -2.02530186525158e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_575": {}, "ELEMENT_991": {}, "ELEMENT_13": {}, "ELEMENT_1957": {}, "ELEMENT_883": {}, "ELEMENT_428": {}, "ELEMENT_1599": {}, "ELEMENT_1684": {}, "NODE_287": {"DENSITY": [0.9999999999999999, 0.999999999999844, 1.0000000003683847, 0.9999993560543169, 0.9999121795298077, 0.9978228708210823, 0.9830212143985607], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999999994533, 2.5000000012893455, 2.499997746191105, 2.499692643152326, 2.4923879932845896, 2.4410144202284783], "MOMENTUM_X": [-1.4022143362752262e-16, 2.8281559682493455e-13, -4.417969571850579e-10, 7.594437183433909e-07, 0.00010401117364577975, 0.0025758421117492722, 0.01988653664786169], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_937": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999997, 0.12500000000059155, 0.12499998759325474, 0.12535918744363853], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999992, 0.2500000000016564, 0.2499999652611171, 0.2510085078875001], "MOMENTUM_X": [5.528324378291688e-32, -1.145553480296435e-26, 1.484810908520177e-22, -3.1228923243610267e-17, 5.646946757246069e-13, -1.3561545587924933e-08, 0.0003149127667984106], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_500": {}, "ELEMENT_1075": {}, "ELEMENT_1949": {}, "ELEMENT_294": {}, "ELEMENT_538": {}, "ELEMENT_120": {}, "ELEMENT_1946": {}, "NODE_674": {"DENSITY": [0.1249997402192223, 0.14857145177634185, 0.2886290765601406, 0.2851482172915695, 0.36551911837447104, 0.4601922395031155, 0.4430797393490514], "TOTAL_ENERGY": [0.2499992726152983, 0.3276425330539011, 0.9904653187309123, 0.8721435953648278, 0.9122149171816121, 0.9571168686198644, 0.947866930069074], "MOMENTUM_X": [-3.542963092683502e-07, 0.03535765080395188, 0.29396182130234566, 0.2620396718471115, 0.3379136609929364, 0.42678929020954065, 0.410345253231385], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_504": {"DENSITY": [0.9719806755832651, 0.7777508237072556, 0.6501928311965991, 0.5821881201176471, 0.5422114766880405, 0.5166121894901101, 0.49902986015640227], "TOTAL_ENERGY": [2.4033256495824924, 1.7929221689818537, 1.4457406453347499, 1.2787279445561466, 1.187329414697097, 1.130373328157906, 1.0916745238298382], "MOMENTUM_X": [0.030756102918433097, 0.22543887858688288, 0.3173379429166105, 0.3537098800520484, 0.36979931715522274, 0.3783462077404628, 0.38353548734032694], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_100": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 1.000000000000187], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.5000000000006546], "MOMENTUM_X": [-3.056418909371999e-39, 3.2100248076136174e-32, -1.5993562008709456e-28, -8.748479772760614e-24, -1.7356235551956132e-20, 3.7176590253977725e-16, -2.272037162846439e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1260": {}, "NODE_453": {"DENSITY": [0.9999597118979161, 0.9806239523472406, 0.8873947162889531, 0.7737196273238738, 0.6911577476766451, 0.6359333803063345, 0.597654966263166], "TOTAL_ENERGY": [2.4998589952744537, 2.4328351495624805, 2.1245307184955964, 1.7803531384317595, 1.5522994247737711, 1.4099921825995003, 1.3159707126811], "MOMENTUM_X": [2.3466676558628794e-05, 0.022790452816214196, 0.12354407628123823, 0.228548942565941, 0.29083536785537, 0.3254013718041917, 0.3457991444017821], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1023": {}, "ELEMENT_1155": {}, "NODE_992": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006325, 0.12499999840471962], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000017714, 0.24999999553321503], "MOMENTUM_X": [2.8356591765901825e-38, -5.612213275272259e-32, -2.2551180292954807e-27, 1.1041301790507836e-22, -5.132857921654793e-18, 7.035178137365218e-14, -2.4171008933279762e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_347": {"DENSITY": [1.0000000000000993, 1.0000000026888427, 0.9999961523700049, 0.9994701146186966, 0.9905795637189059, 0.9520623508949126, 0.8864043605181551], "TOTAL_ENERGY": [2.5000000000003477, 2.5000000094109494, 2.4999865333309903, 2.4981459182792447, 2.4671700533074588, 2.3355961265061222, 2.120741404360762], "MOMENTUM_X": [5.2046649509685764e-14, -3.1015396558947185e-09, 4.522235143398835e-06, 0.0006248862819358867, 0.011060939399930515, 0.05495626750782469, 0.1247469801515433], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1182": {}, "NODE_213": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000005602, 1.0000000016799113, 0.9999995949937641], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.5000000000019598, 2.5000000058796883, 2.499998582478581], "MOMENTUM_X": [-1.134854578448983e-28, -1.3066233866917487e-23, 7.009463693801496e-19, 9.521263221919962e-16, -1.43559286681179e-12, -1.7456995426613526e-09, 5.36815685426956e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_467": {}, "ELEMENT_1633": {}, "ELEMENT_1123": {}, "ELEMENT_436": {}, "ELEMENT_680": {}, "NODE_606": {"DENSITY": [0.16032041458554352, 0.3140808464988379, 0.441304026137179, 0.4665680084032035, 0.3910363442855197, 0.4284270013742546, 0.43641833024398025], "TOTAL_ENERGY": [0.3745379904586342, 0.9190610507665562, 0.959649172370243, 0.9464020551171979, 0.9301457902514545, 0.9356361098138475, 0.9420588982283571], "MOMENTUM_X": [0.05873280686356026, 0.2969400742033844, 0.41037968079058296, 0.42674783287803136, 0.3614538641381735, 0.39270807275405384, 0.40077300140561856], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1251": {}, "NODE_618": {"DENSITY": [0.13942380705233082, 0.302420466957704, 0.39352216991531613, 0.4777964813652978, 0.41372103753681905, 0.4128028192165444, 0.4489861510864595], "TOTAL_ENERGY": [0.29555538595290964, 0.962384713518144, 0.9263065159990745, 0.9628441543853065, 0.9454770765820807, 0.936405976555242, 0.9557773515437737], "MOMENTUM_X": [0.021507712633097496, 0.30101787186054735, 0.3649420539253874, 0.44312727771005006, 0.3868774158011222, 0.3836074854564596, 0.4183938921388528], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1974": {}, "NODE_191": {"DENSITY": [1.0, 1.0, 0.9999999999999997, 1.0000000000011664, 0.9999999993051196, 0.9999994298423792, 0.99995698638711], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999987, 2.5000000000040834, 2.4999999975679192, 2.499998004448994, 2.4998494556852133], "MOMENTUM_X": [7.027688098687166e-24, 3.417727816845419e-19, 3.355935680241025e-16, -1.2770443717492275e-12, 7.767215879375102e-10, 6.558653684473961e-07, 5.023141915571874e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_56": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000001885], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000006604], "MOMENTUM_X": [-4.589195705907234e-39, 4.0694818602533716e-32, -2.2449034059462775e-28, -2.4723295329880256e-24, 2.955699539561529e-20, 1.0936479217695794e-16, -2.2001046833449518e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1837": {}, "ELEMENT_1796": {}, "ELEMENT_757": {}, "ELEMENT_1384": {}, "ELEMENT_610": {}, "ELEMENT_489": {}, "NODE_894": {"DENSITY": [0.125, 0.125, 0.12499999999999997, 0.1250000000006947, 0.12499998828869507, 0.12524566901031944, 0.23864901556408896], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999992, 0.25000000000194517, 0.24999996720834944, 0.2506891651215385, 0.7424233964024404], "MOMENTUM_X": [4.2748943543833414e-27, 1.860555092680517e-22, -3.6573814004322185e-17, 6.771940401877647e-13, -1.2537994749517756e-08, 0.0002109791334137295, 0.20173874539513847], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_216": {}, "ELEMENT_1196": {}, "ELEMENT_1306": {}, "NODE_544": {"DENSITY": [0.5380943093027242, 0.45066836660609133, 0.42737292526555354, 0.41619780947008167, 0.41811103778209713, 0.4120468176282089, 0.41203580045750754], "TOTAL_ENERGY": [1.1686326399508795, 0.994313464263343, 0.9371917360958677, 0.9246242398291619, 0.9205580926488567, 0.9141812913613345, 0.9124134551846484], "MOMENTUM_X": [0.39312148003863673, 0.41087478957940393, 0.3984001785605663, 0.39480588345386886, 0.3998722527655329, 0.3955084929584524, 0.3967359218701488], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_443": {}, "ELEMENT_1425": {}, "NODE_345": {"DENSITY": [0.9999999999999986, 0.9999999999712911, 1.0000000110258505, 0.9999405434613696, 0.9973183496821091, 0.9754106499765988, 0.9186301833308694], "TOTAL_ENERGY": [2.4999999999999947, 2.499999999899519, 2.500000038590478, 2.499791909224652, 2.490626250488478, 2.414846985336349, 2.224689771536631], "MOMENTUM_X": [-1.4616756928172894e-17, 2.929760314801556e-11, -1.0213204494891714e-08, 7.131206528030611e-05, 0.0031958442640480805, 0.028849416749845203, 0.09195923243538068], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_758": {"DENSITY": [0.12499999999965064, 0.12499997541339386, 0.1253037070562566, 0.2299377932876991, 0.25968593080489283, 0.2717983884451226, 0.2958898674549483], "TOTAL_ENERGY": [0.24999999999902175, 0.24999993115751457, 0.25085263901480404, 0.6916748321013155, 0.83550967112938, 0.8803508104072285, 0.887560090321612], "MOMENTUM_X": [3.837854587424215e-13, -2.5784972554109125e-08, 0.0002993333976578152, 0.1812789713393506, 0.2317324832247308, 0.25288552206570936, 0.2745776847929199], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_846": {"DENSITY": [0.125, 0.12500000000000053, 0.12500000000005396, 0.12499990209833682, 0.12671747626708058, 0.25975699093774013, 0.2600510876675514], "TOTAL_ENERGY": [0.25, 0.2500000000000015, 0.25000000000015105, 0.24999972587549135, 0.2548743020168742, 0.8451832105270052, 0.8402365173196252], "MOMENTUM_X": [1.1928896566443634e-19, -4.888070143739179e-16, 1.4579624039450676e-12, -1.1634595546506123e-07, 0.001759151655494971, 0.23758560169400492, 0.2334111565720597], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1508": {}, "ELEMENT_458": {}, "NODE_879": {"DENSITY": [0.125, 0.125, 0.12500000000001404, 0.12499999991047533, 0.12499927327908157, 0.14295480799200272, 0.27673967489595563], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000003936, 0.24999999974933096, 0.2499979651806454, 0.30733179910911196, 0.9341124626751405], "MOMENTUM_X": [-1.0918510855434358e-22, -1.0938931200806523e-18, 1.6309727519098424e-14, -1.3028244621486732e-10, -5.704743666958563e-07, 0.026373072151524297, 0.2697767786403205], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_327": {"DENSITY": [1.000000000000002, 1.0000000000071463, 0.9999999723685524, 0.9999631613445777, 0.9983030081067902, 0.9827936616327136, 0.9365104608979229], "TOTAL_ENERGY": [2.500000000000007, 2.500000000025012, 2.4999999032899374, 2.499871067442678, 2.4940654058506593, 2.440228827878335, 2.283594422103683], "MOMENTUM_X": [2.5284052625136213e-15, -1.0984932559168066e-11, 3.37721966647852e-08, 4.3556977830965065e-05, 0.002003199437240865, 0.02012335652705303, 0.07214088349312946], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_821": {"DENSITY": [0.125, 0.12500000000002887, 0.1249999995926284, 0.1250021464322403, 0.15147382343339158, 0.2858513366808488, 0.26635931152993003], "TOTAL_ENERGY": [0.25, 0.2500000000000808, 0.24999999885935956, 0.25000601028277003, 0.33873468504494136, 0.9876916762873545, 0.8737331583655171], "MOMENTUM_X": [-1.6254502141222462e-18, 4.9513571664364666e-14, -7.445932021108899e-10, 3.3391272732835672e-06, 0.04001421355208956, 0.2914755662701959, 0.24764806195773847], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1620": {}, "ELEMENT_1493": {}, "NODE_221": {"DENSITY": [1.0, 1.0, 0.9999999999999927, 1.0000000000143001, 0.9999999837289428, 0.9999959562211992, 0.9998202089312576], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999747, 2.500000000050051, 2.4999999430513014, 2.499985846806711, 2.4993707881296134], "MOMENTUM_X": [-5.678037538934963e-23, 6.627813155831073e-19, 8.534730835303385e-15, -1.68055127863141e-11, 1.9115220818596083e-08, 4.769919359219301e-06, 0.00021249151401873842], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1317": {}, "NODE_125": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.000000000000009, 0.9999999999968062, 0.999999991017755], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000000315, 2.4999999999888214, 2.499999968562143], "MOMENTUM_X": [3.2272589853629408e-31, 7.560900419485316e-26, 3.319836475221851e-22, -1.1330015677878902e-18, -1.0391094632384579e-14, 3.707939115334161e-12, 1.0585986582918537e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1013": {}, "ELEMENT_1160": {}, "NODE_1070": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999928], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999795], "MOMENTUM_X": [-1.833387033402921e-48, 3.911571963894586e-38, -1.5136986232350284e-34, 9.513506511046025e-31, -4.032247764417131e-25, 2.901871623577935e-20, -1.1759419187196318e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_110": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999982, 1.0000000000013203], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999994, 2.5000000000046203], "MOMENTUM_X": [-6.56174877755604e-39, -2.2413438508722352e-31, -2.8673638728800847e-27, 4.775341830853813e-23, -5.3295453969174376e-20, 2.103448848066685e-15, -1.567118481548458e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_710": {"DENSITY": [0.1250000001158594, 0.12508532126305882, 0.20366968594405938, 0.26949506502775494, 0.2842829267278113, 0.333787238726038, 0.42426653553607535], "TOTAL_ENERGY": [0.2500000003244063, 0.25023908592854993, 0.5648706826130003, 0.8827046229650692, 0.8968263771340439, 0.8997072772067551, 0.941116499996155], "MOMENTUM_X": [-4.811266985462194e-10, 8.88899172764644e-05, 0.13379398111147942, 0.2519796378570613, 0.2673192538611276, 0.3086556616671844, 0.3932306006644782], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_219": {}, "NODE_186": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999958, 1.0000000000054996, 0.9999999981456855, 0.9999990452142216], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999985, 2.5000000000192486, 2.499999993509899, 2.499996658251579], "MOMENTUM_X": [-4.0206840925262296e-28, -1.25166139184925e-23, 8.674205997594892e-19, 4.9613687596078476e-15, -6.503525330672016e-12, 2.279200060051084e-09, 1.1351982620028407e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1847": {}, "ELEMENT_824": {}, "ELEMENT_962": {}, "ELEMENT_970": {}, "ELEMENT_1506": {}, "ELEMENT_1575": {}, "ELEMENT_714": {}, "NODE_468": {"DENSITY": [0.9997300773854171, 0.9564332912603479, 0.8357002665261238, 0.7237568553272278, 0.6505492602882319, 0.6030118700578068, 0.5703584873418728], "TOTAL_ENERGY": [2.499055503396003, 2.350581897758338, 1.9637822439188037, 1.6401058401973607, 1.4469445898927265, 1.3294016148729515, 1.2519520698753617], "MOMENTUM_X": [0.0003442294591856818, 0.04997486306940781, 0.1739955331365571, 0.2679941855004528, 0.3171216964011683, 0.34323076136409364, 0.35841888305619346], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_472": {"DENSITY": [0.9998558981696769, 0.961336072617401, 0.837389563881675, 0.7211615993307031, 0.6471244786784346, 0.5998183767809826, 0.567422425572346], "TOTAL_ENERGY": [2.4994957066749905, 2.3670916733539236, 1.9689062694871546, 1.6333224347129893, 1.438712365435336, 1.3219514852391245, 1.2453407818515432], "MOMENTUM_X": [0.0001646083290806513, 0.04517684647596811, 0.17411622976547872, 0.2717665538343403, 0.3206418071271475, 0.34593297783837196, 0.3604040993242942], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_310": {"DENSITY": [1.0000000000000044, 1.000000000001692, 0.9999999909647859, 0.9999870405463411, 0.9992623727104393, 0.9905054582182251, 0.956616591953793], "TOTAL_ENERGY": [2.500000000000016, 2.500000000005922, 2.499999968376751, 2.499954642273638, 2.497419276949885, 2.466911828539071, 2.3509285435395113], "MOMENTUM_X": [5.340401747249537e-15, -4.529065456252438e-12, 1.053278699679798e-08, 1.5336750699109494e-05, 0.0008737645476036815, 0.011177178167245894, 0.049959655335943466], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_10": {}, "ELEMENT_850": {}, "ELEMENT_524": {}, "NODE_778": {"DENSITY": [0.12500000000000708, 0.12499999983839984, 0.1250005848257594, 0.14155756304070788, 0.28718980573219544, 0.26578549828075543, 0.270342425705977], "TOTAL_ENERGY": [0.2500000000000199, 0.24999999954751959, 0.250001637539547, 0.3023976300971252, 0.9948894080430951, 0.867549424808113, 0.8631391179984181], "MOMENTUM_X": [-8.275133551596406e-15, -2.7798836914405027e-10, 7.794542399095125e-07, 0.02338268711408398, 0.29436883658085233, 0.24572163126904967, 0.24812764316155483], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_773": {}, "ELEMENT_1214": {}, "ELEMENT_1533": {}, "ELEMENT_1610": {}, "ELEMENT_1755": {}, "ELEMENT_46": {}, "ELEMENT_1911": {}, "ELEMENT_1103": {}, "NODE_42": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996], "MOMENTUM_X": [-6.922128250217252e-44, -3.232746236630889e-35, -1.2417401034872656e-31, -7.095122980757055e-27, -3.647778497748689e-24, 2.6392093707932303e-20, 9.872349813520797e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1476": {}, "NODE_371": {"DENSITY": [0.9999999999977822, 1.0000000190273448, 0.9999253378605288, 0.9962520789168642, 0.9676219440243616, 0.9014407388632056, 0.8271200390224608], "TOTAL_ENERGY": [2.4999999999922378, 2.5000000665957076, 2.4997386942252686, 2.48690602915595, 2.3882540611834457, 2.16892351416033, 1.9369313792791993], "MOMENTUM_X": [1.6529740962080065e-12, -2.199407830711843e-08, 8.806564160738089e-05, 0.004414772894833857, 0.03748929227725875, 0.10938067351270016, 0.18213658298173008], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_137": {}, "NODE_891": {"DENSITY": [0.125, 0.125, 0.12500000000000605, 0.12499999996655223, 0.12499990434225688, 0.13268284576279946, 0.2689113167067491], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000001693, 0.24999999990634622, 0.24999973215863228, 0.2727532489008899, 0.895718779338938], "MOMENTUM_X": [-3.3027723229901585e-23, 2.316889199656574e-19, 1.7221953762125138e-15, -1.7170614493051544e-11, -2.2198488373598315e-07, 0.009407314226191841, 0.2571679054097733], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1003": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999105, 0.1250000002075361], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999997496, 0.25000000058110117], "MOMENTUM_X": [-2.498283362322209e-39, 9.879077548114463e-36, -1.8017640232759996e-28, 2.6420056378877047e-24, 2.1042733791909845e-19, -8.324914279348699e-15, 6.426025056747941e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_757": {"DENSITY": [0.124999999999789, 0.12499998138400406, 0.12521008902051026, 0.22401526572107439, 0.2610203453582376, 0.2732269070619277, 0.2934032926700331], "TOTAL_ENERGY": [0.2499999999994093, 0.24999994787521732, 0.25058929406655256, 0.6639961706624731, 0.8433899457165652, 0.8901839087535874, 0.8865670458646973], "MOMENTUM_X": [2.6209089333114344e-13, -1.820127646303277e-08, 0.00020102034347938583, 0.17163499657545206, 0.23541859291397438, 0.25699201590913084, 0.27267758639731193], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_325": {"DENSITY": [1.0, 1.000000000031109, 0.9999999311930634, 0.9999543007972032, 0.998142650365379, 0.9823163838264081, 0.9364502272240189], "TOTAL_ENERGY": [2.500000000000001, 2.5000000001088813, 2.4999997591757377, 2.499840056988417, 2.493505138221011, 2.4385855751727563, 2.2834105057885927], "MOMENTUM_X": [1.7498869530374413e-16, -3.9291206725579684e-11, 8.099557660536744e-08, 5.387827043963927e-05, 0.002190753130117017, 0.02066478836567854, 0.07215423210107882], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_143": {}, "NODE_609": {"DENSITY": [0.17867035959690936, 0.32954815332148485, 0.4446753365795517, 0.44407458560830915, 0.4121134848102394, 0.429735596494196, 0.4301834150872224], "TOTAL_ENERGY": [0.4513871423190057, 0.9026632282660809, 0.9566312125112898, 0.944315254606394, 0.9354545683243599, 0.9420535755893741, 0.9424085667706884], "MOMENTUM_X": [0.08852647630566186, 0.306773433986037, 0.41459831916066736, 0.41031448051274877, 0.38201121762328955, 0.3979723183906251, 0.3983754753970166], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_954": {}, "NODE_766": {"DENSITY": [0.1249999999999959, 0.12499999822795574, 0.12501474567339435, 0.17430231553653094, 0.27733784742908363, 0.27137334947986586, 0.2781071414186542], "TOTAL_ENERGY": [0.2499999999999885, 0.24999999503827605, 0.2500412960255797, 0.43183168015308426, 0.9364370813865663, 0.8916250101064336, 0.8700595117529214], "MOMENTUM_X": [-6.445314204861647e-17, -2.7546617893483306e-09, 1.9812321186727757e-05, 0.08038206119447133, 0.271905414688855, 0.25591109625182507, 0.25598716514070513], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1457": {}, "ELEMENT_971": {}, "ELEMENT_1175": {}, "ELEMENT_765": {}, "ELEMENT_760": {}, "ELEMENT_31": {}, "NODE_1039": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999996, 0.1250000000012686], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999986, 0.25000000000355216], "MOMENTUM_X": [1.6182591936852698e-41, 2.1784409191113572e-34, -1.3289779451775657e-30, -1.8616723866863476e-25, 5.318396283355468e-22, -7.422564074612986e-17, 1.2315225014804435e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1592": {}, "NODE_262": {"DENSITY": [1.0, 1.0000000000000002, 0.9999999999995652, 1.000000000605267, 0.9999990878053323, 0.9999051329405504, 0.9978981098582864], "TOTAL_ENERGY": [2.5, 2.500000000000001, 2.499999999998478, 2.500000002118435, 2.499996807320468, 2.499667981551017, 2.4926505247707085], "MOMENTUM_X": [6.749957993958892e-21, -2.8704118439955824e-16, 4.752366632773988e-13, -6.766055925054297e-10, 1.0846878460676887e-06, 0.00011227381054737472, 0.0024826171847255806], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_34": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, -6.18048930339745e-38, -2.7580318666214513e-34, -5.0056006081774815e-30, 5.411100807280305e-27, -4.937199821230698e-22, -1.6030809800664169e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_556": {}, "ELEMENT_1514": {}, "ELEMENT_960": {}, "NODE_383": {"DENSITY": [0.9999999999655603, 0.9999999762157066, 0.9997701029029111, 0.992033511220364, 0.9485235512200842, 0.8709187683701889, 0.7963419444490157], "TOTAL_ENERGY": [2.499999999879461, 2.499999916755001, 2.4991954652717125, 2.472220483712638, 2.323728302266834, 2.0718215065025736, 1.845350067907781], "MOMENTUM_X": [-6.775566352310939e-12, 3.9374652182802933e-08, 0.00027199482175272675, 0.009374636799651986, 0.058998617324719754, 0.14059094430608887, 0.21004296063056488], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_113": {}, "ELEMENT_828": {}, "ELEMENT_1332": {}, "ELEMENT_1967": {}, "ELEMENT_933": {}, "NODE_1081": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999988], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999964], "MOMENTUM_X": [0.0, 7.310355194438414e-40, -2.695519853145836e-35, 2.2503541453169852e-30, -1.5039382256265772e-26, -1.3176178740485251e-21, -1.4716634677145574e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1767": {}, "ELEMENT_1862": {}, "ELEMENT_793": {}, "ELEMENT_1673": {}, "NODE_942": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000036, 0.12499999999873132, 0.12499996886021095, 0.1256308152104371], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000105, 0.24999999999644776, 0.24999991280860237, 0.25177457649059104], "MOMENTUM_X": [-5.170227751863544e-30, -1.4572792206323282e-25, 1.7450731913775213e-20, 1.4784812445941065e-16, -6.773437351716756e-13, -3.1964673354139393e-08, 0.0005768607320016766], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1687": {}, "NODE_768": {"DENSITY": [0.12499999999998469, 0.12499999816845009, 0.12501321479784994, 0.1773348631487587, 0.2723534343792662, 0.27275234210126204, 0.2793940563620336], "TOTAL_ENERGY": [0.24999999999995715, 0.24999999487166039, 0.2500370094507212, 0.4447389235176058, 0.9085778879260199, 0.9008919909992883, 0.8766501337334758], "MOMENTUM_X": [1.4734841377671765e-14, -2.8540611108717377e-09, 1.8799256183056408e-05, 0.08616897064373852, 0.2607162127382535, 0.2592537799363212, 0.25872973729985993], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1094": {}, "ELEMENT_1709": {}, "ELEMENT_726": {}, "ELEMENT_1740": {}, "ELEMENT_868": {}, "NODE_160": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000001656, 0.9999999999772231, 0.9999999181930326], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000579, 2.4999999999202798, 2.499999713675627], "MOMENTUM_X": [4.0307494038363074e-30, -2.484222408951702e-25, -1.928660979764669e-20, 8.840021447210408e-17, -1.9829479701803613e-13, 3.110843312054879e-11, 9.714134092099597e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_412": {"DENSITY": [1.0000000004747915, 0.9998478346542784, 0.9915148108447174, 0.9404423829455449, 0.8513330566472206, 0.7692945704728575, 0.7080042054633248], "TOTAL_ENERGY": [2.5000000016617716, 2.499467474854693, 2.4704251976333764, 2.296848568238177, 2.0111003486715098, 1.7671852041573588, 1.597015552953729], "MOMENTUM_X": [-3.9765424999133835e-08, 0.0001799727020568252, 0.009972671049562065, 0.06775902502389497, 0.15931312837824346, 0.2324493868630287, 0.2794646459300189], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_371": {}, "ELEMENT_1581": {}, "ELEMENT_1026": {}, "ELEMENT_1630": {}, "ELEMENT_1111": {}, "ELEMENT_354": {}, "ELEMENT_103": {}, "ELEMENT_781": {}, "ELEMENT_1344": {}, "ELEMENT_83": {}, "ELEMENT_229": {}, "ELEMENT_306": {}, "NODE_839": {"DENSITY": [0.125, 0.12499999999999992, 0.12500000000293948, 0.12499995346638466, 0.12597376961884058, 0.2655000039436429, 0.2419708112030508], "TOTAL_ENERGY": [0.25, 0.24999999999999978, 0.2500000000082305, 0.24999986970591978, 0.25274548211666636, 0.8839007581099021, 0.7435367562336357], "MOMENTUM_X": [3.2726043914999085e-22, -9.877734969514466e-17, 2.934709527567266e-12, -5.0542102302546024e-08, 0.0008624611976276511, 0.2540267332561209, 0.1959132488564823], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_263": {}, "ELEMENT_5": {}, "ELEMENT_1097": {}, "ELEMENT_1912": {}, "NODE_1015": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999871, 0.12500000003383946], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999999964, 0.25000000009475054], "MOMENTUM_X": [-5.83686980367226e-40, 9.624197214995377e-34, 3.6594277342728957e-29, -3.1123799458349896e-25, 1.420402326980074e-19, -2.2340533407293286e-15, 2.6028883566563652e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1024": {}, "ELEMENT_1405": {}, "ELEMENT_1842": {}, "ELEMENT_95": {}, "ELEMENT_292": {}, "NODE_138": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999971, 1.000000000001203], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999999, 2.500000000004211], "MOMENTUM_X": [8.920537957383629e-39, -2.754981645561926e-31, -3.1233497329402138e-27, 1.1165686146657198e-22, 4.853201759560064e-19, 3.693175238953186e-15, -1.6528588189823649e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_300": {}, "ELEMENT_879": {}, "NODE_130": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 1.0000000000000464], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.500000000000162], "MOMENTUM_X": [-4.0961962915468676e-39, 3.0252778665986725e-32, -3.0286943964106107e-28, -6.743486247159434e-24, 1.0231918862510945e-20, 4.3012202544430535e-16, -1.067374343189872e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1791": {}, "NODE_533": {"DENSITY": [0.6661627446545814, 0.5189859221767926, 0.4737157304611088, 0.4559581408625133, 0.44367204462717624, 0.434954425607804, 0.43200050054692857], "TOTAL_ENERGY": [1.4736735176237712, 1.1382714925435016, 1.0425649158286654, 0.999786950079773, 0.976326795703996, 0.9604469089236222, 0.9508338695203009], "MOMENTUM_X": [0.2537289720633118, 0.3757392673271269, 0.3865171157698344, 0.39242199851763376, 0.39374743637241477, 0.3935172125103332, 0.39607274528898284], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_804": {}, "ELEMENT_1851": {}, "ELEMENT_372": {}, "ELEMENT_1753": {}, "ELEMENT_703": {}, "NODE_786": {"DENSITY": [0.12499999999999985, 0.12499999999928608, 0.12499996873577177, 0.1283218168451958, 0.2803149465527805, 0.2515190765929009, 0.2708583113649139], "TOTAL_ENERGY": [0.24999999999999956, 0.249999999998001, 0.24999991246010694, 0.25953996624877296, 0.9600407801416695, 0.7905709060735937, 0.8825968291470185], "MOMENTUM_X": [1.8797562152484195e-16, 5.567309882513038e-12, -1.1533761504518155e-07, 0.003570858664532347, 0.2819076959589114, 0.21481233161729343, 0.25297765577770526], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1170": {}, "ELEMENT_989": {}, "ELEMENT_682": {}, "ELEMENT_1646": {}, "ELEMENT_1154": {}, "ELEMENT_896": {}, "NODE_765": {"DENSITY": [0.12500000000000103, 0.12499999834911525, 0.12501583355912838, 0.17420796590911658, 0.27806356991181014, 0.270457101252246, 0.27817190634516614], "TOTAL_ENERGY": [0.2500000000000029, 0.24999999537752282, 0.2500443429338209, 0.43142141486315777, 0.9404405419554175, 0.886090698836562, 0.8698123062213454], "MOMENTUM_X": [-6.31933216734872e-15, -2.546981085833269e-09, 2.1015944086307802e-05, 0.08012638599774832, 0.27343620497691046, 0.2536515483387756, 0.25583256827725803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1316": {}, "ELEMENT_1186": {}, "ELEMENT_437": {}, "NODE_14": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000022], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000075], "MOMENTUM_X": [-1.0851515517793863e-42, -7.804652057534281e-34, -4.749364333062163e-30, -8.343827313282741e-27, -1.8294827633064923e-22, -8.72012573996222e-20, -2.654166367683006e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_737": {}, "NODE_425": {"DENSITY": [1.0000000937089222, 0.9993462540798752, 0.9805473772057458, 0.9070936842779961, 0.8113984553961253, 0.7343941764902433, 0.6790568781056343], "TOTAL_ENERGY": [2.500000327981255, 2.4977127896353926, 2.4325317470875683, 2.187422808816069, 1.8900848118684568, 1.6689992707231538, 1.520146392159813], "MOMENTUM_X": [-1.6264508947495492e-07, 0.0007705792953626635, 0.022673362939157365, 0.10331806166298507, 0.19611662376505043, 0.259820374682908, 0.29900912739658775], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_316": {}, "ELEMENT_909": {}, "ELEMENT_1825": {}, "ELEMENT_619": {}, "NODE_836": {"DENSITY": [0.125, 0.12500000000001227, 0.12499999984059239, 0.12500053197962538, 0.1428305487386212, 0.2718117520153724, 0.26699173930837095], "TOTAL_ENERGY": [0.25, 0.25000000000003436, 0.24999999955365862, 0.2500014895670652, 0.30665157810425475, 0.91114620660514, 0.8817784874757825], "MOMENTUM_X": [-9.44240790920653e-19, 6.782899328406524e-15, -1.415920325691822e-10, 3.4521789512722075e-07, 0.025825627097776062, 0.2627501821201172, 0.2509116284191416], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1027": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999985, 0.12500000000476555], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999956, 0.25000000001334344], "MOMENTUM_X": [-2.113484793466096e-41, 6.544502496387391e-34, 7.632646249844083e-31, -3.5419882238087767e-25, 2.713048982045216e-20, -5.171644370532525e-16, 7.93914446055287e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_343": {}, "NODE_369": {"DENSITY": [0.9999999999999911, 1.0000000014454193, 0.9999990432419537, 0.9995295244036242, 0.9893816311522785, 0.943008720386662, 0.8674544476648804], "TOTAL_ENERGY": [2.4999999999999685, 2.500000005058967, 2.4999966513511485, 2.498353750421746, 2.4630090849950093, 2.3051093132656217, 2.060249841280364], "MOMENTUM_X": [-9.046008352544733e-14, -2.1103276361156243e-09, 1.4850703169216575e-06, 0.0005697987850398834, 0.012400516114136197, 0.0643124182501217, 0.14252626317124997], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_386": {}, "ELEMENT_40": {}, "ELEMENT_1025": {}, "NODE_829": {"DENSITY": [0.125, 0.12499999999999915, 0.1250000000007141, 0.12499988372004352, 0.13190996410210803, 0.28616744101197233, 0.25671999304498005], "TOTAL_ENERGY": [0.25, 0.24999999999999764, 0.2500000000019995, 0.24999967441584123, 0.2704185770095216, 0.9907674427430397, 0.8212223440733742], "MOMENTUM_X": [1.5906899060780355e-20, -1.778756171972674e-15, 5.158760403041916e-12, -2.3624652624800803e-07, 0.008291309311214846, 0.2924114119172438, 0.2267694627575552], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_719": {"DENSITY": [0.12500000003343992, 0.12500406250685148, 0.16037981325544426, 0.28255246737420947, 0.27386984353807353, 0.3038314491630451, 0.3868711680509266], "TOTAL_ENERGY": [0.25000000009363166, 0.2500113760727578, 0.37313652049296575, 0.9619891314124948, 0.8833633626455468, 0.8821979160605876, 0.9248100749866847], "MOMENTUM_X": [2.6650017644086177e-11, 6.606100870061977e-06, 0.054867971469005294, 0.2816096514517924, 0.25559976090043235, 0.27984537990359243, 0.3585415539128708], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_115": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000001743, 0.9999999999649466], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000006093, 2.4999999998773133], "MOMENTUM_X": [-2.0157009195612483e-35, 6.433157397744165e-29, -1.971013392558565e-24, -3.8389855370751835e-21, 1.5207627236474901e-16, -2.065401799229518e-13, 4.417986402640851e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_313": {}, "ELEMENT_1366": {}, "ELEMENT_157": {}, "ELEMENT_818": {}, "ELEMENT_405": {}, "ELEMENT_1569": {}, "ELEMENT_963": {}, "NODE_883": {"DENSITY": [0.125, 0.125, 0.12499999999999965, 0.1250000000056438, 0.12499990202251736, 0.12729334068355821, 0.2781513367386357], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999903, 0.2500000000158026, 0.24999972566323558, 0.2565321697046956, 0.9509539996656424], "MOMENTUM_X": [2.1739607774735957e-26, 1.7157260083640135e-21, -4.2229257964505197e-16, 6.12250969445348e-12, -1.18079804108253e-07, 0.002276671082783916, 0.2783501053332098], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1099": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, 1.795704125879613e-37, 1.800544064242358e-33, -1.6760817174693262e-29, -4.743312591039952e-25, -4.354929851320164e-22, 2.4657003407580013e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_670": {}, "ELEMENT_945": {}, "NODE_465": {"DENSITY": [0.9997344307188474, 0.956478877267986, 0.8360642200341564, 0.7245552733541081, 0.6513535658209753, 0.603483202580233, 0.5704665136231207], "TOTAL_ENERGY": [2.499070737261111, 2.3507354779609977, 1.9649812982239951, 1.6424260415548382, 1.4491654720954341, 1.3307494417362304, 1.252492854106184], "MOMENTUM_X": [0.00034519360252545264, 0.04991035929934047, 0.17393525851551658, 0.2675291702335289, 0.31678446266441684, 0.3430365184449304, 0.35830152867602655], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_968": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000001071, 0.12499999786613726, 0.12502846871301393], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000030004, 0.24999999402518458, 0.2500797339554636], "MOMENTUM_X": [1.608568744303066e-30, -7.460852489821389e-26, -1.6447491033199538e-21, -5.929609421018556e-18, 1.8156888564793374e-13, -3.011475258231052e-09, 2.9745928830028204e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_260": {"DENSITY": [1.0, 0.99999999999998, 1.0000000000411613, 0.9999999645083135, 0.9999855093780334, 0.9993671475790603, 0.9925052812749439], "TOTAL_ENERGY": [2.5, 2.49999999999993, 2.5000000001440634, 2.4999998757790998, 2.499949283236278, 2.497785707430161, 2.4738573274336884], "MOMENTUM_X": [2.831586007083566e-18, -1.0025895449396065e-14, -4.493329054903704e-11, 3.972698735093508e-08, 1.6769924098163166e-05, 0.0007438442434128691, 0.008855620807889424], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1293": {}, "ELEMENT_326": {}, "ELEMENT_1018": {}, "ELEMENT_1351": {}, "NODE_848": {"DENSITY": [0.125, 0.125, 0.124999999999961, 0.1250000006353758, 0.12499187429157127, 0.1992426298411349, 0.25485209876406634], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999989092, 0.25000000177905235, 0.24997724684070452, 0.54819109250415, 0.8126306189928453], "MOMENTUM_X": [-2.2111453572740457e-24, 9.519293283923297e-19, -3.038707298313924e-14, 2.0961986508867998e-10, -7.009012442610155e-07, 0.13118172320204283, 0.22213814489510153], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_631": {}, "ELEMENT_96": {}, "ELEMENT_1236": {}, "NODE_234": {"DENSITY": [1.0, 1.0, 1.0000000000000002, 1.000000000001532, 1.0000000003529446, 0.9999988377758232, 0.9999076814147635], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000013, 2.5000000000053633, 2.5000000012353065, 2.499995932218162, 2.4996768999804733], "MOMENTUM_X": [-6.480125898526584e-25, -3.370979584348584e-20, -2.847070442210513e-16, -1.9758500670498847e-12, -2.9288052378330406e-10, 1.3900531269852184e-06, 0.00010953201042559728], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_503": {}, "NODE_1038": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999992, 0.12500000000165865], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999978, 0.25000000000464423], "MOMENTUM_X": [4.577652036595959e-42, 5.218953488564005e-35, -6.425583511250486e-31, -4.3189101495366287e-26, -1.6634377033228713e-21, -9.187934229731498e-17, 1.5788628558797109e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_614": {"DENSITY": [0.17920621163308958, 0.33114656362435696, 0.4437520870161913, 0.4395836317475834, 0.41547630735920626, 0.43180218946714216, 0.4239902106940426], "TOTAL_ENERGY": [0.4542021734915688, 0.9116171325250975, 0.9554962437464962, 0.9453878401019066, 0.9367378781106771, 0.9434765090298153, 0.9400228888334453], "MOMENTUM_X": [0.09018077558146001, 0.3109180826141552, 0.41444701208520307, 0.4081818237887433, 0.38628755891762395, 0.4013245344745574, 0.39401369965633776], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_370": {}, "ELEMENT_1213": {}, "ELEMENT_187": {}, "ELEMENT_128": {}, "ELEMENT_785": {}, "NODE_531": {"DENSITY": [0.8520728299332803, 0.5972960063866125, 0.5156750646031201, 0.4802823477919904, 0.462199342021568, 0.4499388295672675, 0.4423170216006668], "TOTAL_ENERGY": [2.014821825164268, 1.3069701023424842, 1.121614197382894, 1.0473749441600664, 1.009067213608932, 0.9857188236492569, 0.9704754732467076], "MOMENTUM_X": [0.16122357015524205, 0.3472489566540848, 0.3800969416748224, 0.38990644050452666, 0.3943925977709453, 0.3956555645126623, 0.3967789892263143], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_641": {}, "ELEMENT_1408": {}, "NODE_344": {"DENSITY": [1.0000000000007077, 1.0000000028752034, 0.9999955902466773, 0.9994561960881438, 0.9906646866510301, 0.9527499077049025, 0.8875862752639364], "TOTAL_ENERGY": [2.5000000000024767, 2.500000010063211, 2.499984565911047, 2.498097237975022, 2.467466624821306, 2.3379218987778088, 2.1245500057023037], "MOMENTUM_X": [7.967051551028291e-13, -3.4098862249499723e-09, 5.1968673993528e-06, 0.0006428669119859904, 0.010979356934113924, 0.054253305834606136, 0.12368337776649571], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_921": {}, "NODE_595": {"DENSITY": [0.21083324005678422, 0.3529994367674378, 0.4857268768056294, 0.41439810483483785, 0.4017529059740133, 0.4464680642999524, 0.4097975930922441], "TOTAL_ENERGY": [0.5976795281269152, 0.8686689841827044, 0.9863636301572393, 0.9200441819504123, 0.9300182933391715, 0.9448735551570725, 0.9293531041188284], "MOMENTUM_X": [0.1495894476818463, 0.31570598268174593, 0.4547590203775385, 0.3779930357785093, 0.370439305241026, 0.4101677686567219, 0.3760612305880865], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1005": {}, "ELEMENT_308": {}, "NODE_582": {"DENSITY": [0.3476655661847946, 0.4221764352677742, 0.3855681255017608, 0.3965599733859313, 0.3833881808071492, 0.3880728529428055, 0.3827307905477024], "TOTAL_ENERGY": [0.9151639330512734, 0.9011992040640812, 0.8715919210496135, 0.8710470018005227, 0.8591962479527889, 0.8587380151369789, 0.8542663701533015], "MOMENTUM_X": [0.33652426523338425, 0.4094984122441631, 0.37930730249206507, 0.39549935702405575, 0.3854237531046052, 0.3926347312446436, 0.3890921165463574], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_480": {"DENSITY": [0.9984018212686412, 0.9147555324669525, 0.7762202337065154, 0.6748455486173961, 0.6130161483385687, 0.5732473392335787, 0.5456656901834597], "TOTAL_ENERGY": [2.494413412707315, 2.212757020489437, 1.787779559303415, 1.5093561197330687, 1.353060845623803, 1.257995887465374, 1.1948711635320906], "MOMENTUM_X": [0.0021284162677338765, 0.09478247077297142, 0.22646911670325506, 0.301745640317032, 0.3381915388325651, 0.3573368430949981, 0.3683443084621895], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1775": {}, "NODE_1090": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, -8.131175037239369e-42, 1.605829329997494e-37, -2.736708873138803e-32, -4.430109334990254e-28, 3.07530749488966e-23, 6.4520215578754705e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_140": {}, "ELEMENT_1227": {}, "NODE_1046": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999998164], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999994854], "MOMENTUM_X": [-6.743327471412778e-46, -1.0064915265249384e-37, 6.940064072794348e-33, -4.273199287703474e-28, 4.468657648617404e-24, 2.531581778300426e-19, -1.7669326487912436e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_444": {}, "ELEMENT_819": {}, "NODE_451": {"DENSITY": [1.0000015187845614, 0.994743179564331, 0.9360610703658039, 0.8228429262917711, 0.7277593150557141, 0.6637923116958633, 0.6199909272640762], "TOTAL_ENERGY": [2.5000053157481976, 2.481652047692745, 2.2823804016183735, 1.9245792828059947, 1.6511363514967918, 1.481065101863337, 1.3709010090725036], "MOMENTUM_X": [-1.2104593952066175e-06, 0.006278481974907325, 0.07332573838193912, 0.1874990447053453, 0.26662674804705505, 0.3103168098265009, 0.3354592151164694], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1703": {}, "ELEMENT_1954": {}, "ELEMENT_322": {}, "NODE_1069": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999949], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999856], "MOMENTUM_X": [-1.1397178454459873e-49, 1.1066883409435629e-38, -1.3684123368778552e-34, 9.369448467900838e-30, -1.9991799337573445e-25, -3.758482042663338e-21, -7.10978976576261e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_507": {}, "NODE_269": {"DENSITY": [1.0, 1.0, 0.9999999999996139, 1.0000000005084126, 0.9999998358328572, 0.9999594893271728, 0.9987172672665301], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999986477, 2.5000000017794437, 2.4999994254150666, 2.4998582157225844, 2.495513150832552], "MOMENTUM_X": [2.547844921922721e-23, -3.0028631494003397e-17, 4.59628872533729e-13, -6.058342127415085e-10, 1.9926802289880734e-07, 4.845533013511751e-05, 0.0015282214392929262], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_934": {}, "ELEMENT_461": {}, "NODE_597": {"DENSITY": [0.22990191751143496, 0.379416832536111, 0.46512495823193745, 0.4106395515330109, 0.4260031093763208, 0.4327543904413484, 0.42057935942723795], "TOTAL_ENERGY": [0.6818857061868452, 0.8851319178423088, 0.9716248998943058, 0.9287387824964297, 0.9409692762809476, 0.9436441836268147, 0.9384585775546184], "MOMENTUM_X": [0.1808238143877654, 0.3425971063780617, 0.4362646735989383, 0.3794922541516972, 0.39512755160778557, 0.4010592809688032, 0.3894684327246933], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_555": {}, "NODE_865": {"DENSITY": [0.125, 0.125, 0.12500000000007752, 0.12499999915467867, 0.1250064135724503, 0.16562200251801915, 0.27847971876047206], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000002171, 0.24999999763310035, 0.2500179600139555, 0.3952938576211435, 0.9457319152827653], "MOMENTUM_X": [-6.099011803159927e-23, -6.743921388085414e-18, 1.0880515820867366e-13, -1.571978350204706e-09, 9.78979196271419e-06, 0.06497679174177529, 0.2751841459167981], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1169": {}, "ELEMENT_1693": {}, "NODE_800": {"DENSITY": [0.12499999999999982, 0.12500000000108075, 0.12499997063960613, 0.12544665247842895, 0.24170515694359618, 0.25558554313613435, 0.2700843828352259], "TOTAL_ENERGY": [0.24999999999999953, 0.25000000000302613, 0.24999991779090835, 0.25125482166419444, 0.7554088248210239, 0.8153517029989781, 0.8883708839351148], "MOMENTUM_X": [1.7960947977868196e-16, 1.209041602254034e-12, -2.855751353047416e-08, 0.0004074726789870185, 0.20611529287565478, 0.22443320726535138, 0.25416696080541035], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_359": {"DENSITY": [0.9999999999999791, 0.999999999916603, 1.0000000693623823, 0.9998768666368224, 0.9953710278763235, 0.9646547937154489, 0.8981057097004038], "TOTAL_ENERGY": [2.499999999999927, 2.4999999997081113, 2.5000002427683485, 2.4995690640769173, 2.483832972272674, 2.378086554043847, 2.157718515359486], "MOMENTUM_X": [-1.874570025490917e-14, 3.1118591592379734e-11, -1.8275779859644093e-08, 0.00015186351907120355, 0.005455907227625424, 0.04045999469130348, 0.11180818843285367], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1729": {}, "ELEMENT_19": {}, "ELEMENT_214": {}, "NODE_675": {"DENSITY": [0.12499975203181608, 0.14890597851232446, 0.28872306551513055, 0.2860851731721212, 0.3653390504799925, 0.45158711543331836, 0.4448543146779855], "TOTAL_ENERGY": [0.24999930569003612, 0.32863139583260703, 0.9886269233206257, 0.8689943181806964, 0.9146265664204517, 0.9516825643486633, 0.9481561365976107], "MOMENTUM_X": [-3.9424511132838554e-07, 0.03508105360613002, 0.2932217875419141, 0.26178161059957944, 0.33824566040648507, 0.41807070192068563, 0.41156743911880955], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1111": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006], "MOMENTUM_X": [0.0, 9.206983640039442e-38, 7.25194442956987e-34, 2.0841303791198956e-29, 1.416835995771518e-26, -2.6099592410758973e-21, -1.4231187937366963e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_378": {"DENSITY": [0.9999999998895943, 0.9999994862678404, 0.9996618429066308, 0.9909777224991101, 0.9475666096642927, 0.8722477137129663, 0.7987062813202578], "TOTAL_ENERGY": [2.4999999996135807, 2.499998201938523, 2.4988166804357843, 2.4685564493385797, 2.320565923547183, 2.076110121723977, 1.852425618367867], "MOMENTUM_X": [-6.50992074006266e-11, 6.154661045431725e-07, 0.00039989231814846406, 0.010614309377182095, 0.06000032669030112, 0.13907660544845124, 0.20772066926106578], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1998": {}, "NODE_223": {"DENSITY": [1.0, 1.0, 1.0000000000000002, 0.9999999999997949, 1.0000000003543945, 0.9999997661029212, 0.9999707599150996], "TOTAL_ENERGY": [2.5, 2.5, 2.500000000000001, 2.4999999999992824, 2.500000001240381, 2.4999991813603444, 2.4998976612573554], "MOMENTUM_X": [2.1223717289492617e-25, -2.01104111652955e-21, -3.194653437146238e-16, 2.087134521127094e-13, -3.9917383294643795e-10, 2.814193850650134e-07, 3.4738747962168674e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_264": {}, "ELEMENT_303": {}, "ELEMENT_928": {}, "ELEMENT_1061": {}, "NODE_168": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000013, 1.0000000000123817, 0.9999999713097122, 0.9999955992833468], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000000004, 2.5000000000433347, 2.4999998995839934, 2.4999845975282886], "MOMENTUM_X": [4.346912098497642e-26, -1.3244297218451627e-21, 1.1413543295603225e-18, -4.2552521981775233e-16, -1.4213946299261252e-11, 3.275065585901381e-08, 5.107055221649175e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_87": {}, "ELEMENT_142": {}, "NODE_459": {"DENSITY": [0.9999652208036937, 0.980510613134425, 0.8870157082253539, 0.7723727056830596, 0.6897478760605755, 0.6350073990559715, 0.597166458638981], "TOTAL_ENERGY": [2.499878276669105, 2.43243305884378, 2.1232161599649744, 1.7762146166362343, 1.54832348756351, 1.4075684351081135, 1.3149889086861297], "MOMENTUM_X": [3.127521903926715e-05, 0.022696455531419652, 0.1237977801588362, 0.22954984301240472, 0.2918225781711115, 0.3259699101605057, 0.3460033142169207], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_395": {"DENSITY": [1.0000000059357506, 0.9999427802352561, 0.9948269903974328, 0.954703946751896, 0.8752895999409314, 0.7972572178182943, 0.7363716776067116], "TOTAL_ENERGY": [2.500000020775127, 2.4997997386880764, 2.4819417163815456, 2.344642937684829, 2.0863635942332435, 1.8495950360654683, 1.6764061017987284], "MOMENTUM_X": [-4.343867087326528e-10, 6.498429103625533e-05, 0.0060894035615242405, 0.052515330925317835, 0.13719733144606683, 0.2102475140173999, 0.2597679715634143], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_87": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000138], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000048], "MOMENTUM_X": [4.1031740557490446e-41, 3.931817658250454e-33, 3.524378548846878e-29, -2.5209312768566322e-25, -1.491518293384673e-21, 1.9871691928166005e-17, -1.8037452285203878e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_932": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000455, 0.1249999999683029, 0.12499993497756688, 0.1295971781816474], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000128, 0.24999999991124816, 0.24999981793703502, 0.26335280066260147], "MOMENTUM_X": [-1.860095240661757e-28, 8.955214216131518e-24, 1.427279479261765e-19, 2.34149613120223e-15, -1.9079174271058435e-11, -1.6988024532222425e-07, 0.005271206626738043], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_683": {}, "ELEMENT_1212": {}, "ELEMENT_994": {}, "ELEMENT_1063": {}, "NODE_286": {"DENSITY": [0.9999999999999999, 0.9999999999998689, 1.0000000004105551, 0.9999993892741669, 0.9999111024196868, 0.9977377441909577, 0.9823561066164581], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999999995413, 2.500000001436943, 2.4999978624605106, 2.499688873789532, 2.492090690169159, 2.438720778334552], "MOMENTUM_X": [-1.797690883435322e-16, 3.159052842430757e-13, -4.959212859697321e-10, 7.270334537738114e-07, 0.00010577463817796575, 0.002679675552352812, 0.020646740413201053], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_471": {"DENSITY": [0.9997591222239893, 0.9567389842448561, 0.8337424531576804, 0.7219371337722235, 0.6499180462223216, 0.6032912724878353, 0.5710974340114988], "TOTAL_ENERGY": [2.4991570925053477, 2.351571337538504, 1.9576471816406382, 1.634990053481392, 1.4452273800875035, 1.3297657697531076, 1.2533329340057768], "MOMENTUM_X": [0.0002732928246622991, 0.04965431548850464, 0.1758398790763387, 0.269528854342836, 0.31774233078398567, 0.34342571085828383, 0.3584505154566599], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1074": {}, "ELEMENT_1877": {}, "ELEMENT_56": {}, "ELEMENT_1065": {}, "ELEMENT_731": {}, "NODE_686": {"DENSITY": [0.12499996141785298, 0.13064069652685925, 0.28404440213539844, 0.26573027302009644, 0.3266868636851984, 0.419177777776291, 0.4600524569554062], "TOTAL_ENERGY": [0.24999989197003006, 0.266487790671078, 0.9729481904607885, 0.8227996681061653, 0.9061834087119887, 0.937105684318778, 0.954743293242895], "MOMENTUM_X": [-4.904484812739937e-08, 0.006552226107990104, 0.2866962680795658, 0.23378674619056034, 0.30463020543342895, 0.387940372259171, 0.4257552553098011], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1453": {}, "NODE_500": {"DENSITY": [0.9713267751561099, 0.7804657530992937, 0.6508188235799227, 0.5822548879020621, 0.5419556575361192, 0.5153278723678509, 0.4974984313209476], "TOTAL_ENERGY": [2.401052356661962, 1.80143154663232, 1.4469943812350345, 1.2782440798562709, 1.1849880620045683, 1.1273936370075845, 1.0885503835066601], "MOMENTUM_X": [0.030147313735725864, 0.2250748585320383, 0.31666694187345473, 0.3545784419084813, 0.37084118797339155, 0.37880575768588104, 0.3838081205618474], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1319": {}, "ELEMENT_323": {}, "NODE_979": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000217, 0.12499999978580903, 0.1250010967356228], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000006073, 0.24999999940026527, 0.25000307093791363], "MOMENTUM_X": [-6.862402733073799e-33, 1.388856179241172e-26, 1.0146925491692961e-22, -1.3394363110870468e-18, 1.795073501557971e-14, -2.167920188127629e-10, 1.023229776830059e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1579": {}, "NODE_889": {"DENSITY": [0.125, 0.125, 0.1250000000000023, 0.1249999999882145, 0.12499991487822361, 0.1275369186015051, 0.26900750256562633], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000065, 0.2499999999670006, 0.24999976165911833, 0.2572477770629449, 0.896646663551664], "MOMENTUM_X": [-5.4310348696533795e-24, 1.0301468933183392e-19, 6.007536391930584e-16, -5.071252970808781e-12, -1.3349329016420198e-07, 0.0026874643892952207, 0.2574418267325129], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1523": {}, "ELEMENT_999": {}, "ELEMENT_1364": {}, "ELEMENT_1860": {}, "NODE_936": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000001343, 0.12499999925094059, 0.12507521750697226], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000003764, 0.24999999790263372, 0.25021081551866237], "MOMENTUM_X": [1.0906248102149244e-32, -4.962588580574755e-27, 1.234960258198167e-22, -2.609778133220176e-18, 5.515179484000116e-14, -2.3899729311958726e-09, 8.788575155119521e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1129": {}, "ELEMENT_130": {}, "NODE_604": {"DENSITY": [0.23217363595570087, 0.38877173338208726, 0.44990229123108605, 0.4154578793663546, 0.4286984474476588, 0.422922907154901, 0.42477733066553297], "TOTAL_ENERGY": [0.6903146294123199, 0.9137491897820299, 0.9513250273566044, 0.9334554702275857, 0.938008569113362, 0.9362532416058188, 0.9374068532048618], "MOMENTUM_X": [0.18201033196494512, 0.3562615823296492, 0.4158790273677925, 0.3825369737992141, 0.3939845564792299, 0.3886044439782206, 0.3904436078481657], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_827": {}, "ELEMENT_550": {}, "NODE_8": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000004], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000013], "MOMENTUM_X": [-5.1477186968139535e-43, -3.51826948092352e-34, -3.3480479002858654e-31, 1.5841981340587047e-27, 2.1602776712483723e-23, -1.1894891713698846e-21, -5.132218730339446e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_15": {}, "NODE_726": {"DENSITY": [0.1250000000558904, 0.1250302482166962, 0.18234375047872026, 0.2651402332103233, 0.27646018957094437, 0.31829921862860977, 0.4042144693845333], "TOTAL_ENERGY": [0.2500000001564931, 0.2500847210030254, 0.4661317372912699, 0.8686295070250984, 0.8859565598499021, 0.8929819131594682, 0.9326939111095085], "MOMENTUM_X": [5.49133644340168e-11, 3.165707037918945e-05, 0.0953922094724472, 0.24642220718555588, 0.2596261367300141, 0.29550071345273965, 0.37593649808351487], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1158": {}, "ELEMENT_190": {}, "ELEMENT_1871": {}, "ELEMENT_594": {}, "NODE_590": {"DENSITY": [0.28678872589939586, 0.4341594270832879, 0.4400080588934089, 0.4083392350815253, 0.4298248878153005, 0.4189807055793265, 0.4219799269071714], "TOTAL_ENERGY": [0.8770727888997364, 0.9145194041608776, 0.9479946013561138, 0.9286267245298152, 0.9362280867807344, 0.9308529127812106, 0.9319105905803795], "MOMENTUM_X": [0.27005697302403603, 0.39675191570645013, 0.41275154202090225, 0.3817157576783817, 0.40230845391700637, 0.3929606134949749, 0.3964223934883264], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_652": {}, "ELEMENT_209": {}, "ELEMENT_68": {}, "NODE_1008": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000007588, 0.1249999987752809], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000021244, 0.24999999657078661], "MOMENTUM_X": [1.2618887329079227e-36, 1.0101692394161416e-31, 8.281593176719546e-27, -1.085922470186823e-21, -2.683094212426434e-18, 1.0351298794300735e-13, -2.1803770552403316e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_630": {}, "NODE_825": {"DENSITY": [0.12500000000000003, 0.12500000000008507, 0.12499999843274773, 0.12501674851005481, 0.17413299176344657, 0.26404672872581303, 0.2684191179131442], "TOTAL_ENERGY": [0.25000000000000006, 0.2500000000002383, 0.24999999561169386, 0.2500469041478078, 0.4305472149267191, 0.8666566912868839, 0.8884593420944343], "MOMENTUM_X": [-2.7176342224168872e-17, 1.5770378182726772e-13, -2.206624175019634e-09, 1.8385970667733404e-05, 0.0809621831403632, 0.2451295592205938, 0.25362294072367014], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_82": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996], "MOMENTUM_X": [-3.221335185537366e-46, 1.562896048478607e-36, 8.925168186058683e-33, -2.568516154831704e-28, -3.6457905601486076e-24, 9.824477054158296e-21, 1.1826035072708174e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1088": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000007], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000194], "MOMENTUM_X": [0.0, -1.0557457341803395e-36, -1.3628309912872507e-32, -3.7398508918478904e-28, 3.4407159518289387e-25, 5.389243527742363e-20, 8.139432267127261e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1481": {}, "NODE_842": {"DENSITY": [0.125, 0.125, 0.12499999999845104, 0.12499996698605811, 0.1259826621726179, 0.260729505276418, 0.2487544251838659], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999566294, 0.2499999075609747, 0.25277141063916814, 0.8567153522230909, 0.7787717479141635], "MOMENTUM_X": [1.1846476583305226e-20, -3.2877418175868966e-16, 8.170392153524095e-14, -4.2919196694530136e-08, 0.0009231272521713107, 0.24421407266913592, 0.2099193698503279], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_588": {"DENSITY": [0.2868290646909592, 0.4333391806848643, 0.4429097119922296, 0.40392891176714174, 0.43124857319565657, 0.4217049344144555, 0.4163213098791563], "TOTAL_ENERGY": [0.877249157741164, 0.9121308704150891, 0.9549815745698407, 0.9219178059661091, 0.9371532864340708, 0.930709897220551, 0.9274323864145508], "MOMENTUM_X": [0.27018704262911786, 0.3955128426453204, 0.41740877856514974, 0.37657758916545947, 0.40417173436792375, 0.39594890002834154, 0.39150963884907636], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1354": {}, "ELEMENT_1531": {}, "ELEMENT_385": {}, "NODE_420": {"DENSITY": [1.0000000014523067, 0.9999433958220348, 0.9940213415803014, 0.9461938002720136, 0.8534960831896884, 0.7679184949494209, 0.7054015478723171], "TOTAL_ENERGY": [2.500000005083074, 2.4998018932155346, 2.4791362431089037, 2.315999626247674, 2.01776067738498, 1.7633684000538365, 1.590258053740926], "MOMENTUM_X": [-4.0376436420073204e-10, 6.828071994828586e-05, 0.007125370052483778, 0.06204704059657125, 0.1584627745809486, 0.234931903419349, 0.2825008137716422], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1985": {}, "ELEMENT_127": {}, "ELEMENT_319": {}, "NODE_198": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999756, 1.000000000029954, 0.999999984916706, 0.9999963003843245], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999143, 2.5000000001048392, 2.4999999472084724, 2.4999870513713143], "MOMENTUM_X": [5.9090608228238775e-30, 2.338453790480486e-22, -7.399243791416744e-18, 2.8020430855204324e-14, -3.491264211156445e-11, 1.818529927702042e-08, 4.3916572925813275e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1524": {}, "ELEMENT_1845": {}, "NODE_860": {"DENSITY": [0.125, 0.125, 0.12499999999999138, 0.1250000001424274, 0.12499753551225085, 0.16434096497064332, 0.27314411970436225], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999997582, 0.2500000003987968, 0.24999309941013662, 0.39209797052331297, 0.9204500926455893], "MOMENTUM_X": [-1.7798973705754747e-24, -1.6518791098975878e-19, -9.204129418989156e-15, 8.003245568708516e-11, -1.3796204715357068e-06, 0.06687774655661802, 0.26603518427947226], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1075": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000538], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000151], "MOMENTUM_X": [-8.568276601197323e-45, -3.6970465737720234e-36, -3.8730297922892735e-32, 1.2704625632295794e-27, 2.5388978607830586e-23, 7.457171428247642e-21, 3.2747642244709907e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_727": {"DENSITY": [0.12499999999965494, 0.12499984148388853, 0.12841835493610618, 0.3015641473292845, 0.2453050408971513, 0.2782240371422121, 0.324205143694717], "TOTAL_ENERGY": [0.24999999999903383, 0.24999955615556926, 0.2598535188195688, 1.0776073299338165, 0.7494600588034361, 0.8781976034013939, 0.9019776440132928], "MOMENTUM_X": [-3.069766138899216e-13, -2.2221632831509965e-07, 0.004022194020641626, 0.32539133868221853, 0.19917208325583738, 0.2568055081946767, 0.30026839586278076], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1695": {}, "ELEMENT_28": {}, "ELEMENT_1721": {}, "ELEMENT_1352": {}, "ELEMENT_415": {}, "ELEMENT_251": {}, "ELEMENT_1945": {}, "NODE_381": {"DENSITY": [0.9999999999162853, 0.9999995358911734, 0.9996646040642296, 0.9908510954477455, 0.9468419345125366, 0.8711811738450105, 0.7978142786171495], "TOTAL_ENERGY": [2.499999999706998, 2.4999983756199735, 2.498826337428825, 2.4681158796503846, 2.3181252733849114, 2.0727071431293838, 1.8497046395869767], "MOMENTUM_X": [-3.992497973729548e-11, 5.444305057725576e-07, 0.00039505109264963866, 0.010738658049438103, 0.06070820050627877, 0.1399299917988901, 0.20819827865496945], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_89": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000006006, 0.9999999991421571], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000002102, 2.4999999969975497], "MOMENTUM_X": [-2.968754852422336e-32, 8.738537673381008e-28, -1.4325506924716092e-23, 4.864822574448207e-20, 2.1516332899490623e-16, -6.890267626867215e-13, 9.72581330880441e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_377": {}, "NODE_214": {"DENSITY": [1.0, 1.0, 0.9999999999999998, 1.000000000001285, 0.9999999994057427, 0.9999992834962725, 0.9999457696610473], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999999, 2.5000000000044973, 2.499999997920099, 2.4999974922380144, 2.499810199088471], "MOMENTUM_X": [1.4802742443294571e-25, -9.364668822561722e-21, 2.6123177718522826e-16, -1.5260472584132023e-12, 7.279054630185642e-10, 8.480136324901616e-07, 6.411038939086635e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1567": {}, "NODE_1029": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000019, 0.12499999998461718], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000053, 0.24999999995692812], "MOMENTUM_X": [-1.520275971642077e-39, -9.216490597508906e-35, -9.28251116487294e-29, 3.9156754405299065e-24, 8.375039506937142e-20, 7.09167325921217e-16, -6.612218573341579e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_275": {}, "NODE_187": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000224, 0.9999999999957275, 0.9999999411792767, 0.9999928753932179], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000000078, 2.4999999999850453, 2.499999794127475, 2.4999750639726255], "MOMENTUM_X": [5.876170900156084e-26, 7.699083781207489e-22, -2.3354784973582228e-18, -2.6025397875586834e-14, 5.095126004127161e-12, 6.927529674701547e-08, 8.411566791199906e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_615": {}, "NODE_407": {"DENSITY": [0.9999999790756199, 0.9998383956059796, 0.9904101881064344, 0.9354902452886567, 0.84666187714697, 0.7679161181982027, 0.7089674422797176], "TOTAL_ENERGY": [2.499999926764672, 2.4994344476440298, 2.466591567044718, 2.2803802180884474, 1.996653082196901, 1.763125871778297, 1.59942239020176], "MOMENTUM_X": [-6.534186085934891e-08, 0.00019526402798855774, 0.011215361371664134, 0.0726825140301496, 0.16280723736845162, 0.23244649355371028, 0.2777018401899593], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1365": {}, "ELEMENT_1014": {}, "ELEMENT_531": {}, "ELEMENT_1677": {}, "NODE_454": {"DENSITY": [0.9999586362449518, 0.9808441881877218, 0.8883754934462825, 0.7739705400454842, 0.6906877984900889, 0.6352240391894955, 0.5968960815392966], "TOTAL_ENERGY": [2.499855230653869, 2.4335894553976476, 2.1276322449817258, 1.7810453386944762, 1.5510816853745635, 1.4082920220268698, 1.3142635245090637], "MOMENTUM_X": [2.4412004182377154e-05, 0.02250659736702289, 0.1226984414584551, 0.2287091636532394, 0.2916263235199693, 0.32625068539614505, 0.3465372727226838], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_807": {"DENSITY": [0.125, 0.1250000000001588, 0.12499999682605616, 0.12503982505206576, 0.19478450680203657, 0.2634274923213026, 0.27508935206431545], "TOTAL_ENERGY": [0.25, 0.25000000000044453, 0.24999999111295745, 0.2501115581154205, 0.5242030446872777, 0.8591938612978833, 0.9195686404821803], "MOMENTUM_X": [-2.5161978308904833e-18, 1.693912935899941e-13, -3.960921433062968e-09, 4.5666528910432825e-05, 0.11734598270509923, 0.24095275702727292, 0.26553138817152633], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_390": {"DENSITY": [1.0000000004874123, 0.9999952582992768, 0.9988700171529307, 0.9811613703836388, 0.9205511984036345, 0.8387387850840626, 0.7678986514274364], "TOTAL_ENERGY": [2.500000001705944, 2.4999834041134075, 2.49604748155476, 2.4346281324946784, 2.231121123152904, 1.9723493576767848, 1.7631161700955593], "MOMENTUM_X": [7.00917786687963e-10, 5.550163398588322e-06, 0.0013336900395165567, 0.021996932411045014, 0.08925103803255885, 0.1712898444576419, 0.23360863192393186], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1187": {}, "ELEMENT_1596": {}, "ELEMENT_1990": {}, "ELEMENT_786": {}, "ELEMENT_236": {}, "ELEMENT_426": {}, "NODE_656": {"DENSITY": [0.1250250401055497, 0.23530394352594902, 0.2778513773046398, 0.3549035354841369, 0.4490535501625578, 0.4516556587911205, 0.40922711234273745], "TOTAL_ENERGY": [0.2500701430632513, 0.7176076351887679, 0.856914505534832, 0.9203115560777397, 0.9488666299617987, 0.9552725619373327, 0.9342865921213914], "MOMENTUM_X": [3.0544579000380956e-05, 0.19206736162142296, 0.25234790563079207, 0.33111504318812635, 0.41507679375696377, 0.4190497997804429, 0.3789249045330161], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1250": {}, "NODE_278": {"DENSITY": [1.0, 0.9999999999999689, 1.0000000000917142, 0.9999998825543933, 0.9999730827354614, 0.9990723355784605, 0.9904807591081455], "TOTAL_ENERGY": [2.5, 2.4999999999998908, 2.500000000320999, 2.499999588940411, 2.4999057910018565, 2.496754652127904, 2.466823811484386], "MOMENTUM_X": [-1.067606920052421e-17, 2.2343971939277508e-14, -1.0811678869246469e-10, 1.377883301854899e-07, 3.1772396674860467e-05, 0.0010963752880278196, 0.011193780913249936], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_463": {"DENSITY": [0.9997191127148276, 0.9529669139045213, 0.8310508023526696, 0.7236346574052761, 0.653229470645396, 0.6066832529916955, 0.5742735239293111], "TOTAL_ENERGY": [2.499017149876625, 2.338916069445273, 1.9495804053292844, 1.6395448426770498, 1.4534331857317564, 1.3379071635481736, 1.2607117164176203], "MOMENTUM_X": [0.0003485096789675864, 0.053419418318109854, 0.1769713410428632, 0.2663630258101295, 0.31407105532153107, 0.34031665352905777, 0.3559805339589072], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_834": {"DENSITY": [0.125, 0.1250000000000051, 0.12499999994452862, 0.12499989821448497, 0.1324198085150308, 0.28042709460928206, 0.2645757480272766], "TOTAL_ENERGY": [0.25, 0.25000000000001427, 0.2499999998446801, 0.24999971500005222, 0.2720542956536227, 0.9581251318750339, 0.8657029881149528], "MOMENTUM_X": [-2.1223801731803679e-19, 2.7724825230833263e-15, -4.6012813651967325e-11, -2.549472906685754e-07, 0.009348689838371275, 0.2800700931489553, 0.24406999077102928], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_646": {}, "ELEMENT_1102": {}, "NODE_22": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000004], "MOMENTUM_X": [-2.022718074169518e-44, -7.347367848558053e-36, 1.415291748151845e-32, -1.0701971924237611e-27, 8.042797565167208e-24, 4.903814106058641e-20, -1.2563938828516062e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_101": {}, "ELEMENT_1311": {}, "ELEMENT_1031": {}, "ELEMENT_996": {}, "NODE_858": {"DENSITY": [0.125, 0.1249999999999999, 0.12500000000135877, 0.12499996805297205, 0.12557461920535612, 0.23302005926399416, 0.2557343378715256], "TOTAL_ENERGY": [0.25, 0.24999999999999975, 0.2500000000038045, 0.24999991054833692, 0.2516147367164409, 0.7090507597192515, 0.819872447567832], "MOMENTUM_X": [4.011156513227636e-20, -2.108189361413679e-17, 6.923579375118846e-13, -2.9578553391089723e-08, 0.0004758512888614694, 0.1885931461056216, 0.22643310898953528], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1924": {}, "ELEMENT_1022": {}, "ELEMENT_260": {}, "ELEMENT_266": {}, "ELEMENT_1325": {}, "ELEMENT_1241": {}, "ELEMENT_1044": {}, "ELEMENT_237": {}, "NODE_885": {"DENSITY": [0.125, 0.125, 0.12500000000000022, 0.12499999999750958, 0.12499995349044092, 0.1272554951247388, 0.2738870701055213], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000006, 0.24999999999302683, 0.2499998697732457, 0.256423568473177, 0.9254417403841291], "MOMENTUM_X": [-6.261764349605394e-26, 1.2719690274042538e-20, -2.282341405051974e-16, 9.110376711831913e-13, -9.597715289644462e-08, 0.0022918599188162282, 0.26896160081260523], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_288": {"DENSITY": [1.0, 1.0000000000000044, 1.000000000013969, 0.999999993765489, 0.9999887708078736, 0.9993912585426449, 0.9920183086431882], "TOTAL_ENERGY": [2.5, 2.5000000000000155, 2.500000000048892, 2.4999999781792113, 2.499960698079607, 2.4978700370232536, 2.4721623725378565], "MOMENTUM_X": [9.34316442584287e-20, -4.741033092894707e-15, -1.7591830453576244e-11, 8.460872129392225e-09, 1.3369957736890647e-05, 0.0007208735822044989, 0.009402898680047778], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1159": {}, "ELEMENT_1668": {}, "NODE_671": {"DENSITY": [0.12500171976974753, 0.20862574943039747, 0.26978547407051634, 0.33089905719452206, 0.4269625669732385, 0.44640382108758664, 0.4209536359225154], "TOTAL_ENERGY": [0.2500048166821179, 0.5877519367023827, 0.8560118337714512, 0.9038092514942891, 0.9410431546798097, 0.9534255236034365, 0.9435626973639983], "MOMENTUM_X": [4.8008439332412924e-06, 0.1429081277138399, 0.24710149075454543, 0.3089400689218027, 0.3968733005589043, 0.41613625426800044, 0.392963399670098], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_4": {}, "NODE_557": {"DENSITY": [0.3563227246393167, 0.345303057795047, 0.3654008616690903, 0.36392535693721056, 0.37028874836977854, 0.3738162696648531, 0.37416734746304997], "TOTAL_ENERGY": [0.7986526342782674, 0.8013812628689104, 0.8154009852631154, 0.8241555434871015, 0.8324232748394297, 0.8383495208000007, 0.8417905837206469], "MOMENTUM_X": [0.4202302412346952, 0.3875864704037703, 0.3985674715846735, 0.39283643950187497, 0.3959893904919, 0.3966327719577511, 0.39457598990115905], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1406": {}, "NODE_914": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999857, 0.12500000002700695, 0.1249994455183732, 0.1365384273959484], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999598, 0.2500000000756194, 0.24999844745819802, 0.28554650116472413], "MOMENTUM_X": [-1.6846722248585826e-30, 4.341787609775015e-25, -1.1261897494380639e-20, -2.039879352634731e-15, 3.3977188182072806e-11, -7.427259412312974e-07, 0.016418092931391886], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1588": {}, "NODE_402": {"DENSITY": [0.9999999999531727, 1.0000003080911366, 0.9996885237489697, 0.9890505653486978, 0.9344395617210812, 0.8469817011902158, 0.7694575270979279], "TOTAL_ENERGY": [2.4999999998361035, 2.5000010783190705, 2.498910031578631, 2.461864664184733, 2.2765960071869293, 1.9965570995786228, 1.7658107959450624], "MOMENTUM_X": [-2.783434250987458e-12, -2.7007605388184147e-07, 0.00038223033890704593, 0.012785705076251262, 0.07350462657667312, 0.1621284536497614, 0.23099481960633989], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_116": {}, "ELEMENT_975": {}, "ELEMENT_1564": {}, "NODE_449": {"DENSITY": [1.0000006006782944, 0.9932651428996654, 0.9307126186269388, 0.8198602484423123, 0.7282593070128528, 0.6659802502722572, 0.6228709128766753], "TOTAL_ENERGY": [2.5000021023788213, 2.4765095267900246, 2.2646726889937505, 1.9154560947981163, 1.6521641594306673, 1.4862760110786146, 1.3775589320772712], "MOMENTUM_X": [8.396918958349368e-08, 0.007896845342622114, 0.07835562717361921, 0.18888097275998025, 0.2649832102413146, 0.30797106078200254, 0.3332405686579325], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_76": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.00000000000007, 0.9999999999368696], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000245, 2.499999999779044], "MOMENTUM_X": [-8.261517895409304e-35, 5.052472518508161e-29, 8.246708858963572e-25, 2.563331357147298e-21, 2.0032879072553824e-17, -8.332623737192298e-14, 7.451269164946828e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_97": {}, "NODE_479": {"DENSITY": [0.9984387028736053, 0.9149070336387225, 0.7762540330140115, 0.6746566028619334, 0.6128250439511952, 0.5731250330582036, 0.545518081905806], "TOTAL_ENERGY": [2.4945423895048235, 2.2132403908463205, 1.7879173788739835, 1.5088902881418051, 1.352582541695968, 1.2574936584501135, 1.1943442879480335], "MOMENTUM_X": [0.0021414673265820546, 0.09457912446179993, 0.22668290494069446, 0.3020608466742352, 0.3385563445203461, 0.3577028896265007, 0.3686582248150692], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1741": {}, "ELEMENT_1436": {}, "ELEMENT_900": {}, "ELEMENT_1608": {}, "ELEMENT_1965": {}, "NODE_551": {"DENSITY": [0.5078166554694493, 0.42131174210869693, 0.40790030784763054, 0.4074931330486481, 0.4038733438029427, 0.40524861606926377, 0.40426967806523884], "TOTAL_ENERGY": [1.0755658173622589, 0.9172883186410797, 0.9007939472200918, 0.8970134002537938, 0.8949690093582137, 0.8959942836986543, 0.896023315118577], "MOMENTUM_X": [0.3838658325989792, 0.40253300136498693, 0.40081062499998604, 0.4028321553985007, 0.3999368000761361, 0.4013462008817468, 0.4001582054338739], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1013": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999925, 0.1250000000174976], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999999979, 0.25000000004899325], "MOMENTUM_X": [4.849220927027435e-42, 2.874209425883923e-34, 9.980839743314417e-30, -2.81978235268274e-25, -6.777551680352834e-21, -1.151960941836816e-15, 2.2869621441526534e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1068": {}, "ELEMENT_1816": {}, "ELEMENT_421": {}, "NODE_972": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000083, 0.12499999999755823, 0.124999902522255], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000233, 0.2499999999931631, 0.24999972706175336], "MOMENTUM_X": [-1.7531921875785661e-34, 6.580349473031174e-29, 1.2624714060880724e-24, 5.891550006765579e-20, -1.887231048188878e-16, 4.075810635817616e-13, -2.157737435627861e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_553": {"DENSITY": [0.34850628099106573, 0.34460019579120255, 0.36332433666717745, 0.3627574445625956, 0.3671233142953046, 0.3719506780684686, 0.37224820497999295], "TOTAL_ENERGY": [0.780584056866239, 0.7994414908230277, 0.8082888189768255, 0.8214709024519079, 0.8274239091367287, 0.833917800808476, 0.8376770347885635], "MOMENTUM_X": [0.41111792675357384, 0.3884073759265921, 0.3970154841092396, 0.3925818861940729, 0.393479460132983, 0.3956790728109484, 0.3937358395083123], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1456": {}, "ELEMENT_344": {}, "ELEMENT_1685": {}, "ELEMENT_1124": {}, "NODE_864": {"DENSITY": [0.125, 0.125, 0.12500000000008674, 0.12499999913162868, 0.12500731284121197, 0.16552546614515815, 0.27955067067162437], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000002429, 0.2499999975685604, 0.25002047833825924, 0.39488198897104576, 0.9518335472517944], "MOMENTUM_X": [-4.288798554300343e-23, -3.900822386632953e-18, 1.0790137414111098e-13, -1.523827782320821e-09, 1.0817067796801025e-05, 0.0646871695773603, 0.2775188479521017], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1549": {}, "ELEMENT_706": {}, "ELEMENT_858": {}, "NODE_367": {"DENSITY": [1.000000000000204, 1.0000000052608944, 0.9999956078654962, 0.9991972899757414, 0.9860837358758333, 0.9355650317649027, 0.8608280309526777], "TOTAL_ENERGY": [2.500000000000714, 2.5000000184131297, 2.4999846275778994, 2.4971916818976205, 2.4515955864172767, 2.2805011971742393, 2.040290395094385], "MOMENTUM_X": [8.711079316966744e-15, -6.282439420307738e-09, 5.317146063940439e-06, 0.0009597556310875145, 0.016453042363738384, 0.07367827441716213, 0.15114008088289108], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_517": {"DENSITY": [0.8233865500727627, 0.6157419278982245, 0.5553623646428657, 0.5158794457192797, 0.48941178159417015, 0.4771529838061436, 0.46633604121372657], "TOTAL_ENERGY": [1.9372124555169263, 1.356059864319158, 1.2184632835730782, 1.1266560430427874, 1.0778322840969021, 1.0465548030651033, 1.0226787532166446], "MOMENTUM_X": [0.2095001571147086, 0.33203250751738156, 0.37238477155912253, 0.37849631844373366, 0.38128425054867066, 0.387067661771437, 0.3889534987901634], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_41": {}, "ELEMENT_593": {}, "ELEMENT_621": {}, "ELEMENT_391": {}, "ELEMENT_1649": {}, "NODE_157": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999992, 1.0000000000005627, 1.0000000002060225], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.5000000000019695, 2.500000000721079], "MOMENTUM_X": [-6.052227617031159e-34, 1.2354402123566968e-28, -7.853160244540457e-24, 2.0865722787910355e-19, 9.759492544802802e-16, -6.90622907988954e-13, -2.38385054243218e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_592": {}, "ELEMENT_33": {}, "NODE_908": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.12500000000016315, 0.12499999790658765, 0.125021993913437, 0.18272868177376722], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.2500000000004568, 0.2499999941384455, 0.2500615995883979, 0.46937011049637645], "MOMENTUM_X": [5.178916038208634e-27, -2.3121643412940065e-22, -1.3756183527284272e-17, 1.7376947315581832e-13, -3.094768080071662e-09, 2.8327768798982722e-05, 0.09589215388304055], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1301": {}, "NODE_933": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000464, 0.12499999997150078, 0.12499987526780769, 0.1302260378257875], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000001305, 0.24999999992020222, 0.24999965074985292, 0.2652650056321389], "MOMENTUM_X": [-3.2866277136130646e-28, 1.6581948538425626e-23, 1.1718189118890111e-19, 2.126649552399513e-15, -1.5763737891257982e-11, -2.466906628874501e-07, 0.006211261100806184], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1437": {}, "NODE_994": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999997, 0.12500000000073858, 0.12499998744231643], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2499999999999999, 0.25000000000206796, 0.24999996483848905], "MOMENTUM_X": [7.530881318889453e-37, -3.550236261924894e-31, -7.674714825739058e-27, -8.784342573991264e-22, -4.289062207002412e-17, 6.888124114014069e-13, -1.2720974476384321e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_419": {}, "ELEMENT_754": {}, "ELEMENT_571": {}, "ELEMENT_1267": {}, "NODE_1101": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, 5.379479356806464e-42, -1.1750579007484482e-37, 8.068605336113595e-33, -1.9063609040971632e-28, -8.378140166683533e-24, 6.797452570994969e-20], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_519": {"DENSITY": [0.8364824207211613, 0.6081348717752996, 0.5359949729819383, 0.497820350254278, 0.47470610262638624, 0.46176359049283555, 0.4522828137423336], "TOTAL_ENERGY": [1.9720112820858335, 1.337290200260493, 1.169873288218469, 1.0855867287798577, 1.0398853319214667, 1.0122589419658028, 0.99279719577177], "MOMENTUM_X": [0.18561678235012674, 0.33929968437286206, 0.37664129925183715, 0.3856549471702188, 0.38874166438184615, 0.3918312135835238, 0.3930826679635458], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1621": {}, "ELEMENT_1578": {}, "NODE_328": {"DENSITY": [0.9999999999996272, 1.00000000136392, 0.9999984678646572, 0.9996874197886182, 0.9932407585069166, 0.9612893581102137, 0.9022264647765527], "TOTAL_ENERGY": [2.4999999999986953, 2.50000000477372, 2.4999946375323017, 2.498906152526628, 2.4764175312564825, 2.3667840095896437, 2.1717595605049382], "MOMENTUM_X": [-4.868407007025002e-13, -1.2757041265079008e-09, 1.7250965914793421e-06, 0.0003648207120517374, 0.00797874327445114, 0.045053452787203255, 0.10954188298159305], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_318": {}, "ELEMENT_872": {}, "ELEMENT_806": {}, "ELEMENT_1766": {}, "ELEMENT_447": {}, "ELEMENT_272": {}, "ELEMENT_699": {}, "NODE_392": {"DENSITY": [1.0000000001963587, 0.9999955297080358, 0.9988758894431993, 0.9810072173611154, 0.9199405579034187, 0.8380745643140788, 0.7675050235427182], "TOTAL_ENERGY": [2.500000000687256, 2.4999843540365245, 2.4960679908182377, 2.4340953857188037, 2.229106540602363, 1.970286024396337, 1.7619346714781554], "MOMENTUM_X": [3.9605996307143106e-10, 5.225668675592354e-06, 0.0013244308437699256, 0.022155877066634456, 0.08984299978272714, 0.17179328341866457, 0.23376144999682788], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_969": {}, "NODE_1061": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000265], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000743], "MOMENTUM_X": [-1.3164364693751129e-44, -2.989135563940729e-36, 1.2405170044423586e-32, 1.324828710889876e-27, 1.4784327745746554e-23, -9.203771380946659e-19, 3.151929660659285e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_276": {"DENSITY": [1.0, 0.9999999999999638, 1.0000000000941536, 0.9999998811847471, 0.9999732653306049, 0.9990752659822766, 0.9904483082626679], "TOTAL_ENERGY": [2.5, 2.4999999999998734, 2.5000000003295377, 2.4999995841466514, 2.49990643007905, 2.496764907493267, 2.4667115258439347], "MOMENTUM_X": [-1.9743489903871224e-17, 2.505341858781324e-14, -1.1147125553898818e-10, 1.3975727676068905e-07, 3.1645031162195206e-05, 0.0010949946918120072, 0.01124204786753642], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_436": {"DENSITY": [1.000000686126623, 0.9976165083643458, 0.9609561479399179, 0.8669668476173648, 0.7708370876337929, 0.7003638403754863, 0.6508516655541506], "TOTAL_ENERGY": [2.5000024014435067, 2.4916688774678053, 2.365727623988952, 2.0597987343610775, 1.7716716233395569, 1.5765093646527362, 1.447478488745018], "MOMENTUM_X": [-1.6563668310962388e-07, 0.0028025724176361623, 0.04494997157820507, 0.14394492303850048, 0.23093156681908109, 0.2845891072899399, 0.31672639452354967], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_852": {"DENSITY": [0.125, 0.12499999999999997, 0.12500000000065226, 0.12499999117496544, 0.1251155207755524, 0.21317183734500342, 0.25909542942903796], "TOTAL_ENERGY": [0.25, 0.24999999999999992, 0.2500000000018263, 0.24999997528990467, 0.25032377492045627, 0.6123115070759848, 0.8360435192600705], "MOMENTUM_X": [3.604625683637167e-23, -3.048343105729701e-17, 5.859025117583721e-13, -9.047904843074157e-09, 0.0001151911500363092, 0.15196403956265853, 0.23215516976564282], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1655": {}, "ELEMENT_1264": {}, "ELEMENT_755": {}, "ELEMENT_1099": {}, "ELEMENT_1708": {}, "ELEMENT_218": {}, "ELEMENT_1535": {}, "ELEMENT_1279": {}, "ELEMENT_1958": {}, "NODE_781": {"DENSITY": [0.1250000000000254, 0.1249999995304, 0.1250051906676489, 0.15960365111238342, 0.2691084514834893, 0.26883165880011767, 0.27391126577366565], "TOTAL_ENERGY": [0.2500000000000711, 0.24999999868511993, 0.25001453494102416, 0.3700192637277121, 0.8948047516947302, 0.8866749386636273, 0.8714944576205538], "MOMENTUM_X": [-3.0873856179170404e-14, -7.168627513224675e-10, 5.916008353356569e-06, 0.05504391750147637, 0.2563193400938814, 0.2535582049527934, 0.2537156237133016], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_935": {}, "ELEMENT_1059": {}, "ELEMENT_132": {}, "ELEMENT_1147": {}, "ELEMENT_387": {}, "NODE_30": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [-4.936842209430989e-45, 2.8480204588990313e-36, 2.5509886981193445e-32, -6.471304278944168e-28, 3.6153265951939196e-24, 3.894025067491046e-20, -7.95000634724469e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_121": {}, "ELEMENT_1629": {}, "ELEMENT_1699": {}, "NODE_334": {"DENSITY": [1.000000000000001, 0.9999999999863363, 1.0000000166447895, 0.9999871234437603, 0.9990059179270923, 0.9867326317060395, 0.9428351153351395], "TOTAL_ENERGY": [2.5000000000000036, 2.499999999952176, 2.5000000582567634, 2.49995493240895, 2.49652242901099, 2.453835593120404, 2.3046535877391254], "MOMENTUM_X": [1.3415732959376393e-15, 1.591386428915922e-11, -1.946412513464887e-08, 1.548155356825938e-05, 0.0011867052490681174, 0.015680581669901366, 0.06564057584656921], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1797": {}, "ELEMENT_1804": {}, "ELEMENT_1098": {}, "ELEMENT_58": {}, "ELEMENT_6": {}, "NODE_112": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000008055], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000001, 2.500000000028192], "MOMENTUM_X": [2.3606324671165787e-36, -2.4011424372117407e-30, 8.707378215053558e-26, 8.72287338449559e-22, 1.7016091268570724e-18, -8.81090940088741e-16, -9.199649471893174e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_312": {}, "ELEMENT_1840": {}, "ELEMENT_1144": {}, "ELEMENT_986": {}, "ELEMENT_582": {}, "ELEMENT_1248": {}, "ELEMENT_605": {}, "NODE_148": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999987, 1.0000000000774878], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999547, 2.500000000271208], "MOMENTUM_X": [-3.4973891310026114e-35, 6.075064492426944e-29, -1.1532533134399642e-24, -2.6333173687404125e-20, 1.546234540941571e-17, 1.1022231029077336e-14, -9.134667198077122e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_849": {}, "ELEMENT_328": {}, "ELEMENT_1520": {}, "ELEMENT_1204": {}, "ELEMENT_602": {}, "NODE_753": {"DENSITY": [0.12499999999994164, 0.12499998410431983, 0.12520872541054096, 0.22343893817387203, 0.2594414581488819, 0.27636424780400126, 0.2920532636403186], "TOTAL_ENERGY": [0.24999999999983663, 0.2499999554920998, 0.25058536827635447, 0.6622183143056076, 0.8334322605414856, 0.9058782577288504, 0.8813477072349765], "MOMENTUM_X": [4.115073101047479e-14, -1.543024675446143e-08, 0.00019712127150438156, 0.17111280969147874, 0.23164908889483463, 0.2631988234229849, 0.270095989051986], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1047": {}, "ELEMENT_636": {}, "NODE_508": {"DENSITY": [0.9271569051006198, 0.6939439835636867, 0.5902484320754193, 0.5366832105327721, 0.5067623820717606, 0.4879419947414634, 0.4738938577353385], "TOTAL_ENERGY": [2.254947167198752, 1.5606876231202855, 1.300946667966434, 1.1778809721505317, 1.1098470905760995, 1.067874011162131, 1.0390160311518426], "MOMENTUM_X": [0.08972746338376052, 0.28630771164387453, 0.3484761275767509, 0.3702067322145652, 0.3803064065715897, 0.3860044400206457, 0.3885543105839701], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1731": {}, "ELEMENT_1728": {}, "ELEMENT_1379": {}, "ELEMENT_583": {}, "NODE_709": {"DENSITY": [0.12500000014125245, 0.12508962125791004, 0.20389344469874912, 0.2690744746098635, 0.2849121074476472, 0.33424977899785024, 0.42375503725867264], "TOTAL_ENERGY": [0.25000000039550685, 0.2502511406614788, 0.5656505796348543, 0.8804403920393906, 0.9002213118207913, 0.8992481872003617, 0.939934534354155], "MOMENTUM_X": [-3.387568768443286e-10, 9.231629181026627e-05, 0.1338105099734231, 0.25094592576264135, 0.268732698341272, 0.3089662968477864, 0.39249168617020813], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1799": {}, "NODE_152": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.000000000000438, 0.9999999997071986, 0.9999998515687266], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.5000000000015334, 2.4999999989751944, 2.4999994804905885], "MOMENTUM_X": [-1.2156571929001087e-29, -3.959857066097202e-24, -1.8027436832530223e-20, 2.4582046653297967e-16, -5.12760911379324e-13, 3.456887882180971e-10, 1.7505282089840635e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_704": {}, "NODE_495": {"DENSITY": [0.9609547870344164, 0.7702388632743572, 0.6546855754589262, 0.5940276708123214, 0.5551032533153843, 0.5276603766690221, 0.5088861463544997], "TOTAL_ENERGY": [2.365857214114835, 1.7758947499242068, 1.4605219153275786, 1.3102016371306047, 1.2174408696305625, 1.15836211007317, 1.117024500543972], "MOMENTUM_X": [0.03944383152038575, 0.23783518483296284, 0.3136284440373633, 0.3498940433339906, 0.36528932853201346, 0.3732583018707199, 0.37861442080213303], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1416": {}, "ELEMENT_847": {}, "NODE_694": {"DENSITY": [0.1250000007074951, 0.12508777294531018, 0.24181320190000843, 0.24922980165587558, 0.2952956098605677, 0.3508445752404389, 0.464152475120984], "TOTAL_ENERGY": [0.2500000019809863, 0.25024602859757844, 0.7562019886285809, 0.767320771106218, 0.9375570498427435, 0.9016366386933011, 0.9616547382387478], "MOMENTUM_X": [4.4080867627850885e-10, 0.00010251796317553439, 0.20901717349464766, 0.20616745506799217, 0.2852326300075105, 0.321563819637684, 0.4295858086306163], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1939": {}, "ELEMENT_1324": {}, "ELEMENT_948": {}, "ELEMENT_1245": {}, "ELEMENT_1936": {}, "ELEMENT_1505": {}, "ELEMENT_1698": {}, "NODE_670": {"DENSITY": [0.12499726204095142, 0.1948422638102833, 0.27378545488120304, 0.31972704565248355, 0.4135283114655052, 0.4502227412172943, 0.4186929360515075], "TOTAL_ENERGY": [0.24999233375454682, 0.5217453931802993, 0.8847770081175518, 0.9043433407324508, 0.9336649415582994, 0.9503863092758255, 0.9354807950396218], "MOMENTUM_X": [-4.888298357299682e-07, 0.11649483269311761, 0.2549526277969843, 0.2977191279879517, 0.38176557681388545, 0.41598810296684025, 0.38628829816279925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_834": {}, "ELEMENT_1932": {}, "ELEMENT_724": {}, "ELEMENT_1470": {}, "NODE_487": {"DENSITY": [0.9920392803720443, 0.8558375631289288, 0.7140175868959461, 0.6275800291586171, 0.5759980271602312, 0.5432817580686363, 0.521123542921293], "TOTAL_ENERGY": [2.472263957718634, 2.026378974507588, 1.6139411923918525, 1.3900290714914856, 1.2661255674490386, 1.1902504642921243, 1.1395467209438916], "MOMENTUM_X": [0.00871575447448921, 0.15590152258265727, 0.27470298425818795, 0.3304376952018063, 0.35569748541363344, 0.36911571038861934, 0.37722177275543434], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_920": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000214, 0.12499999978684134, 0.1250008880539834, 0.14556242173982425], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000005984, 0.24999999940315565, 0.25000248661316943, 0.3167395386313108], "MOMENTUM_X": [1.1023350731504387e-28, 6.526522698600054e-24, -1.50087871120272e-18, 3.11785550600964e-14, -3.8654765225651056e-10, 1.382134517202416e-06, 0.02997282499107183], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1058": {}, "ELEMENT_52": {}, "ELEMENT_302": {}, "NODE_476": {"DENSITY": [0.9984567009619635, 0.914942304982744, 0.7768521904759489, 0.6755380992487419, 0.6134966299263905, 0.5734843724268749, 0.545535997555488], "TOTAL_ENERGY": [2.494605327523535, 2.213351409901594, 1.7897669649736838, 1.5113369408895063, 1.3543526666764296, 1.2583339580737436, 1.1944284879352285], "MOMENTUM_X": [0.0021496772201459657, 0.0944634091763766, 0.22641553803350814, 0.30166261925538734, 0.338376350508035, 0.35769415787084385, 0.3686909505121022], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1103": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, -3.7328661946459717e-42, -1.6953976246694755e-37, -3.1530526760223725e-32, -6.859008183600085e-28, 2.9996727265685487e-23, -2.717266875978947e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_81": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000004, 1.0000000000010782], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000138, 2.5000000000037743], "MOMENTUM_X": [9.608602206348195e-37, -2.349736267289349e-30, 3.69032662123889e-26, 3.784431644600386e-23, -1.806888603193843e-18, -4.833120817443104e-15, -1.1522640518260461e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1881": {}, "ELEMENT_1492": {}, "NODE_47": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000036], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000127], "MOMENTUM_X": [8.743843727021207e-42, 8.021388611843845e-33, 5.137424657556501e-29, 4.945033245370269e-25, 1.3478258458186008e-21, 9.370984143647952e-18, -4.255718951427989e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1490": {}, "ELEMENT_1037": {}, "ELEMENT_1447": {}, "ELEMENT_1980": {}, "ELEMENT_396": {}, "NODE_853": {"DENSITY": [0.125, 0.12499999999999996, 0.12500000000052788, 0.12499999167744852, 0.12510602522654868, 0.21278094111954643, 0.25954497770850177], "TOTAL_ENERGY": [0.25, 0.2499999999999999, 0.2500000000014781, 0.24999997669685697, 0.2502971452416342, 0.6109782238129071, 0.8389250836540786], "MOMENTUM_X": [5.604447821324019e-22, -3.87289560054611e-17, 4.0959794980416097e-13, -8.406892393869757e-09, 0.00010763421891779587, 0.15193575854300923, 0.23349133810079542], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_96": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999968], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999885], "MOMENTUM_X": [3.459055747748128e-43, -1.786031156206959e-34, -9.295099500805917e-31, 3.5007770439834774e-26, 3.0566765271572465e-22, -8.529029946469286e-19, 3.796402711057089e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_443": {"DENSITY": [0.9999986997614115, 0.9927543444879757, 0.9307398920332192, 0.8223122090979947, 0.7309443023356111, 0.6677019994301118, 0.6236181338458329], "TOTAL_ENERGY": [2.4999954491870113, 2.4747369552264358, 2.264847172709704, 1.9230486431767817, 1.6597920029361588, 1.4909049108067094, 1.3795893060052133], "MOMENTUM_X": [7.286924839008931e-07, 0.008549312779031197, 0.07835084628175314, 0.18657658788024442, 0.26280158725470987, 0.3066821127758679, 0.3325857085964293], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_353": {}, "ELEMENT_1244": {}, "NODE_668": {"DENSITY": [0.12499916554915347, 0.186825123153621, 0.280835510138838, 0.315619871983007, 0.4099609258718776, 0.4635445053432187, 0.42529067407957866], "TOTAL_ENERGY": [0.24999766359868383, 0.48592258915613407, 0.9235666103086102, 0.9026874297699187, 0.9318738464822838, 0.9599411471638098, 0.9410570282424735], "MOMENTUM_X": [5.948343072688238e-07, 0.10230627947108027, 0.27159642538139234, 0.2949502598301411, 0.3793696552375315, 0.4304783825225144, 0.3942933225589592], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_335": {}, "NODE_916": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999907, 0.12500000003502668, 0.12499929461483242, 0.14789826361383976], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2499999999999974, 0.25000000009807455, 0.2499980249197959, 0.32548006308320127], "MOMENTUM_X": [-3.0651459100476855e-29, -4.176045834001917e-26, 7.799956741287038e-20, -1.6885654691722535e-15, 1.207057726752231e-11, -3.3466028032139645e-07, 0.034359182778850916], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_978": {}, "NODE_496": {"DENSITY": [0.9694283784912215, 0.7776997871398337, 0.65261231448355, 0.5863750058076721, 0.5460202742877165, 0.5193829458315893, 0.5016952075512854], "TOTAL_ENERGY": [2.394558092626876, 1.7935731402969788, 1.4508211055366202, 1.288121800641023, 1.1945630294986262, 1.1365500827851014, 1.097347578524719], "MOMENTUM_X": [0.031202259826239538, 0.22656914778115347, 0.31262798657072066, 0.3512420565352313, 0.3679405478112012, 0.3767651914562173, 0.382638045748588], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1404": {}, "ELEMENT_1667": {}, "ELEMENT_1905": {}, "ELEMENT_1618": {}, "ELEMENT_859": {}, "NODE_380": {"DENSITY": [1.0000000000011937, 1.0000000174237507, 0.9999897134216768, 0.9984539816101743, 0.978304631769791, 0.9153276117410506, 0.8351640186046486], "TOTAL_ENERGY": [2.5000000000041784, 2.500000060983129, 2.4999639972737118, 2.494593120010374, 2.424764325514195, 2.213619460700374, 1.960331693010184], "MOMENTUM_X": [4.1065948718891884e-13, -2.1842844131654833e-08, 1.3695033928970804e-05, 0.0018466727172953862, 0.025072199746218063, 0.09386750860147128, 0.17335815467327562], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_85": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999993], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999998], "MOMENTUM_X": [-2.366364053908827e-44, -8.745523253061066e-36, -3.2920572176790745e-32, -3.3656717824682214e-27, 2.768756692577316e-24, 6.237870055765727e-20, 8.910718967686624e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1163": {}, "ELEMENT_1184": {}, "ELEMENT_968": {}, "NODE_1017": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001044, 0.12499999988929121], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000292, 0.24999999969001535], "MOMENTUM_X": [-6.169222985580548e-39, -8.881505745341509e-33, 2.5022597402368376e-28, 2.2105963668785543e-23, -5.617670411868054e-19, 1.010410259329325e-14, -1.6395538871744383e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_224": {"DENSITY": [1.0, 1.0, 0.9999999999999934, 1.0000000000138272, 0.9999999878019888, 0.9999963481575977, 0.9998269459079154], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999774, 2.5000000000483946, 2.4999999573069616, 2.4999872185780356, 2.4993943630993276], "MOMENTUM_X": [-3.099156263765954e-23, 8.075806410119845e-19, 7.513075275366746e-15, -1.616526734702753e-11, 1.4401913256338645e-08, 4.308918246364303e-06, 0.00020441399594630337], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_831": {}, "ELEMENT_988": {}, "NODE_610": {"DENSITY": [0.17843747789363393, 0.3302321473821846, 0.4442110016386972, 0.4482138742069327, 0.4081238275536642, 0.4298463122955802, 0.43257465691329483], "TOTAL_ENERGY": [0.45037523827891646, 0.9070700624951699, 0.9529396919644881, 0.9490389544301481, 0.9345223580518144, 0.9423461078880018, 0.9435329697583287], "MOMENTUM_X": [0.0882238153891765, 0.3087877294698196, 0.413147711085792, 0.4152366984780542, 0.3787673986925735, 0.3984133946906798, 0.400908381576337], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_642": {}, "ELEMENT_380": {}, "NODE_787": {"DENSITY": [0.12499999999999983, 0.12499999999114608, 0.12499998886151725, 0.12820363979407046, 0.28088078736843203, 0.25062567813666836, 0.2704229029497973], "TOTAL_ENERGY": [0.2499999999999995, 0.249999999975209, 0.24999996881218217, 0.25919502346890966, 0.9641063599851978, 0.785901916788743, 0.8799514630859551], "MOMENTUM_X": [1.902724420720145e-16, 2.9255842746712193e-13, -9.446572968057474e-08, 0.003456714274172417, 0.28375294118815086, 0.21303906860632216, 0.25199216015822196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_906": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000001187, 0.12499999844738323, 0.12502220781552223, 0.18537418920046722], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.2500000000003324, 0.2499999956526732, 0.25006219981800887, 0.4807596506766799], "MOMENTUM_X": [4.765356039891625e-28, -2.5591898485875828e-23, -7.49452521741583e-18, 1.331792209427127e-13, -2.2414956546773416e-09, 2.8289185806419173e-05, 0.09970291890894187], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_311": {"DENSITY": [1.0000000000000033, 1.000000000001591, 0.999999990403557, 0.9999868028849075, 0.9992563606907945, 0.9905208308189978, 0.9568092080947911], "TOTAL_ENERGY": [2.500000000000012, 2.5000000000055684, 2.4999999664124495, 2.4999538104680714, 2.497398244895472, 2.466964834614383, 2.351575194627854], "MOMENTUM_X": [4.2341917751178084e-15, -3.338900048567479e-12, 1.1105353654284713e-08, 1.5566734316980912e-05, 0.0008789427721693317, 0.011147010987447267, 0.049722839777205353], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_778": {}, "ELEMENT_1682": {}, "ELEMENT_1963": {}, "NODE_664": {"DENSITY": [0.12499922269014847, 0.18744681204530367, 0.27897194135888015, 0.31658909471672836, 0.41069498979671826, 0.4607565484328339, 0.4234571229098444], "TOTAL_ENERGY": [0.24999782358567874, 0.4885500275176533, 0.9128684547274867, 0.9072677787212238, 0.931353527578314, 0.9560062115095015, 0.939511366250599], "MOMENTUM_X": [5.752971579669169e-07, 0.10297700094584772, 0.26668975563322206, 0.2963275096279503, 0.37934124782469253, 0.4265427734257258, 0.39179827515465304], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_317": {"DENSITY": [0.9999999999998554, 1.0000000001588083, 0.9999997886184038, 0.9999063562551446, 0.9969424457513618, 0.9760589627745773, 0.9259270560461526], "TOTAL_ENERGY": [2.499999999999494, 2.5000000005558287, 2.4999992601645498, 2.499672264000786, 2.489314305245379, 2.417089868497306, 2.2488235663094445], "MOMENTUM_X": [-1.9002582297117225e-13, -1.4948785863658686e-10, 2.338707959599918e-07, 0.00010871377769914579, 0.0036057709953856167, 0.028092190570231407, 0.0843159016413952], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_638": {"DENSITY": [0.13391225548596405, 0.28358257324576236, 0.3631064733542317, 0.44982992065988664, 0.4308327978496076, 0.4289862788532718, 0.4370226998485517], "TOTAL_ENERGY": [0.27688819868119496, 0.9117943355309558, 0.9116002918572261, 0.9503013002166826, 0.9485298227118945, 0.9470772886605977, 0.9512809014972865], "MOMENTUM_X": [0.011663312884125674, 0.2732390990369426, 0.337822513191214, 0.418531611759589, 0.40279764110664146, 0.4010016639574462, 0.40881344643245476], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1072": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000241], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000068], "MOMENTUM_X": [-1.1137523853922975e-46, 5.383422802391706e-38, -1.1757743392734102e-33, -1.0120063282131894e-28, 4.7060789138742695e-24, 1.5358609543369425e-19, 1.0894630766076956e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_291": {"DENSITY": [1.0, 1.0000000000000047, 0.9999999999965493, 1.0000000061455507, 0.999994266820981, 0.9995821241009482, 0.9935384033865363], "TOTAL_ENERGY": [2.5, 2.500000000000016, 2.499999999987923, 2.5000000215094276, 2.499979933942008, 2.4985377388767294, 2.4774497050826936], "MOMENTUM_X": [1.3613264321634964e-19, -4.9883517812302e-15, 3.687566077475277e-12, -7.0537836224166305e-09, 6.884919908807615e-06, 0.000498815510283064, 0.00766720789067186], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1148": {}, "ELEMENT_659": {}, "ELEMENT_1624": {}, "ELEMENT_348": {}, "NODE_763": {"DENSITY": [0.12500000000000308, 0.12499999900620058, 0.12501365919862245, 0.17589332642627847, 0.2734002529269362, 0.2736979672104917, 0.2771653339058036], "TOTAL_ENERGY": [0.25000000000000866, 0.24999999721736166, 0.2500382532142089, 0.43854696133377064, 0.9133618484281335, 0.9049577505101577, 0.8675236483059307], "MOMENTUM_X": [-7.057690797873557e-15, -1.5507826738790885e-09, 1.8629987252930225e-05, 0.0826958549115254, 0.2623255135797, 0.26088994172428126, 0.25453609668677857], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1409": {}, "ELEMENT_220": {}, "ELEMENT_1201": {}, "NODE_511": {"DENSITY": [0.9274449628942952, 0.6925049749394876, 0.5892297921422197, 0.5362300089028568, 0.5072122550855195, 0.4882894162979794, 0.47402768769468984], "TOTAL_ENERGY": [2.255923660543188, 1.5561391229751593, 1.298505496830069, 1.1762951787527176, 1.1098511530510546, 1.0684251237796587, 1.0397253667701754], "MOMENTUM_X": [0.08999988676310441, 0.286225012668364, 0.3497313633916124, 0.37081578963764483, 0.3810649366360302, 0.3863380355467784, 0.3885446956637635], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1125": {}, "NODE_792": {"DENSITY": [0.12500000000000128, 0.12499999996890186, 0.12499998887372499, 0.13540718602877264, 0.2718531184674997, 0.2643873286037254, 0.2672424187593716], "TOTAL_ENERGY": [0.25000000000000355, 0.24999999991292515, 0.24999996884786568, 0.28144778032970463, 0.9118701807371643, 0.8654360206669539, 0.8608398673701328], "MOMENTUM_X": [-1.675907381540728e-15, -7.393055397621889e-12, -1.924939497426807e-07, 0.013591870742062574, 0.2632774626077848, 0.24476272707046698, 0.2456114417406827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_833": {}, "ELEMENT_1702": {}, "ELEMENT_657": {}, "ELEMENT_1914": {}, "NODE_938": {"DENSITY": [0.125, 0.125, 0.125, 0.1249999999999999, 0.12500000000165765, 0.12499996929625931, 0.12566732107621714], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999972, 0.25000000000464134, 0.24999991402954552, 0.2518773727899136], "MOMENTUM_X": [1.5479758032290452e-31, -1.4041740352421252e-26, -8.0367807128064405e-22, -9.833052803958693e-17, 1.6074552769470097e-12, -3.250671891364071e-08, 0.0005728597278055271], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1017": {}, "ELEMENT_418": {}, "ELEMENT_1530": {}, "ELEMENT_34": {}, "ELEMENT_168": {}, "NODE_632": {"DENSITY": [0.12848031007317667, 0.2955464006064861, 0.3340889494305088, 0.4477109720004516, 0.45101129055057027, 0.40948291726325536, 0.42563352257701564], "TOTAL_ENERGY": [0.2600365036549343, 0.9912618709619184, 0.8725574338443325, 0.9584403549763744, 0.949801117397225, 0.9352054880271314, 0.9414272710546585], "MOMENTUM_X": [0.0038085206448182332, 0.30040190202095546, 0.3015832300872517, 0.4167924460201985, 0.4169531654010689, 0.37941150644942895, 0.3941521792550893], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_448": {}, "ELEMENT_1720": {}, "ELEMENT_446": {}, "ELEMENT_946": {}, "ELEMENT_505": {}, "ELEMENT_813": {}, "ELEMENT_278": {}, "ELEMENT_1427": {}, "NODE_814": {"DENSITY": [0.125, 0.12500000000103342, 0.12499998436694798, 0.12523475523674543, 0.21661965311821862, 0.2563439608758738, 0.26600935740647713], "TOTAL_ENERGY": [0.24999999999999994, 0.2500000000028935, 0.24999995622745852, 0.2506583530692129, 0.6273441553361697, 0.8230135817769235, 0.8722209505540035], "MOMENTUM_X": [9.918656133568341e-18, 7.939772939549646e-13, -1.588452045242931e-08, 0.00019944422447822188, 0.15808651082613456, 0.2277847319923415, 0.247525752892047], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_613": {}, "ELEMENT_776": {}, "ELEMENT_907": {}, "ELEMENT_17": {}, "NODE_816": {"DENSITY": [0.125, 0.12499999999999521, 0.1250000000827176, 0.12499857711977293, 0.1490678979509543, 0.2864905846550639, 0.27030679327352664], "TOTAL_ENERGY": [0.25, 0.2499999999999866, 0.2500000002316094, 0.24999601595372425, 0.3305927422761072, 0.9968105268457923, 0.8999831250881842], "MOMENTUM_X": [2.1909703560816898e-20, -5.977873284383844e-15, 7.556615235498824e-11, -1.3285594802435483e-06, 0.038510062082488236, 0.2958418658764949, 0.2593120091353084], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_222": {}, "ELEMENT_1833": {}, "ELEMENT_191": {}, "ELEMENT_1713": {}, "NODE_679": {"DENSITY": [0.12499970938710103, 0.14863766462610128, 0.28843977869694065, 0.2876011539197707, 0.36372100869223806, 0.4522842020556992, 0.44810266922063363], "TOTAL_ENERGY": [0.24999918628505546, 0.32774110228322684, 0.9881471485411832, 0.8756030777387256, 0.9118712931508313, 0.9540593141450625, 0.9505460757641678], "MOMENTUM_X": [-4.436367370422713e-07, 0.034954862117349036, 0.29362154422558606, 0.26518631830263645, 0.3365923765464248, 0.41979275952523637, 0.4154162782337934], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_398": {"DENSITY": [1.0000000026152476, 0.9999712012935471, 0.9967538245757728, 0.9649566599428708, 0.8882506227597394, 0.8047330770235417, 0.7383888015017694], "TOTAL_ENERGY": [2.5000000091533665, 2.4998992066714463, 2.4886574910633428, 2.3792403573735452, 2.126854469372361, 1.8703214835052864, 1.680171315195531], "MOMENTUM_X": [-1.0355061788004982e-10, 3.39976758043625e-05, 0.0038398983768584347, 0.040573501512651135, 0.12300245971988118, 0.2023979989862787, 0.25712667187761346], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_706": {"DENSITY": [0.1250000001605576, 0.12501337724679598, 0.20086093977338865, 0.2608699963492503, 0.28693091260429615, 0.3243575824130166, 0.43303952666366996], "TOTAL_ENERGY": [0.2500000004495612, 0.2500374631736778, 0.5559320351249458, 0.8404878922425518, 0.9333189549137052, 0.8866856666173967, 0.9485290561702734], "MOMENTUM_X": [9.243956807359386e-11, 1.8534218048997636e-05, 0.1341931830711709, 0.23562024023695644, 0.27944572223433145, 0.29813082032480137, 0.40292407706286515], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_363": {}, "ELEMENT_1355": {}, "NODE_1006": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000010464, 0.12499999866807882], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.2500000000002929, 0.24999999627062058], "MOMENTUM_X": [1.1828331592648047e-37, -6.994366819466358e-32, 3.792519008837778e-27, -1.9454689648110304e-22, -8.210994950840962e-18, 1.1945696964307614e-13, -2.0521567570086276e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1090": {}, "ELEMENT_1822": {}, "ELEMENT_514": {}, "NODE_90": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000024185], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000084657], "MOMENTUM_X": [2.5684806617662936e-37, -1.8186926263330538e-30, 1.0580611650525658e-26, 1.388429603362748e-22, -1.297891683610416e-18, -8.930480474418159e-17, -2.7681002261610094e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_793": {"DENSITY": [0.125, 0.12499999999989674, 0.12499999994754264, 0.12502211300309776, 0.23261031860013473, 0.24056091604341132, 0.2848657324071076], "TOTAL_ENERGY": [0.25, 0.24999999999971084, 0.24999999985311938, 0.25006194613915406, 0.7130248464334964, 0.7336300214573462, 0.9694460255223213], "MOMENTUM_X": [-1.5181857537140738e-18, -8.404585763731132e-14, -1.418313276442761e-09, 3.728241675108738e-05, 0.19360720254729338, 0.1915853446758929, 0.2844786304192656], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_560": {"DENSITY": [0.3489915474008019, 0.35225513547409226, 0.3612046156337848, 0.36188729540004344, 0.37080919257952366, 0.3710379873602131, 0.3771413968076162], "TOTAL_ENERGY": [0.7957922411479367, 0.8059254199102338, 0.8128382750317569, 0.8185733093422443, 0.8299586555764046, 0.8350298067590833, 0.8428800891790114], "MOMENTUM_X": [0.40492951502705815, 0.39381141378401835, 0.3956279686748754, 0.3908445595152565, 0.3959347749003324, 0.3922446019112128, 0.39527878942106515], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1231": {}, "NODE_546": {"DENSITY": [0.5383469640393351, 0.45000152461803816, 0.4269964570771922, 0.4174967255961047, 0.4179524657524736, 0.4123002939628021, 0.4129290291138748], "TOTAL_ENERGY": [1.1693346179821669, 0.9912569847764319, 0.9399285089384537, 0.9245671566994145, 0.9204043911871793, 0.9146254990730658, 0.9131501058308609], "MOMENTUM_X": [0.3934432029995464, 0.40889867503008526, 0.39866386565779777, 0.3956505146655517, 0.3993630899825998, 0.3955679740771748, 0.39733834640943966], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1733": {}, "ELEMENT_1566": {}, "ELEMENT_1342": {}, "NODE_358": {"DENSITY": [1.0000000000019156, 1.0000000099042528, 0.9999801120032389, 0.9984712720374191, 0.9816366192828474, 0.9292799455174016, 0.8578467799837659], "TOTAL_ENERGY": [2.5000000000067044, 2.5000000346648847, 2.499930392898582, 2.4946535848191993, 2.436250944437333, 2.2597244630507416, 2.03100926481779], "MOMENTUM_X": [2.4184195279572e-12, -1.1913171597173061e-08, 2.339543134977579e-05, 0.0018022822210273007, 0.021440799782454115, 0.07988908825572585, 0.15302771512631416], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1892": {}, "NODE_440": {"DENSITY": [1.0000002226855642, 0.9919025317891931, 0.9256310260269488, 0.8178952502045429, 0.7300754683945682, 0.6691266205990404, 0.6262244921149088], "TOTAL_ENERGY": [2.500000779410953, 2.471778229719356, 2.247983196142745, 1.9096201682054468, 1.65707428701673, 1.494175925147615, 1.385594696488187], "MOMENTUM_X": [8.29712997708792e-07, 0.009483146287233266, 0.08309589031420642, 0.18913397174843438, 0.26188338880778167, 0.3044249709672281, 0.3301238458570434], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_958": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999678, 0.12500000007037626, 0.12499852151782008], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999098, 0.2500000001970535, 0.24999586028406634], "MOMENTUM_X": [-5.79332581195666e-35, 4.250303953823873e-29, -7.944377899700195e-25, 8.02198127802434e-21, -4.365790478325971e-15, 7.763474396967867e-11, -1.6170488197990709e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_719": {}, "NODE_795": {"DENSITY": [0.125, 0.12500000000105527, 0.12499997853449994, 0.1253885493860948, 0.24763638433550295, 0.24324516341371719, 0.2746935186925437], "TOTAL_ENERGY": [0.25, 0.2500000000029548, 0.2499999398966094, 0.25109100322616185, 0.7894074377761698, 0.7492940575720645, 0.9144593429427165], "MOMENTUM_X": [-6.84294734169836e-18, 1.0108241749024294e-12, -2.2429030341499545e-08, 0.0003325152862376263, 0.21946249942869495, 0.19820860966053308, 0.2642954337099286], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_58": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000346, 0.9999999999776532], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000001217, 2.4999999999217866], "MOMENTUM_X": [1.0372612057482986e-34, 7.599907194161281e-29, 3.857484417993212e-25, -1.9182830970496353e-21, 5.902243466366714e-18, -3.883683528392935e-14, 2.4872437491513565e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1577": {}, "ELEMENT_1223": {}, "ELEMENT_1542": {}, "ELEMENT_633": {}, "NODE_141": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000615, 0.9999999999723027, 0.9999999651600578], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000215, 2.499999999903059, 2.4999998780602044], "MOMENTUM_X": [3.1205142404824646e-30, 8.801749667558533e-26, 9.030863646689761e-23, 1.3981960304388124e-17, -7.201228745281335e-14, 3.293877506863293e-11, 4.109456150852231e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1627": {}, "NODE_797": {"DENSITY": [0.12499999999999999, 0.1250000000018878, 0.12499997262597935, 0.12546824811884644, 0.24313933533572712, 0.252622915262862, 0.27319317305920265], "TOTAL_ENERGY": [0.24999999999999997, 0.25000000000528577, 0.24999992335275256, 0.2513155273813064, 0.7633210973696121, 0.7983934139920977, 0.9042595137307731], "MOMENTUM_X": [1.4480379464926845e-17, 1.9263833235216833e-12, -2.7665122285331806e-08, 0.0004244797642227239, 0.20918748827251082, 0.21758930975147306, 0.260165768707347], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_698": {"DENSITY": [0.12499999578488663, 0.1258526493756066, 0.2523382878417949, 0.25945528081597635, 0.30093161866165724, 0.37402189316361667, 0.45353265390003683], "TOTAL_ENERGY": [0.24999998819768315, 0.25240202691159896, 0.8075754632653929, 0.8150724206625887, 0.9060906794245962, 0.9184177986088544, 0.9530185315209561], "MOMENTUM_X": [-4.16800622301611e-09, 0.0007904137002180554, 0.22569219178794309, 0.22697352829141956, 0.28341386390942863, 0.346342514151438, 0.42013861951141357], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_752": {"DENSITY": [0.12499999999996116, 0.12499998569525206, 0.12520530812959302, 0.22492794482776834, 0.2565618420753056, 0.27726608896996474, 0.2913298648415651], "TOTAL_ENERGY": [0.24999999999989128, 0.24999995994670984, 0.2505757686867998, 0.6696370314510087, 0.8176889123055046, 0.9121669564924709, 0.8802589811441988], "MOMENTUM_X": [3.661636993319873e-15, -1.4503524659292724e-08, 0.00018853953412128438, 0.17361125541447214, 0.22516824643402633, 0.26549844505382897, 0.2692632006429005], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_571": {"DENSITY": [0.38422556470425284, 0.3577687916227256, 0.3653201458548176, 0.36034375858763085, 0.36331198922118324, 0.3643253161834467, 0.36423897261504584], "TOTAL_ENERGY": [0.8657463805718687, 0.8164679134589132, 0.8141413506986789, 0.8128450144277165, 0.8160725613184584, 0.8184510317994308, 0.8202330434261441], "MOMENTUM_X": [0.40763364786799094, 0.3827098478578224, 0.3914915790072313, 0.38751367779656076, 0.39090995299844683, 0.3916261343782195, 0.39083375394078446], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1670": {}, "NODE_195": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 1.0000000000004199, 0.999999999635325, 0.9999997168140256, 0.9999764215193292], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.50000000000147, 2.499999998723638, 2.4999990088492656, 2.4999174763651792], "MOMENTUM_X": [9.907891007674167e-25, -1.0758598369508826e-20, 1.2922106804954648e-16, -4.982002552610234e-13, 4.2638553890816657e-10, 3.3638540420389784e-07, 2.8024346971149967e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_259": {}, "ELEMENT_797": {}, "ELEMENT_573": {}, "NODE_163": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999987, 1.0000000000021947, 0.9999999979496744, 0.9999994181185177], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999956, 2.5000000000076814, 2.4999999928238603, 2.499997963415491], "MOMENTUM_X": [-4.940658768294658e-28, -1.514259324152491e-23, 1.1322333012308764e-20, 1.5292695742313313e-15, -2.566364453869432e-12, 2.416163580620303e-09, 6.863390757140745e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_691": {"DENSITY": [0.12499994976504075, 0.13100612668197514, 0.27904443008643576, 0.2721683793473377, 0.3252060881351727, 0.41816286429342747, 0.4564820097487732], "TOTAL_ENERGY": [0.24999985934217828, 0.2676406757690844, 0.9457807257407248, 0.8569108514490753, 0.8972018434827606, 0.9391391993875695, 0.9533227102671578], "MOMENTUM_X": [-6.482133509954679e-08, 0.007272039273074822, 0.27617914926878623, 0.24771145684855816, 0.30130135266736546, 0.38804013138296717, 0.4229178282404751], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1333": {}, "NODE_556": {"DENSITY": [0.3562813154160007, 0.3464527507977397, 0.36580495385481454, 0.36485584271389976, 0.369174901277298, 0.37452162360199664, 0.37311334724694944], "TOTAL_ENERGY": [0.7982283996640892, 0.8059472376657882, 0.8139222738060512, 0.8255892690529861, 0.8319541667544064, 0.8386536284235744, 0.8410283299302647], "MOMENTUM_X": [0.42004638573477965, 0.389279604366908, 0.39808119383192136, 0.39359938397553357, 0.394647326840345, 0.3973072745787545, 0.3935342314680102], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1808": {}, "NODE_309": {"DENSITY": [0.9999999999999999, 0.9999999999995206, 1.0000000012857526, 0.9999991076304056, 0.9998437015005025, 0.9962472024534171, 0.9740132421808595], "TOTAL_ENERGY": [2.5, 2.4999999999983227, 2.500000004500135, 2.499996876708317, 2.4994529999925597, 2.486887823566287, 2.410046416996473], "MOMENTUM_X": [-4.381001888838102e-17, 5.783840616967917e-13, -1.4972693702434358e-09, 1.0729361126200493e-06, 0.0001853113566014313, 0.004432134435261463, 0.030278677576443813], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_349": {"DENSITY": [0.9999999999999885, 1.0000000022645972, 0.9999972140933482, 0.999529276022551, 0.9909368368601555, 0.9522417317263808, 0.8857883558318], "TOTAL_ENERGY": [2.4999999999999605, 2.500000007926091, 2.4999902493459616, 2.498352873005482, 2.4684093718100395, 2.336187228460207, 2.1187508324886375], "MOMENTUM_X": [-8.020824462188209e-14, -2.612377229069555e-09, 3.2968616076890523e-06, 0.0005557181403138515, 0.010648290791877162, 0.05479244812185901, 0.12546904554805702], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_878": {}, "NODE_118": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999934, 1.0000000000067926], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999977, 2.5000000000237734], "MOMENTUM_X": [9.19800499868728e-37, -2.408591254977202e-30, 3.221228706932857e-26, 7.003152929168031e-22, 3.58192039683919e-20, 7.286873493664444e-15, -7.928255326138041e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_81": {}, "NODE_385": {"DENSITY": [1.000000001551642, 0.9999956118573212, 0.9987194441378358, 0.9787684945343511, 0.9150945429773558, 0.8347509355824794, 0.7667931497289505], "TOTAL_ENERGY": [2.5000000054307465, 2.499984641564906, 2.4955211740317162, 2.4263970816636866, 2.2132644870712097, 1.96014244878345, 1.759850361134713], "MOMENTUM_X": [2.0130515609710274e-09, 5.298336333298006e-06, 0.0015162431058734298, 0.02462245799334228, 0.0944841829986753, 0.1741247988308774, 0.23352092483632725], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_67": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000127, 0.9999999999941278], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000444, 2.4999999999794467], "MOMENTUM_X": [8.997994589815723e-36, 4.064150067425486e-30, 1.0287145601371073e-25, -5.557997693039564e-22, -2.1065518349652777e-18, -1.4853172200804172e-14, 6.923791403575495e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_248": {"DENSITY": [1.0, 1.0, 1.0000000000000002, 1.0000000000051317, 1.0000000017957813, 0.9999974819975584, 0.99982238916142], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000018, 2.5000000000179616, 2.5000000062852346, 2.4999911870044285, 2.499378417283208], "MOMENTUM_X": [-8.420088712247481e-24, -2.972576325885382e-20, -3.7616402519205494e-16, -6.405871652620022e-12, -1.985913841563029e-09, 3.0211088536837614e-06, 0.00021198291463775268], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1634": {}, "ELEMENT_895": {}, "ELEMENT_836": {}, "ELEMENT_141": {}, "ELEMENT_512": {}, "ELEMENT_1754": {}, "ELEMENT_1053": {}, "ELEMENT_1060": {}, "ELEMENT_1893": {}, "ELEMENT_406": {}, "NODE_499": {"DENSITY": [0.9962750101715474, 0.8715055722088018, 0.714440860641805, 0.6194487786244314, 0.566286628857495, 0.5333996479813694, 0.5113757140378695], "TOTAL_ENERGY": [2.4869930220454974, 2.073413669171701, 1.6108662585555145, 1.3642678992832986, 1.2374779508142562, 1.163295328662308, 1.1151654565209859], "MOMENTUM_X": [0.0045998904920726, 0.1374252404942819, 0.2731389814267371, 0.33438797888333516, 0.3606627082159975, 0.3736560025861006, 0.38097869061930895], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_711": {}, "ELEMENT_1337": {}, "ELEMENT_694": {}, "ELEMENT_411": {}, "ELEMENT_273": {}, "ELEMENT_1194": {}, "ELEMENT_245": {}, "NODE_1051": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000023073], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.2500000000006461], "MOMENTUM_X": [1.7822971022856063e-42, 1.5182531403956717e-35, 7.5960387021293955e-31, -2.248137175249511e-26, -1.3322560022331286e-21, -9.977577673579958e-18, 2.102691530121793e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1356": {}, "NODE_550": {"DENSITY": [0.43798971353923205, 0.3762703491978383, 0.39757569659207587, 0.39193097526118026, 0.3835127563838507, 0.39969262184702814, 0.3857431155742768], "TOTAL_ENERGY": [0.9522139240533033, 0.8818945689361424, 0.8684159145897099, 0.8770746394550573, 0.8694228046866534, 0.8772813400357219, 0.8717232841882884], "MOMENTUM_X": [0.45128273702377963, 0.3797247272078525, 0.3949443242062951, 0.3925370940790551, 0.3833943555114691, 0.39966098921165166, 0.3858817795468511], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1780": {}, "NODE_116": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 1.0000000000011533, 0.9999999985771975], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999987, 2.5000000000040363, 2.4999999950201914], "MOMENTUM_X": [-8.626063788079062e-33, -7.603437646639361e-28, -1.2101783184589618e-23, -2.0090366656042516e-20, 4.2825763795086257e-16, -1.337725370334501e-12, 1.6807608397427794e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_238": {"DENSITY": [1.0, 1.0000000000000007, 1.0000000000001834, 1.0000000000076998, 0.9999991027012822, 0.999916627987635, 0.9982000140612407], "TOTAL_ENERGY": [2.5, 2.500000000000002, 2.5000000000006417, 2.500000000026949, 2.499996859456205, 2.499708210585343, 2.4937053859726577], "MOMENTUM_X": [1.0282749330432538e-19, 4.1705077648852896e-16, -2.0100413598471242e-13, -2.9522524565010605e-11, 1.028456629010325e-06, 9.73491202665582e-05, 0.002124263435193946], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_630": {"DENSITY": [0.1283338164084368, 0.2946661820678136, 0.3356006196902617, 0.4529983773777884, 0.4432969646939826, 0.40554748638229465, 0.43715353534517215], "TOTAL_ENERGY": [0.25959426692656684, 0.9905532449410253, 0.8782747280952301, 0.9576784838595193, 0.9495987280698626, 0.9318568755263614, 0.9473010017383248], "MOMENTUM_X": [0.0035569783069096003, 0.2993193477801594, 0.30413751233633673, 0.4208321641842211, 0.41064047062088294, 0.3750973231390908, 0.40485069383723116], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_170": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999618, 1.000000000052756, 0.9999999800986135], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999998663, 2.500000000184647, 2.4999999303451492], "MOMENTUM_X": [7.00986427335234e-31, 6.071747098091195e-26, -3.778322438250129e-21, -1.2664561130300248e-17, 4.075822149081375e-14, -6.071187754947877e-11, 2.4200176839381892e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_124": {}, "NODE_332": {"DENSITY": [0.9999999999998587, 1.0000000005625758, 0.9999992561646002, 0.9998286303002163, 0.995615611046193, 0.9700325117420615, 0.9137459120830389], "TOTAL_ENERGY": [2.4999999999995053, 2.5000000019690143, 2.49999739657762, 2.4994002636426385, 2.4846866879264864, 2.3964676455128027, 2.2088009185711077], "MOMENTUM_X": [-1.7647283888200396e-13, -6.083319563993628e-10, 8.776376521274588e-07, 0.000203074724434582, 0.005180560848808813, 0.03481089166109073, 0.09659666378417606], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1009": {}, "ELEMENT_1601": {}, "ELEMENT_565": {}, "NODE_1031": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000028, 0.12499999998140825], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000794, 0.24999999994794325], "MOMENTUM_X": [-1.3023255960497383e-38, -1.6334215451623544e-32, -1.7190297342850959e-28, 1.6825883776321329e-23, 5.945686027125994e-20, 8.298473773581639e-16, -8.099260907823364e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_152": {}, "ELEMENT_777": {}, "NODE_823": {"DENSITY": [0.125, 0.12500000000003011, 0.12499999957881208, 0.12500126974127798, 0.15430403145143942, 0.27868919908025086, 0.271079653412653], "TOTAL_ENERGY": [0.25, 0.25000000000008427, 0.24999999882067378, 0.2500035554735242, 0.34959640265891134, 0.9462312135583305, 0.9009866206934787], "MOMENTUM_X": [-4.546550427631488e-18, 6.309309075024495e-14, -7.608738890856904e-10, 2.5476244298924195e-06, 0.04547190106683433, 0.27513212984115887, 0.2579689158115839], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1477": {}, "NODE_725": {"DENSITY": [0.1250000000235465, 0.12500212762616153, 0.16853781637587026, 0.2735301249200744, 0.2761342115667385, 0.30868250476367715, 0.39046018747342537], "TOTAL_ENERGY": [0.2500000000659302, 0.2500059588561172, 0.40642873255776435, 0.9119388555440261, 0.8926170920428355, 0.8885708985240347, 0.9257769923400939], "MOMENTUM_X": [3.7094144122546464e-11, 7.496611519011271e-06, 0.07032027194923562, 0.2615767610193165, 0.2593088604382742, 0.2851067203742298, 0.36148723489169465], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_587": {"DENSITY": [0.2867727177937239, 0.4340328000775067, 0.4395638433176643, 0.4074028039166234, 0.4275231731247424, 0.4211218117752873, 0.4154017299810837], "TOTAL_ENERGY": [0.8763190758492677, 0.9185788201397497, 0.9476497595177282, 0.9235566173270003, 0.9326562637937903, 0.9289675690294187, 0.9247945547097305], "MOMENTUM_X": [0.2697041701796197, 0.3983418905459304, 0.4127309093100226, 0.38070827152981707, 0.4012669274233244, 0.39618843687769656, 0.39155821701647814], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_291": {}, "ELEMENT_1591": {}, "ELEMENT_1773": {}, "NODE_33": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000486], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000001705], "MOMENTUM_X": [-1.142682501775885e-39, 3.543269228685149e-32, 1.8808713974799694e-28, 2.8262205237833758e-25, 1.0390955859566196e-20, 1.0233671703382833e-18, -5.700610671112287e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_769": {"DENSITY": [0.12499999999998655, 0.12499999821420209, 0.12501488308170133, 0.18468159892086997, 0.26728653354852666, 0.2717666830284047, 0.2811625921452883], "TOTAL_ENERGY": [0.24999999999996236, 0.24999999499976602, 0.25004168732806714, 0.47649675287111376, 0.8792801802395843, 0.8945217376723192, 0.8795216570085155], "MOMENTUM_X": [7.987577654561845e-15, -3.2886726707953793e-09, 2.542813666624478e-05, 0.09912502683002769, 0.24861209425565062, 0.2563287307074352, 0.260503468554376], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1468": {}, "NODE_773": {"DENSITY": [0.1250000000000001, 0.1250000000471376, 0.12499944913813446, 0.14184617755422918, 0.2884518143248083, 0.26497744952073266, 0.2671140308247023], "TOTAL_ENERGY": [0.2500000000000003, 0.2500000001319852, 0.24999845758628148, 0.3035068921106945, 1.002933436435968, 0.8640655962119725, 0.85019491553598], "MOMENTUM_X": [3.352161489777241e-17, 3.737678664016755e-11, -4.6822437080299096e-07, 0.02414513870143662, 0.297220971913955, 0.24476746515517195, 0.2422239529744074], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_54": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000016, 0.9999999999997915], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000053, 2.4999999999992712], "MOMENTUM_X": [2.5511178590803315e-37, -1.888766568867538e-30, -1.0724655932963114e-26, 7.691722270096218e-24, -5.1034701555024405e-19, -1.798127876218384e-15, 2.50281663886419e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_784": {"DENSITY": [0.12499999999999996, 0.12500000000947217, 0.12499985215201435, 0.12825644779325845, 0.28364358373113424, 0.24877190506061758, 0.26799352468622384], "TOTAL_ENERGY": [0.24999999999999986, 0.25000000002652206, 0.24999958602602512, 0.2593467745127865, 0.9808062629102239, 0.7773806741746675, 0.869685960713937], "MOMENTUM_X": [6.041037736832377e-17, 1.0944260259581642e-11, -1.837381418173029e-07, 0.0034507883538080447, 0.2896144933177932, 0.2099515571822543, 0.24773692341881723], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_331": {}, "ELEMENT_595": {}, "NODE_528": {"DENSITY": [0.6395062066955673, 0.5377616142234702, 0.49143737535681936, 0.47437198942179293, 0.46115736520470424, 0.4464356693928234, 0.44480649102034336], "TOTAL_ENERGY": [1.4048365895512485, 1.1937323793595507, 1.0939339110967294, 1.0406961896820657, 1.0136754264251444, 0.9898388823525348, 0.9770924619041973], "MOMENTUM_X": [0.2249091447620906, 0.36126717675531533, 0.37341213788486227, 0.3833033930920088, 0.3883824111498894, 0.38567391495219105, 0.3918211252625845], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_184": {}, "ELEMENT_1650": {}, "ELEMENT_536": {}, "ELEMENT_342": {}, "NODE_50": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000192], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000672], "MOMENTUM_X": [-1.2237826236010312e-38, 1.2988163861204383e-32, -6.845442417492141e-28, -3.9090047238521583e-25, 3.1531021267833157e-20, 5.1777988847897286e-17, -2.2254801148940997e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_660": {"DENSITY": [0.12512584707001342, 0.24797315921657162, 0.28189699121451683, 0.37556267481605526, 0.45044038528952357, 0.4301084572133018, 0.42674430892502313], "TOTAL_ENERGY": [0.2503527928097164, 0.7827570459786088, 0.8523359465432062, 0.9196392858382574, 0.9533826053042075, 0.9465154749273418, 0.9463798541080641], "MOMENTUM_X": [0.00010064193202912489, 0.21617919881009923, 0.2560027473317875, 0.3495699073392751, 0.41944098933860097, 0.4011990128742468, 0.3986203799745819], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1782": {}, "ELEMENT_494": {}, "NODE_1094": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999997], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999992], "MOMENTUM_X": [0.0, -1.8691981381481102e-40, 1.394057913507075e-35, 1.25649713582433e-30, -1.5939893229353933e-26, -1.8526825388036712e-21, -3.3616485644988265e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_895": {"DENSITY": [0.125, 0.125, 0.12499999999999992, 0.1250000000011506, 0.12499998174928366, 0.12530798456904413, 0.2350346681490553], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999998, 0.25000000000322176, 0.24999994889800045, 0.25086432248592316, 0.7211191403369573], "MOMENTUM_X": [1.069082393175818e-26, -8.484190644678045e-24, -7.536223157435515e-17, 1.0725626690045167e-12, -1.828523980213726e-08, 0.0002710883211389641, 0.19265143893106967], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_957": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000077338, 0.12499997888304938, 0.12536460416970246], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000216543, 0.24999994087254557, 0.2510232886462859], "MOMENTUM_X": [6.727217551994049e-30, -1.3678551139630289e-24, -3.465053216250618e-21, 8.408073089460576e-17, 4.2850000526158237e-13, -2.033595932935251e-08, 0.00030229582123494236], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1916": {}, "ELEMENT_955": {}, "ELEMENT_1262": {}, "ELEMENT_554": {}, "ELEMENT_193": {}, "NODE_646": {"DENSITY": [0.1254209597566739, 0.2737540457008666, 0.2971047070698232, 0.40376988594794694, 0.46266169424598713, 0.4248772667197204, 0.41905240756853707], "TOTAL_ENERGY": [0.25118287321472665, 0.908880741235274, 0.8580476018754291, 0.9357193078107803, 0.9566860070790486, 0.9415553224508846, 0.9396449091814417], "MOMENTUM_X": [0.0003602847615884132, 0.26434305801452085, 0.26854279918077956, 0.3755014970889636, 0.42875480581308273, 0.3940243708765401, 0.38881146937109873], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_350": {"DENSITY": [1.0000000000086833, 1.0000000198830816, 0.9999590541523175, 0.9974710932521906, 0.9751200009256442, 0.9179515477475675, 0.8490854192374802], "TOTAL_ENERGY": [2.5000000000303917, 2.500000069590787, 2.499856693149503, 2.4911599879359434, 2.413886202886573, 2.222778891535157, 2.0047101167443926], "MOMENTUM_X": [1.2200268011193058e-11, -2.7203815787675612e-08, 4.708823906541629e-05, 0.0029767322059331986, 0.029175984207149792, 0.09292569548932794, 0.16280327736822855], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1757": {}, "ELEMENT_842": {}, "ELEMENT_922": {}, "NODE_518": {"DENSITY": [0.8352914663192356, 0.6078184516125149, 0.5392597619722956, 0.5004550992626309, 0.4782275233192676, 0.4668948433333945, 0.45630744696844056], "TOTAL_ENERGY": [1.969526792697916, 1.3352868920924943, 1.1802663827082616, 1.0945582806008578, 1.0494613468796208, 1.0222008152041424, 1.00180154188112], "MOMENTUM_X": [0.19182541305841624, 0.33284514070543786, 0.373900076883184, 0.3824978757073691, 0.38720923400133594, 0.3922918022285483, 0.39306850524999626], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_655": {}, "ELEMENT_1787": {}, "ELEMENT_82": {}, "ELEMENT_913": {}, "ELEMENT_902": {}, "ELEMENT_585": {}, "NODE_470": {"DENSITY": [0.9997195665502969, 0.9558944249156129, 0.8344905369334233, 0.7233680260539654, 0.6509318087173874, 0.6038720424070433, 0.5714670472959594], "TOTAL_ENERGY": [2.4990187120800242, 2.348753346047735, 1.9599978776257252, 1.6389124524905916, 1.4477569472283034, 1.3311485949079944, 1.2541081279600146], "MOMENTUM_X": [0.00033076829481592043, 0.05052806211905424, 0.17476405251214824, 0.26793152341712173, 0.3165822242441656, 0.3426354235181845, 0.3579144921692965], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_520": {}, "NODE_681": {"DENSITY": [0.12499957446770281, 0.15522552218048727, 0.27899882110637625, 0.2922412576116075, 0.3695781150915935, 0.4471733269961007, 0.4337976935024833], "TOTAL_ENERGY": [0.24999880851268094, 0.3527596411300413, 0.9350403371724856, 0.8903135563459412, 0.9141274516254627, 0.9500161111956624, 0.9417013845031005], "MOMENTUM_X": [-6.47648257767934e-07, 0.0470081602151031, 0.2715350401665028, 0.27167705122214364, 0.34101415685027703, 0.4136028371609263, 0.40038532170420105], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_791": {"DENSITY": [0.12499999999999996, 0.12499999999477983, 0.12499975753853602, 0.1303662004093805, 0.2738969343524967, 0.2637137766454597, 0.26701939730596175], "TOTAL_ENERGY": [0.24999999999999992, 0.24999999998538355, 0.2499993211084721, 0.2656850102165623, 0.920030712564459, 0.8586609279209596, 0.8618574015599267], "MOMENTUM_X": [2.3184129438404853e-17, 6.817270291785812e-12, -3.4899645091320094e-07, 0.006482430463950312, 0.2649663217734682, 0.2409498939255872, 0.244527183492475], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1901": {}, "ELEMENT_1947": {}, "NODE_75": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000806, 0.9999999999295253], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000002824, 2.499999999753339], "MOMENTUM_X": [-3.518236319528121e-34, 4.271932485402153e-29, 1.3049339036140536e-24, 5.2777823480647064e-21, 4.718248556120509e-17, -9.852238829060731e-14, 8.557841971688691e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_492": {}, "ELEMENT_1861": {}, "NODE_1036": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.1250000000003182], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.25000000000089095], "MOMENTUM_X": [9.052801898582743e-44, -7.797384918243594e-36, -2.480216574796501e-31, 1.0376995454636618e-26, -3.315954804090732e-23, -1.5187901147156566e-17, 3.0154928180697957e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_743": {"DENSITY": [0.12500000000041306, 0.12499994350280418, 0.1266244182760646, 0.2683985568193315, 0.2521854386657792, 0.27889544584977793, 0.31378106773588765], "TOTAL_ENERGY": [0.2500000000011565, 0.24999984180789184, 0.2546030632915561, 0.8954044845641655, 0.789781515780732, 0.8921783982047036, 0.8945689449612246], "MOMENTUM_X": [3.2190452727221547e-13, -8.977371519292105e-08, 0.0016041455539550205, 0.2585459818658335, 0.21508955082680026, 0.2618987101491624, 0.29115931522742894], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1835": {}, "ELEMENT_1464": {}, "ELEMENT_466": {}, "NODE_1062": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000003123], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000008743], "MOMENTUM_X": [-5.120427948098255e-44, -7.186140382948809e-36, 3.405099109048554e-32, 3.851219812167128e-27, -4.7151218287808865e-24, -1.376017143579712e-18, 4.1897663040600375e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_835": {"DENSITY": [0.125, 0.12500000000000536, 0.12499999995976993, 0.12499958460688412, 0.1352179209512753, 0.27727456786289084, 0.2670575481924705], "TOTAL_ENERGY": [0.25, 0.25000000000001504, 0.24999999988735588, 0.24999883689954241, 0.28100079054080446, 0.9379106988653563, 0.878885512910769], "MOMENTUM_X": [2.5481521161850547e-19, 1.4370466182652769e-15, -3.3090203484002376e-11, -5.519578251541333e-07, 0.013759379695278863, 0.2713721234970249, 0.24871643154140508], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_305": {}, "ELEMENT_165": {}, "ELEMENT_1203": {}, "ELEMENT_817": {}, "ELEMENT_473": {}, "ELEMENT_780": {}, "ELEMENT_1824": {}, "NODE_393": {"DENSITY": [0.9999999999730065, 0.9999966034525506, 0.9989525252011016, 0.9812516445391953, 0.9195193647941746, 0.837071475720085, 0.7666490042751328], "TOTAL_ENERGY": [2.4999999999055222, 2.49998811211879, 2.4963358899395303, 2.4349331679902755, 2.2277013151346834, 1.967184459750092, 1.7594555769706732], "MOMENTUM_X": [2.1495872626826765e-10, 4.002730942359276e-06, 0.0012342174174266867, 0.021878031341181485, 0.09034164502799481, 0.17283898702265793, 0.23459369515542722], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_789": {}, "NODE_181": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000284, 0.9999999999937007, 0.9999999274740965, 0.9999910745524737], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000001, 2.4999999999779527, 2.49999974615935, 2.499968761087252], "MOMENTUM_X": [3.5473710710236437e-25, -2.5170145076696994e-22, 3.523679065963255e-18, -3.833665231174952e-14, 8.934865124198331e-12, 8.732459721079049e-08, 1.0630548879114998e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1565": {}, "ELEMENT_748": {}, "ELEMENT_1573": {}, "ELEMENT_1363": {}, "ELEMENT_438": {}, "NODE_351": {"DENSITY": [1.000000000007967, 1.0000000149007633, 0.9999770853835289, 0.998200660812611, 0.9792758319474201, 0.9246082948043213, 0.8543223428693502], "TOTAL_ENERGY": [2.500000000027884, 2.500000052152671, 2.499919800088553, 2.493708065032227, 2.4281270937585013, 2.244333570899521, 2.020076338619819], "MOMENTUM_X": [9.842951535372467e-12, -1.972343370331672e-08, 2.7579865133059407e-05, 0.0021247356675136346, 0.024057833453320614, 0.08449925506103424, 0.15578625319940412], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_231": {}, "ELEMENT_1507": {}, "ELEMENT_710": {}, "ELEMENT_425": {}, "ELEMENT_1645": {}, "ELEMENT_1846": {}, "NODE_815": {"DENSITY": [0.125, 0.12499999999999863, 0.12500000005026213, 0.12499913904285459, 0.13985283335366192, 0.3019592977433583, 0.2622869501758153], "TOTAL_ENERGY": [0.25, 0.2499999999999961, 0.2500000001407338, 0.24999758933395938, 0.2968445138126106, 1.0795615096694537, 0.8511658796628356], "MOMENTUM_X": [9.393108428764166e-21, -2.492724284829824e-15, 5.853228800215861e-11, -1.0649821415086878e-06, 0.022013588780954184, 0.3250185967336072, 0.23949223441329048], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1308": {}, "ELEMENT_1087": {}, "ELEMENT_1282": {}, "ELEMENT_135": {}, "NODE_996": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000050324, 0.12499998798725215], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.250000000001409, 0.24999996636430805], "MOMENTUM_X": [2.522970081481217e-36, 1.2106911528191488e-31, -1.4970755117790729e-25, 1.472867129267304e-21, -7.497162527171193e-18, 3.2780293920846134e-13, -1.1152978655358861e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_18": {}, "ELEMENT_829": {}, "NODE_722": {"DENSITY": [0.12500000002646697, 0.12500484390020028, 0.1593582719743367, 0.2854453422783909, 0.27231618881765157, 0.30378438138661884, 0.3839839008070508], "TOTAL_ENERGY": [0.25000000007410755, 0.25001356423120386, 0.36916910342093184, 0.9792317992086945, 0.8732338415112683, 0.8831838879173383, 0.923533788719454], "MOMENTUM_X": [1.475155816030834e-11, 7.490279661773161e-06, 0.05343316984698786, 0.28889517708640283, 0.25198885806483007, 0.2801179460204536, 0.35594553398700224], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_547": {}, "NODE_983": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999983, 0.1250000000037513, 0.12499992931706841], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2499999999999995, 0.2500000000105036, 0.24999980208787265], "MOMENTUM_X": [-2.9370346801798133e-36, -2.863778992291453e-32, -1.4206892713363652e-25, 7.138952079223796e-21, -2.767338345412988e-16, 4.555199080035936e-12, -9.225774160933157e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_967": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000003292, 0.12499999953765986, 0.12500093662535303], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000009215, 0.24999999870544765, 0.25000262343548707], "MOMENTUM_X": [4.3869149770166525e-31, 1.2009172495569944e-27, -6.178153625035849e-22, -3.947666761340611e-18, 8.277780391994692e-14, -1.142496050596406e-09, 5.806741933605315e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_315": {"DENSITY": [1.0, 1.00000000000004, 1.0000000001738254, 1.0000000001391012, 0.9999503630720641, 0.9980199973306795, 0.9813943403196482], "TOTAL_ENERGY": [2.5, 2.5000000000001403, 2.50000000060839, 2.500000000486861, 2.499826275762186, 2.49307641218221, 2.4353873257815914], "MOMENTUM_X": [-6.711915809335926e-18, -3.1936572744270485e-14, -2.5872688796024834e-10, 3.436710606044875e-08, 6.150803326683154e-05, 0.0023495627948455066, 0.021570232643359336], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1433": {}, "ELEMENT_1616": {}, "ELEMENT_1164": {}, "ELEMENT_1151": {}, "ELEMENT_1402": {}, "NODE_505": {"DENSITY": [0.9753575310808437, 0.7788730432045285, 0.646739080439259, 0.5773351405649226, 0.5375037006558154, 0.5124385477481966, 0.494938645752452], "TOTAL_ENERGY": [2.41486714025997, 1.796506098940922, 1.438153856774112, 1.2688767155490397, 1.177697379937013, 1.1213645347857386, 1.0831951681119407], "MOMENTUM_X": [0.028183082162304002, 0.22690466933811473, 0.3215923479260884, 0.35668807176085415, 0.371766195090178, 0.37974564935463107, 0.3842635115059165], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_75": {}, "ELEMENT_628": {}, "ELEMENT_409": {}, "ELEMENT_678": {}, "ELEMENT_21": {}, "ELEMENT_1534": {}, "ELEMENT_1550": {}, "ELEMENT_1398": {}, "ELEMENT_1541": {}, "ELEMENT_796": {}, "ELEMENT_1367": {}, "ELEMENT_1105": {}, "ELEMENT_1400": {}, "NODE_184": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999975, 1.0000000000150315, 1.0000000012502466], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999914, 2.5000000000526126, 2.5000000043758654], "MOMENTUM_X": [2.303482672860132e-32, -7.331661407542334e-27, 4.993373709543486e-22, -8.13699832608696e-18, 3.020332175930101e-14, -1.9395912347890492e-11, -7.087788299542111e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_761": {"DENSITY": [0.1250000000000016, 0.12500000024424035, 0.12499779629802552, 0.1712942457314331, 0.2728878531311157, 0.27803643608905165, 0.26997686091140305], "TOTAL_ENERGY": [0.25000000000000444, 0.25000000068387296, 0.24999382947262297, 0.421490891042455, 0.9156105307373357, 0.9340880819355634, 0.8462091053880348], "MOMENTUM_X": [-1.1653450898528666e-15, 9.607024300460838e-11, -1.8601038421338547e-07, 0.07961869131178098, 0.2643979091807988, 0.2729085250054341, 0.2438055577016504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1064": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001807], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000005057], "MOMENTUM_X": [-3.705879537629751e-43, -1.3992973872608232e-35, 3.755378840317896e-31, 1.0564389409223324e-26, -6.649883287533029e-23, -1.5201092483892722e-18, 4.298641056127703e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1068": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999985], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999956], "MOMENTUM_X": [-2.5075394640663563e-51, 1.1706046989916861e-39, -4.944975764698103e-35, 3.697901986341367e-30, 3.0263823171526024e-27, -3.2600758276709115e-21, -2.3588422147109634e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_871": {"DENSITY": [0.125, 0.125, 0.12499999999999853, 0.12500000002485115, 0.12499952744728886, 0.13528655803181297, 0.2942639353289289], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999592, 0.2500000000695833, 0.24999867685654345, 0.2814023053121815, 1.0437234643199715], "MOMENTUM_X": [-6.702671060774624e-26, -1.2770646005774545e-20, -1.9631888103547287e-15, 2.91595218046675e-11, -5.864911516135962e-07, 0.014291179698217043, 0.3141166407133488], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_442": {"DENSITY": [0.9999989821799871, 0.9926765363113951, 0.9298078512918289, 0.8215738228679873, 0.7310948578668143, 0.6682844239772457, 0.624333998965713], "TOTAL_ENERGY": [2.499996437648525, 2.474467142647047, 2.2617833085469377, 1.92085204268042, 1.6601979569043208, 1.4923510033146736, 1.3812777546489632], "MOMENTUM_X": [6.984290880217878e-07, 0.00865560228120761, 0.07929121798671945, 0.18694462499974407, 0.2622426369851969, 0.3058472664740084, 0.33178013990231586], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_884": {"DENSITY": [0.125, 0.125, 0.12499999999999968, 0.1250000000041843, 0.12499991291814273, 0.12743320555521798, 0.27430885203374505], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999991, 0.2500000000117161, 0.24999975617091244, 0.25693698662205544, 0.926820756147168], "MOMENTUM_X": [-1.3191968508634123e-28, 2.4546351907671087e-21, -5.186238773141848e-16, 5.711977204533836e-12, -1.2538289819348012e-07, 0.002443905487903083, 0.2688083728343439], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_375": {}, "ELEMENT_926": {}, "ELEMENT_1830": {}, "ELEMENT_1688": {}, "ELEMENT_1254": {}, "ELEMENT_1412": {}, "ELEMENT_239": {}, "ELEMENT_194": {}, "ELEMENT_784": {}, "ELEMENT_1192": {}, "ELEMENT_1527": {}, "ELEMENT_345": {}, "ELEMENT_112": {}, "ELEMENT_261": {}, "NODE_101": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 1.0000000000003322, 0.9999999997658159], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000011635, 2.499999999180357], "MOMENTUM_X": [-6.779469666063523e-34, -1.4335912606399057e-28, -6.285083146583253e-24, 2.2946174263513937e-20, 2.527181671527473e-16, -3.8783565198868396e-13, 2.77265378484266e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_229": {"DENSITY": [1.0, 1.0, 0.9999999999999758, 1.0000000000397897, 0.9999999075569614, 0.9999856735447533, 0.9995209825393112], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999156, 2.5000000001392633, 2.499999676449385, 2.4999498578114228, 2.498323836451237], "MOMENTUM_X": [-1.4165719759107052e-21, -2.353453472151834e-17, 3.1385216010087684e-14, -4.899092477899745e-11, 1.097602107029344e-07, 1.7040891758243217e-05, 0.000568475577608799], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1012": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000025613, 0.12499999444457181], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000007171, 0.24999998444480176], "MOMENTUM_X": [2.3220160660261676e-35, 2.5716566676448607e-30, -1.9222267371533967e-25, -2.586454730424568e-21, 3.092067284165609e-18, 3.219293380328497e-13, -6.818878096808103e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_80": {}, "NODE_552": {"DENSITY": [0.35728106323691383, 0.34609339267916234, 0.3724041336838555, 0.3654819009029691, 0.3742775035129991, 0.37975351756486503, 0.3744333369283938], "TOTAL_ENERGY": [0.7777781628943918, 0.8163267942940665, 0.8205466351063777, 0.8338022851393224, 0.8413779952841851, 0.8471886745065917, 0.8479094525400627], "MOMENTUM_X": [0.4151552714367338, 0.3905747378924508, 0.4039630319296145, 0.3938096267445725, 0.39884577294117823, 0.40163534800925726, 0.3940937085777333], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1730": {}, "ELEMENT_1836": {}, "ELEMENT_982": {}, "NODE_428": {"DENSITY": [1.0000021058396822, 0.996189380575647, 0.9501676132759714, 0.8540534797874463, 0.7656683603217099, 0.7013547207698662, 0.6551121881609832], "TOTAL_ENERGY": [2.5000073704391457, 2.4866904267579812, 2.3295113992470835, 2.020590868106421, 1.7589454266056646, 1.581801084908051, 1.461138452014723], "MOMENTUM_X": [7.293760323012198e-07, 0.004436019156746885, 0.05764896755902585, 0.15812718322577385, 0.23689996743807698, 0.28521784443617293, 0.31503669112259625], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_663": {}, "ELEMENT_1751": {}, "ELEMENT_870": {}, "ELEMENT_1483": {}, "ELEMENT_568": {}, "NODE_1030": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000258, 0.12499999998139553], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000727, 0.24999999994790761], "MOMENTUM_X": [-5.100693003628318e-39, -4.640624088792554e-33, -1.652000238964616e-28, 1.0536812583373249e-23, 8.415440649672298e-20, 9.699962105408739e-16, -8.343389522511338e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_690": {"DENSITY": [0.12499994794444343, 0.13050996575354146, 0.2820005298060269, 0.2692936650705112, 0.32456568103949596, 0.4181402742046464, 0.4627182225258739], "TOTAL_ENERGY": [0.24999985424450777, 0.26610728777455783, 0.9624558540739114, 0.8408576764584922, 0.8980220012873937, 0.9381779661744932, 0.9577018076274714], "MOMENTUM_X": [-6.566751677717829e-08, 0.006490657033801301, 0.2831040444277683, 0.24164621798088604, 0.30116248749521524, 0.38781343197160695, 0.4292667726871362], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1638": {}, "ELEMENT_952": {}, "ELEMENT_656": {}, "ELEMENT_1361": {}, "ELEMENT_1770": {}, "ELEMENT_1572": {}, "NODE_183": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000406, 0.9999999999728628, 0.9999999344739013, 0.9999924149954765], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000000142, 2.4999999999050186, 2.499999770658663, 2.499973452595655], "MOMENTUM_X": [2.053535023860548e-25, 1.6369975885260956e-21, 1.7033758569137425e-18, -4.732906253636171e-14, 3.064993030231344e-11, 7.776095047230684e-08, 9.015795834150663e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_424": {}, "NODE_945": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000047, 0.12500000000106906, 0.12499993013200358, 0.12611677004293292], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000133, 0.25000000000299333, 0.24999980436969022, 0.2531545819701322], "MOMENTUM_X": [-5.699752320008066e-29, -1.4369527122611552e-25, 4.8031669449377395e-20, 1.482442079920375e-16, 1.0193061888943523e-12, -7.731808116157755e-08, 0.0011005662266861697], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_23": {}, "ELEMENT_766": {}, "ELEMENT_1777": {}, "ELEMENT_604": {}, "ELEMENT_1969": {}, "NODE_188": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998724, 1.0000000001582452, 0.9999999601033259], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000000004, 2.4999999999995546, 2.5000000005538605, 2.4999998603616467], "MOMENTUM_X": [1.4627257296766715e-30, 2.7273811607121523e-25, -1.689528676767448e-20, -1.4668101431127894e-16, 1.4558578725697443e-13, -1.8706228378482266e-10, 4.8248091680420384e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_832": {"DENSITY": [0.125, 0.12500000000000355, 0.12499999994580759, 0.12500004104206688, 0.13131623814909033, 0.287131473590112, 0.25551309575972475], "TOTAL_ENERGY": [0.25, 0.25000000000000994, 0.24999999984826127, 0.2500001149175122, 0.2685990182016466, 0.9980526209475404, 0.8149686783832615], "MOMENTUM_X": [6.566451362374901e-21, 1.5501664313866336e-15, -4.609564796828192e-11, -9.059401527232346e-08, 0.007605386125348421, 0.2959283365890265, 0.2244019310813125], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_655": {"DENSITY": [0.12502547107880313, 0.23547994941128522, 0.27719507092074464, 0.3549430966894507, 0.449347075543557, 0.45327981683522983, 0.4070344225888715], "TOTAL_ENERGY": [0.25007135052175594, 0.7185173713267008, 0.8530450224198161, 0.9221773506662594, 0.9509008535533804, 0.9556579821346797, 0.9329593080867543], "MOMENTUM_X": [3.128789295104774e-05, 0.19247988029204277, 0.2507141074500959, 0.33140955605070704, 0.41585690266170966, 0.4204477647985536, 0.37678591950849605], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_126": {}, "NODE_876": {"DENSITY": [0.125, 0.125, 0.12500000000001246, 0.12499999988759322, 0.12500023252063594, 0.13685894762011896, 0.28900877252617035], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000003497, 0.2499999996852611, 0.25000065106108377, 0.28640982655052016, 1.0073173042074437], "MOMENTUM_X": [-1.6154090396855542e-23, -3.2274152016150685e-19, 1.3573449319139373e-14, -1.4185325321209856e-10, 1.6696686081793393e-07, 0.015855138556566607, 0.2991081856224415], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_39": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [-9.421987030946925e-46, 3.255739747951841e-36, 1.675181315958739e-32, -2.0277011269333393e-28, 2.8971927645710186e-25, 2.3584087618771646e-20, 5.4855896407278544e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_863": {"DENSITY": [0.125, 0.125, 0.12500000000007805, 0.12499999916088678, 0.12500794318778846, 0.1660477821998015, 0.2781192749092434], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000021855, 0.24999999765048303, 0.25002224373805204, 0.39683241012679327, 0.9430336767136511], "MOMENTUM_X": [-1.42928732838672e-23, -2.0980283551187582e-18, 9.128609353280734e-14, -1.3518832331710401e-09, 1.1620323355799013e-05, 0.06513661217500098, 0.2738289749503954], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1035": {}, "ELEMENT_1237": {}, "ELEMENT_1374": {}, "ELEMENT_414": {}, "ELEMENT_352": {}, "ELEMENT_695": {}, "ELEMENT_1331": {}, "ELEMENT_176": {}, "ELEMENT_521": {}, "ELEMENT_1281": {}, "NODE_907": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.12500000000017616, 0.12499999786053448, 0.1250246178846228, 0.18325526875573836], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.2500000000004934, 0.2499999940094968, 0.25006895029824094, 0.47132491952071376], "MOMENTUM_X": [1.873798813291905e-27, -6.397977255357821e-23, -1.2004549393935728e-17, 1.885265869152586e-13, -2.9780974261580317e-09, 3.1042604237967595e-05, 0.09618376958012381], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_131": {}, "ELEMENT_250": {}, "NODE_63": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [-1.2336339514373199e-47, 5.4936110301072035e-37, 9.89873186783106e-34, 8.982336754814507e-29, -3.4007989631275635e-25, 8.509555889576964e-22, 2.2627468138073096e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_137": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999968, 1.0000000000048412, 0.9999999970536558], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999989, 2.5000000000169447, 2.4999999896877956], "MOMENTUM_X": [-1.0207573670400679e-32, 6.432412429619245e-28, 2.137688688878766e-22, -1.409673159732968e-19, 3.616261219733922e-15, -5.6043637465903525e-12, 3.527769943006497e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_845": {}, "ELEMENT_449": {}, "ELEMENT_1929": {}, "NODE_724": {"DENSITY": [0.12500000001653813, 0.12500376688717527, 0.16201419349274274, 0.279266695967328, 0.2756916479354689, 0.30521962418057813, 0.3859597591729301], "TOTAL_ENERGY": [0.2500000000463068, 0.25001054838725445, 0.37987909268812164, 0.9450505370644515, 0.892935578765771, 0.8861483906239042, 0.9251291799098151], "MOMENTUM_X": [2.0013775668880595e-11, 6.537959642219456e-06, 0.058659709100956386, 0.2752322785536704, 0.2596193918467471, 0.28214444158633445, 0.35815799135747095], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_190": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999982, 1.0000000000023412, 0.9999999998998995, 0.9999994689236427], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999994, 2.500000000008194, 2.4999999996496483, 2.4999981412333208], "MOMENTUM_X": [-1.2638001891420318e-28, -8.344416387388114e-24, 4.639764895352121e-19, 2.091118866844383e-15, -2.847366046739742e-12, 1.8849636390115674e-10, 6.356655302677882e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_22": {}, "NODE_162": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999988, 1.0000000000019738, 0.9999999974559588, 0.999999372514897], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999996, 2.5000000000069083, 2.499999991095855, 2.499997803802933], "MOMENTUM_X": [-9.43322255016706e-28, -1.5157936144130897e-23, 6.412331430825863e-21, 1.4011163561786734e-15, -2.3323875421832415e-12, 2.9892000158118787e-09, 7.410005115912192e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_262": {}, "NODE_607": {"DENSITY": [0.1736239242573179, 0.3206305080458297, 0.4588187424500517, 0.4475714281370143, 0.39826070697507443, 0.44340872602371373, 0.4283593469736152], "TOTAL_ENERGY": [0.43180445794844335, 0.8828675382396721, 0.9732955514254407, 0.9432546855557201, 0.9387564026104064, 0.9509693421343043, 0.9459843156674759], "MOMENTUM_X": [0.0841000450202708, 0.2959351654613619, 0.4315849904089392, 0.4137278937483593, 0.3730429651523611, 0.41292788387154944, 0.39946050595310467], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1614": {}, "ELEMENT_768": {}, "ELEMENT_1430": {}, "NODE_21": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000011], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000039], "MOMENTUM_X": [3.0952135139846967e-40, 7.006425065939318e-33, 2.0389417267659633e-29, -6.597201651045602e-26, -1.0722634216367252e-21, 3.180864459956298e-19, -1.3341751606068969e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_535": {"DENSITY": [0.6661006649023056, 0.5190156868283927, 0.47421900926825883, 0.45686469291700255, 0.4433476649227827, 0.43584568844498434, 0.4314241229207149], "TOTAL_ENERGY": [1.47348336248082, 1.1396648874437554, 1.0430471380536317, 1.0004587079857241, 0.9762124003793035, 0.9612628268116437, 0.9510909953007735], "MOMENTUM_X": [0.25358558696493505, 0.3764938066512814, 0.38707754105034375, 0.393176907247682, 0.3932215139459788, 0.39413689760074333, 0.3952663964540623], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_900": {"DENSITY": [0.125, 0.125, 0.12500000000000014, 0.12500000000010286, 0.12499997960333341, 0.12529897642231846, 0.23234003294023253], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000033, 0.250000000000288, 0.2499999428893401, 0.250839203322776, 0.7059948784759567], "MOMENTUM_X": [1.8824140830941662e-25, 1.282286827583699e-20, 5.064232082576889e-17, -2.8380802589561037e-13, -1.9853918933977594e-08, 0.00027759895851454404, 0.18722340802567422], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_131": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000039175, 0.9999999947751423], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000137113, 2.4999999817129983], "MOMENTUM_X": [1.0735384216712574e-33, 1.2094927057219519e-26, 3.5493169307449456e-22, -8.997100020463272e-19, -9.990049199732641e-17, -4.471552678484414e-12, 6.19672554881372e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_396": {"DENSITY": [1.000000004194458, 0.999969603217428, 0.9962551165788393, 0.9611072584081928, 0.8826754065033547, 0.8014980568299608, 0.7376768850518691], "TOTAL_ENERGY": [2.500000014680603, 2.499893613775307, 2.486918034353405, 2.3661745517019233, 2.109049796580753, 1.8605907864421634, 1.6779361707847862], "MOMENTUM_X": [2.9385065068275105e-09, 3.650480077858186e-05, 0.004410398283196667, 0.04456524393863296, 0.12774434914062516, 0.20406765196649168, 0.25650988317231505], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_368": {}, "NODE_512": {"DENSITY": [0.927425083478924, 0.692476549352497, 0.5888504618044103, 0.5361491049098237, 0.5073530800179884, 0.4885241579239747, 0.4745623512830186], "TOTAL_ENERGY": [2.255855683177733, 1.5560988539644753, 1.2973996402198928, 1.1761760399162957, 1.1097677296643715, 1.0685274957614457, 1.0400912285951738], "MOMENTUM_X": [0.0899825032531832, 0.2863591640207882, 0.3493396916904565, 0.37075484252446195, 0.38104646855401647, 0.38636003215180115, 0.38879522032602], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_178": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999943, 1.0000000000088132, 0.9999999914822472, 0.999998160183615], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999805, 2.5000000000308464, 2.4999999701878646, 2.499993560649241], "MOMENTUM_X": [-1.3164548422645733e-27, 1.115733588286436e-22, 7.721580935617804e-19, 6.4253133989888874e-15, -1.0236794737224762e-11, 1.0083202941648579e-08, 2.1726751291720708e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_852": {}, "ELEMENT_246": {}, "ELEMENT_364": {}, "NODE_1023": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000371, 0.12499999947909261], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001039, 0.24999999854145938], "MOMENTUM_X": [2.5810398805260013e-36, 1.103685701079236e-30, 3.0913323274025756e-26, -1.6812586874532353e-22, -3.007831277262104e-18, 5.167275594431951e-14, -6.897308360077271e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_926": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999961, 0.12500000000697203, 0.12499986091383812, 0.12856540896241964], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999892, 0.25000000001952166, 0.24999961055918765, 0.26028194360713336], "MOMENTUM_X": [1.836563016448235e-31, 1.1331078896138155e-25, -5.909647895652877e-22, -4.735990037941134e-16, 7.946169906700382e-12, -1.756681886845633e-07, 0.004054669445256477], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_840": {}, "ELEMENT_1226": {}, "NODE_1018": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001454, 0.12499999985813844], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000407, 0.24999999960278765], "MOMENTUM_X": [-6.536043918953431e-39, -2.839874160715041e-32, 1.0548363388088276e-27, 1.82767169162752e-23, -8.48396447225116e-19, 1.5997609320005487e-14, -2.1804026511505097e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_753": {}, "ELEMENT_1806": {}, "ELEMENT_1369": {}, "ELEMENT_1971": {}, "ELEMENT_1431": {}, "ELEMENT_355": {}, "NODE_413": {"DENSITY": [0.9999999997700816, 0.9999989875254383, 0.9987766798576566, 0.9762030277541505, 0.9010881278223897, 0.8095388891896118, 0.7371842857031832], "TOTAL_ENERGY": [2.4999999991952855, 2.4999964563483945, 2.495721165568451, 2.417558850809382, 2.167389557765218, 1.8830074065204818, 1.6745955923846758], "MOMENTUM_X": [4.198136788532527e-10, 1.875005998900565e-06, 0.0014716651162885901, 0.027442480381022816, 0.1085354446528253, 0.19652885146660806, 0.2566687620855891], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1266": {}, "ELEMENT_1625": {}, "NODE_510": {"DENSITY": [0.9275312510816394, 0.6930148685920304, 0.589746369111835, 0.5364078698768598, 0.5072690957519066, 0.48840439997378443, 0.4737251382016308], "TOTAL_ENERGY": [2.2562146797804465, 1.557619116482721, 1.2998456287706335, 1.176375045087978, 1.1095621094107508, 1.0677272338812898, 1.0387272030343018], "MOMENTUM_X": [0.08998236744655623, 0.2860202992540627, 0.3497136235540453, 0.37081759643801276, 0.381305888741425, 0.38674663692850436, 0.388696583944296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1906": {}, "NODE_1001": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000017, 0.12500000000123473, 0.12499995550366302], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000005, 0.2500000000034572, 0.24999987541028515], "MOMENTUM_X": [-2.582629744999735e-34, -1.077776471147614e-28, -1.7844399049692474e-24, 1.9675041095566435e-20, 1.8663569380553164e-16, 3.97984866640141e-13, -4.094714773091972e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_114": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999898], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999964], "MOMENTUM_X": [7.369794050172208e-42, -2.626397445057007e-34, 1.97150949219029e-31, 1.1012117665057827e-25, 2.8189826821927416e-22, -2.7049817831963018e-18, 1.1197802752572933e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1346": {}, "NODE_993": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000037712, 0.12499999258465933], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999994, 0.25000000000105593, 0.24999997923704745], "MOMENTUM_X": [2.0328721494998792e-37, -1.8297525399075247e-31, -2.2268520321169065e-27, -1.6970318559013344e-22, -2.2476548925791548e-17, 3.7656397418522264e-13, -8.268800154734708e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_305": {"DENSITY": [0.9999999999999999, 0.9999999999992046, 1.0000000015758261, 0.9999983032737004, 0.9997886461494592, 0.9956237923818011, 0.9722461075891725], "TOTAL_ENERGY": [2.5, 2.4999999999972156, 2.5000000055153904, 2.499994061464503, 2.4992603427207922, 2.4847139699894676, 2.4040024652960983], "MOMENTUM_X": [-7.853042131211411e-17, 9.829014466680997e-13, -1.822351872775183e-09, 2.0138724844614907e-06, 0.0002498627895949637, 0.005159360924115491, 0.032258365818752494], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_521": {"DENSITY": [0.8366112501847297, 0.606960064391494, 0.5348752640091454, 0.4965184549193142, 0.47364961536304806, 0.4617490771415815, 0.4525747590128796], "TOTAL_ENERGY": [1.9723876639307407, 1.3341279676857813, 1.1689359850804186, 1.0846936215321565, 1.0399064228129737, 1.0124540095931482, 0.9930962873975995], "MOMENTUM_X": [0.18583025229456945, 0.3395139986532835, 0.37695575881114796, 0.38503040197787064, 0.3881407340228043, 0.39187323082305114, 0.39332519646659464], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_527": {"DENSITY": [0.8342149872844408, 0.60212741537945, 0.5286747312549255, 0.49211556920148425, 0.4727968118360744, 0.4594939904747931, 0.4503219278078076], "TOTAL_ENERGY": [1.9637769672953846, 1.3261671871868024, 1.1559894688427323, 1.07890679054592, 1.0359231561007791, 1.0084279072706461, 0.9895891687105326], "MOMENTUM_X": [0.18283987734336626, 0.3457849028247399, 0.37601193668545274, 0.38445579862434254, 0.3891159564489375, 0.39091670206317014, 0.39205842861899737], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_111": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000000302], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000001057], "MOMENTUM_X": [-6.390213381518146e-40, 1.5827074906965176e-32, 5.142683047028041e-29, -3.5687556513289375e-24, -1.9213427750147636e-20, 1.1302118557560244e-16, -3.847667763840399e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_985": {}, "ELEMENT_956": {}, "NODE_695": {"DENSITY": [0.12500000093157482, 0.12539325470394694, 0.25373087767561137, 0.24690372161894522, 0.29786000506625715, 0.3693305707548125, 0.47353100293208267], "TOTAL_ENERGY": [0.25000000260840954, 0.25110437748235415, 0.8223673830519972, 0.7558657042692397, 0.9223185672892841, 0.9126755142091559, 0.9677227176291466], "MOMENTUM_X": [3.754554241184657e-10, 0.00035355393612103236, 0.23441851594484514, 0.20312226530185767, 0.2857631815460837, 0.3414838400570695, 0.4410593742061375], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_702": {}, "ELEMENT_1318": {}, "NODE_1021": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000099, 0.12499999987073043], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000277, 0.2499999996380452], "MOMENTUM_X": [2.7699187924441945e-37, -8.381107991250312e-32, 8.479364205889528e-27, -1.707902785173777e-23, -1.1196717558884118e-18, 1.7708438841860385e-14, -2.037320311581554e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_412": {}, "ELEMENT_532": {}, "NODE_161": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999869, 1.0000000000119729, 0.9999999972837481], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999954, 2.5000000000419047, 2.499999990493118], "MOMENTUM_X": [1.4884858829277598e-32, -4.5307994116394846e-27, 4.315885341427193e-22, 1.193000097448195e-18, 1.4967800602856525e-14, -1.405788605999082e-11, 3.379125455162199e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_178": {}, "ELEMENT_1078": {}, "ELEMENT_183": {}, "ELEMENT_1077": {}, "ELEMENT_693": {}, "ELEMENT_1979": {}, "ELEMENT_455": {}, "ELEMENT_139": {}, "NODE_124": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999721], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999027], "MOMENTUM_X": [1.5632735018275972e-41, 4.5175639942392996e-33, 4.3516402724421217e-29, -7.594347912500397e-25, -7.853025613923536e-21, 1.2628542580709726e-17, 2.4351423214368074e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_798": {}, "ELEMENT_1020": {}, "ELEMENT_841": {}, "NODE_509": {"DENSITY": [0.9824659491802457, 0.7900287388164049, 0.6452347814087223, 0.5704179912013964, 0.5296150171348252, 0.5046348547563946, 0.48750016825983267], "TOTAL_ENERGY": [2.4391828178145856, 1.8252637080891168, 1.4281547959430236, 1.2465136413619806, 1.1540833218235542, 1.0994855223862992, 1.063651276852822], "MOMENTUM_X": [0.020069136889106925, 0.21248180736006417, 0.31961712056430946, 0.35883969376279845, 0.3752293156456413, 0.3834704863735614, 0.387854952155627], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_910": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000001028, 0.12499999788042473, 0.1250194437368994, 0.18313783193762767], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.25000000000028777, 0.2499999940651893, 0.25005445686741296, 0.470844034851443], "MOMENTUM_X": [2.840512753181869e-26, -8.963302032934549e-22, -4.311120355421133e-18, 1.1346894488891939e-13, -3.220349228793309e-09, 2.553901765398117e-05, 0.09652967952807084], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_31": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000089], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000031], "MOMENTUM_X": [4.273405514378212e-41, 1.9037391159166764e-34, 3.415300063858545e-30, 4.77396963075367e-26, -6.993231646371774e-22, -1.994941656128636e-18, -1.0416336831626888e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1414": {}, "ELEMENT_1294": {}, "ELEMENT_1852": {}, "ELEMENT_86": {}, "ELEMENT_1889": {}, "ELEMENT_1315": {}, "ELEMENT_1819": {}, "NODE_570": {"DENSITY": [0.39493937303591664, 0.3730830776814365, 0.37294266527262815, 0.3769289842798246, 0.37313643497297966, 0.3780160403031193, 0.3747067265551239], "TOTAL_ENERGY": [0.912928485771583, 0.8369955383081925, 0.8346566577863892, 0.840131611955908, 0.8394779796988407, 0.8433008866849082, 0.8426190563928598], "MOMENTUM_X": [0.424890883404681, 0.3941005953939211, 0.3928860162975276, 0.3975363678138821, 0.3929648387146274, 0.3974536532980801, 0.39339619403529424], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_742": {}, "ELEMENT_416": {}, "ELEMENT_258": {}, "ELEMENT_1391": {}, "NODE_129": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999991, 1.0000000000257505], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.5000000000901257], "MOMENTUM_X": [1.5600013465026683e-36, 9.50608283707041e-30, 1.0475629130961974e-25, -5.4730583032086566e-21, 1.71391546494887e-17, -2.025875845022213e-15, -2.936882093878854e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1544": {}, "ELEMENT_441": {}, "ELEMENT_1716": {}, "ELEMENT_1745": {}, "ELEMENT_622": {}, "ELEMENT_1141": {}, "ELEMENT_402": {}, "ELEMENT_1202": {}, "ELEMENT_1653": {}, "ELEMENT_1392": {}, "ELEMENT_493": {}, "ELEMENT_1162": {}, "NODE_108": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999978], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999925], "MOMENTUM_X": [-8.959470524024509e-44, -5.784564005144758e-35, -3.4917803354279965e-31, 2.8096106001704008e-27, 8.899765712680802e-23, -4.1116155003705793e-20, 2.607142576290807e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_105": {}, "ELEMENT_254": {}, "ELEMENT_1809": {}, "NODE_861": {"DENSITY": [0.125, 0.125, 0.1250000000000046, 0.12499999993191187, 0.1250010687969097, 0.16885569690169544, 0.2693049478304379], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000129, 0.24999999980935322, 0.25000299289911676, 0.4095192490977076, 0.8946594857999952], "MOMENTUM_X": [-3.611731662016802e-24, -1.815118134046201e-20, 8.417423789275443e-15, -2.7366604566549225e-10, 3.8079347973237554e-06, 0.07175936080513093, 0.25490336562255994], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1289": {}, "ELEMENT_669": {}, "NODE_32": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000004], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000013], "MOMENTUM_X": [-2.11009033223025e-43, -1.128397891915866e-34, -4.840490218251744e-31, -1.0614383243489366e-26, -3.216855795297645e-24, -5.0342051839306966e-20, -5.321666762196468e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1076": {}, "ELEMENT_1570": {}, "NODE_548": {"DENSITY": [0.5428106077592415, 0.45091804679860853, 0.42690090433548444, 0.42151243287475226, 0.4179553583863405, 0.41477847116815975, 0.41447999835381366], "TOTAL_ENERGY": [1.190041910960613, 0.9837921397152399, 0.9436721988149172, 0.9304666246793453, 0.9236166856232895, 0.9190236401485624, 0.916486117769466], "MOMENTUM_X": [0.404377527903385, 0.4055551085682541, 0.39663366209511586, 0.39768899976297184, 0.3974184730916023, 0.396424446336236, 0.39747720001889825], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_745": {}, "ELEMENT_1886": {}, "NODE_1093": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999997], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999992], "MOMENTUM_X": [0.0, -5.9801697754377625e-40, 5.058208593228178e-36, 2.8076986095883497e-31, 5.60065637233979e-27, -7.638258149943631e-22, -2.7304584511021195e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_805": {"DENSITY": [0.125, 0.12499999999997159, 0.12500000008432982, 0.12500106256121066, 0.19150723430190786, 0.25735953274219087, 0.28247161734791726], "TOTAL_ENERGY": [0.25, 0.24999999999992042, 0.2500000002361235, 0.25000297500152424, 0.5135686553813084, 0.83039368586214, 0.9646997673448933], "MOMENTUM_X": [-3.7045120497295716e-19, -2.426298542316961e-14, -2.791511572470819e-10, 5.5310164742317485e-06, 0.11784206775354057, 0.23068782847717867, 0.28381437702890977], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_169": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999969, 1.0000000000071934, 0.9999999850120163, 0.9999973208435722], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999989, 2.500000000025176, 2.499999947542057, 2.499990622966791], "MOMENTUM_X": [8.774511598533109e-27, 4.559794619385436e-22, -4.681757555722354e-19, 3.447086570582485e-15, -8.632053050568588e-12, 1.810089931515e-08, 3.1963666299818463e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_314": {}, "ELEMENT_330": {}, "ELEMENT_1071": {}, "ELEMENT_471": {}, "NODE_289": {"DENSITY": [0.9999999999999999, 0.9999999999998332, 1.0000000003630691, 0.9999993521367149, 0.9999113292700871, 0.9978184815334803, 0.9830922731265064], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999999994165, 2.5000000012707426, 2.4999977324795015, 2.4996896674019453, 2.4923726277399356, 2.441258712157865], "MOMENTUM_X": [-1.1715715736346315e-16, 2.459719271105947e-13, -4.3329743382958213e-10, 7.616400181513895e-07, 0.00010473569026562663, 0.0025768085444988955, 0.01978986436165405], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1083": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, 2.985542515189213e-38, -1.017238563400147e-34, -5.763000003263932e-30, -3.793103997914267e-25, 5.872020635009049e-21, -1.3254259485038827e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_513": {}, "ELEMENT_1691": {}, "ELEMENT_1594": {}, "ELEMENT_35": {}, "ELEMENT_1092": {}, "NODE_43": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000001301], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000004, 2.500000000000456], "MOMENTUM_X": [-3.3803685431063024e-38, -9.834448305315061e-32, -1.276113478081194e-27, 3.7937399463216005e-24, 3.066644919344731e-20, -1.0031558019105847e-16, -1.5174912738762022e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_171": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000029658, 0.999999986126867, 0.9999977121867464], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.50000000001038, 2.499999951444035, 2.4999919926640444], "MOMENTUM_X": [4.73057980187655e-27, 7.658846786027729e-22, -7.103807922301583e-19, 2.458517441167098e-16, -3.823356111918302e-12, 1.6439444892103036e-08, 2.7187511156543862e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_756": {"DENSITY": [0.12499999999983132, 0.12499998144021005, 0.125195998198263, 0.2227553817907929, 0.2608972683153015, 0.27448729099808594, 0.292424689300068], "TOTAL_ENERGY": [0.24999999999952777, 0.24999994803259365, 0.25054965792504397, 0.658555062547721, 0.842307146456901, 0.8966535298301409, 0.8842002612452501], "MOMENTUM_X": [2.1498498250676387e-13, -1.757601432195174e-08, 0.0001862995264155024, 0.1697707268817889, 0.23529725208959806, 0.25982037409638425, 0.2714254352135714], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1156": {}, "ELEMENT_1930": {}, "NODE_431": {"DENSITY": [1.0000011055813396, 0.9976479389943181, 0.9606842056387115, 0.8665542906115598, 0.771454696941973, 0.7014888141950302, 0.6519280237761872], "TOTAL_ENERGY": [2.500003869534708, 2.4917787655065236, 2.3648223493038634, 2.0585959599532186, 1.7736111183321095, 1.5796798806232124, 1.4503254837359332], "MOMENTUM_X": [1.6006632321625038e-07, 0.0027791418459863627, 0.04537692359302996, 0.14442140919542518, 0.23040569676210645, 0.2837139790072257, 0.31596241155635824], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1760": {}, "ELEMENT_1694": {}, "NODE_616": {"DENSITY": [0.19873097878206275, 0.3467194791543444, 0.4517355677192323, 0.42894833615288525, 0.43179703041658307, 0.43455097894411354, 0.42883942647626866], "TOTAL_ENERGY": [0.545623811039747, 0.8910617493065731, 0.9543960322924565, 0.9449346874853136, 0.9473801047162719, 0.9493567653725782, 0.9466967267479227], "MOMENTUM_X": [0.12785626132144362, 0.32030012320869305, 0.4225370765019405, 0.4013952066398788, 0.4045580262520132, 0.4075995684868675, 0.4024923629281659], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1689": {}, "ELEMENT_551": {}, "ELEMENT_712": {}, "NODE_621": {"DENSITY": [0.1428637843793233, 0.30617735016595055, 0.39094287864823685, 0.46504737038288674, 0.4238794298467838, 0.41280759080098706, 0.4372471934695942], "TOTAL_ENERGY": [0.3073435068336416, 0.958331732638212, 0.9169422430134685, 0.9618050969936464, 0.9396394720291326, 0.9355811680020165, 0.9461309957313061], "MOMENTUM_X": [0.025721088913255634, 0.3015603624340859, 0.3595963242904569, 0.43198420582108277, 0.39250404911070824, 0.38239329734189975, 0.4050109089991284], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_700": {}, "NODE_84": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000646, 0.9999999999697499], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000226, 2.499999999894125], "MOMENTUM_X": [1.3329162034921563e-35, 3.614639407287666e-29, 3.690976030165178e-25, -1.9715315414384633e-22, 1.9461851454064085e-17, -7.568103246204717e-14, 3.6016637236677776e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1283": {}, "ELEMENT_1300": {}, "NODE_991": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999995873, 0.12500000081399654], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999998844, 0.2500000022791903], "MOMENTUM_X": [-3.314071465462479e-39, -9.4310415888558e-33, -1.2313983826376272e-27, 5.101280730067828e-23, 3.177522482690852e-19, -2.7858670277637277e-14, 1.2366198962682593e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_851": {"DENSITY": [0.125, 0.12499999999999999, 0.12500000000055156, 0.12499999222977815, 0.12511423117560164, 0.21522108295397602, 0.2551191465373988], "TOTAL_ENERGY": [0.25, 0.24999999999999997, 0.2500000000015444, 0.24999997824338013, 0.2503201607383182, 0.6222476660588633, 0.8140827891196207], "MOMENTUM_X": [-2.2485811616311e-23, -1.4455352602952872e-17, 5.355813957199397e-13, -8.386098350095692e-09, 0.00011061689225193069, 0.15537851532176572, 0.22320442369605267], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1071": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000005], "MOMENTUM_X": [-1.7140062060288442e-47, 8.006602560569594e-38, -1.2655251931355517e-34, -4.52103461181962e-29, 5.267400207670318e-25, 8.960244436374719e-20, -6.77370844702462e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1177": {}, "NODE_804": {"DENSITY": [0.125, 0.12499999999997771, 0.12500000038682527, 0.12499395748346401, 0.176618699763577, 0.27249402595725114, 0.28292121059571934], "TOTAL_ENERGY": [0.25, 0.24999999999993758, 0.2500000010831107, 0.2499830810038331, 0.4440133547034004, 0.9094190754029874, 0.9624657535339551], "MOMENTUM_X": [4.0468397139801824e-22, -2.342229048598185e-14, 2.4189511016572734e-10, -3.4142841824041233e-06, 0.0890274080947828, 0.25986575285473174, 0.2816942691096605], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_118": {}, "ELEMENT_1660": {}, "ELEMENT_200": {}, "ELEMENT_1648": {}, "NODE_102": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999], "MOMENTUM_X": [-3.613697606431954e-45, 1.3232805504172566e-36, 1.7073024799573855e-32, -1.6037255599064823e-27, -7.575227844365865e-24, 4.743014553275356e-20, 4.2662796441274587e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_5": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 2.6847066907039158e-36, -2.9287563771215105e-33, 2.3749067379466515e-29, -5.527138336013864e-25, -2.3139263104589446e-21, 3.492604707607131e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_132": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000002163, 0.9999999998731254, 0.9999999134386766], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000007567, 2.499999999555938, 2.499999697035383], "MOMENTUM_X": [2.1421997340501406e-29, -3.9485776107498405e-24, -3.1699221498061913e-21, 1.0083267969826397e-16, -2.3930981820747803e-13, 1.4223951390612072e-10, 9.943051809448901e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1073": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000046], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001293], "MOMENTUM_X": [-5.619916811836012e-46, -2.8197795939012533e-37, -6.2821154893586e-33, -2.2624437318941508e-29, 1.2534218794727233e-23, 1.802569938621232e-19, 2.849939378769252e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_794": {"DENSITY": [0.125, 0.12500000000021536, 0.12499999201396653, 0.12518219815711012, 0.2458063783730785, 0.236227672719316, 0.27859908287873575], "TOTAL_ENERGY": [0.25, 0.25000000000060313, 0.24999997763910814, 0.25051090690976224, 0.7853785393881232, 0.7142917882786914, 0.9385007253638376], "MOMENTUM_X": [-5.437055202547097e-18, 1.8666426695505778e-13, -9.009521222151259e-09, 0.00016315991892469124, 0.2211478067467989, 0.18487138111014717, 0.27395855430802485], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_928": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000374872, 0.1249998790491246, 0.1300329924813612], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999994, 0.2500000000104964, 0.249999661337572, 0.26465187678240437], "MOMENTUM_X": [-5.387966402625294e-30, 4.751280858187549e-25, 3.231625309809565e-20, -5.485354823602881e-16, 7.979982420667635e-12, -2.2124961927091342e-07, 0.005704206728770804], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1711": {}, "NODE_699": {"DENSITY": [0.12499999506783406, 0.12582417526362416, 0.25236569823305266, 0.2592154046881826, 0.30021617157166186, 0.37357007231937595, 0.45591318327218067], "TOTAL_ENERGY": [0.24999998618993607, 0.25232156832578617, 0.8081774506374216, 0.8134753254104676, 0.90333506828454, 0.9186685893559016, 0.9557414771858302], "MOMENTUM_X": [-4.8197616826844426e-09, 0.0007701227740200144, 0.226178237454961, 0.22643188902300493, 0.2820493740759516, 0.34599337850079154, 0.4228413701782737], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1183": {}, "ELEMENT_882": {}, "NODE_357": {"DENSITY": [1.0000000000026856, 1.0000000084325098, 0.9999785583713413, 0.9984480319062261, 0.9817392215707874, 0.929868418763158, 0.8586344808783183], "TOTAL_ENERGY": [2.5000000000093996, 2.5000000295137847, 2.499924955336087, 2.4945723986891437, 2.4366064227085373, 2.2616802879535456, 2.0334872600724934], "MOMENTUM_X": [3.563751564153e-12, -1.0614989453280946e-08, 2.524239473896292e-05, 0.0018311961210337982, 0.02133281891936678, 0.07928415774850656, 0.15233194599321137], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_767": {"DENSITY": [0.12499999999998858, 0.12499999807744644, 0.12501426033401802, 0.17486979829759217, 0.27557732495482684, 0.27251409865809023, 0.27846293320815857], "TOTAL_ENERGY": [0.24999999999996805, 0.24999999461685013, 0.25003993684487563, 0.4341576451334951, 0.9266839331404642, 0.8989042785422843, 0.8725322031394968], "MOMENTUM_X": [9.159174624664297e-15, -2.910626772422119e-09, 1.9309615871056607e-05, 0.08143497463567023, 0.2680626694135558, 0.2587952382123324, 0.25709223373582557], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1064": {}, "NODE_949": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000001195, 0.12499999790336883, 0.12504708399743272], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999997, 0.2500000000003346, 0.24999999412943294, 0.25013190080236586], "MOMENTUM_X": [7.23105018591097e-33, -3.1286378905598145e-27, -3.22788848183921e-23, -8.073508667473287e-18, 1.3598373472700127e-13, -2.941243814133588e-09, 5.0061253552860125e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_929": {}, "NODE_1078": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000153], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000004285], "MOMENTUM_X": [-3.642233667643188e-43, -3.404081894936614e-35, -1.4867803928992526e-31, 7.520990587974879e-27, 5.558906361855486e-23, -4.406507930282115e-19, 8.835655394711123e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_643": {"DENSITY": [0.12543083509831787, 0.2753249823759656, 0.29371818798089144, 0.40449383469479333, 0.4636228806443357, 0.42760885608064564, 0.4107558251413643], "TOTAL_ENERGY": [0.2512106434166036, 0.9167028842299825, 0.8405715542838057, 0.9432866542341176, 0.9556087590157002, 0.9435402962513486, 0.9348464400390963], "MOMENTUM_X": [0.0003680146695218593, 0.26740047149879564, 0.2608024282575204, 0.3775183717390674, 0.4286610867435412, 0.3963097448888, 0.3802912595322343], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_84": {}, "ELEMENT_1750": {}, "NODE_591": {"DENSITY": [0.2860821666756574, 0.4363552767481307, 0.438070953802846, 0.41169688552167266, 0.42936399785676677, 0.41869978769123656, 0.4224536461408657], "TOTAL_ENERGY": [0.87397621602223, 0.9245837285502599, 0.9437008023058335, 0.9308196935654893, 0.9366360535926209, 0.9310302423282631, 0.9319299800406694], "MOMENTUM_X": [0.2689057337720323, 0.402017688552142, 0.4100571980669049, 0.3851024023851515, 0.4020959865341058, 0.3929298912616534, 0.39719612515583763], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_759": {}, "ELEMENT_1003": {}, "NODE_341": {"DENSITY": [0.9999999999999907, 1.0000000000801124, 0.9999998640756375, 0.9998985520241582, 0.9964574850589535, 0.971889875411878, 0.9140977605685251], "TOTAL_ENERGY": [2.499999999999967, 2.5000000002803935, 2.4999995242647968, 2.4996449520333934, 2.487621786986788, 2.402791856731135, 2.209865782187242], "MOMENTUM_X": [-1.173463212134728e-14, -1.0344494891660939e-10, 1.6856490577062965e-07, 0.0001202997454408722, 0.004183051637252175, 0.03270282610764942, 0.09636046706859094], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_156": {}, "ELEMENT_1999": {}, "NODE_629": {"DENSITY": [0.12726250733872024, 0.2984469511728573, 0.32604566625956094, 0.46093051825941855, 0.4555457917018079, 0.3932472668355559, 0.4397889927330556], "TOTAL_ENERGY": [0.25645765659370473, 1.0237500911837603, 0.8610264188586628, 0.9655381405704406, 0.9565588696192929, 0.9290478696167542, 0.9522475786091065], "MOMENTUM_X": [0.002384767213354739, 0.31256395042027724, 0.29277080951863843, 0.4302033719548931, 0.42333280279293617, 0.3654895125484308, 0.4097215292336972], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_599": {}, "ELEMENT_340": {}, "ELEMENT_1548": {}, "NODE_296": {"DENSITY": [1.0000000000000016, 0.9999999999990982, 1.0000000016966504, 0.9999966986455578, 0.9996829532709068, 0.9943803644122293, 0.9683609708587181], "TOTAL_ENERGY": [2.5000000000000058, 2.499999999996844, 2.500000005938277, 2.499988445285214, 2.498890521496325, 2.4803819086624186, 2.3907442976063855], "MOMENTUM_X": [1.7131654309965731e-15, 1.5890217361540025e-12, -1.9384376561941975e-09, 3.979664560763661e-06, 0.00037605628998606104, 0.006601009371650979, 0.03650157755535752], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_388": {}, "ELEMENT_803": {}, "ELEMENT_727": {}, "NODE_703": {"DENSITY": [0.124999995778419, 0.12625565586807744, 0.25363477823721636, 0.2643042066673182, 0.30010369355922184, 0.3807517166592341, 0.4482692849153269], "TOTAL_ENERGY": [0.24999998817957414, 0.2535507894545119, 0.811219079246539, 0.8425335248851723, 0.8877800179068246, 0.921858766385635, 0.9489679000169483], "MOMENTUM_X": [-5.779890863370121e-09, 0.0012492439564457552, 0.22518017760829784, 0.23702804761836507, 0.277752706192967, 0.3523839278404259, 0.4143861437576243], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1441": {}, "ELEMENT_687": {}, "NODE_672": {"DENSITY": [0.12499997368231357, 0.13659012540952853, 0.30503265470475227, 0.2693749927353783, 0.3414458937974299, 0.4558419735500272, 0.47644367868970217], "TOTAL_ENERGY": [0.2499999263105332, 0.28559530348542883, 1.0865484382126864, 0.8273635069960468, 0.903139477570538, 0.9518741351925526, 0.9617777047602308], "MOMENTUM_X": [-5.692475537898464e-08, 0.01637033905216759, 0.3290169207871357, 0.23685322758751312, 0.3144814242195308, 0.4199918041020105, 0.4393064108501698], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1168": {}, "ELEMENT_974": {}, "ELEMENT_1538": {}, "ELEMENT_1179": {}, "ELEMENT_1132": {}, "ELEMENT_973": {}, "NODE_824": {"DENSITY": [0.125, 0.125000000000024, 0.12499999961454429, 0.1249999686591139, 0.16069150290025222, 0.27296752451640577, 0.2709746081498557], "TOTAL_ENERGY": [0.25, 0.2500000000000672, 0.24999999892072403, 0.24999991251952614, 0.3746040289907118, 0.9125560887449504, 0.8998106806816776], "MOMENTUM_X": [-9.937277637024392e-18, 6.658940176551029e-14, -8.414843301833544e-10, 2.936622576684969e-06, 0.05690754694609297, 0.26142367929848864, 0.2570199113156081], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1942": {}, "NODE_845": {"DENSITY": [0.125, 0.12500000000000056, 0.12499999999682139, 0.12499994666883733, 0.12615015025510848, 0.2574285164928981, 0.2577138705302188], "TOTAL_ENERGY": [0.25, 0.2500000000000015, 0.2499999999910998, 0.24999985067278507, 0.2532491148297929, 0.8358647442626376, 0.828038842996919], "MOMENTUM_X": [3.9050690871650494e-20, -3.6902871063881713e-16, -1.2104693500950604e-12, -6.425169403534397e-08, 0.0011066971613403066, 0.23529072387539163, 0.22908584181139746], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_485": {"DENSITY": [0.9916280002342743, 0.8504205817658529, 0.7132233366315763, 0.6301269068493874, 0.5800906298081508, 0.5478238491836438, 0.5255577608100224], "TOTAL_ENERGY": [2.470841197901451, 2.009413862408381, 1.61149435978315, 1.3956006426867371, 1.2748361992312953, 1.19952356583378, 1.1489169328674187], "MOMENTUM_X": [0.009405422187192817, 0.1589285519929582, 0.2733498401316736, 0.32712270632149615, 0.3529237206751835, 0.366942047708274, 0.3755222032912202], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1189": {}, "ELEMENT_855": {}, "ELEMENT_966": {}, "ELEMENT_1273": {}, "NODE_245": {"DENSITY": [1.0, 1.0, 0.9999999999999908, 1.0000000000224467, 0.9999999932238313, 0.9999949692497043, 0.9997325512876659], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999685, 2.5000000000785643, 2.49999997628341, 2.4999823924237576, 2.49906405202004], "MOMENTUM_X": [-3.6580640365753003e-23, 5.665167233068645e-19, 1.104446286782865e-14, -2.694084193033148e-11, 8.635910825387298e-09, 5.996165094600957e-06, 0.0003169901526202638], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_903": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999998762, 0.12500000025395677, 0.12499526944783701, 0.1693356332498195], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999996533, 0.250000000711079, 0.24998675458340094, 0.41233061603967247], "MOMENTUM_X": [-3.5270975151189095e-29, -4.100496898778933e-24, 6.742544276306479e-20, -1.2997507223439578e-14, 1.938213095449951e-10, -3.3184914581312077e-06, 0.07550498864119776], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_640": {"DENSITY": [0.12517470386622945, 0.2783954519931935, 0.28072839056093274, 0.40937294133601226, 0.47876950849269434, 0.4154470563303137, 0.4070764363388035], "TOTAL_ENERGY": [0.2504899449693495, 0.9434128689517166, 0.8043305286976066, 0.9540870479461382, 0.9594278747593277, 0.9429097964548528, 0.9372218671851297], "MOMENTUM_X": [0.0001462835844254023, 0.27910337533329244, 0.24182787728095675, 0.385283680012395, 0.4426073667698522, 0.38721733933996305, 0.3790067442297865], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_745": {"DENSITY": [0.12500000000101258, 0.1249999236602752, 0.1266690395535799, 0.2661057683946353, 0.2569720946624454, 0.27657305417256695, 0.31399792139870414], "TOTAL_ENERGY": [0.2500000000028352, 0.24999978624884908, 0.25473175922061564, 0.8820829442735196, 0.8169433183034632, 0.8808069560698791, 0.8946279671583948], "MOMENTUM_X": [8.691332463403981e-15, -1.0646574502571876e-07, 0.0016533735000484936, 0.2530477941362633, 0.22586881023940442, 0.2575944189875302, 0.29169210504617105], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1434": {}, "ELEMENT_1546": {}, "ELEMENT_1117": {}, "ELEMENT_823": {}, "ELEMENT_1748": {}, "ELEMENT_875": {}, "NODE_539": {"DENSITY": [0.5729661516747488, 0.4827111384476814, 0.4531253149743124, 0.42900664893843016, 0.43601137663099004, 0.4233301942184766, 0.41995720883996124], "TOTAL_ENERGY": [1.238539372841019, 1.0726031040022803, 0.9855084332770901, 0.9604389445695175, 0.9536820045582499, 0.937967539083465, 0.9322102890145613], "MOMENTUM_X": [0.3931411753422789, 0.41033619275331773, 0.39459104351754637, 0.38454652891699603, 0.3989418863075611, 0.39030191192615143, 0.390925689177482], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_318": {"DENSITY": [0.9999999999999392, 1.0000000000519738, 0.9999999180173427, 0.9999429585470635, 0.9977571611863797, 0.979868093856752, 0.9319292336420297], "TOTAL_ENERGY": [2.4999999999997873, 2.500000000181909, 2.4999997130607285, 2.4998003616614692, 2.4921586257887802, 2.4301547546425786, 2.268426571870631], "MOMENTUM_X": [-6.831979052063735e-14, -6.792861783742866e-11, 1.0286508380317067e-07, 6.8116715387833e-05, 0.002645067363945394, 0.02339162649503765, 0.07671253005200589], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1360": {}, "ELEMENT_853": {}, "NODE_255": {"DENSITY": [1.0, 1.0000000000000004, 1.0000000000015274, 0.9999999981251677, 0.9999980980473343, 0.9998672695186085, 0.9975806119509751], "TOTAL_ENERGY": [2.5, 2.5000000000000013, 2.500000000005346, 2.4999999934380868, 2.499993343173359, 2.499535475349085, 2.4915417029728353], "MOMENTUM_X": [1.3964668446859967e-19, 8.566659119901446e-17, -1.7915050904412722e-12, 2.181947969897275e-09, 2.240564519484124e-06, 0.000156827057132487, 0.0028574344692709735], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_961": {}, "NODE_820": {"DENSITY": [0.125, 0.1250000000000262, 0.12499999960110385, 0.1250025366003977, 0.1513667305054651, 0.286987636956347, 0.2643957288759243], "TOTAL_ENERGY": [0.25, 0.25000000000007344, 0.24999999888309085, 0.2500071028162465, 0.33831033094951707, 0.9941785193372557, 0.8623907963602809], "MOMENTUM_X": [-6.614768724984713e-19, 3.814189385096064e-14, -6.934728688905863e-10, 3.7676740046366635e-06, 0.039720830504610484, 0.29396216943279013, 0.24311117419646383], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1188": {}, "ELEMENT_1007": {}, "ELEMENT_1553": {}, "NODE_386": {"DENSITY": [1.0000000012839807, 0.9999957167546092, 0.9988775017541157, 0.9807629713561045, 0.9192716603485868, 0.8380624186108682, 0.7682695103449004], "TOTAL_ENERGY": [2.5000000044939323, 2.49998500869762, 2.496073683770361, 2.4332597067994195, 2.226956536412966, 1.9703519048056344, 1.7642489420399432], "MOMENTUM_X": [1.6256540256688505e-09, 5.033552428843384e-06, 0.0013342341727289268, 0.022499134932692167, 0.09060456936305353, 0.17177857590324372, 0.23304131292490193], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_57": {}, "ELEMENT_1781": {}, "ELEMENT_733": {}, "ELEMENT_1443": {}, "ELEMENT_1255": {}, "ELEMENT_93": {}, "ELEMENT_688": {}, "ELEMENT_1504": {}, "ELEMENT_88": {}, "ELEMENT_572": {}, "NODE_484": {"DENSITY": [0.988078730921128, 0.8397527644552015, 0.7105358154359573, 0.6336801186955736, 0.5854564788423827, 0.55385444440351, 0.5322432432817403], "TOTAL_ENERGY": [2.4585472612250414, 1.9786698036556438, 1.6079675027447196, 1.4098565268281, 1.2934525145367568, 1.2188516920399466, 1.1674528439239376], "MOMENTUM_X": [0.012597851135606832, 0.17382795779774665, 0.27781924671528735, 0.32711400284332504, 0.35041784588281594, 0.3636544721861102, 0.3723987077607904], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_192": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999801, 1.0000000000318479, 0.9999999699043005, 0.999994799514103], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999303, 2.500000000111468, 2.4999998946650543, 2.4999817983506682], "MOMENTUM_X": [5.2877646045789425e-27, 6.259077281627201e-22, -3.505071254022901e-18, 2.240559272429143e-14, -3.664336290256234e-11, 3.579528071386819e-08, 6.152785370597333e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_447": {"DENSITY": [0.9999988093148754, 0.9926268135795837, 0.9302699197780798, 0.8215841713380265, 0.7301214665658394, 0.6671058489039414, 0.6233798490475698], "TOTAL_ENERGY": [2.4999958326293292, 2.474293095973829, 2.26327678362728, 1.9207415758918034, 1.6573271021228224, 1.489144906064254, 1.3787535504921498], "MOMENTUM_X": [1.5668506580313442e-06, 0.008652842031819343, 0.078693761792628, 0.18686341494110595, 0.2630192240224743, 0.3066951628712626, 0.33245130056062594], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1696": {}, "NODE_647": {"DENSITY": [0.12542908572613976, 0.2715416537013199, 0.29947950273742857, 0.403956629740116, 0.45787850075314623, 0.42193051096158235, 0.4219627047043436], "TOTAL_ENERGY": [0.2512059642863786, 0.8972328055496575, 0.8697312989462169, 0.9356847607164722, 0.9557701727568124, 0.9388763632387268, 0.939789372116821], "MOMENTUM_X": [0.00037007922358526374, 0.25924180291567356, 0.273222867156799, 0.37566982184122977, 0.42484636987366714, 0.3911301857176035, 0.39147813964766504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1589": {}, "ELEMENT_257": {}, "ELEMENT_567": {}, "ELEMENT_1692": {}, "NODE_446": {"DENSITY": [0.9999988037130466, 0.9926998452521192, 0.9306657644707989, 0.8219201903427193, 0.7301525107460328, 0.6669350915118168, 0.6230976574792592], "TOTAL_ENERGY": [2.4999958130203495, 2.474547302028856, 2.2645915144782673, 1.9217859483063866, 1.6574742902801585, 1.4887844254145688, 1.3781631875516736], "MOMENTUM_X": [1.1638817705910942e-06, 0.008589332458400241, 0.07834997585012288, 0.18675295063689076, 0.2632481051729652, 0.3070598572595047, 0.33282888821327744], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_589": {}, "NODE_1019": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000135, 0.1249999998594893], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000377, 0.24999999960657], "MOMENTUM_X": [1.5016358801224577e-38, -5.903201256542369e-32, 2.8883076578223847e-27, 1.5904618045913862e-24, -6.587618833846618e-19, 1.7792841232167475e-14, -2.2569968192097855e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1286": {}, "ELEMENT_729": {}, "ELEMENT_321": {}, "NODE_742": {"DENSITY": [0.12500000000018166, 0.12499993954939713, 0.12668422006059418, 0.2681985209145484, 0.2527067834142024, 0.279360822722391, 0.3141581625425326], "TOTAL_ENERGY": [0.25000000000050865, 0.2499998307383631, 0.25477378403810574, 0.8936135205394575, 0.7926046209626276, 0.8949978236792785, 0.8943974516170912], "MOMENTUM_X": [2.881499174870505e-13, -9.366750213228864e-08, 0.0016532818326736138, 0.25756678502486935, 0.21611461911997337, 0.2629958577063663, 0.29144753755073105], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_320": {"DENSITY": [1.0, 0.999999999996406, 1.0000000053339018, 0.9999948387012851, 0.9995073532158079, 0.9919300959220464, 0.9584827756801836], "TOTAL_ENERGY": [2.5000000000000004, 2.499999999987421, 2.5000000186686555, 2.4999819355126767, 2.4982761638854676, 2.4718570538627724, 2.357202124462732], "MOMENTUM_X": [1.747319419506953e-16, 4.240226182685673e-12, -6.049362850440751e-09, 6.160719077938754e-06, 0.0005833679942692589, 0.009504433847785595, 0.04791260545319667], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1419": {}, "ELEMENT_55": {}, "ELEMENT_1104": {}, "ELEMENT_1597": {}, "ELEMENT_1823": {}, "ELEMENT_215": {}, "ELEMENT_1297": {}, "NODE_128": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999943, 1.0000000000036173], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999796, 2.5000000000126605], "MOMENTUM_X": [2.0926242221381263e-37, -1.1006102537409388e-30, 3.046591996176274e-27, 3.6001688011383577e-22, 7.470150142718762e-19, 6.804237940783744e-15, -4.331085565649569e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_440": {}, "ELEMENT_1865": {}, "ELEMENT_1112": {}, "ELEMENT_1131": {}, "NODE_563": {"DENSITY": [0.4124557269446529, 0.385267361556657, 0.37222848298878286, 0.39817638437346814, 0.3745059364307022, 0.392235011058122, 0.3869627880602875], "TOTAL_ENERGY": [0.9477177426375197, 0.8662348250414367, 0.8449142067732675, 0.8697962482327524, 0.855724549041551, 0.8660655206377212, 0.8655665066813266], "MOMENTUM_X": [0.4367758986364753, 0.40159965956940835, 0.38412313895750505, 0.41333246015037767, 0.38737475343793704, 0.4042745595313605, 0.39811671290878], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_713": {}, "NODE_705": {"DENSITY": [0.12500000003524706, 0.12499272756818058, 0.1857172032818071, 0.2735795665236387, 0.28519517017999674, 0.31053092092562734, 0.41502386254295087], "TOTAL_ENERGY": [0.2500000000986917, 0.24997963665263823, 0.4833490947018737, 0.907312848609817, 0.9345177903617502, 0.8747835802988567, 0.9388521708311446], "MOMENTUM_X": [3.559834786008385e-11, -1.8048061826580305e-06, 0.10483408054297011, 0.2600004883712736, 0.2760726320774739, 0.28195938727379116, 0.3836610935579278], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1033": {}, "ELEMENT_1841": {}, "ELEMENT_997": {}, "ELEMENT_557": {}, "ELEMENT_1675": {}, "ELEMENT_1632": {}, "ELEMENT_1285": {}, "ELEMENT_1190": {}, "ELEMENT_195": {}, "NODE_586": {"DENSITY": [0.2875892718761771, 0.4370258708298182, 0.4336826473252905, 0.4093692793055603, 0.4314961595048584, 0.4169881860519895, 0.4207360848503001], "TOTAL_ENERGY": [0.882768266768393, 0.9177640228971795, 0.9446889050463614, 0.9282591370329147, 0.9343845497937608, 0.928915141487863, 0.9292545459675453], "MOMENTUM_X": [0.2716847470901393, 0.4000458487370942, 0.40661067322567185, 0.38264342921151173, 0.4039467505718069, 0.3912475351658125, 0.39539029804982195], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_684": {"DENSITY": [0.12499999302510245, 0.1287156750334505, 0.2899729197992922, 0.2553272203741714, 0.31889372967978724, 0.42230025644556085, 0.48377698433409655], "TOTAL_ENERGY": [0.2499999804702888, 0.2607194327264605, 1.014486229600817, 0.7815025108182269, 0.9045505837257692, 0.9382018469505098, 0.9710961695010161], "MOMENTUM_X": [-8.060187347553996e-09, 0.004266480928071585, 0.3045368238770664, 0.21613367335827727, 0.29850979933827126, 0.3913083479663239, 0.4503035519958934], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_540": {"DENSITY": [0.5344901663323309, 0.455599769596552, 0.4285515857243219, 0.4174197167736304, 0.42077209059895726, 0.41131334439692246, 0.41305249469502775], "TOTAL_ENERGY": [1.1574863348770794, 1.0046485920421766, 0.9433927736854222, 0.9269607739146414, 0.9247603164482209, 0.9156735928185467, 0.9144944772013879], "MOMENTUM_X": [0.373841368300874, 0.411660313494468, 0.3989953435608319, 0.39627093553330356, 0.4038247509986921, 0.3960531542748652, 0.39906484435700174], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_307": {"DENSITY": [1.00000000000001, 0.9999999999967707, 0.9999999972597478, 0.9999854612903522, 0.9991167865360824, 0.9889031810980927, 0.9521248834902171], "TOTAL_ENERGY": [2.500000000000035, 2.4999999999886966, 2.4999999904091164, 2.4999491149821136, 2.4969101323968745, 2.4613531401085074, 2.335777576967609], "MOMENTUM_X": [1.1648229244048011e-14, -3.9856597812306354e-12, 4.18862192846325e-09, 1.7438260039973832e-05, 0.0010447073783704823, 0.012976368492468101, 0.05465975994903059], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_873": {}, "NODE_624": {"DENSITY": [0.14291960499438786, 0.30543644002746473, 0.39354122653128876, 0.46171688285238077, 0.42342997142830996, 0.42055144392250454, 0.4324483103448773], "TOTAL_ENERGY": [0.30758253140285824, 0.9557788728224281, 0.9245878122011235, 0.9545975043420168, 0.9425058663502457, 0.9391877415756519, 0.9446567854426018], "MOMENTUM_X": [0.025936484844235407, 0.30071947003599175, 0.36457663137103635, 0.4277901377511655, 0.3934754527613435, 0.3901346731328527, 0.4012592798400301], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_812": {"DENSITY": [0.125, 0.12500000000035558, 0.12499999557798776, 0.1250385995406419, 0.19525556254736093, 0.26537814587052655, 0.2714822173772252], "TOTAL_ENERGY": [0.25000000000000006, 0.25000000000099565, 0.24999998761836623, 0.25010812974971797, 0.5258451590168143, 0.870557935219143, 0.9010963066831901], "MOMENTUM_X": [-8.590592710419737e-18, 2.9455334374030375e-13, -5.592704114510132e-09, 4.599260133306235e-05, 0.11875906685442948, 0.245706096460627, 0.2582781221639159], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_60": {}, "NODE_1057": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999796], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999999943], "MOMENTUM_X": [-3.512018243236166e-48, 4.1010770092993293e-38, 2.330216971743909e-35, 3.995672460862241e-30, -1.0065894618174204e-24, -7.981822236562172e-21, -2.96873400873829e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_971": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999914, 0.1250000000197909, 0.12499962020514344], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999759, 0.2500000000554145, 0.24999893657589203], "MOMENTUM_X": [-4.785204966261831e-35, 2.6685592225985707e-29, 6.711004354525279e-26, 3.136210282869416e-20, -1.4613593011220437e-15, 2.323676093326283e-11, -4.6538382717692953e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_750": {}, "NODE_342": {"DENSITY": [1.0000000000015186, 1.0000000030869631, 0.9999959031305076, 0.9994526753030927, 0.9903330590555842, 0.9513095678016066, 0.8859351824221363], "TOTAL_ENERGY": [2.5000000000053144, 2.5000000108043703, 2.49998566099958, 2.498084929424223, 2.4663162871877247, 2.333083521194331, 2.119308620251025], "MOMENTUM_X": [1.760834453767258e-12, -3.775850292970548e-09, 4.886591162105535e-06, 0.0006507278288320843, 0.011382451464739146, 0.05582177321215391, 0.12518737637285432], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 2.0636401314713364e-35, 2.8368766959846456e-32, -9.227844430812031e-29, -1.3075403867297098e-24, -1.0782268424068565e-21, -1.6295920046683772e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_36": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 3.836100246218591e-37, 7.877328222866015e-35, 1.0165875197913555e-28, 1.3494554540573297e-25, -8.624115204511877e-22, 9.780924477350943e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1491": {}, "ELEMENT_70": {}, "ELEMENT_497": {}, "NODE_122": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.00000000000001, 0.9999999999946871, 0.9999999903977749], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000035, 2.499999999981405, 2.499999966392213], "MOMENTUM_X": [8.097641034127453e-31, 1.423227876767244e-25, 1.6326096821142025e-22, -1.5332842274305564e-18, -1.1805623182753872e-14, 6.102400496681339e-12, 1.138483485984091e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1988": {}, "ELEMENT_1752": {}, "NODE_987": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000128, 0.12499999999392372, 0.12499994368893307], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000355, 0.24999999998298642, 0.24999984232905184], "MOMENTUM_X": [-5.832115621886828e-34, -2.5417784033703975e-29, 1.261947390388822e-24, 6.699594776589288e-20, 3.163144058053991e-16, -2.1035346611319114e-12, -7.594469089727568e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1048": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006034], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.250000000000169], "MOMENTUM_X": [-1.428926642718542e-44, -3.90994660256707e-36, -9.22282876686034e-33, 1.0411243438104633e-27, 1.4319893379529956e-24, -5.160268024692851e-18, 7.527095363730625e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1897": {}, "ELEMENT_256": {}, "ELEMENT_90": {}, "ELEMENT_800": {}, "NODE_256": {"DENSITY": [1.0, 1.0, 0.9999999999998963, 1.000000000160175, 0.9999999285831228, 0.9999805994336232, 0.9992885573955728], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999996376, 2.5000000005606133, 2.4999997500409443, 2.4999320987293348, 2.4975107939342944], "MOMENTUM_X": [-3.2723142743355074e-23, -5.424138852346605e-18, 1.2125184833891106e-13, -1.8784637587376301e-10, 8.707005518382899e-08, 2.306831118262231e-05, 0.0008424738827824988], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_492": {"DENSITY": [0.9920520971579825, 0.8542905746970325, 0.7133830854908135, 0.6274100742220431, 0.5768003020509657, 0.5446138195034916, 0.522200417311715], "TOTAL_ENERGY": [2.472311118504242, 2.0212919327536887, 1.6121211293961275, 1.389079732291661, 1.2671560290738382, 1.192394035110593, 1.1422264811472405], "MOMENTUM_X": [0.008955411417592412, 0.1559137659769923, 0.27513943962971177, 0.3299265273778668, 0.35527623279507997, 0.36875825825826325, 0.376550377583929], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_158": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999984, 1.0000000000024423, 0.9999999972261706, 0.999999247833911], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999947, 2.5000000000085483, 2.4999999902915975, 2.4999973674198532], "MOMENTUM_X": [-3.111880463734171e-27, 1.0913897434172465e-23, -1.4071104859495144e-21, 1.885669563681831e-15, -2.985244670770879e-12, 3.360790519511353e-09, 8.98927575708517e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_851": {}, "ELEMENT_1446": {}, "ELEMENT_2000": {}, "ELEMENT_1516": {}, "ELEMENT_92": {}, "ELEMENT_228": {}, "ELEMENT_1623": {}, "ELEMENT_1066": {}, "ELEMENT_315": {}, "NODE_1097": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006], "MOMENTUM_X": [0.0, 3.859724182094789e-38, 4.197851825475213e-34, -4.9196000876029244e-30, -2.9867208283555178e-25, -2.38261535413683e-21, 3.1151726468813476e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1727": {}, "ELEMENT_106": {}, "NODE_196": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 1.0000000000004265, 0.9999999996326484, 0.9999997177394032, 0.999977079848896], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.500000000001494, 2.49999999871427, 2.4999990120880824, 2.4999197804508753], "MOMENTUM_X": [6.035757244108922e-25, -1.9024102958337542e-20, 1.1388338350161698e-16, -4.994668433137996e-13, 4.2774569610868605e-10, 3.328986846478308e-07, 2.7124664409909624e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_730": {}, "ELEMENT_707": {}, "NODE_333": {"DENSITY": [0.999999999999883, 1.0000000005242395, 0.9999992283244422, 0.999825931828881, 0.9956046854483955, 0.9701463823766934, 0.9139909330052974], "TOTAL_ENERGY": [2.49999999999959, 2.500000001834839, 2.499997299137158, 2.4993908203675015, 2.484648500019733, 2.396854203433401, 2.2095875946843533], "MOMENTUM_X": [-1.4967505060303473e-13, -5.817862301666861e-10, 9.06525341308146e-07, 0.00020569991180137686, 0.005185394227035824, 0.034658281299962665, 0.09631844310502462], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1335": {}, "NODE_759": {"DENSITY": [0.12499999999945706, 0.12499994632518335, 0.1259105886281731, 0.2408253696466146, 0.25702800026953143, 0.2706705599402678, 0.3024742126142679], "TOTAL_ENERGY": [0.2499999999984798, 0.24999984971055647, 0.25256418386425067, 0.7486607934565216, 0.8238910474759131, 0.8694916440546838, 0.8891933742665475], "MOMENTUM_X": [7.24939166622646e-13, -4.936645708324787e-08, 0.0007765526070083029, 0.2033449568304287, 0.2284658959869142, 0.25063355323149344, 0.2815405624423525], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_404": {"DENSITY": [1.000000001538159, 0.9999750821227137, 0.996824232260761, 0.9645803482364929, 0.8866583018037196, 0.8027154612709274, 0.7368125960799224], "TOTAL_ENERGY": [2.5000000053835567, 2.4999127890015744, 2.4889027231392373, 2.37794252728936, 2.121684366459846, 1.8641744126806268, 1.675587771459444], "MOMENTUM_X": [7.165576799576771e-10, 2.9236621883436744e-05, 0.00373762494305824, 0.040899240457665166, 0.12444962796937863, 0.20397053612260968, 0.2581360096715769], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1451": {}, "ELEMENT_1073": {}, "NODE_217": {"DENSITY": [1.0, 1.0, 0.9999999999999927, 1.0000000000135107, 0.9999999826296565, 0.9999958276184672, 0.9998123770575024], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999742, 2.5000000000472875, 2.499999939203798, 2.499985396700136, 2.4993433824168085], "MOMENTUM_X": [-1.955852350060955e-22, -1.1527964385027233e-18, 8.808189372690049e-15, -1.6315430288613426e-11, 2.0577091897900563e-08, 4.962259841931932e-06, 0.00022282233667638533], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_364": {"DENSITY": [0.9999999999475829, 0.9999999978257237, 0.9999115845345633, 0.9959813822297476, 0.966842453465872, 0.9013522217914163, 0.828275095453232], "TOTAL_ENERGY": [2.4999999998165405, 2.4999999923900376, 2.4996905629126487, 2.485962715354459, 2.385618922974045, 2.1687189901756176, 1.9405604466804995], "MOMENTUM_X": [-5.159756374266315e-11, 5.424231296867707e-09, 0.00010534571500763967, 0.004756477680191505, 0.03840725180595694, 0.10940137921314545, 0.18087504262530724], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1030": {}, "NODE_777": {"DENSITY": [0.1250000000000049, 0.12499999985608273, 0.12500072109519678, 0.14109882887224812, 0.290180333217792, 0.2622213093963031, 0.2705671423849614], "TOTAL_ENERGY": [0.2500000000000137, 0.2499999995970315, 0.2500020190997523, 0.3007947652660502, 1.012189480307288, 0.8470387056992461, 0.8634650390529915], "MOMENTUM_X": [-5.879970074032349e-15, -2.5806367139547494e-10, 9.189709714209835e-07, 0.022541145244044904, 0.30113147730456896, 0.23766419680754175, 0.24819715028287342], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_222": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999789, 1.0000000000193485, 1.0000000033606773, 0.9999980031509655], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999267, 2.50000000006772, 2.500000011762371, 2.4999930110371955], "MOMENTUM_X": [-8.267212599421071e-28, -3.2325275899556223e-23, -6.214534957159828e-18, 2.8407871743240906e-14, -2.640544147105785e-11, -2.3954583639291493e-09, 2.5524932345524132e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1313": {}, "NODE_297": {"DENSITY": [1.0000000000000009, 0.9999999999994587, 1.0000000007339866, 0.999997043933434, 0.9997289349101512, 0.9950744937216123, 0.970943365161935], "TOTAL_ENERGY": [2.5000000000000036, 2.499999999998106, 2.500000002568954, 2.4999896537873165, 2.499051409188498, 2.4828002050861384, 2.399563240046471], "MOMENTUM_X": [1.1433168505938152e-15, 9.765027232983222e-13, -9.026848508453477e-10, 3.5221100900035174e-06, 0.00032227748442610377, 0.00581964498175348, 0.03374336825895079], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1793": {}, "ELEMENT_1403": {}, "ELEMENT_169": {}, "ELEMENT_1176": {}, "ELEMENT_1927": {}, "ELEMENT_1480": {}, "NODE_1100": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000017], "MOMENTUM_X": [0.0, 2.347039692103008e-37, 3.297431364102206e-33, -6.961202668748106e-29, -1.0052970258536474e-24, 3.606531006737615e-21, 1.0016880245808194e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1143": {}, "NODE_904": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999206, 0.1250000002126385, 0.12499810366207312, 0.18337404207447255], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999997777, 0.25000000059538763, 0.24999468986527498, 0.475853917266851], "MOMENTUM_X": [-6.897196174856287e-29, -1.8807744909510892e-23, -1.7876918229193762e-19, -5.479106455594795e-15, -1.288342682878604e-11, 1.4960638817817406e-06, 0.10249468483775742], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1421": {}, "NODE_38": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0000000000000535], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000001, 2.5000000000001883], "MOMENTUM_X": [-9.171486730441904e-38, -3.2317113698628985e-31, -1.8317272393549106e-27, 8.076647201521336e-24, 3.964004904373559e-20, -2.1801263995466168e-16, -6.597779709652063e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_813": {"DENSITY": [0.125, 0.12500000000039377, 0.12499999429576399, 0.12505328350246067, 0.20265529735202362, 0.26186129129382407, 0.26939609292928857], "TOTAL_ENERGY": [0.25000000000000006, 0.2500000000011026, 0.24999998402814017, 0.250149303405395, 0.5592792685372732, 0.8500823494105862, 0.8889102566179965], "MOMENTUM_X": [-1.9587920433434685e-17, 4.01995101260173e-13, -7.706937098000793e-09, 6.734572311979439e-05, 0.13151485479561292, 0.2371391771065189, 0.25308182932246104], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_780": {"DENSITY": [0.12500000000001427, 0.12499999990899495, 0.12499935457783487, 0.14816705138825734, 0.2775471850635133, 0.26988367627385623, 0.2719740297690535], "TOTAL_ENERGY": [0.25000000000003986, 0.24999999974518583, 0.24999819283001806, 0.32615081586001093, 0.9380443294258571, 0.8903756421091176, 0.8691245332741365], "MOMENTUM_X": [-1.502847121644087e-14, -2.3094557044815783e-10, 8.560306921701692e-08, 0.03513265506755067, 0.27134556927128634, 0.25377477679957816, 0.25038802369864777], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_145": {}, "ELEMENT_329": {}, "NODE_713": {"DENSITY": [0.12500000005806516, 0.12508399589228758, 0.20550334235365783, 0.26764451125596617, 0.2842796863895096, 0.33594085362402387, 0.4248227297559053], "TOTAL_ENERGY": [0.2500000001625824, 0.25023538715614024, 0.5729487318917058, 0.8743296247859881, 0.8969472118825838, 0.9024170698267504, 0.9416939780248442], "MOMENTUM_X": [-5.451932425431625e-10, 8.79961491157498e-05, 0.13685486503000283, 0.24833497653992714, 0.26769198403595656, 0.3114022774918668, 0.3941488279749229], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_370": {"DENSITY": [0.9999999999915546, 0.9999999923193195, 0.9999123715386994, 0.9960485121719294, 0.9673711215478041, 0.9019751733147365, 0.8280904358892239], "TOTAL_ENERGY": [2.499999999970441, 2.499999973117623, 2.4996933165223867, 2.4861963403692213, 2.387407736870671, 2.170676492641866, 1.939901014779016], "MOMENTUM_X": [-3.025290059313753e-12, 7.72285074396097e-09, 0.00010315389826772803, 0.0046526684330746235, 0.03775512390250978, 0.10874860354036416, 0.1811129252965414], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1178": {}, "NODE_515": {"DENSITY": [0.92493626524366, 0.6931178550932691, 0.5895017033791997, 0.5384301006686165, 0.5093931686400194, 0.4896219651826022, 0.47627270135568794], "TOTAL_ENERGY": [2.247193395125657, 1.5586876359494062, 1.2981709286392542, 1.1796014669142962, 1.1137498291942722, 1.0719745900575557, 1.0434456704427166], "MOMENTUM_X": [0.0879077499492148, 0.2893726932184369, 0.34881491852589164, 0.37088782421775995, 0.38103655332644504, 0.3857126679973992, 0.38879380439281536], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_886": {"DENSITY": [0.125, 0.125, 0.12500000000000103, 0.12499999999073072, 0.12499996811869206, 0.12713548006225223, 0.27458327601087384], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000029, 0.249999999974046, 0.2499999107323293, 0.2560777864870898, 0.9305340919331253], "MOMENTUM_X": [-2.8831774298249613e-25, 3.413480823485105e-20, 2.4497457858272755e-16, -3.826948213676893e-12, -7.939351556317794e-08, 0.002177343598735008, 0.27129947542947563], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_382": {}, "NODE_437": {"DENSITY": [1.000000589650342, 0.9976756878823336, 0.9607916937501554, 0.8659895654156434, 0.7699568885967066, 0.7000065199981057, 0.6509015818253512], "TOTAL_ENERGY": [2.5000020637765883, 2.4918753644239295, 2.36515821107367, 2.0566926761872866, 1.7690905802550347, 1.5755121447462914, 1.4475860833345855], "MOMENTUM_X": [-3.415653608645248e-07, 0.002729749075855271, 0.04511342558996443, 0.14491904158437693, 0.2316869793293164, 0.2848772230761125, 0.31673945572959283], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_125": {}, "ELEMENT_832": {}, "ELEMENT_1455": {}, "ELEMENT_552": {}, "NODE_1102": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, 7.928011318512922e-42, -1.8839227265250047e-37, 1.0822690541775093e-33, -5.596223303576685e-28, 2.3200325400727423e-24, 3.3016216546641817e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1442": {}, "NODE_872": {"DENSITY": [0.125, 0.125, 0.1249999999999984, 0.12500000002334583, 0.12499952032457963, 0.13803552864914076, 0.2871492245393369], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999955, 0.25000000006536827, 0.24999865691035583, 0.2903919207781433, 0.9970695062691871], "MOMENTUM_X": [-3.3963460280358435e-25, -9.621481320166475e-21, -2.3988323417576424e-15, 2.454653831394475e-11, -5.337148503479918e-07, 0.01787659094559086, 0.2947819547362489], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1935": {}, "ELEMENT_588": {}, "ELEMENT_366": {}, "NODE_888": {"DENSITY": [0.125, 0.125, 0.1250000000000021, 0.12499999998697389, 0.12499994020302566, 0.12721824941859378, 0.27126285373049447], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000594, 0.24999999996352695, 0.2499998325684978, 0.25631830913752734, 0.9107619646750039], "MOMENTUM_X": [-2.786669684008227e-24, 9.114697708636038e-20, 6.316390014552886e-16, -6.202811551853243e-12, -1.0067043149640117e-07, 0.002272384988727907, 0.2632560241969712], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_117": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000286, 0.9999999999891278, 0.999999979760734], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000001004, 2.4999999999619473, 2.4999999291625694], "MOMENTUM_X": [6.741490045944939e-30, 6.254421899273671e-27, 3.440454650721919e-22, 1.754989940424004e-19, -3.1234034253434146e-14, 1.1911518020219257e-11, 2.3162835773444006e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_133": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999993, 1.0000000000006215, 0.9999999999070658], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999998, 2.500000000002175, 2.499999999674731], "MOMENTUM_X": [-4.596051206390038e-34, 8.581108966396371e-29, -5.831421377416407e-24, -2.4522345728938754e-20, 7.453536957667423e-16, -7.410979089773276e-13, 1.2070829192148563e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_254": {"DENSITY": [1.0, 1.0, 1.0000000000000029, 0.9999999999976665, 1.0000000036564018, 0.9999990643607961, 0.9998965585554342], "TOTAL_ENERGY": [2.5, 2.5, 2.50000000000001, 2.499999999991833, 2.5000000127974067, 2.4999967252649893, 2.49963797442586], "MOMENTUM_X": [-1.0471350653517676e-24, -9.849147829636559e-20, -3.028093450617178e-15, 1.694865302600526e-12, -3.9203429038637075e-09, 1.2378179408162282e-06, 0.0001256725317726782], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_468": {}, "ELEMENT_1628": {}, "ELEMENT_1198": {}, "ELEMENT_1334": {}, "ELEMENT_1444": {}, "NODE_838": {"DENSITY": [0.125, 0.125, 0.12500000000123132, 0.1249999782010413, 0.12554645114449056, 0.26643139570083996, 0.2323421829307993], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000344774, 0.2499999389629268, 0.25153639184007637, 0.8955199952102083, 0.6948507546291394], "MOMENTUM_X": [3.770066639640062e-23, -3.977928591401361e-18, 1.2028195248182913e-12, -2.369102661003064e-08, 0.00048717099330002306, 0.26129280415557654, 0.17699229153687082], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1079": {}, "NODE_151": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999977, 1.0000000000019693, 0.9999999998384431], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999992, 2.500000000006892, 2.4999999994345496], "MOMENTUM_X": [-2.247379218656004e-33, -4.484196834395824e-28, 5.646072859369143e-24, 3.4980979422122157e-19, 2.744444179410893e-15, -2.3569601626652796e-12, 2.2809084043721402e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_718": {"DENSITY": [0.12500000002218806, 0.12500041333418838, 0.1603424628583382, 0.28094535837551154, 0.27522817353213747, 0.3005568397618744, 0.3887242309719879], "TOTAL_ENERGY": [0.25000000006212664, 0.2500011574483623, 0.3735617589977354, 0.9545644094530453, 0.8950723045772201, 0.8752128689440215, 0.9267022017073006], "MOMENTUM_X": [2.1640438986151827e-11, 2.2644107927529835e-06, 0.056150792940435554, 0.2789503761301653, 0.2600067470187567, 0.27553153626692084, 0.36074294818406244], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_353": {"DENSITY": [1.000000000004401, 1.0000000106599956, 0.9999795606478664, 0.9984369282071348, 0.9812580281875624, 0.9285264321515785, 0.8576922006673233], "TOTAL_ENERGY": [2.5000000000154032, 2.500000037309985, 2.499928463246123, 2.4945336570233816, 2.4349516220034553, 2.257270259390991, 2.030610483881681], "MOMENTUM_X": [5.600742036534103e-12, -1.403283018078592e-08, 2.4378867313450137e-05, 0.0018551490677752723, 0.02192315180288482, 0.08072095768354935, 0.15312563526004178], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_398": {}, "ELEMENT_1242": {}, "NODE_974": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000071, 0.12499999993701955, 0.12500016644751566], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000001993, 0.24999999982365465, 0.2500004660537808], "MOMENTUM_X": [-6.480955929354832e-34, 1.705106949562711e-28, 1.890724319199232e-23, -4.79154989522482e-19, 5.521787708470832e-15, -6.323264692108252e-11, 1.9016435802253524e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_906": {}, "NODE_809": {"DENSITY": [0.125, 0.12500000000032108, 0.12499999600409463, 0.1250407895312665, 0.19258547894203276, 0.26847911937747887, 0.27211663326998176], "TOTAL_ENERGY": [0.25, 0.25000000000089895, 0.2499999888114652, 0.25011425922592273, 0.5143426023170417, 0.8879050628409227, 0.902848415750199], "MOMENTUM_X": [-8.578079595545234e-18, 2.974497811946133e-13, -4.930534296823503e-09, 4.757857901747248e-05, 0.11406487335752463, 0.25270730807719655, 0.25908268532156803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_433": {"DENSITY": [1.0000010070024161, 0.9976553073461575, 0.9613949046637299, 0.8676251509963803, 0.7712928778509928, 0.7005501931284133, 0.6508142151203081], "TOTAL_ENERGY": [2.5000035245086107, 2.491804396420409, 2.3672190771663617, 2.0618994599380556, 1.7730821831252315, 1.5771562397377359, 1.4475444226384853], "MOMENTUM_X": [7.910433245383638e-08, 0.00276205897110341, 0.04455978335433569, 0.14355835881817713, 0.23095967319246957, 0.28490260425145586, 0.3171730101273707], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_876": {}, "ELEMENT_477": {}, "ELEMENT_1051": {}, "ELEMENT_1656": {}, "NODE_1109": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, 2.770360908415829e-39, 3.771616860177349e-35, 6.032629996461373e-30, 6.79562290421603e-26, -8.951077619266315e-22, -6.807654050698879e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_523": {}, "ELEMENT_463": {}, "ELEMENT_271": {}, "ELEMENT_1482": {}, "ELEMENT_1972": {}, "ELEMENT_903": {}, "ELEMENT_1890": {}, "NODE_235": {"DENSITY": [1.0, 1.0, 0.9999999999999647, 1.000000000057627, 0.9999999260706142, 0.9999869950048179, 0.9995514933846916], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999877, 2.500000000201695, 2.4999997412471626, 2.4999544828416527, 2.4984305702629332], "MOMENTUM_X": [-2.5621359739822127e-22, -3.3432970976882517e-18, 4.1207690724944045e-14, -6.723058381582381e-11, 8.714553583163292e-08, 1.5348243293780707e-05, 0.0005297858506336948], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_268": {"DENSITY": [1.0, 0.9999999999999996, 1.000000000012569, 0.9999999863723187, 0.999992983222622, 0.9996412318666733, 0.9950095290263499], "TOTAL_ENERGY": [2.5, 2.4999999999999982, 2.500000000043992, 2.4999999523031153, 2.499975441379367, 2.4987445376344564, 2.4825728905867126], "MOMENTUM_X": [4.1733961898173923e-19, 7.844091396491873e-16, -1.4711152824439756e-11, 1.6017765181679676e-08, 8.271777595805838e-06, 0.00042363075648834206, 0.005880541277946776], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_954": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000018255, 0.12499999453016296, 0.1250592384760195], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000005111, 0.2499999846844568, 0.25016596818256737], "MOMENTUM_X": [9.156709359353548e-31, -9.036800779473758e-26, -2.7935494776152895e-21, 2.2516319419970616e-17, 5.562076618642924e-14, -6.267384334533572e-09, 6.445211858887238e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_394": {"DENSITY": [0.9999999998652673, 0.9999982740164831, 0.9991431061416886, 0.9825795083147396, 0.9208940384985057, 0.8370260750269948, 0.7658438682911537], "TOTAL_ENERGY": [2.4999999995284363, 2.4999939590678633, 2.497002247232157, 2.439504175995765, 2.2321782246534854, 1.9670278855679983, 1.7571848126195582], "MOMENTUM_X": [1.1745663311799244e-10, 2.08388601232248e-06, 0.001012251140307884, 0.020380417727781118, 0.08907149734394236, 0.1732679835628527, 0.2357270961475524], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_4": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 1.0812196721005712e-35, 1.4239085710289253e-31, 1.663490605830259e-28, 3.234568802975342e-24, 1.706714631030573e-21, -3.990956319721029e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1326": {}, "ELEMENT_1397": {}, "NODE_498": {"DENSITY": [0.9713820652028125, 0.7808389492346778, 0.6514061834872868, 0.5825641229821318, 0.5419014040034941, 0.5149048252988875, 0.4968599143741273], "TOTAL_ENERGY": [2.4012438722625915, 1.8025879593423344, 1.4485959828393895, 1.2791586960286134, 1.1851083216851828, 1.1268865533017824, 1.0877144420758666], "MOMENTUM_X": [0.03015658027446735, 0.22486631737257246, 0.3163730740852238, 0.35443749967901234, 0.37076921047331896, 0.37864170843999817, 0.3835959530593766], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_20": {}, "ELEMENT_1062": {}, "ELEMENT_1234": {}, "ELEMENT_280": {}, "ELEMENT_676": {}, "ELEMENT_1794": {}, "ELEMENT_1140": {}, "ELEMENT_701": {}, "NODE_960": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000013, 0.12500000002344025, 0.12499995295208614], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000036, 0.2500000000656327, 0.24999986832527246], "MOMENTUM_X": [-5.029256874870647e-34, 1.8947576086252144e-28, 3.8225109076278e-24, -2.958493811043093e-19, 2.35132573894894e-15, -9.935667623498878e-11, 1.743958378295803e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_467": {"DENSITY": [1.0000015127560202, 0.9888402924394022, 0.903970596009395, 0.7785370541086505, 0.6868329725174432, 0.6281954497059602, 0.5889469661969998], "TOTAL_ENERGY": [2.500005294653807, 2.4611511062044453, 2.1768716435203004, 1.7916570092084052, 1.5373611940150207, 1.387139236867342, 1.2919611531373412], "MOMENTUM_X": [-2.3455782006287265e-07, 0.013055671260149898, 0.1052649274049521, 0.22292755954912546, 0.2928760395802401, 0.3294502350864401, 0.3500577718629152], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_206": {"DENSITY": [1.0, 1.0, 0.9999999999999988, 1.0000000000028024, 0.9999999971807382, 0.9999988709086729, 0.999931278099916], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999996, 2.5000000000098086, 2.4999999901325842, 2.4999960481830463, 2.499759482002234], "MOMENTUM_X": [-1.144186524199285e-23, 2.5720613733862488e-20, 1.3558369074301189e-15, -3.353915080048102e-12, 3.3257022532291614e-09, 1.3421652310882606e-06, 8.165500676182877e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_377": {"DENSITY": [1.0000000000018894, 1.0000000334662955, 0.9999719392867956, 0.9975954614541829, 0.973131679923927, 0.907306752322403, 0.8295430149591868], "TOTAL_ENERGY": [2.500000000006613, 2.5000001171320365, 2.4999017892719197, 2.4915941125781518, 2.407056574867386, 2.187892741720846, 1.9443445811255562], "MOMENTUM_X": [1.2181943791317235e-12, -3.9869731792347523e-08, 3.379427982854213e-05, 0.0028696634969908956, 0.031499740270283634, 0.10402028969877547, 0.18093505674359245], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_422": {}, "ELEMENT_62": {}, "NODE_990": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000035, 0.12499999998585183, 0.12499987745217316], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000098, 0.24999999996038524, 0.2499996568663277], "MOMENTUM_X": [-6.913063247316127e-33, 5.546659005112493e-28, 1.7479285626098182e-23, 1.6345622586624507e-19, 7.601536069334725e-16, -4.915331796044953e-12, -1.9785996774697944e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_881": {}, "NODE_405": {"DENSITY": [1.0000000004790057, 0.9999836665787161, 0.9972535685321479, 0.9661535052485903, 0.8874096051127963, 0.8021504938181467, 0.7358275559050302], "TOTAL_ENERGY": [2.5000000016765203, 2.4999428337241056, 2.49040087242474, 2.383277765562864, 2.1240441253894997, 1.8625017440700533, 1.6729051286840886], "MOMENTUM_X": [9.525352176295641e-10, 1.9358342150204677e-05, 0.0032391291065634433, 0.03919705129758345, 0.12397586490849902, 0.20492586349405667, 0.25939817870195875], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1925": {}, "ELEMENT_14": {}, "ELEMENT_221": {}, "ELEMENT_1941": {}, "ELEMENT_417": {}, "ELEMENT_243": {}, "ELEMENT_1496": {}, "ELEMENT_1034": {}, "ELEMENT_1636": {}, "ELEMENT_1920": {}, "NODE_965": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000002587, 0.12499999951996667, 0.12500285637507208], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000007244, 0.2499999986559067, 0.2500079984277899], "MOMENTUM_X": [9.571093089707307e-32, 1.051205103347353e-27, -2.9805296012819677e-22, -1.938163047586976e-18, 5.947929616747813e-14, -9.81223277191711e-10, 4.9179055827357905e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_83": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000737, 0.9999999999489139], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000002576, 2.499999999821198], "MOMENTUM_X": [-7.764631781733656e-36, 5.295184668680495e-29, 5.375157940658203e-25, 5.279192383676807e-22, 2.123084299799743e-17, -8.615200573226107e-14, 6.01532478164821e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1116": {}, "ELEMENT_1358": {}, "ELEMENT_957": {}, "NODE_273": {"DENSITY": [1.0, 0.9999999999999525, 1.0000000001182183, 0.9999998880679084, 0.9999688192955574, 0.9988831974780613, 0.9888145814592659], "TOTAL_ENERGY": [2.5, 2.4999999999998344, 2.5000000004137655, 2.4999996082377165, 2.4998908694863506, 2.496093318747342, 2.461043569812257], "MOMENTUM_X": [-4.443955512150401e-17, 1.5975635961302976e-14, -1.436185225230317e-10, 1.3690768041108018e-07, 3.7200865283818795e-05, 0.0013194283542111093, 0.013082585643604587], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_397": {"DENSITY": [1.0000000028087057, 0.9999719081462358, 0.9966907076970135, 0.9641205244812806, 0.8869128745707469, 0.8040907426401758, 0.7384401532473297], "TOTAL_ENERGY": [2.50000000983047, 2.4999016805928695, 2.4884374071133, 2.3764035915587836, 2.122598361182714, 1.8684126252780204, 1.6802707318098427], "MOMENTUM_X": [2.737021658946362e-10, 3.3334985688551556e-05, 0.003921990206381464, 0.04148786461657514, 0.12416613325807369, 0.20261079067272095, 0.25666720219436256], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_667": {}, "ELEMENT_357": {}, "ELEMENT_1370": {}, "ELEMENT_1021": {}, "ELEMENT_1088": {}, "ELEMENT_743": {}, "NODE_199": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 1.000000000000356, 0.9999999997395618, 0.9999997360014377, 0.9999776052252157], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000001246, 2.499999999088466, 2.4999990760051807, 2.4999216192161677], "MOMENTUM_X": [4.3469660778162765e-25, -1.3981436639314525e-20, 6.016181709414961e-17, -4.159956699699538e-13, 3.0573822245067115e-10, 3.109953133385717e-07, 2.6451396193052298e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1271": {}, "NODE_401": {"DENSITY": [1.0000000026386198, 0.9999700446218854, 0.9967040816247855, 0.9648396319075883, 0.888105294742653, 0.80423941928001, 0.7376978805419047], "TOTAL_ENERGY": [2.50000000923517, 2.4998951584594304, 2.4884838528291446, 2.378837940150083, 2.126353499012235, 1.8687702990700317, 1.678140418986096], "MOMENTUM_X": [3.7890834791355817e-10, 3.517082452610859e-05, 0.003886525177543376, 0.040631797678554446, 0.12300949594586313, 0.2026840382040481, 0.2575405918792429], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1049": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000018557], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.2500000000005196], "MOMENTUM_X": [-9.510998967237085e-45, -8.330494948701523e-36, -1.8747966023670406e-32, 4.90743657011756e-27, -1.970472726667817e-22, -1.0910853912859639e-17, 1.9715011707492313e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1981": {}, "ELEMENT_1904": {}, "ELEMENT_1991": {}, "NODE_329": {"DENSITY": [0.9999999999996966, 1.0000000006255239, 0.9999992877218479, 0.9997993388142088, 0.9948195744669247, 0.9663439304551975, 0.9083501350885058], "TOTAL_ENERGY": [2.499999999998938, 2.500000002189333, 2.4999975070280254, 2.49929776485246, 2.4819125629477345, 2.383890262512467, 2.1912166715386], "MOMENTUM_X": [-3.650671248936758e-13, -6.304214879616845e-10, 8.725520869104346e-07, 0.00023868024873751123, 0.006087326914432234, 0.0387569298606153, 0.10170106036169291], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1736": {}, "NODE_817": {"DENSITY": [0.125, 0.12499999999999395, 0.12500000002013906, 0.12499945467591866, 0.15329222092912742, 0.28041021349427836, 0.2720749414541412], "TOTAL_ENERGY": [0.25, 0.24999999999998307, 0.25000000005638934, 0.24999847309244422, 0.346034253340818, 0.9572275176630743, 0.9069699146152488], "MOMENTUM_X": [1.2130097491155291e-20, -6.285708727185038e-15, -4.0437413362955664e-11, 2.650585647650487e-07, 0.04390867369949036, 0.27932260841742385, 0.26097444906170547], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1600": {}, "ELEMENT_709": {}, "NODE_997": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000027967, 0.12499998786368907], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.2500000000007831, 0.24999996601833166], "MOMENTUM_X": [-9.750376580335785e-37, 1.0470773467910007e-30, -3.253717757601635e-25, 2.620555892444673e-21, 3.684758893847597e-17, 2.053028009088401e-14, -1.1260809611773585e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1658": {}, "NODE_78": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000000633], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000222], "MOMENTUM_X": [-2.5080173150821136e-40, 1.3658842038902278e-32, 5.829636071122824e-29, -1.1642551763267539e-24, 2.5758952586018435e-21, 7.709662459282066e-17, -7.635145320861545e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_475": {"DENSITY": [0.998467644724893, 0.914308501273418, 0.7766455710580381, 0.6761197203624201, 0.6142647172740476, 0.5742419761230598, 0.5463189561582822], "TOTAL_ENERGY": [2.494643607532379, 2.2113136387544134, 1.7892491082739772, 1.5128603812956998, 1.35617630368363, 1.2599533636822526, 1.1958611177536327], "MOMENTUM_X": [0.002139903595217096, 0.09511377705271096, 0.22634077642163147, 0.3008238032755434, 0.33753357432362824, 0.35703035367879205, 0.36824225497352875], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_149": {}, "ELEMENT_1445": {}, "NODE_501": {"DENSITY": [0.9713656987758437, 0.7802084364869821, 0.6506837658069725, 0.582087808336233, 0.541896742859989, 0.5153292255859961, 0.49750190662181304], "TOTAL_ENERGY": [2.4011892743122214, 1.8005595987548837, 1.446717338856012, 1.2776558531099504, 1.184793811487529, 1.1273390894524185, 1.088655029587134], "MOMENTUM_X": [0.030193512194215483, 0.22481430450160747, 0.31681832492270295, 0.3544860663084437, 0.37077309477336196, 0.378695812059903, 0.383649387955851], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_721": {}, "NODE_227": {"DENSITY": [1.0, 1.0, 0.9999999999999595, 1.0000000000719251, 0.9999999013425519, 0.9999832435672467, 0.9994378623409174], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999858, 2.500000000251738, 2.4999996546989562, 2.499941353036287, 2.4980330582617802], "MOMENTUM_X": [-2.6949663144349436e-21, -8.010853565743656e-17, 5.1811888736536667e-14, -8.589974407821568e-11, 1.194581003005433e-07, 1.9974370398393566e-05, 0.0006648467865220224], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_981": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999992, 0.1250000000017291, 0.1249999625999906], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999975, 0.25000000000484146, 0.2499998952800066], "MOMENTUM_X": [8.648036531671574e-37, -7.410481717400278e-31, 2.6112464493209817e-26, -6.397565154523528e-22, -9.353818501493773e-17, 1.7268228175509834e-12, -4.204245899868227e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_885": {}, "ELEMENT_1471": {}, "ELEMENT_1876": {}, "NODE_177": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999569, 1.0000000000346967, 0.999999995131596], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999998495, 2.5000000001214393, 2.499999982960586], "MOMENTUM_X": [1.604628157688801e-31, 4.016051573730306e-27, -2.1852731679177507e-22, -1.6266802594235016e-17, 5.0569682137073184e-14, -4.134994461152739e-11, 5.978390341366794e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_227": {}, "ELEMENT_673": {}, "ELEMENT_553": {}, "NODE_1107": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, -2.0314141776781475e-39, -1.2414483641972866e-36, 1.2622272037180616e-30, 4.175164739063824e-26, -5.356782931132322e-22, -9.247298323370922e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_708": {"DENSITY": [0.12500000021790356, 0.12508489701102965, 0.20503062964740829, 0.26617084656098955, 0.2860985501925635, 0.3345351836678991, 0.4271648690794223], "TOTAL_ENERGY": [0.25000000061012995, 0.2502378948437745, 0.5710591328285209, 0.864717947840143, 0.9086110682034632, 0.8971257034046995, 0.9417313379462919], "MOMENTUM_X": [-1.1661980838419213e-10, 8.605000685370927e-05, 0.13571873169406226, 0.24441760621646025, 0.27182541636430413, 0.30866615647569917, 0.3957297368520058], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_981": {}, "ELEMENT_1475": {}, "ELEMENT_1908": {}, "ELEMENT_1082": {}, "ELEMENT_638": {}, "ELEMENT_1563": {}, "ELEMENT_213": {}, "NODE_164": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999999113, 1.0000000002313878], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999969, 2.500000000809858], "MOMENTUM_X": [-1.6145665224635707e-34, 1.4880100190673919e-28, -5.7215044419568556e-24, 3.324206780182838e-20, 7.895746263243532e-17, 1.972182009084775e-14, -2.589026613618403e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_207": {}, "NODE_424": {"DENSITY": [1.0000001048222034, 0.9993500791956867, 0.9807261374726366, 0.9076425551716376, 0.8118342121980117, 0.7345215446475752, 0.6789578457150248], "TOTAL_ENERGY": [2.500000366877738, 2.497726175534797, 2.4331486484254783, 2.1892163098510857, 1.8914241430410481, 1.6694174376175916, 1.5199678593374322], "MOMENTUM_X": [-1.6464117472159994e-07, 0.0007686161689508173, 0.02249782578280396, 0.10284158549590718, 0.19590975773766742, 0.2599566097877451, 0.2993155735962033], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_744": {}, "ELEMENT_1418": {}, "ELEMENT_295": {}, "NODE_368": {"DENSITY": [0.9999999999820061, 0.9999999793711698, 0.9999085660698274, 0.9960364708611136, 0.9676409781066807, 0.9026888503491252, 0.8287984205847619], "TOTAL_ENERGY": [2.4999999999370215, 2.4999999277991023, 2.4996799989404352, 2.4861545210082943, 2.388331227146582, 2.1729990286020096, 1.942081469688268], "MOMENTUM_X": [-1.2736097396481932e-11, 2.283824443504471e-08, 0.0001077774572512124, 0.004671007797456688, 0.03746828931128114, 0.1080592707371594, 0.18055992637234516], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1762": {}, "NODE_734": {"DENSITY": [0.1250000000053842, 0.12500000292836577, 0.13465268697053456, 0.287088841468788, 0.26398035566997674, 0.28514975048920244, 0.3452434048398765], "TOTAL_ENERGY": [0.2500000000150757, 0.2500000082001863, 0.27912305506006574, 0.9934641798708193, 0.8473568564474768, 0.8748456456706111, 0.9074089792912898], "MOMENTUM_X": [5.091012931220645e-12, -1.000472633480659e-07, 0.01246527629941439, 0.2941881578162019, 0.23909236299221168, 0.26308840669372946, 0.32046598545006166], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_162": {}, "NODE_1085": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000064], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000017], "MOMENTUM_X": [0.0, 1.0828302159878643e-37, -7.073332914925132e-34, -8.377983360294832e-29, -8.62651851522338e-25, 2.6693877920344357e-20, 1.5647763587827307e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_848": {}, "NODE_452": {"DENSITY": [0.9999585503893116, 0.9789013363178394, 0.8827015889024786, 0.7711962137643763, 0.6912544693745653, 0.6375857554954106, 0.6000758037123848], "TOTAL_ENERGY": [2.499854930283948, 2.4269152259339357, 2.109501367324034, 1.7728369650576483, 1.552161155749852, 1.4137438877924204, 1.3215038888205486], "MOMENTUM_X": [2.1235591819698353e-05, 0.024596120447688434, 0.12718956212166482, 0.22936665783461554, 0.28960914101508095, 0.32363167557612144, 0.3440230040287778], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_60": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999994], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982], "MOMENTUM_X": [1.0648928767355736e-43, -1.6908694530425253e-34, -7.509365664426663e-31, 7.916608018447923e-27, 1.73798296828235e-23, -5.936977193613972e-19, 4.515489496333025e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_790": {}, "NODE_251": {"DENSITY": [1.0, 1.0000000000000007, 1.0000000000017242, 0.9999999981833069, 0.9999981113181793, 0.9998641000152565, 0.9974695653016442], "TOTAL_ENERGY": [2.5, 2.500000000000002, 2.5000000000060343, 2.4999999936415733, 2.499993389621454, 2.4995243841568935, 2.4911539812481114], "MOMENTUM_X": [3.3165847272990995e-19, 5.609068165987667e-16, -2.061459435626541e-12, 2.129265830187768e-09, 2.2475032519577327e-06, 0.00016153319471543375, 0.002995165169473987], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_202": {}, "ELEMENT_950": {}, "ELEMENT_1706": {}, "NODE_91": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, -4.5084209867761393e-39, 1.2983448820200394e-35, -1.4043595492144306e-30, 6.864210928719424e-27, 1.9544345297441692e-23, -3.404317984040839e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_166": {}, "ELEMENT_147": {}, "NODE_417": {"DENSITY": [1.0000002446624559, 0.9988837954554942, 0.9734532852960817, 0.8935466891604215, 0.803168203708774, 0.7329276760312319, 0.6816337680011721], "TOTAL_ENERGY": [2.5000008563186533, 2.4960958304568113, 2.4082368328338983, 2.1443325085491436, 1.8671974051697977, 1.6672021896763878, 1.5294833852634642], "MOMENTUM_X": [-3.015514712173082e-07, 0.0013015971595892158, 0.031089247978280766, 0.11862485593800039, 0.20514846987174162, 0.26243638317572676, 0.29842322251935716], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1024": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999996, 0.12500000000122277], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999986, 0.25000000000342376], "MOMENTUM_X": [1.0234002642466372e-42, 2.1075271113598647e-36, -6.431567450315877e-31, 3.8505492767472717e-26, -9.680446735975263e-22, -6.652250882416815e-17, 1.4909268190849532e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1288": {}, "NODE_999": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000032574, 0.12499998614295292], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000017, 0.25000000000091205, 0.2499999612002715], "MOMENTUM_X": [-4.112490252250888e-35, -1.597701696926364e-30, -6.423348009643625e-25, 4.3086607904613495e-21, 6.02774041794194e-17, -3.850401685534375e-14, -1.3794481309945168e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_226": {"DENSITY": [1.0, 1.0, 0.9999999999999389, 1.000000000123115, 0.9999998087534119, 0.9999730669059923, 0.999212123656486], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999786, 2.500000000430902, 2.499999330637023, 2.4999057355255974, 2.49724347738691], "MOMENTUM_X": [-4.646741829535369e-21, -1.5944559903394813e-16, 7.599419225085626e-14, -1.4104607687790232e-10, 2.181212851291672e-07, 3.133796312142571e-05, 0.0009278493056421378], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1095": {}, "ELEMENT_89": {}, "ELEMENT_1774": {}, "NODE_700": {"DENSITY": [0.12499999460662906, 0.12581974638458565, 0.2519954069668822, 0.26025397292927155, 0.2994969542230029, 0.37378592317529635, 0.4566762575738056], "TOTAL_ENERGY": [0.24999998489856215, 0.2523090643694333, 0.8061415877422622, 0.8194739215965081, 0.8997523933339919, 0.9177557853756143, 0.9565136197241568], "MOMENTUM_X": [-5.4337418381765984e-09, 0.000764496321423547, 0.2252987313851455, 0.22887088973099928, 0.28076855896367875, 0.34601346688927204, 0.42374541425830037], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1328": {}, "ELEMENT_1272": {}, "ELEMENT_807": {}, "NODE_808": {"DENSITY": [0.125, 0.12500000000027758, 0.12499999597768262, 0.12504380302352844, 0.1930319193289201, 0.2676139279882852, 0.2727302263457936], "TOTAL_ENERGY": [0.25, 0.25000000000077716, 0.2499999887375116, 0.2501227033770798, 0.5160545927924853, 0.8826822397300236, 0.9060992504134313], "MOMENTUM_X": [-5.9409550092984204e-18, 2.7252919722474795e-13, -4.850138672100561e-09, 5.0334434916351545e-05, 0.11433040678836315, 0.250456340071956, 0.26028254279922247], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_718": {}, "NODE_538": {"DENSITY": [0.6772604687435423, 0.5121137642617052, 0.473008172331731, 0.45339954275519767, 0.440800147819027, 0.4346374049668112, 0.42870877675774055], "TOTAL_ENERGY": [1.5148152445265464, 1.1268039671907006, 1.0387248391784267, 0.9961126470519602, 0.971636705431104, 0.9570299209388695, 0.9462996502173848], "MOMENTUM_X": [0.2816160291073411, 0.3757658533246583, 0.3892175504644447, 0.39208642021733753, 0.3921840221228192, 0.3939062499108945, 0.39354098790937136], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_238": {}, "ELEMENT_1055": {}, "NODE_70": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999999], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999964], "MOMENTUM_X": [-7.265658221409032e-44, -5.268901569796155e-35, -2.686278993811334e-31, -2.0253391052076198e-27, 2.915507528653704e-23, -1.4202349044067961e-19, 1.1541461612749753e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1002": {}, "ELEMENT_637": {}, "ELEMENT_1336": {}, "ELEMENT_562": {}, "NODE_653": {"DENSITY": [0.12502550625898576, 0.23614136757434687, 0.2758809255038469, 0.35786404201967664, 0.4474437030848665, 0.4465096097089761, 0.4124469412675215], "TOTAL_ENERGY": [0.25007144838828876, 0.7215587046581194, 0.8477548435893751, 0.9293078263975335, 0.9467508072341179, 0.9499318743477678, 0.9352817261524708], "MOMENTUM_X": [3.084558311264571e-05, 0.19308734591871957, 0.24804155617554416, 0.33584764753982105, 0.41309147556782577, 0.4132128158976479, 0.38164000379354224], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1038": {}, "NODE_633": {"DENSITY": [0.12844613101831692, 0.29594361172178224, 0.33330741363000543, 0.4488545261120484, 0.4507295021088199, 0.4070826616867616, 0.42840257793398356], "TOTAL_ENERGY": [0.2599371172356668, 0.9935000943598021, 0.8694080588640873, 0.959275660617611, 0.950809397750221, 0.9341374679812682, 0.9428030174219197], "MOMENTUM_X": [0.003784384407708745, 0.3013510816789691, 0.2999881983334676, 0.4179303194881778, 0.41700383212833464, 0.3771680626552621, 0.3967352221856744], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_998": {}, "ELEMENT_67": {}, "NODE_893": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000018213, 0.12499999670320429, 0.12510500839523966, 0.2371745721217005], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000051004, 0.24999999076897234, 0.25029429612983856, 0.7403210339071423], "MOMENTUM_X": [1.181756887920688e-27, 7.194449456433126e-23, -7.258146302819049e-18, 1.857503474839162e-13, -4.2059367341263e-09, 9.6897272100283e-05, 0.20441885465607407], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1764": {}, "ELEMENT_1680": {}, "NODE_1096": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006], "MOMENTUM_X": [0.0, 1.4476442400874267e-38, 1.814310520181801e-34, 8.6086279273934e-31, -1.8442395459134657e-25, -3.0985254187280217e-21, 1.4186882476121445e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_358": {}, "ELEMENT_1375": {}, "NODE_779": {"DENSITY": [0.12500000000000924, 0.12499999984601019, 0.12500027575483968, 0.14320645496824624, 0.28284254988665675, 0.26867659340780353, 0.2708205573099102], "TOTAL_ENERGY": [0.25000000000002587, 0.2499999995688285, 0.2500007721302919, 0.3082419149272094, 0.969653440668877, 0.8842071376018532, 0.865941267210132], "MOMENTUM_X": [-1.0303521090449024e-14, -2.6634016676322734e-10, 4.5516166790180053e-07, 0.026437740975918562, 0.28433931706995424, 0.25190756778522816, 0.24906089442965462], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_602": {"DENSITY": [0.22908347382231026, 0.3824436216787322, 0.46173046343148916, 0.4183309550856293, 0.42353082589569435, 0.43043652414479927, 0.4235863713855917], "TOTAL_ENERGY": [0.6760700496311156, 0.907420753355135, 0.958820508879908, 0.9355843617774087, 0.9398708099831545, 0.9433617363209524, 0.9408933269327384], "MOMENTUM_X": [0.17869180722860312, 0.3523957146921993, 0.4304958196491528, 0.3884356775655097, 0.39353276318274344, 0.39983521008699163, 0.3932344339085709], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_788": {}, "ELEMENT_561": {}, "NODE_575": {"DENSITY": [0.35421142026327984, 0.4377251041674048, 0.38911402182183025, 0.4074700924396802, 0.40131079011669235, 0.3960906111891957, 0.40092310058166836], "TOTAL_ENERGY": [0.9610327678493047, 0.9127777900159286, 0.8873397359530139, 0.8957055936907798, 0.8866818449500382, 0.8847444638379309, 0.8855028942712523], "MOMENTUM_X": [0.35514557928505525, 0.42080222894896074, 0.378412225897528, 0.40047581199486676, 0.39504176035365907, 0.39121342537153325, 0.3965926522641033], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1913": {}, "NODE_626": {"DENSITY": [0.1469082830452474, 0.2984837756205846, 0.4000604504739925, 0.44968738624905447, 0.4172839113343202, 0.4268662607313908, 0.4254630210852991], "TOTAL_ENERGY": [0.3223566725662018, 0.9133817021078419, 0.9331292961478411, 0.9469842043085084, 0.9349438198775707, 0.937852521107504, 0.9373906382463515], "MOMENTUM_X": [0.03355846322130525, 0.2824514156862847, 0.3704798879916629, 0.4143284738359796, 0.3847715564718798, 0.3931076516488387, 0.3916786480291857], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_352": {"DENSITY": [0.9999999999999567, 1.00000000134813, 0.9999985246322929, 0.9996354584750068, 0.9919154014193748, 0.9540981162753317, 0.8867615210144646], "TOTAL_ENERGY": [2.499999999999848, 2.5000000047184545, 2.499994836218752, 2.4987243500080756, 2.4718076994201614, 2.342425998972214, 2.1218306024366718], "MOMENTUM_X": [-9.567100508781067e-14, -1.5768735655079594e-09, 1.7736984604947706e-06, 0.00043158112705480906, 0.009518522042761594, 0.05281526719366302, 0.12472087968685795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1211": {}, "ELEMENT_404": {}, "ELEMENT_1043": {}, "ELEMENT_284": {}, "ELEMENT_1678": {}, "ELEMENT_481": {}, "NODE_45": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000056, 0.9999999999975501], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000019, 2.499999999991424], "MOMENTUM_X": [1.9699575937660035e-35, -9.635712194586369e-30, -4.534986831173397e-26, -2.0960892342086656e-22, -1.86150035399667e-18, -6.052804232481836e-15, 2.654707484712658e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_282": {}, "NODE_1014": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999829, 0.12500000003861775], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999523, 0.25000000010812967], "MOMENTUM_X": [-6.761564580891648e-41, 7.057376026784248e-34, 2.841522833129522e-29, -1.1595060750196596e-24, 2.2254239461852455e-20, -2.438776105258761e-15, 4.316009728966647e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1040": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000031006], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000017, 0.2500000000008682], "MOMENTUM_X": [3.847304922169043e-41, 5.5801327016852995e-34, -5.8247151278784235e-30, -3.213256041516197e-25, 4.402852431320032e-21, 1.2455685036174524e-18, 3.6105239109578747e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_160": {}, "NODE_628": {"DENSITY": [0.12585489248182904, 0.3029479405209435, 0.30596325793724816, 0.4478580083589884, 0.47287852747133435, 0.39078972949070245, 0.4224453911255917], "TOTAL_ENERGY": [0.25241265757555287, 1.0569823077906129, 0.8335362383225854, 0.9628493776717548, 0.9546067514649614, 0.9225944830521625, 0.9381925062207652], "MOMENTUM_X": [0.000865689651775898, 0.32052373528526795, 0.2670312542501919, 0.4163338437403536, 0.4338848503393051, 0.3587910418069495, 0.38842788638710773], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1765": {}, "ELEMENT_1494": {}, "ELEMENT_223": {}, "ELEMENT_838": {}, "ELEMENT_9": {}, "ELEMENT_1554": {}, "NODE_469": {"DENSITY": [0.999721857850118, 0.9562330364728837, 0.8354654075180983, 0.723824731934693, 0.6507699114893207, 0.6033324977301258, 0.5707604263768573], "TOTAL_ENERGY": [2.499026739729719, 2.349907097159803, 1.9630354714381995, 1.6402428571506913, 1.447420185579163, 1.3299911205296007, 1.2526086493406543], "MOMENTUM_X": [0.0003432296851754297, 0.0501878125591842, 0.17399061051353007, 0.2677096123605416, 0.316752776439572, 0.34290735511679776, 0.3581802198538243], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_661": {}, "ELEMENT_1743": {}, "ELEMENT_1917": {}, "ELEMENT_1659": {}, "ELEMENT_1322": {}, "ELEMENT_888": {}, "ELEMENT_1642": {}, "NODE_382": {"DENSITY": [0.9999999999385031, 0.9999997372844428, 0.9996994122490436, 0.9911205437123312, 0.9468061610817493, 0.8703439654977586, 0.796849777567109], "TOTAL_ENERGY": [2.4999999997847597, 2.49999908049589, 2.498948121439756, 2.4690502449376543, 2.317989754188693, 2.0700407126046967, 1.8468333748657584], "MOMENTUM_X": [-1.9574687700594848e-11, 3.1422444629488457e-07, 0.0003543388766487153, 0.010425931892157615, 0.060780994870941296, 0.14085433868111738, 0.2091731103838684], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_919": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000002387, 0.12499999978389313, 0.12500120537480386, 0.14547666640497683], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000006684, 0.24999999939490086, 0.2500033751376141, 0.31641409309081264], "MOMENTUM_X": [-4.6737145694942326e-29, 1.4063360423356773e-23, -1.0796553994123335e-18, 2.87155315281772e-14, -3.683324402623957e-10, 1.7274847168404032e-06, 0.029735893408224856], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1732": {}, "NODE_391": {"DENSITY": [1.0000000000011298, 1.0000001053726784, 0.9999352234276849, 0.9955922994574576, 0.9603111377214849, 0.8827762882595768, 0.8022615527824337], "TOTAL_ENERGY": [2.500000000003954, 2.5000003688043955, 2.4997732917065703, 2.484605088081806, 2.3633581572094258, 2.1086662997210843, 1.8614483420192705], "MOMENTUM_X": [-7.984874744472167e-13, -1.195933908564624e-07, 8.185022807674659e-05, 0.005204226455585591, 0.04526463575687971, 0.12723373079213238, 0.20309696689826856], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_283": {}, "ELEMENT_916": {}, "NODE_294": {"DENSITY": [1.0, 0.999999999999906, 1.0000000003347704, 0.9999997207883644, 0.9999360012898837, 0.9980756325062401, 0.9835490434416739], "TOTAL_ENERGY": [2.5, 2.499999999999671, 2.5000000011716965, 2.49999902275947, 2.4997760122484878, 2.4932708190630626, 2.442830038377787], "MOMENTUM_X": [-1.3012553005104452e-17, 1.0015738036136071e-13, -3.91887118535553e-10, 3.3304382896563745e-07, 7.571726263891693e-05, 0.0022724341516218967, 0.01925577392228817], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_796": {"DENSITY": [0.125, 0.12500000000187586, 0.12499997070058048, 0.12548009011852132, 0.24473958826903477, 0.250363335291997, 0.27342497713109837], "TOTAL_ENERGY": [0.25, 0.2500000000052525, 0.24999991796164003, 0.2513488432080442, 0.7714558804512436, 0.786147049482667, 0.9059516195364244], "MOMENTUM_X": [-2.033672262744492e-18, 1.819490551727067e-12, -2.997281202070726e-08, 0.000421285677120677, 0.21176534560327565, 0.21254796369113285, 0.26078725511952056], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_746": {"DENSITY": [0.125000000001151, 0.12499991385771207, 0.12686363870787692, 0.26468363514192905, 0.2599819232830654, 0.27567795419989066, 0.315214469379571], "TOTAL_ENERGY": [0.25000000000322287, 0.24999975880170638, 0.25529359690073755, 0.8731391882984716, 0.834145070556649, 0.8758341916543024, 0.8957600207781273], "MOMENTUM_X": [-1.1224663508668762e-13, -1.208073745273945e-07, 0.0018950872605604857, 0.249144398756515, 0.2323050050071871, 0.2554297653173202, 0.292843653521507], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_421": {"DENSITY": [1.0000001217516543, 0.9993622238736265, 0.9808303037192861, 0.9077400617396432, 0.8122830055921652, 0.7352661321585439, 0.6796624748597003], "TOTAL_ENERGY": [2.5000004261308115, 2.497768653960286, 2.4335086025501838, 2.1895571832539633, 1.8928499799749692, 1.6716027291082503, 1.5219300345522453], "MOMENTUM_X": [-1.5799727373065456e-07, 0.0007561852149979096, 0.022426096072919996, 0.10286921183392973, 0.19567197461061192, 0.25952469904838993, 0.2989392261219528], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1067": {}, "NODE_738": {"DENSITY": [0.12499999999996655, 0.12499999051982738, 0.12528050736484503, 0.2645317733834841, 0.23734269227672766, 0.28204944943448423, 0.29679024632956647], "TOTAL_ENERGY": [0.24999999999990638, 0.24999997345552033, 0.25078750335836525, 0.8781177482826159, 0.7114112855924717, 0.9301699548732253, 0.8857758180753541], "MOMENTUM_X": [-1.3479037074260522e-14, -1.3084678978144419e-08, 0.0002877447727186854, 0.2537030991925786, 0.18337588855068807, 0.272688547535209, 0.2737435825590815], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1513": {}, "ELEMENT_1401": {}, "ELEMENT_1863": {}, "ELEMENT_1261": {}, "ELEMENT_211": {}, "NODE_1080": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999996], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999986], "MOMENTUM_X": [0.0, -5.257284620046291e-40, -3.007873455014553e-36, 4.139059811817673e-31, 2.077945571643464e-26, -4.783070264062739e-22, -4.901597722831379e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1821": {}, "ELEMENT_1174": {}, "NODE_1022": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001268, 0.12499999989812621], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000356, 0.24999999971475348], "MOMENTUM_X": [5.819002341565876e-37, 9.857543954100965e-32, 1.33287820436158e-26, -2.6465069271092554e-23, -1.5339639680972587e-18, 1.984336902990659e-14, -2.0384801888927764e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1700": {}, "ELEMENT_1609": {}, "ELEMENT_549": {}, "NODE_80": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999981], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999993], "MOMENTUM_X": [4.943972545867349e-42, -3.1320656493999395e-34, -4.677716304387546e-31, 1.1312699201314014e-25, 4.4906884801722445e-22, -2.510441445835969e-18, 1.9214907476813124e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_881": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.12500000000073053, 0.12499998530896436, 0.12550935020086051, 0.27813620779393655], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999994, 0.25000000000204553, 0.24999995886510765, 0.2514327133670034, 0.9531355682800864], "MOMENTUM_X": [5.515822135159521e-27, 8.453783717106481e-22, -2.9176864587976215e-17, 8.766440520366463e-13, -1.9396478506480036e-08, 0.0005086532468852906, 0.2805882823964276], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_921": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001787, 0.12499999978250127, 0.1250006781202176, 0.1460754221345524], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000005007, 0.24999999939100356, 0.25000189878760565, 0.31858519630489696], "MOMENTUM_X": [6.095705400115368e-28, -3.092753845362201e-23, -1.603322512642524e-18, 3.222601983729473e-14, -3.8897780006954444e-10, 1.16506156295638e-06, 0.030925874129574055], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_625": {}, "ELEMENT_1626": {}, "ELEMENT_1639": {}, "ELEMENT_248": {}, "ELEMENT_866": {}, "ELEMENT_1977": {}, "ELEMENT_26": {}, "ELEMENT_144": {}, "ELEMENT_1739": {}, "ELEMENT_940": {}, "ELEMENT_1940": {}, "ELEMENT_1902": {}, "ELEMENT_1631": {}, "ELEMENT_240": {}, "ELEMENT_1843": {}, "NODE_140": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000002078, 1.000000000054212], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.500000000000727, 2.5000000001897407], "MOMENTUM_X": [-1.2072542135666105e-34, 1.2812146659575036e-28, -3.7786429536960354e-24, -3.374844569054788e-20, 3.1438222006456455e-16, -2.5840139218342123e-13, -5.704377563540064e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1474": {}, "ELEMENT_944": {}, "NODE_340": {"DENSITY": [1.0000000000021125, 1.0000000036739933, 0.9999955378531008, 0.9993658514875984, 0.9891312525703054, 0.9478670737935395, 0.8821999838706127], "TOTAL_ENERGY": [2.5000000000073945, 2.5000000128589783, 2.499984382538379, 2.4977812298536795, 2.462146906944379, 2.3215115142923377, 2.107379041959842], "MOMENTUM_X": [2.3023001357316895e-12, -4.5782676229738536e-09, 5.4128732966801e-06, 0.0007515546929127933, 0.012708084678802311, 0.05932030227452393, 0.12843907561899034], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1907": {}, "NODE_313": {"DENSITY": [1.0, 0.9999999999998719, 1.0000000006601502, 0.999999703764903, 0.9999031286858283, 0.9971237119858953, 0.9772789451817079], "TOTAL_ENERGY": [2.5, 2.499999999999552, 2.500000002310526, 2.4999989631773993, 2.499660968099401, 2.4899465065023847, 2.421247901461648], "MOMENTUM_X": [-2.184143784812457e-17, 1.5203829441708297e-13, -7.927745092628371e-10, 3.61067379812342e-07, 0.00011591981887813984, 0.003424255710381006, 0.026674135461861717], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1511": {}, "ELEMENT_288": {}, "NODE_584": {"DENSITY": [0.27175083032775216, 0.4206492178306153, 0.4652130611042649, 0.3874293543278346, 0.43801978992583823, 0.4264021288441293, 0.41306940055628416], "TOTAL_ENERGY": [0.8587065245326381, 0.8873556733340665, 0.9718135551210298, 0.9163223566843811, 0.9416819758215265, 0.9392351245492115, 0.9335559962164269], "MOMENTUM_X": [0.2527126215266424, 0.37499370634979307, 0.4342622298054806, 0.3546201966952447, 0.4014083368613123, 0.39046772913101635, 0.3772112826127373], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_236": {"DENSITY": [1.0, 1.0, 0.9999999999999655, 1.0000000000591025, 0.9999999503339775, 0.9999890413376489, 0.9995853479016126], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999998797, 2.5000000002068594, 2.4999998261689282, 2.4999616449125224, 2.4985490102682624], "MOMENTUM_X": [-1.0409590552340583e-22, -1.2982515068739959e-18, 3.9976687568652643e-14, -6.881856904551722e-11, 5.895648213349887e-08, 1.2953140745327642e-05, 0.0004899549660397235], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_789": {"DENSITY": [0.12500000000000003, 0.12499999998519443, 0.12499994405536108, 0.12832932637357897, 0.27760269573250707, 0.25694192193258203, 0.26788000248889754], "TOTAL_ENERGY": [0.25000000000000006, 0.24999999995854436, 0.249999843354959, 0.2595674135055999, 0.94485281898425, 0.8212758399915555, 0.8673377949727387], "MOMENTUM_X": [-1.029221739593809e-16, -3.262782449735356e-12, -1.3145845534994988e-07, 0.0036232187149752085, 0.27602862601414735, 0.22704599242346135, 0.24716514361321942], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_478": {"DENSITY": [0.9984518997756362, 0.9148841863452516, 0.7764056700458866, 0.6748899542324402, 0.6130456995741451, 0.5732896433437661, 0.5455949265135331], "TOTAL_ENERGY": [2.494588550562202, 2.213152789429903, 1.7883917113624934, 1.5095394355295282, 1.353177278542721, 1.2578363320475545, 1.194460956405189], "MOMENTUM_X": [0.0021522134208759747, 0.0945074523930323, 0.226697053787832, 0.30203422991357687, 0.33862634864786945, 0.35782902920765597, 0.36880324829476374], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_297": {}, "NODE_450": {"DENSITY": [0.9999143757758232, 0.9733945445969798, 0.8728498776436656, 0.766519029080419, 0.6913703916345791, 0.6403429791313692, 0.6041636989537388], "TOTAL_ENERGY": [2.4997003303097043, 2.4081011563379486, 2.0792649525056257, 1.76185607824153, 1.555749905798906, 1.4241357452670165, 1.3345061233425437], "MOMENTUM_X": [4.5328805583687266e-05, 0.03137542538939353, 0.1394377669523313, 0.23635178001028545, 0.2920289943807241, 0.3237667645564231, 0.34305619530992865], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_230": {"DENSITY": [1.0, 1.0, 0.9999999999999981, 1.0000000000059164, 0.9999999976464982, 0.9999979624587056, 0.9998724929199437], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999942, 2.5000000000207088, 2.4999999917627447, 2.499992868613819, 2.4995537536645824], "MOMENTUM_X": [-4.4843002643123576e-24, 9.402065877874058e-20, 2.0690184327624904e-15, -7.074599879656585e-12, 2.9259385212866873e-09, 2.4201074830530375e-06, 0.00015092870100362786], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1127": {}, "ELEMENT_430": {}, "ELEMENT_1343": {}, "ELEMENT_74": {}, "ELEMENT_1883": {}, "ELEMENT_1463": {}, "ELEMENT_198": {}, "NODE_608": {"DENSITY": [0.17849882267755754, 0.3260238498557699, 0.45189004215104117, 0.43810061893933394, 0.4094336728870645, 0.43706901998419406, 0.42485356360831056], "TOTAL_ENERGY": [0.45133395905547147, 0.8855946859010911, 0.9674536733781252, 0.9385545848162165, 0.9369062267388465, 0.9454868728596143, 0.9406206464652946], "MOMENTUM_X": [0.08936847845941909, 0.2992451313365282, 0.4233895749633435, 0.40370342508178103, 0.38010311978843486, 0.40461585917696435, 0.3932390983255501], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_347": {}, "ELEMENT_1856": {}, "NODE_1056": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000061026], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.2500000000017088], "MOMENTUM_X": [4.780207073356298e-40, 3.0619992037347465e-33, -1.511852957343085e-32, -6.097290374006808e-25, -2.794348242373525e-21, 3.639886984727065e-17, 4.759765420311358e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_257": {"DENSITY": [1.0, 1.0000000000000004, 1.0000000000009803, 0.9999999989125905, 0.9999982746080254, 0.9998712830642131, 0.9975890777243], "TOTAL_ENERGY": [2.5, 2.5000000000000013, 2.5000000000034315, 2.4999999961940675, 2.499993961134402, 2.499549520680708, 2.4915712212548575], "MOMENTUM_X": [6.020267024955647e-20, -1.4709806672355642e-16, -1.1525157481917404e-12, 1.2825863503720905e-09, 2.0330229391579574e-06, 0.00015196727343096545, 0.002845247371894395], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_408": {}, "NODE_400": {"DENSITY": [1.0000000026939324, 0.9999706401983733, 0.9967384603554842, 0.9650266412485677, 0.888364923585325, 0.8045195546695016, 0.7379545155902754], "TOTAL_ENERGY": [2.5000000094287627, 2.4998972429108797, 2.488603842802511, 2.3794753073436263, 2.1271975468713955, 1.8696444814364275, 1.6789212306100831], "MOMENTUM_X": [1.548910019763367e-10, 3.460236171701813e-05, 0.0038522852596943593, 0.04046425264758271, 0.12286011908921479, 0.2026083286334339, 0.2575350703518919], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1005": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006192, 0.1249999990901686], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001733, 0.24999999745247195], "MOMENTUM_X": [1.5694264691738717e-38, -3.335766754316184e-32, 5.287041903944108e-28, -3.846028642671189e-24, -5.293944728722823e-18, 7.370212173024273e-14, -1.4604447950242187e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_542": {"DENSITY": [0.5417734832361939, 0.4502592565539499, 0.42595709266997417, 0.4142735225820915, 0.41475550247855003, 0.41057320127554414, 0.4096883035376787], "TOTAL_ENERGY": [1.1815534259974758, 0.9879654781156756, 0.9366712312808296, 0.9188236011710136, 0.915213089982586, 0.9097518576112004, 0.9076145776837959], "MOMENTUM_X": [0.39958239595988787, 0.40914416827726935, 0.3990293962133509, 0.39424417682123236, 0.3984481228027458, 0.39593298440989244, 0.39616417369558793], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_293": {}, "ELEMENT_206": {}, "ELEMENT_626": {}, "NODE_12": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000024], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000009], "MOMENTUM_X": [-2.9374755799201675e-42, -1.4556035084605992e-33, -9.363292113896013e-30, -2.0099670732707325e-27, -2.6243593022383126e-22, -4.651559844216259e-20, -3.153348806298495e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_914": {}, "NODE_751": {"DENSITY": [0.12499999999998158, 0.12499999154951669, 0.1251501566656465, 0.22676968014236865, 0.250224344734764, 0.2790012795829488, 0.2889587325820695], "TOTAL_ENERGY": [0.24999999999994849, 0.24999997633864843, 0.25042094694680833, 0.6811696683398982, 0.7845424843829072, 0.92488607845707, 0.877852845747944], "MOMENTUM_X": [-9.660260819780571e-15, -9.286209343869327e-09, 0.00013698802362681366, 0.1791628578291175, 0.21226792085556712, 0.27037164288391047, 0.26688515187210393], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1826": {}, "ELEMENT_983": {}, "NODE_826": {"DENSITY": [0.125, 0.12500000000000003, 0.12500000000458691, 0.1249999193506459, 0.12717652052117231, 0.2986865142315399, 0.23633996960189768], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000128433, 0.24999977418199035, 0.2562101062147411, 1.0656697678680367, 0.7114022445643671], "MOMENTUM_X": [3.8230556752742805e-22, -6.277752633738177e-17, 5.688879713645214e-12, -1.1033346079092166e-07, 0.002414276505267824, 0.3208676317081684, 0.1835421792040221], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1669": {}, "NODE_976": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000744, 0.12499999993178582, 0.12499998530122551], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000208, 0.24999999980900023, 0.24999995884294213], "MOMENTUM_X": [-3.74184586317059e-34, 5.529899029125637e-28, 4.4356609669129455e-23, -2.2476638921008544e-19, 6.417923427753847e-15, -6.737378698497058e-11, -1.4832674412032783e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_611": {}, "NODE_258": {"DENSITY": [1.0, 1.0, 0.9999999999999628, 1.0000000000726155, 0.999999986381996, 0.9999892620931197, 0.9995007920495401], "TOTAL_ENERGY": [2.5, 2.5, 2.49999999999987, 2.500000000254154, 2.499999952336987, 2.499962417551166, 2.498253195483602], "MOMENTUM_X": [-8.461112641861299e-23, 1.8278794763736495e-18, 4.5041759658201566e-14, -8.751039647415637e-11, 1.704971698929656e-08, 1.2861157285106883e-05, 0.0005953362073660151], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_578": {}, "NODE_147": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000004439, 0.9999999995577857, 0.9999998292010613], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.5000000000015534, 2.4999999984522496, 2.499999402203776], "MOMENTUM_X": [-1.219179050665458e-28, -1.2717737371315452e-23, 4.155736119961314e-21, 2.9852469546235227e-16, -5.312104149227346e-13, 5.210770032805612e-10, 2.0279536882956988e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_307": {}, "ELEMENT_1488": {}, "NODE_912": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.1250000000001629, 0.12499999723828559, 0.12502519521016472, 0.1930394654707043], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.2500000000004561, 0.2499999922671999, 0.25007058100197005, 0.5143340816012095], "MOMENTUM_X": [9.591678242548497e-26, -2.1407645208601373e-21, -6.7719630772187385e-18, 2.2583968162200832e-13, -4.5489446662715646e-09, 3.815402468263845e-05, 0.11405936993930338], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_153": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999889, 1.000000000016469, 0.9999999916984664], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999614, 2.5000000000576423, 2.4999999709446334], "MOMENTUM_X": [1.0186891655901749e-31, 9.788766486432868e-27, 3.1115180653421797e-22, -2.9215149227071867e-19, 1.2188027848681253e-14, -1.9019320914201507e-11, 1.000876408099428e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1454": {}, "ELEMENT_1931": {}, "ELEMENT_1466": {}, "NODE_648": {"DENSITY": [0.12553932405801393, 0.27097163052888357, 0.30240113195385576, 0.4069741363449579, 0.4506683854313733, 0.4180224708017465, 0.425836589357793], "TOTAL_ENERGY": [0.2515178017848936, 0.892329602884654, 0.873203245356174, 0.9328728983417458, 0.9504204613939506, 0.9341422892818242, 0.9380832718429072], "MOMENTUM_X": [0.000485473589992471, 0.255854116967974, 0.2753155584684351, 0.376047904222219, 0.4161347329140163, 0.38513182030500365, 0.3923753343699212], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_614": {}, "NODE_637": {"DENSITY": [0.1295751990147238, 0.28580781487954976, 0.345695993047406, 0.4429696359180948, 0.4341318606372427, 0.417242421003996, 0.4306927993097209], "TOTAL_ENERGY": [0.26334986122170717, 0.938304839343065, 0.9042627885785885, 0.9458072579389659, 0.9433324840181735, 0.9337126418774431, 0.9398180735974245], "MOMENTUM_X": [0.00542713247231708, 0.27797924337570035, 0.31853830474289635, 0.4085778573629963, 0.40071882699491934, 0.3842350959379856, 0.3966099470112263], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1615": {}, "NODE_541": {"DENSITY": [0.6962480297791778, 0.5017556097945485, 0.4608326503299608, 0.44077711461185604, 0.4311430777456497, 0.42568378554291886, 0.421278815301996], "TOTAL_ENERGY": [1.5629718123738323, 1.087782078515904, 1.000641963063196, 0.9647516049519679, 0.9464783164077527, 0.936054560326931, 0.9289449576023987], "MOMENTUM_X": [0.2840465115124141, 0.38521656113120806, 0.39790701966624165, 0.3985897397075893, 0.3991285644093148, 0.3995827746385226, 0.3990451555189922], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_605": {"DENSITY": [0.24561062390623897, 0.40946197025440273, 0.4452474340091628, 0.4228267054188856, 0.4350340347365973, 0.42386850480335203, 0.42724944679442334], "TOTAL_ENERGY": [0.7508114421485625, 0.918080430922874, 0.9484099813379864, 0.94131761086676, 0.9441690609068099, 0.9383335805911732, 0.9375166622836704], "MOMENTUM_X": [0.20967489688441637, 0.37992700044003147, 0.41818035034851436, 0.3988658665746774, 0.4110662524930795, 0.4020244845827763, 0.4063980467957015], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_801": {"DENSITY": [0.12499999999999975, 0.12500000000106135, 0.12499996749414632, 0.12549753410548078, 0.2419917657870382, 0.2576359624984114, 0.26831785042796896], "TOTAL_ENERGY": [0.24999999999999933, 0.25000000000297173, 0.24999990898362506, 0.251398521030067, 0.7555557803385007, 0.826754979845561, 0.8791554154236959], "MOMENTUM_X": [2.4717929924315377e-16, 1.1386402029552835e-12, -3.2986755540016916e-08, 0.000460275640514979, 0.20578448354728612, 0.22866753086947622, 0.2502896054067561], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_483": {}, "NODE_986": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000108, 0.12499999999406247, 0.12499995407849299], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000305, 0.24999999998337497, 0.24999987141980043], "MOMENTUM_X": [-2.741950820122181e-34, -1.629956892021399e-30, -4.4921092821416537e-26, 7.237171317730001e-20, 3.5254889980002847e-16, -1.917618998776972e-12, -6.617524781647356e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_86": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 1.0000000000004392], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.500000000001536], "MOMENTUM_X": [-7.104091236140985e-39, 2.2752086480877424e-32, -8.353079422331981e-28, -1.4965360039567185e-23, -4.909841225042429e-21, 5.961149637815397e-16, -5.196226079452259e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_950": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000029773, 0.12499999533364504, 0.12507147494591697], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999994, 0.2500000000008336, 0.24999998693420666, 0.250200265329806], "MOMENTUM_X": [3.2255449553087526e-32, -6.643562270273714e-27, -2.6322334457709257e-22, -1.9060947077007443e-17, 3.016021312227027e-13, -5.433993817339246e-09, 7.410916244225594e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_747": {"DENSITY": [0.12500000000115757, 0.12499985074771736, 0.1276701938005585, 0.265864885102213, 0.26182232427582225, 0.27561806013952694, 0.31893301318136086], "TOTAL_ENERGY": [0.2500000000032413, 0.24999958209396644, 0.25763521502142994, 0.8766817074860533, 0.8438640053853518, 0.87109772517692, 0.8963086129762069], "MOMENTUM_X": [-1.0425710933334486e-13, -1.9769854267334938e-07, 0.002893847469359266, 0.24919542932836503, 0.23557578845513547, 0.25372278319341013, 0.2956231619702523], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_217": {}, "NODE_182": {"DENSITY": [1.0, 1.0, 1.0, 0.999999999999994, 1.0000000000082474, 0.9999999951391285, 0.9999985736402356], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999979, 2.5000000000288667, 2.4999999829869513, 2.499995007744804], "MOMENTUM_X": [-8.840057479990275e-28, 1.3272009268496603e-23, 1.0200001347947854e-18, 6.927728277768528e-15, -9.623450216503128e-12, 5.8151821707507195e-09, 1.6885372028122265e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_810": {"DENSITY": [0.125, 0.12500000000033834, 0.12499999590362228, 0.12503852177427582, 0.1925954778712806, 0.2680037219629706, 0.2724275224004959], "TOTAL_ENERGY": [0.25000000000000006, 0.25000000000094746, 0.24999998853014285, 0.25010790568451347, 0.5143395475648193, 0.8852969199313224, 0.9050808768893566], "MOMENTUM_X": [-9.753399687219279e-18, 2.937136178684297e-13, -5.102182029964483e-09, 4.514782772157637e-05, 0.11410244561887738, 0.2517171866366024, 0.2600474746926933], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_802": {}, "NODE_264": {"DENSITY": [1.0, 1.0, 1.0000000000000004, 1.000000000014488, 1.0000000089176382, 0.9999952447994218, 0.9996884192130979], "TOTAL_ENERGY": [2.5, 2.5, 2.500000000000002, 2.5000000000507088, 2.500000031211733, 2.499983356848149, 2.498909636020133], "MOMENTUM_X": [-3.244544758470529e-23, 4.415815471615137e-19, 4.1416747743503344e-15, -2.3705887109841316e-11, -7.463375563970765e-09, 6.058149120979133e-06, 0.00037482963686467506], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_735": {"DENSITY": [0.1250000000061361, 0.12499988666720328, 0.13566589047324223, 0.28328677937022895, 0.26719923523758504, 0.2854337558124048, 0.34675534620923604], "TOTAL_ENERGY": [0.2500000000171811, 0.24999968266784298, 0.2824433808139819, 0.971491602388171, 0.8658321355639088, 0.87491275660212, 0.9084168595357195], "MOMENTUM_X": [4.168763016546635e-12, -2.4635735351458403e-07, 0.01420716054080991, 0.28533843903493256, 0.24602092576074835, 0.26315370732427423, 0.321846059988555], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_461": {"DENSITY": [0.999992214592923, 0.9843402491840133, 0.8923607918165977, 0.7722343206843763, 0.6867418716214556, 0.6312158900298783, 0.5932697762988609], "TOTAL_ENERGY": [2.499972751455682, 2.4456121251980774, 2.1402599493576986, 1.7760743450127616, 1.540897511892655, 1.3987253079758624, 1.3062070799340812], "MOMENTUM_X": [8.218801657041615e-06, 0.01856847371504184, 0.11986389035732598, 0.23173901816234382, 0.2957055630777628, 0.32952491660228067, 0.34890262127197263], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1499": {}, "NODE_833": {"DENSITY": [0.125, 0.12500000000000444, 0.12499999994181174, 0.12499999157672356, 0.1315586050614413, 0.28410449889781714, 0.2602339374608704], "TOTAL_ENERGY": [0.25, 0.25000000000001243, 0.24999999983707286, 0.24999997641444188, 0.26935165416168083, 0.980106413507851, 0.8413981645168466], "MOMENTUM_X": [-9.769984157574772e-20, 2.404919641398958e-15, -4.94360071141282e-11, -1.3907255187983576e-07, 0.007974041196283924, 0.2888478956465441, 0.23479792650207332], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1735": {}, "ELEMENT_232": {}, "ELEMENT_515": {}, "NODE_250": {"DENSITY": [1.0, 1.0000000000000013, 1.000000000001448, 0.9999999988251651, 0.9999978613091037, 0.999840163086858, 0.9970810131807452], "TOTAL_ENERGY": [2.5, 2.5000000000000044, 2.5000000000050675, 2.4999999958880776, 2.4999925145920034, 2.499440617425799, 2.4897973237999214], "MOMENTUM_X": [6.305557665541732e-19, 9.879091055373465e-16, -1.924379366965048e-12, 1.5201958315850222e-09, 2.5683562739264685e-06, 0.00018967042423339393, 0.0034381285591359384], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_835": {}, "ELEMENT_365": {}, "ELEMENT_1045": {}, "NODE_72": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, -2.4328612985037705e-39, 1.653256336492297e-35, -1.3562454485100741e-30, -6.133299945088118e-27, 2.4440301045017186e-23, 7.283552808744589e-20], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_179": {}, "NODE_490": {"DENSITY": [0.992040284616099, 0.855491407480964, 0.7133874340908285, 0.6267531088841475, 0.5755896099219303, 0.5431903388945475, 0.5211148970000846], "TOTAL_ENERGY": [2.4722678409654284, 2.0252163719209832, 1.6121981022590919, 1.387728253403436, 1.2650811501596861, 1.1900117201717209, 1.1399022949780084], "MOMENTUM_X": [0.008745981907628032, 0.15584497977056014, 0.2753215995275806, 0.33059526341743695, 0.35576053773048966, 0.3690343149067073, 0.37697905639378293], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1665": {}, "NODE_896": {"DENSITY": [0.125, 0.125, 0.12499999999999992, 0.1250000000010212, 0.1249999815615593, 0.12529386845084892, 0.23299668047481714], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999998, 0.25000000000285943, 0.24999994837237116, 0.2508246460128363, 0.7110885491906133], "MOMENTUM_X": [2.112040260677186e-26, -4.26606059348347e-22, -8.371744114390718e-17, 8.919591611883414e-13, -1.762777422038504e-08, 0.0002688519275057729, 0.18945557111216504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1875": {}, "NODE_135": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000793, 0.9999999999395915, 0.9999999579361076], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000277, 2.49999999978857, 2.4999998527763796], "MOMENTUM_X": [9.257797887383473e-30, -2.872897234413911e-25, 3.627424176005626e-22, 2.100638830591215e-17, -9.384641085597187e-14, 7.073619471832489e-11, 4.991435845522727e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_188": {}, "ELEMENT_1644": {}, "NODE_373": {"DENSITY": [0.9999999997510428, 0.9999989208539914, 0.9994011081294161, 0.986744090811154, 0.9356657169252648, 0.8607442791755519, 0.7927093850076111], "TOTAL_ENERGY": [2.499999999128649, 2.499996222993388, 2.497904571987476, 2.4538916152547916, 2.2810566849073908, 2.040813721062015, 1.8361160976860207], "MOMENTUM_X": [-1.5175238949984738e-10, 1.2170553988397706e-06, 0.0006986687648128398, 0.015616134243893954, 0.07371925362258674, 0.1515638536463839, 0.21411484889456806], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_306": {"DENSITY": [1.0000000000000133, 1.000000000001179, 0.9999999832880352, 0.9999748062332082, 0.998741616691833, 0.9863169215839621, 0.9466621739380437], "TOTAL_ENERGY": [2.500000000000046, 2.5000000000041265, 2.499999941508125, 2.4999118231090605, 2.4955984024483087, 2.4524034734015516, 2.3175477989920212], "MOMENTUM_X": [1.6572695564103228e-14, -1.4843263659413877e-11, 1.7786752717628487e-08, 2.908108557848009e-05, 0.0014801869608695103, 0.016131578873672864, 0.061524426549224014], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_795": {}, "ELEMENT_1057": {}, "NODE_573": {"DENSITY": [0.34244099671186956, 0.4646028726187178, 0.405709778958891, 0.41450000147513644, 0.43707902108571034, 0.40530110268815234, 0.429256208682907], "TOTAL_ENERGY": [1.0210116460130065, 0.9222840845205873, 0.9281417919863887, 0.9329801141805366, 0.9348481871566322, 0.9252480544176613, 0.9344916686245528], "MOMENTUM_X": [0.3479110029971598, 0.4211204751164062, 0.37509962624811927, 0.38247392138375613, 0.4017789152025635, 0.3734633168697713, 0.3959037652797357], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1016": {}, "NODE_68": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000049], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000178], "MOMENTUM_X": [2.180376096214334e-41, -9.890474238135923e-37, 4.598151030974315e-30, 2.425749182812369e-25, 3.0320914239353288e-22, 2.489769892333992e-18, -6.429244607575775e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_601": {"DENSITY": [0.22940180894628406, 0.37998646391312985, 0.46390833243546603, 0.4171375162622393, 0.42117455729366854, 0.4324017528973636, 0.42216454623521477], "TOTAL_ENERGY": [0.6774161244168421, 0.8968000263265903, 0.9627673336759953, 0.9340808154244651, 0.9394772883409099, 0.9438696169013427, 0.9402086298559104], "MOMENTUM_X": [0.17921486134210246, 0.346902818937634, 0.43289747431998676, 0.38665467670684833, 0.39119503287223556, 0.4012048912308971, 0.39154074486773854], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1519": {}, "ELEMENT_1069": {}, "ELEMENT_890": {}, "NODE_783": {"DENSITY": [0.12499999999999999, 0.1250000000047798, 0.12499990242096155, 0.12714874274242888, 0.2873092211358918, 0.2398193256869679, 0.2684251017876766], "TOTAL_ENERGY": [0.24999999999999994, 0.2500000000133833, 0.24999972677890175, 0.256119270454579, 1.0079691602355279, 0.731327399995901, 0.8748444365839435], "MOMENTUM_X": [1.0880567484688067e-17, 5.296121457788831e-12, -1.1639725665314399e-07, 0.002239410771609104, 0.3020063313857264, 0.1920868410068297, 0.24976254625340272], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1396": {}, "ELEMENT_390": {}, "NODE_225": {"DENSITY": [1.0, 1.0, 0.9999999999999954, 1.0000000000108056, 0.99999999303685, 0.999997058714454, 0.9998441560216641], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999845, 2.50000000003782, 2.4999999756289752, 2.499989705517795, 2.499454588493162], "MOMENTUM_X": [-1.3583642747546477e-23, 4.0377009411377343e-19, 5.17950445009623e-15, -1.2679565668975609e-11, 8.322826823116388e-09, 3.478219182662286e-06, 0.00018418987303584744], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1792": {}, "NODE_1004": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001182, 0.12499999981798116], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000331, 0.24999999949034726], "MOMENTUM_X": [-3.582589435593582e-39, -8.481469706667608e-33, -4.217212170132633e-28, 2.2859499838776392e-23, -8.75939811032634e-19, 1.8804554098353145e-14, -5.476571308513042e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_792": {}, "ELEMENT_1975": {}, "NODE_503": {"DENSITY": [0.9714645901117149, 0.7793583383487698, 0.651132390474353, 0.5826478481094843, 0.5424247671946238, 0.5163345343173052, 0.4987357690423582], "TOTAL_ENERGY": [2.4015581604043916, 1.797775168277766, 1.4479900002007668, 1.2791183005492464, 1.186787448450844, 1.1295199489808407, 1.0909054845205282], "MOMENTUM_X": [0.030835471182519236, 0.22420751498510946, 0.31630789580007923, 0.3535523791971409, 0.36994003373807816, 0.37829473238828354, 0.38349752316937596], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_88": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, -4.305424541865976e-40, 1.8927734168546466e-36, -2.902316310900202e-31, -5.3480135353421194e-27, 9.647790690357437e-24, 1.5272870528634393e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1551": {}, "NODE_423": {"DENSITY": [0.9999999992327875, 0.9999800315259167, 0.9959777772511529, 0.9544485752601966, 0.8618825225178768, 0.7716955043344269, 0.7056794918322231], "TOTAL_ENERGY": [2.499999997314756, 2.4999301115990473, 2.4859500642644066, 2.343570112347995, 2.042818746070216, 1.7721270844031625, 1.588297460693075], "MOMENTUM_X": [2.337756640853104e-09, 2.695217770965728e-05, 0.004764779217183161, 0.051696059825662916, 0.1476822175209176, 0.22901395556580412, 0.27997237014205617], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1157": {}, "NODE_635": {"DENSITY": [0.12847131864789327, 0.29384076384502666, 0.33777327525941825, 0.44619016623086954, 0.448604595427152, 0.41289434144851656, 0.43065960074329607], "TOTAL_ENERGY": [0.260012973632438, 0.9832871158811213, 0.8881619572740015, 0.9503204062324578, 0.952606747150344, 0.9356754186108841, 0.944316291018924], "MOMENTUM_X": [0.003817550807346754, 0.2973558677691576, 0.30935744384257585, 0.41386924287614246, 0.4163854507967596, 0.38275504098904056, 0.3995250926471824], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1839": {}, "NODE_524": {"DENSITY": [0.8363884524816294, 0.6070985393067211, 0.5346180439294773, 0.49686241919934077, 0.4747216130499157, 0.46269281003010426, 0.4529266648755239], "TOTAL_ENERGY": [1.9716756012425367, 1.335174752847359, 1.1662325122372355, 1.085468365040412, 1.0410702728308792, 1.0139770303153353, 0.9948673972102736], "MOMENTUM_X": [0.18587294678699018, 0.3408041824946212, 0.3761536283445464, 0.3850173342334693, 0.38839918616098373, 0.39187607687874254, 0.39280550931907343], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_400": {}, "ELEMENT_635": {}, "ELEMENT_660": {}, "NODE_596": {"DENSITY": [0.22596626063914554, 0.3731295722109094, 0.48103322914215974, 0.40494965666737187, 0.42296891227350814, 0.442825765840438, 0.4139862921991169], "TOTAL_ENERGY": [0.6697207418642697, 0.8686810067229171, 0.9871722105194577, 0.9271466879606629, 0.9446835012632452, 0.9521568748638517, 0.9391688750004105], "MOMENTUM_X": [0.1788619900688128, 0.33475265310562863, 0.45471297392441523, 0.3758037294730744, 0.3954151726137595, 0.413495805299888, 0.38644465687265794], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_692": {"DENSITY": [0.12499994405460171, 0.1330016100270977, 0.2768739413336401, 0.27440629306688463, 0.3287900439540403, 0.4207274191765336, 0.4489238173490381], "TOTAL_ENERGY": [0.24999984335297834, 0.2738701731862661, 0.9318390874695329, 0.8654955638909982, 0.8963437998300412, 0.9389065668040077, 0.9483419098744268], "MOMENTUM_X": [-7.771688849039435e-08, 0.010309573749456975, 0.2696040254841474, 0.2509211330842066, 0.3032834129431606, 0.3893024030552154, 0.4145959255651861], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1019": {}, "NODE_279": {"DENSITY": [1.0, 0.9999999999999761, 1.0000000000877012, 0.9999998989955337, 0.9999741506045325, 0.9990777186435758, 0.9904280190941541], "TOTAL_ENERGY": [2.5, 2.4999999999999156, 2.500000000306953, 2.499999646484394, 2.4999095284249777, 2.496773467633037, 2.4666402665586897], "MOMENTUM_X": [-5.376128949951829e-18, 1.8410011531013128e-14, -1.026548923361065e-10, 1.1866888811303727e-07, 3.0486286298480968e-05, 0.0010889313684293626, 0.01124741029269997], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1643": {}, "ELEMENT_856": {}, "NODE_275": {"DENSITY": [1.0, 1.0, 0.999999999999866, 1.0000000002170606, 0.9999999889018638, 0.9999797055238759, 0.9991473919635238], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999995306, 2.500000000759712, 2.4999999611565262, 2.4999289701724816, 2.497017084083542], "MOMENTUM_X": [-2.2474746444576657e-22, 2.8087299638981146e-19, 1.8535405213048803e-13, -2.8196487435701165e-10, 3.021205128049585e-08, 2.5259873044944237e-05, 0.0010172957878452804], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_215": {"DENSITY": [1.0, 1.0, 0.9999999999999802, 1.0000000000380331, 0.9999999640266574, 0.9999919419099486, 0.9996793843589573], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999316, 2.5000000001331166, 2.499999874093304, 2.4999717968096262, 2.498878022067621], "MOMENTUM_X": [-1.272814063997448e-21, -2.6568763203767253e-17, 2.2881225189225466e-14, -4.274280094319405e-11, 4.0821447856281176e-08, 9.341950017040071e-06, 0.0003765951769575267], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_47": {}, "ELEMENT_1349": {}, "NODE_561": {"DENSITY": [0.27623407910625375, 0.3273677639061779, 0.3398487035871631, 0.35258476317321163, 0.361530167995764, 0.3666181807020273, 0.37332775027585835], "TOTAL_ENERGY": [0.6423154130528359, 0.7451313867643655, 0.7747201991868645, 0.7960329574672277, 0.8131753482825402, 0.8246034273648497, 0.8352808314500715], "MOMENTUM_X": [0.3707447891078037, 0.3964765193555519, 0.3940190081231247, 0.39652932934418206, 0.39805869108785014, 0.3971899629587592, 0.39926709223023493], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_399": {"DENSITY": [0.9999999998880963, 0.9999996951751563, 0.9994234984601496, 0.9854052926625689, 0.9259545899327533, 0.8401024484247821, 0.7664570412391021], "TOTAL_ENERGY": [2.4999999996083373, 2.499998933113716, 2.4979828872905134, 2.449257436808335, 2.248817220996723, 1.9765099044681957, 1.759109998632057], "MOMENTUM_X": [4.193819446964545e-11, 3.95995428605097e-07, 0.0006908670447202259, 0.01726469130827381, 0.08418964459766012, 0.17115595161245878, 0.2359876243740263], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_855": {"DENSITY": [0.125, 0.12499999999999996, 0.12500000000039263, 0.12499999104431848, 0.12510282468907882, 0.2124942260191568, 0.2600488841905421], "TOTAL_ENERGY": [0.25, 0.2499999999999999, 0.25000000000109934, 0.24999997492409307, 0.2502881771863547, 0.6087439724007171, 0.8416110816385761], "MOMENTUM_X": [3.6755577745332164e-21, -3.019949910714003e-17, 1.455970446404547e-13, -9.11732636687656e-09, 0.00010363293358585783, 0.15079593014369788, 0.23452699061920548], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1993": {}, "ELEMENT_1953": {}, "ELEMENT_932": {}, "NODE_744": {"DENSITY": [0.12500000000070272, 0.12499993170702979, 0.1266209797091166, 0.26778363416879336, 0.2537414741047785, 0.2777940594603711, 0.31359006240492193], "TOTAL_ENERGY": [0.2500000000019676, 0.24999980877974104, 0.2545934071676046, 0.89191675073711, 0.7985556073742797, 0.8867097780613825, 0.8941072297837971], "MOMENTUM_X": [2.098440901667299e-13, -9.86509640181853e-08, 0.0015993454340126397, 0.25709456562994604, 0.2186042457789082, 0.25982743961171506, 0.29101126501192764], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_899": {"DENSITY": [0.125, 0.125, 0.12500000000000008, 0.12500000000000003, 0.12499998150560625, 0.12526845227934502, 0.23167940590319275], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000003, 0.2500000000000001, 0.24999994821570234, 0.2507532615858214, 0.7039961821575782], "MOMENTUM_X": [1.4509349429086302e-25, 8.548444900643213e-21, 3.6925310046439326e-17, -3.5359390426260406e-13, -1.7095674282813334e-08, 0.0002467702080329503, 0.18677063777964675], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_943": {}, "ELEMENT_689": {}, "ELEMENT_540": {}, "ELEMENT_274": {}, "ELEMENT_1118": {}, "ELEMENT_485": {}, "ELEMENT_892": {}, "NODE_1067": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000007397], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000020706], "MOMENTUM_X": [2.0027691676459282e-42, 3.588560795819668e-34, 5.5230835823230966e-30, 2.961152290255171e-26, -6.497613613038443e-22, -5.8377269725054434e-18, 1.2752714450454715e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_336": {"DENSITY": [0.999999999999948, 1.0000000004045337, 0.9999993929248826, 0.9998354491771325, 0.9956092823927908, 0.9697270142969358, 0.9129124598965535], "TOTAL_ENERGY": [2.499999999999818, 2.5000000014158688, 2.4999978752380945, 2.499424124147342, 2.484664207480823, 2.3954163723324924, 2.2060438998949845], "MOMENTUM_X": [-7.027700775724322e-14, -4.6524761685037304e-10, 7.131812460456916e-07, 0.0001940313585098959, 0.005171286907960309, 0.035097248423926294, 0.09736310058018202], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_348": {"DENSITY": [1.000000000000001, 0.9999999999518765, 1.000000053945475, 0.9999728491884261, 0.9982074251221309, 0.979994633010611, 0.925855481832325], "TOTAL_ENERGY": [2.5000000000000044, 2.499999999831568, 2.500000188809167, 2.4999049738266317, 2.4937313967519503, 2.430570637744763, 2.248152667321124], "MOMENTUM_X": [2.6956585699207798e-15, 5.1065007948294554e-11, -5.5835797347926674e-08, 3.4379419284798915e-05, 0.002132537965464182, 0.02315938812762361, 0.08282260484186388], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1224": {}, "NODE_375": {"DENSITY": [0.9999999998733805, 0.9999995690524576, 0.9996644054097182, 0.9907198437079651, 0.9461929858726503, 0.8708188995741621, 0.7983163875010392], "TOTAL_ENERGY": [2.4999999995568314, 2.499998491684456, 2.498825649231603, 2.467662000696533, 2.3159748834508878, 2.0716452873353393, 1.8512990060984806], "MOMENTUM_X": [-7.790518903898184e-11, 5.282711999281094e-07, 0.0003994555963674059, 0.010934362825162386, 0.061478806055955446, 0.1402797706428823, 0.20767890170188347], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_898": {}, "ELEMENT_1218": {}, "ELEMENT_1829": {}, "NODE_782": {"DENSITY": [0.125, 0.12500000000088327, 0.12499996783050406, 0.12580738993860185, 0.28468041080264833, 0.23273633587687545, 0.27390780134357534], "TOTAL_ENERGY": [0.25, 0.2500000000024732, 0.2499999099254416, 0.25227651608503066, 0.9885860531634216, 0.690296684917682, 0.9026669239793788], "MOMENTUM_X": [-6.3546488756145896e-18, 1.1857490369141917e-12, -4.1393527358911846e-08, 0.0008231573907798479, 0.29343388640482576, 0.1748436704712192, 0.25931986156919085], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_869": {}, "ELEMENT_993": {}, "ELEMENT_192": {}, "NODE_736": {"DENSITY": [0.1250000000085522, 0.12499938393000767, 0.1390445860819483, 0.27932293646049366, 0.26915738114300436, 0.28726351885196993, 0.3515793262914172], "TOTAL_ENERGY": [0.2500000000239461, 0.24999827500411864, 0.29370213932285955, 0.9473238488492399, 0.8756563761576862, 0.8756359657258531, 0.9093933704436967], "MOMENTUM_X": [2.0183172598449815e-12, -6.556111726567327e-07, 0.01980183042561255, 0.2750756069149871, 0.2494165670913524, 0.2643592774124276, 0.3255968868881047], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_645": {"DENSITY": [0.12541940116334674, 0.2751766021472186, 0.29437360949120045, 0.4041845258759296, 0.4641730745522775, 0.42465271085229916, 0.4147953123701648], "TOTAL_ENERGY": [0.25117846871776023, 0.9162049228226595, 0.8442251687716047, 0.938743922515729, 0.9558863400339409, 0.9425648536552494, 0.9373437467115382], "MOMENTUM_X": [0.00035962518116250603, 0.26728899847988796, 0.26236815713109196, 0.37611962950439076, 0.42918210855991157, 0.3936587551763242, 0.38423338036386423], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_691": {}, "NODE_775": {"DENSITY": [0.12500000000000136, 0.1249999999077861, 0.12500087433177945, 0.14131498527723962, 0.29011266461102436, 0.26101158099380317, 0.2714247794348412], "TOTAL_ENERGY": [0.25000000000000383, 0.24999999974180107, 0.2500024481739245, 0.30149197508094516, 1.010990488790538, 0.8399076336577341, 0.8681204656658608], "MOMENTUM_X": [-1.7610804691206987e-15, -1.5610693146034424e-10, 1.0651767793639435e-06, 0.022665539905811855, 0.3004371675778729, 0.2346836307308752, 0.2499242994812283], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_359": {}, "NODE_1007": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125000000000103, 0.124999998704086], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.2500000000002884, 0.24999999637144082], "MOMENTUM_X": [4.473787419153956e-37, -6.7793614273818e-32, 7.840429583830247e-27, -5.889223974818886e-22, -7.94195835891776e-18, 1.2287243030695395e-13, -2.1769844892255584e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1619": {}, "ELEMENT_891": {}, "NODE_843": {"DENSITY": [0.125, 0.12500000000000022, 0.12499999999699724, 0.12499996291120521, 0.1259748268711412, 0.26010465986857045, 0.25026625527131596], "TOTAL_ENERGY": [0.25, 0.2500000000000006, 0.24999999999159223, 0.24999989615138876, 0.2527492484108241, 0.853102474244001, 0.7871207622712655], "MOMENTUM_X": [2.1171919454706532e-20, -3.2508104740954123e-16, -9.68232403371896e-13, -4.5100460451179406e-08, 0.000912702037080073, 0.24268306987315963, 0.21322303955900862], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1353": {}, "NODE_299": {"DENSITY": [1.0, 0.9999999999999746, 1.0000000001886136, 0.9999998852714276, 0.9999555909666797, 0.9984145660881291, 0.984978604018812], "TOTAL_ENERGY": [2.5, 2.499999999999911, 2.500000000660148, 2.499999598450033, 2.4998445721486284, 2.4944551384518596, 2.447765714095967], "MOMENTUM_X": [-4.769242224185447e-18, 2.4768543849492747e-14, -2.2433001976866992e-10, 1.4044429414793655e-07, 5.2742990011411166e-05, 0.0018754358776980195, 0.01761986441701758], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_378": {}, "ELEMENT_734": {}, "ELEMENT_1763": {}, "NODE_298": {"DENSITY": [1.0000000000000007, 0.9999999999994517, 1.0000000003654603, 0.9999969429061364, 0.9997345326543313, 0.995265549257226, 0.9719150040775493], "TOTAL_ENERGY": [2.500000000000002, 2.4999999999980798, 2.5000000012791097, 2.4999893001926554, 2.4990709947759817, 2.483465917747554, 2.4028832480285165], "MOMENTUM_X": [7.651305137009121e-16, 9.123142373926069e-13, -4.691124512633757e-10, 3.6127406712714952e-06, 0.0003144981414178738, 0.005591553363017668, 0.032660519039619806], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_419": {"DENSITY": [1.000000112411502, 0.9993623180947967, 0.9804342587113488, 0.9065083677505554, 0.8115847190838812, 0.7353605030835046, 0.6801610211896733], "TOTAL_ENERGY": [2.500000393440271, 2.4977689934293634, 2.432147979747717, 2.185578460447448, 1.8907753208712217, 1.671832962716211, 1.5231656294749767], "MOMENTUM_X": [-1.62565536360409e-07, 0.000759613804671569, 0.02288735515023678, 0.1040141762261271, 0.19595291074931295, 0.2590111234065072, 0.2981676844383572], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_155": {}, "ELEMENT_860": {}, "ELEMENT_1921": {}, "ELEMENT_161": {}, "NODE_74": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, -9.515215629683027e-39, -4.1099592327184984e-35, 7.672091697689008e-31, 4.08707391595143e-26, -6.130474032382553e-23, -1.2022419347003345e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1230": {}, "NODE_6": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000009], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000003], "MOMENTUM_X": [-2.4563277699196458e-42, -1.1194790705095164e-33, -2.040717972788791e-30, 6.2584908673171895e-27, 3.3413351456378005e-23, -4.165520048301805e-20, -1.106544093643638e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_374": {"DENSITY": [0.9999999997842209, 0.9999996350888145, 0.9996162665043661, 0.9895837015924346, 0.9425151069152093, 0.8669902164892354, 0.7961396517907767], "TOTAL_ENERGY": [2.4999999992447735, 2.499998722811695, 2.4986572315525506, 2.463719692704341, 2.3036630649460657, 2.059555113998379, 1.8447554629187382], "MOMENTUM_X": [-1.7765270045937562e-10, 4.970117371656177e-07, 0.00045635293277026227, 0.012179904317482865, 0.0651308899725315, 0.14340122427762833, 0.20887190797357824], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1054": {}, "ELEMENT_558": {}, "ELEMENT_603": {}, "ELEMENT_1887": {}, "ELEMENT_1870": {}, "ELEMENT_1049": {}, "NODE_687": {"DENSITY": [0.1249999577916739, 0.13048305561979742, 0.28428038784364656, 0.2650874792023627, 0.32627238899884764, 0.4167498459433647, 0.4635876302082725], "TOTAL_ENERGY": [0.24999988181673352, 0.26601467609970136, 0.9745854299391014, 0.8174990291381601, 0.9068257474077543, 0.937063663813974, 0.9579072769492253], "MOMENTUM_X": [-5.631733709088974e-08, 0.006392424654914371, 0.28779326527894267, 0.2320345344571476, 0.3043992652144526, 0.38599485254935817, 0.4296084720152069], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_280": {"DENSITY": [1.0, 1.0000000000000004, 0.9999999999979092, 1.000000002373885, 0.9999989003758345, 0.9998630036368749, 0.9969877277232172], "TOTAL_ENERGY": [2.5, 2.5000000000000018, 2.4999999999926827, 2.500000008308598, 2.4999961513181224, 2.499520546629282, 2.489471612810645], "MOMENTUM_X": [1.389880009468143e-20, -5.8307604893606815e-16, 2.4425582020210076e-12, -2.799493056716489e-09, 1.3247804389843827e-06, 0.00016368650035508667, 0.003583333258403206], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1000": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000003, 0.125000000000888, 0.12499997883949135], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000248646, 0.24999994075058443], "MOMENTUM_X": [-7.291998379715734e-35, -2.5647838185308897e-29, -9.180624998605744e-25, 6.1259706132896264e-21, 5.2339626198515686e-17, 5.178289553937242e-13, -2.25205623755459e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_263": {"DENSITY": [1.0, 0.9999999999999953, 1.0000000000158111, 0.9999999834402449, 0.9999925739416735, 0.999625183641173, 0.9947881782097096], "TOTAL_ENERGY": [2.5, 2.4999999999999836, 2.500000000055339, 2.4999999420408576, 2.499974008911787, 2.4986883938842595, 2.481802023587695], "MOMENTUM_X": [5.19525529946247e-19, 1.9857300951104453e-16, -1.874799894014903e-11, 1.9609123394575178e-08, 8.840790402226298e-06, 0.0004451829545664439, 0.006154244970960237], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_612": {"DENSITY": [0.17842931199551845, 0.33050463997727403, 0.44435963376642756, 0.4460069106846618, 0.410409895352326, 0.43174457342047545, 0.42667768357061264], "TOTAL_ENERGY": [0.4503849210091021, 0.9081458654841186, 0.9508461740110035, 0.9466444480607298, 0.9369196245342948, 0.9435942708088908, 0.9417862278511565], "MOMENTUM_X": [0.08828977114497175, 0.30932208431495783, 0.41273935195594547, 0.4127107327871887, 0.38131356319983556, 0.40030805259570124, 0.39568579451845864], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_918": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001882, 0.12499999982133661, 0.12500129331055504, 0.14594706544647393], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000005274, 0.24999999949974253, 0.2500036213793102, 0.31802967983385755], "MOMENTUM_X": [-8.481558060382309e-29, 4.843437458133585e-24, -6.579203989696885e-19, 2.0263512700363244e-14, -2.869813739669087e-10, 1.8710560592707665e-06, 0.030225600844637615], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1756": {}, "NODE_441": {"DENSITY": [1.000000373606864, 0.9985513078693844, 0.9665156783785767, 0.8705856718533861, 0.7698022180157053, 0.6975044411061863, 0.6475857561121603], "TOTAL_ENERGY": [2.5000013076243617, 2.494933763203649, 2.3845593200830524, 2.0711191439951313, 1.7688872074571473, 1.5692491152371242, 1.4396612845477335], "MOMENTUM_X": [-4.3815407104676547e-07, 0.0017383108980079302, 0.039170987414929526, 0.14180858708663377, 0.2335521980653051, 0.28817759513405344, 0.3199696114518908], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_399": {}, "NODE_697": {"DENSITY": [0.12499999729425186, 0.1258678980715092, 0.2532441923064027, 0.25815893399838585, 0.30126502076102657, 0.37567337802589834, 0.4547626801552114], "TOTAL_ENERGY": [0.24999999242390555, 0.25244493391207234, 0.8121502516125181, 0.8091884332163308, 0.908629209461177, 0.9171947940307815, 0.9530695063147971], "MOMENTUM_X": [-3.043255776194675e-09, 0.0007845488250244896, 0.22698107525114916, 0.22427134084826672, 0.2843879012847464, 0.3473518898509305, 0.42109954156594337], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1420": {}, "NODE_973": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000425, 0.12499999996009759, 0.12500015964395805], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000001193, 0.2499999998882733, 0.2500004470042888], "MOMENTUM_X": [-4.090907385845251e-34, 1.1175044059381388e-28, 6.788671251952733e-24, -2.038523855719617e-20, 2.8267414500991535e-15, -3.846484178383687e-11, 9.339998912681332e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_802": {"DENSITY": [0.12499999999999961, 0.12500000000228942, 0.124999947933938, 0.12574293639514267, 0.24639461005618352, 0.25837238432431175, 0.26656241990146695], "TOTAL_ENERGY": [0.24999999999999892, 0.2500000000064103, 0.2499998542150699, 0.2520925601454027, 0.7757426293833363, 0.8301661244618433, 0.868745188810359], "MOMENTUM_X": [3.893370086178004e-16, 2.1594809089171634e-12, -5.528972555274667e-08, 0.0007178320731753903, 0.21228448551401774, 0.22949296536251587, 0.2458321307570969], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_185": {}, "ELEMENT_560": {}, "ELEMENT_740": {}, "ELEMENT_1714": {}, "NODE_144": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999993, 1.0000000000012172, 0.9999999990717999, 0.9999996562113512], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999998, 2.50000000000426, 2.4999999967512982, 2.499998796739963], "MOMENTUM_X": [-9.072443782928063e-28, -3.4949595409819446e-24, -9.942197584408655e-21, 8.106697540468952e-16, -1.35918627356932e-12, 1.0492706118781006e-09, 3.962482460125057e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1598": {}, "ELEMENT_1039": {}, "NODE_266": {"DENSITY": [1.0, 0.9999999999999979, 1.000000000014909, 0.9999999824150222, 0.9999925116245582, 0.99963531088688, 0.995020353984411], "TOTAL_ENERGY": [2.5, 2.4999999999999933, 2.5000000000521827, 2.49999993845258, 2.4999737908005857, 2.498723823085348, 2.482610774806768], "MOMENTUM_X": [7.604028169226022e-19, 1.323597053288037e-15, -1.7497429452046343e-11, 2.0576887453338628e-08, 8.831306888420428e-06, 0.0004310200533038144, 0.005872237015694155], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_984": {}, "ELEMENT_1195": {}, "ELEMENT_1411": {}, "ELEMENT_76": {}, "ELEMENT_1785": {}, "NODE_493": {"DENSITY": [0.992421584374334, 0.8533997383890723, 0.7118927816640276, 0.6267201085297842, 0.5768373976385396, 0.5448263268349528, 0.5223205267233172], "TOTAL_ENERGY": [2.4735940311419555, 2.0183814363134682, 1.6080232080166188, 1.387246575627548, 1.2667850407570873, 1.1926272951726304, 1.142563471796458], "MOMENTUM_X": [0.008717985530604433, 0.15668887581981453, 0.2766386890177435, 0.3308391610235694, 0.3558916613575538, 0.36914957500982337, 0.3767342823940165], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_785": {"DENSITY": [0.12499999999999989, 0.12500000000798672, 0.1249998943296731, 0.1284907903561645, 0.2804760217690464, 0.2524814742175081, 0.2697806977922757], "TOTAL_ENERGY": [0.24999999999999972, 0.25000000002236283, 0.24999970412318595, 0.2600351083746013, 0.960325361883895, 0.7959803926700333, 0.8775644707530442], "MOMENTUM_X": [1.2898625601494877e-16, 1.1381276643659949e-11, -1.707051768185549e-07, 0.0037257825637383077, 0.281486917941338, 0.2169163075635966, 0.25087261527616317], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_887": {"DENSITY": [0.125, 0.125, 0.1250000000000017, 0.1249999999877035, 0.12499995523800045, 0.1271310502999695, 0.27374374113731803], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000048, 0.2499999999655699, 0.24999987466640008, 0.25606524549459564, 0.9256749393523385], "MOMENTUM_X": [-1.0588474628614766e-24, 6.348691258136974e-20, 5.36116921600817e-16, -5.697654978885582e-12, -8.648806144475197e-08, 0.002169239082888977, 0.269292191686471], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_563": {}, "ELEMENT_434": {}, "ELEMENT_1805": {}, "ELEMENT_1786": {}, "ELEMENT_685": {}, "NODE_95": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000429, 0.9999999999901534], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000001497, 2.4999999999655365], "MOMENTUM_X": [9.3836989133964e-36, 1.6442131774932484e-29, 2.494061615326626e-25, 3.4001696080149443e-23, 1.0688084216564984e-17, -5.05384992037084e-14, 1.2208969957630548e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_867": {}, "NODE_776": {"DENSITY": [0.12500000000000286, 0.12499999987109005, 0.1250009004359326, 0.14102024141243308, 0.29126856067476237, 0.2600756390365055, 0.27119640587776234], "TOTAL_ENERGY": [0.25000000000000805, 0.24999999963905217, 0.2500025212638007, 0.30051094893218844, 1.018371898541859, 0.834803694391937, 0.8663985179409996], "MOMENTUM_X": [-3.581078814218027e-15, -2.2486152613044351e-10, 1.0928544165303927e-06, 0.02234963727662393, 0.30351330000376175, 0.23275641542340614, 0.24928276596817586], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_246": {"DENSITY": [1.0, 1.0, 0.9999999999999418, 1.0000000000870646, 0.9999996194744651, 0.9999573914862917, 0.9989204146353785], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999997966, 2.500000000304726, 2.4999986681609503, 2.4998508735831573, 2.496223392502655], "MOMENTUM_X": [6.229135926289316e-22, -8.541731972197877e-17, 6.851261322582295e-14, -1.0041168478156931e-10, 4.4829709707631715e-07, 5.029521316461647e-05, 0.0012749516423588058], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1487": {}, "NODE_931": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000427, 0.12499999996901612, 0.12499997031004113, 0.1294247263582046], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000118, 0.24999999991324504, 0.24999991686790632, 0.26283317394046546], "MOMENTUM_X": [-9.50815305448136e-29, 4.2466600030116906e-24, 1.674176375700473e-19, 2.3399117629285923e-15, -1.8978344154363527e-11, -1.361985983934681e-07, 0.0050312009237699715], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_50": {}, "ELEMENT_1228": {}, "ELEMENT_72": {}, "ELEMENT_1540": {}, "NODE_948": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125000000000002, 0.12500000001326927, 0.12500964427843655], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000056, 0.25000000003715406, 0.2500270078532469], "MOMENTUM_X": [2.230730003061154e-34, -7.481027114166549e-28, 4.4013251201236355e-24, -6.84363059210712e-19, 9.776547256133886e-15, -5.1791680133323e-10, 1.4979278398224145e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1580": {}, "ELEMENT_1357": {}, "NODE_312": {"DENSITY": [1.0000000000000024, 1.0000000000007319, 0.9999999925565112, 0.9999871833372834, 0.9992560520878162, 0.9904464784912558, 0.9565232685294924], "TOTAL_ENERGY": [2.5000000000000084, 2.5000000000025615, 2.4999999739477885, 2.499955142027953, 2.4973971596746076, 2.4667063023745173, 2.3506051136233994], "MOMENTUM_X": [2.880297390872029e-15, -1.418524415535687e-12, 8.620638856535567e-09, 1.5095540193101155e-05, 0.0008781439288965834, 0.011223649638396248, 0.05000992132134968], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_332": {}, "ELEMENT_1173": {}, "ELEMENT_1910": {}, "ELEMENT_1529": {}, "ELEMENT_1801": {}, "ELEMENT_91": {}, "ELEMENT_1390": {}, "NODE_615": {"DENSITY": [0.1841962079248251, 0.33143930704950003, 0.44320115445338504, 0.4308883699684895, 0.41840128460492565, 0.4294037328642387, 0.42096551630865087], "TOTAL_ENERGY": [0.4764694124716019, 0.8967530221303506, 0.9513850392054379, 0.9387015900823394, 0.9339001520651551, 0.9387622385770956, 0.9355483290984007], "MOMENTUM_X": [0.09898141477258955, 0.3052006368517721, 0.4105122940663207, 0.3968813579491985, 0.3852899897424144, 0.3952701421267173, 0.38735502894045765], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_71": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000009, 0.9999999999979937], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000315, 2.4999999999929776], "MOMENTUM_X": [3.2583152671734826e-36, -9.892026886561217e-31, 7.276343913761077e-26, -2.3010219382865297e-22, -1.8958216873938386e-18, -1.0616614477140474e-14, 2.4571530827847353e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_488": {}, "ELEMENT_880": {}, "NODE_939": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999986, 0.1250000000022053, 0.12499996111043087, 0.1257548492285079], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999964, 0.2500000000061748, 0.24999989110923226, 0.2521248304137742], "MOMENTUM_X": [2.6392927727466774e-31, -1.474008311389944e-26, -7.550959992712947e-22, -1.474676516337347e-16, 2.1906853202691828e-12, -4.1749814519775164e-08, 0.0006670153420767285], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1042": {}, "NODE_566": {"DENSITY": [0.39480540067256076, 0.37437102190462507, 0.36111954922124334, 0.38191250133719035, 0.36693301514932825, 0.3742952265595633, 0.3749802399372933], "TOTAL_ENERGY": [0.9135635241569693, 0.8322286951687897, 0.8236546761554885, 0.8405983105790744, 0.8315312285233192, 0.8371261105662915, 0.8388606975349738], "MOMENTUM_X": [0.4251630388031135, 0.39586434869817094, 0.3820350119740792, 0.40504775839708396, 0.3886160924294801, 0.3955706024537207, 0.3958438110146987], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1771": {}, "ELEMENT_506": {}, "NODE_26": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000109], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000386], "MOMENTUM_X": [1.233189332282801e-40, 2.3541104982277173e-33, 1.048966780092529e-29, 5.54294946823523e-27, -9.008915453445576e-22, -1.5098721617764715e-18, -1.3041142573775267e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_381": {}, "NODE_696": {"DENSITY": [0.12499999963450391, 0.12573480089891662, 0.25536106287523974, 0.25285093757764965, 0.30029446634370127, 0.37640222319461636, 0.46464461697298776], "TOTAL_ENERGY": [0.24999999897661096, 0.2520680726521686, 0.8257011975855337, 0.7833834423571331, 0.9123069475814235, 0.9161880172248686, 0.9606059696804877], "MOMENTUM_X": [-1.0874417337634507e-09, 0.0006479606809632852, 0.23280135541655833, 0.21384950091045557, 0.2847172761973828, 0.34782808535750787, 0.43151359166744446], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_528": {}, "NODE_728": {"DENSITY": [0.12499999999967416, 0.12499962479347534, 0.13210174930300125, 0.29649893930375304, 0.2536143669440482, 0.27923641951566086, 0.3377453906419912], "TOTAL_ENERGY": [0.24999999999908776, 0.24999894942445178, 0.2710887428404672, 1.0539078187311386, 0.7969026002054291, 0.8682050499114748, 0.9069777920267778], "MOMENTUM_X": [-2.609227426583554e-13, -4.67787132976327e-07, 0.009170084367212204, 0.3186148074605711, 0.21949812779442066, 0.25682792024206597, 0.31440830510692386], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_577": {"DENSITY": [0.3521688353151298, 0.4372238303270776, 0.3926517730007504, 0.40212163775408266, 0.40699598685818555, 0.3919180991984426, 0.40133866980026095], "TOTAL_ENERGY": [0.9591296065357664, 0.9010786066597034, 0.8964418955748419, 0.8921605043505223, 0.8910768287981116, 0.8817763209338999, 0.885062410113023], "MOMENTUM_X": [0.35473131780704553, 0.4172458107347141, 0.3849655003201978, 0.39490401599297636, 0.4020152071491777, 0.38871440239583166, 0.39915296029138364], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_731": {"DENSITY": [0.1250000000034265, 0.12500013810329855, 0.13452618836459618, 0.2898762709950599, 0.25917484249773154, 0.2869005268317005, 0.34538917613187126], "TOTAL_ENERGY": [0.25000000000959427, 0.2500003866915721, 0.2786873119167845, 1.008682150364032, 0.8200349798791493, 0.8831143695788404, 0.9078982961581279], "MOMENTUM_X": [4.6347727795991695e-12, 1.6049619593006002e-08, 0.012122423868511362, 0.29999664031244805, 0.22809659908332622, 0.26623361718525274, 0.32038627518652646], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1459": {}, "NODE_295": {"DENSITY": [1.0000000000000042, 0.9999999999982917, 1.000000001584637, 0.9999939420205016, 0.999527994617801, 0.9928016935161945, 0.9637806411094381], "TOTAL_ENERGY": [2.500000000000014, 2.49999999999402, 2.500000005546228, 2.499978797150269, 2.498348378774339, 2.474889128478718, 2.3752066284058064], "MOMENTUM_X": [5.296766084472594e-15, 1.5988820552901317e-12, -1.9817896717278906e-09, 6.949564282034945e-06, 0.0005532434179327024, 0.0085019614727598, 0.04221301165495343], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_483": {"DENSITY": [0.9988902593794629, 0.9197796514956353, 0.7752980295767559, 0.671195959726103, 0.6090572096330478, 0.5695195452105528, 0.5424620155794319], "TOTAL_ENERGY": [2.4961191106529887, 2.2290994948252703, 1.7852741411800557, 1.5005059650694588, 1.3444423650286887, 1.2503774821740496, 1.188057420124208], "MOMENTUM_X": [0.0013853457522926935, 0.09106755700495948, 0.22940434076912294, 0.3061566943901149, 0.34151414285952675, 0.35963764268902815, 0.37008636347672563], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1044": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002, 0.12500000000144612], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000056, 0.25000000000404926], "MOMENTUM_X": [-1.0810381648911731e-39, -1.4083531848908381e-33, -1.6911889926219593e-28, -8.133142004690876e-25, 2.2479876981821858e-20, 5.771951189050175e-17, 9.949658675375535e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1560": {}, "ELEMENT_1603": {}, "ELEMENT_1171": {}, "ELEMENT_1347": {}, "ELEMENT_1761": {}, "NODE_488": {"DENSITY": [0.999437359043742, 0.9321171932237863, 0.7836580290287178, 0.6708648640625614, 0.6046679810537027, 0.5637636741574488, 0.5363833796886784], "TOTAL_ENERGY": [2.498031623971379, 2.2691698766393253, 1.8064860797664983, 1.4949211689988087, 1.3288029962202268, 1.2323037225341957, 1.1702783380802964], "MOMENTUM_X": [0.0007197529385619742, 0.07569802334374522, 0.2183020210511497, 0.30341935006943543, 0.342211997508624, 0.3616373993121873, 0.37256953799862835], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_620": {}, "NODE_1060": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000112], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000313], "MOMENTUM_X": [-2.7357128489013298e-45, -7.974299890423029e-37, 8.085228176943327e-33, -4.068746181616434e-31, 1.7605392205598788e-23, -3.1978669036113954e-19, 1.2925751033373686e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_224": {}, "NODE_94": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.000000000000251, 0.9999999996189718], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000878, 2.4999999986664005], "MOMENTUM_X": [-4.4160644247401355e-33, -1.1335686532398074e-27, -5.685742489164846e-24, 2.6099718427894673e-20, 1.2821864226959628e-16, -3.023103100989815e-13, 4.5062763286021025e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_62": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000007, 1.0000000000003813], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000002, 2.5000000000013345], "MOMENTUM_X": [3.801373837552451e-38, -1.0482916792995992e-30, -6.797150363345925e-27, -3.754509680767922e-24, -3.309962010052304e-19, -8.320854154435042e-16, -4.291862942768966e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_619": {"DENSITY": [0.14272809633982775, 0.301981076077617, 0.3979396927386306, 0.46260144498995576, 0.4149797255322146, 0.42166037392370587, 0.4372625059503874], "TOTAL_ENERGY": [0.30692818601291444, 0.9401963783720465, 0.9320937670210045, 0.9532341369303037, 0.9403227956695518, 0.9385181391775919, 0.9466608306391292], "MOMENTUM_X": [0.025913011293589347, 0.2932377420701342, 0.3692719290255093, 0.4273100131586109, 0.3853126039646758, 0.39000944389347736, 0.4047666142644518], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1898": {}, "ELEMENT_782": {}, "ELEMENT_1517": {}, "NODE_23": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, -6.279017840844697e-38, -8.956644567747852e-34, 2.14878815806483e-30, -5.898610622754778e-26, -1.080680241954151e-21, -1.8522163244226368e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_487": {}, "NODE_680": {"DENSITY": [0.1249997057300026, 0.1501014363109856, 0.2843910213845783, 0.2898932640865792, 0.36488539147331317, 0.4495273799360696, 0.4420710678279787], "TOTAL_ENERGY": [0.24999917604526986, 0.33328083727983804, 0.9661781833195314, 0.8867816619604334, 0.9132513538128051, 0.9530154170719531, 0.9468776040854244], "MOMENTUM_X": [-4.5851852942332125e-07, 0.0378424313290482, 0.2845980170105623, 0.26965153653217533, 0.33778817135427014, 0.4172460472699088, 0.40949483520704044], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_249": {"DENSITY": [1.0, 1.000000000000001, 1.0000000000046523, 0.9999999963368983, 0.9999962152714171, 0.9997610919961942, 0.9961843989167964], "TOTAL_ENERGY": [2.5, 2.500000000000004, 2.500000000016283, 2.499999987179145, 2.499986753479231, 2.499163922990208, 2.486668884487064], "MOMENTUM_X": [1.7753367658851525e-18, 1.1831710287706866e-15, -5.065405879808737e-12, 4.023219704373356e-09, 4.359543323731417e-06, 0.0002799147760357483, 0.004508732726727199], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1086": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000078], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000021], "MOMENTUM_X": [0.0, 8.776025170456449e-38, -2.5500173688850174e-33, -1.555922598636329e-28, -8.303870765847766e-25, 3.133785190424258e-20, 1.3720237848520928e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_980": {}, "ELEMENT_115": {}, "NODE_562": {"DENSITY": [0.4237587383708794, 0.4260007082745918, 0.3796766880778875, 0.4258289809024857, 0.3932003501263114, 0.4037234127993027, 0.41001730386634155], "TOTAL_ENERGY": [1.043615434873318, 0.9108619138848708, 0.8827742821667942, 0.913136154331882, 0.8901791068313013, 0.8969982977140039, 0.8994054059093701], "MOMENTUM_X": [0.4336957135382138, 0.4050933376985604, 0.3606545617696384, 0.4098619107946427, 0.3776790011144217, 0.38900213925428934, 0.39586534674334123], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_600": {"DENSITY": [0.2294678073170237, 0.37890509370647124, 0.46600945625006923, 0.4155603626492729, 0.4196649852296533, 0.4360304271542553, 0.420994131902768], "TOTAL_ENERGY": [0.6777123533569822, 0.8923431015903576, 0.9691550431356393, 0.9315051462148075, 0.9395872868528733, 0.9449337364356355, 0.9392569454562105], "MOMENTUM_X": [0.1793422127374708, 0.34466087256605155, 0.4364732525438684, 0.3846311531244392, 0.3899236647575783, 0.4043058080399556, 0.39018342632359043], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_634": {"DENSITY": [0.12844862871468124, 0.2955051623754373, 0.3348220691774999, 0.447565533686294, 0.4499502511426402, 0.40951451466077865, 0.4300442142867005], "TOTAL_ENERGY": [0.2599445686963788, 0.9913682247140966, 0.8755860902442841, 0.953725170741661, 0.9520430194434899, 0.9344804735202443, 0.9439033470188716], "MOMENTUM_X": [0.003786455254488177, 0.30053121173769515, 0.3030664058905471, 0.4153780052492757, 0.41675524385256, 0.37922040672642193, 0.39839873078383264], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1232": {}, "NODE_208": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999937, 1.0000000000070062, 1.0000000003463392, 0.9999989016399821], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999978, 2.500000000024521, 2.500000001212187, 2.4999961557423713], "MOMENTUM_X": [-3.9596626995771647e-28, -3.189678501503005e-23, 9.422688796108947e-19, 7.534836410345334e-15, -8.495624509905291e-12, -3.3343583268599263e-10, 1.3169289713955671e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_567": {"DENSITY": [0.39479575778985687, 0.3740496998479383, 0.3624459431621824, 0.38055673105326154, 0.3672507807419846, 0.3758554225006116, 0.3735961860254386], "TOTAL_ENERGY": [0.913358092742646, 0.832435769487131, 0.8246968810761748, 0.8392559810880617, 0.8317419111500661, 0.838395619876628, 0.8385690618523446], "MOMENTUM_X": [0.4250222126715894, 0.39568203310167754, 0.383465893929681, 0.40349078753099615, 0.38854465906001817, 0.3968791674858875, 0.3939111552354854], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1853": {}, "ELEMENT_1547": {}, "ELEMENT_1000": {}, "ELEMENT_235": {}, "NODE_520": {"DENSITY": [0.9410674009841964, 0.6954935326207374, 0.5787301393436122, 0.5247109400008394, 0.4947893628294381, 0.4765195954769137, 0.464529432125262], "TOTAL_ENERGY": [2.2992580304898995, 1.5593534687424242, 1.2644772986534012, 1.1413399761637741, 1.078110517179837, 1.0402964204156657, 1.0154764729454304], "MOMENTUM_X": [0.065423473723188, 0.2871153315498697, 0.35545250975400317, 0.3776844329020018, 0.386271225458857, 0.3905367140979551, 0.39314109328154884], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_857": {"DENSITY": [0.125, 0.12499999999999993, 0.12500000000074962, 0.12499998603694622, 0.12516542308246079, 0.22082872126588352, 0.25878188817011594], "TOTAL_ENERGY": [0.25, 0.24999999999999983, 0.2500000000020989, 0.2499999609034533, 0.25046394856155035, 0.6468373336597308, 0.8334036655428336], "MOMENTUM_X": [1.197510952626167e-20, -2.4526794923437554e-17, 5.272660892418613e-13, -1.56786512113282e-08, 0.00017221737312013058, 0.16459119018237311, 0.23060236466826795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1259": {}, "NODE_179": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000001164, 0.9999999999658887, 0.9999998660716575, 0.9999857732175881], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000004072, 2.49999999988061, 2.4999995312508387, 2.499950206634622], "MOMENTUM_X": [9.531842439340514e-25, 7.560544807648347e-21, 2.8566473765060965e-17, -1.244387754890032e-13, 3.662207951423137e-11, 1.5347770101155823e-07, 1.656358439021326e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1605": {}, "ELEMENT_566": {}, "ELEMENT_182": {}, "NODE_1084": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000036], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000094], "MOMENTUM_X": [0.0, 6.960095589219273e-38, -1.8745848835201433e-34, -3.324439258074849e-29, -6.453103942644349e-25, 1.7060795539525728e-20, 4.796186551423889e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_733": {"DENSITY": [0.12500000000457748, 0.12500005416743523, 0.1343867775253679, 0.289737364385203, 0.2603869356916945, 0.2856716042716454, 0.34451500678107494], "TOTAL_ENERGY": [0.25000000001281697, 0.25000015166997946, 0.27825995562117, 1.0086137221741307, 0.8267701775048644, 0.8774339279055589, 0.9068133783925475], "MOMENTUM_X": [5.512036462281499e-12, -4.8007404009306375e-08, 0.012019473487986845, 0.3001500196678529, 0.23091361982578826, 0.2639258613661727, 0.3194758137953514], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_526": {"DENSITY": [0.8327741377613503, 0.6076011538396726, 0.5359791703994481, 0.49838708556085015, 0.47762225433657685, 0.4643378995391093, 0.45440305350975246], "TOTAL_ENERGY": [1.9594657626392205, 1.3371117587340438, 1.1684300839791295, 1.089625237129458, 1.0455179250288653, 1.0174678856639203, 0.9979210597864651], "MOMENTUM_X": [0.18246126466007073, 0.34065333279291254, 0.3749115695434092, 0.38440518214950053, 0.3891478992095575, 0.39175148954446043, 0.39278425324024085], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1807": {}, "NODE_683": {"DENSITY": [0.12500000210275428, 0.12658756017159903, 0.2891895697759094, 0.2485963526461514, 0.3097133667918257, 0.40314015858984026, 0.48993564471032924], "TOTAL_ENERGY": [0.2500000058877119, 0.25450463176195215, 1.005844442161721, 0.7506101003270869, 0.9116228892137719, 0.9277411675467613, 0.9722177265919997], "MOMENTUM_X": [1.3467316088880764e-09, 0.0017117205017869394, 0.2995589882561891, 0.20130034969112406, 0.290821214163813, 0.37085534037297985, 0.45326251818221336], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1933": {}, "ELEMENT_63": {}, "NODE_73": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000001705, 0.9999999998497462], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000005964, 2.499999999474111], "MOMENTUM_X": [-2.0983682906841365e-33, 1.1554528299289656e-30, 1.6269313742532226e-24, 1.867495041833739e-20, 9.927176356684592e-17, -1.9282285020886468e-13, 1.691564339649807e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1423": {}, "ELEMENT_327": {}, "ELEMENT_379": {}, "ELEMENT_1827": {}, "ELEMENT_539": {}, "NODE_627": {"DENSITY": [0.15781936812308564, 0.3022100624835509, 0.41793867558000536, 0.44715332510220784, 0.4232117797568952, 0.43792434176711287, 0.4304157263098115], "TOTAL_ENERGY": [0.36508824357080094, 0.8889731169352235, 0.9394053233266494, 0.9504677809158418, 0.9447913014618275, 0.9513154482206038, 0.9484423547603068], "MOMENTUM_X": [0.05373905432717431, 0.2830708951714601, 0.39033900222207074, 0.41690583577070195, 0.396065008449935, 0.40990013723608026, 0.4031236096058666], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_439": {}, "NODE_665": {"DENSITY": [0.1249995091000062, 0.18671957527051017, 0.28144841910752805, 0.31458522936410827, 0.40953124044902867, 0.4638204416719821, 0.42855449345117924], "TOTAL_ENERGY": [0.24999862556414387, 0.4853088865515137, 0.9256540719080769, 0.8983886847422512, 0.9344031250984569, 0.9571384166853, 0.9426575957924492], "MOMENTUM_X": [9.825835661489688e-07, 0.10180249085312315, 0.2722516541899825, 0.2923931433396716, 0.3792723158742739, 0.4294148246540009, 0.39697039723249855], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1327": {}, "ELEMENT_1746": {}, "ELEMENT_456": {}, "NODE_1028": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000075, 0.12499999999408629], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000205, 0.2499999999834415], "MOMENTUM_X": [-3.04477180145378e-40, 9.103600847814339e-34, -2.811599542507609e-29, 4.38962906499027e-25, 6.070068495786721e-20, 2.7334992518536055e-17, 5.958840056496965e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_574": {}, "NODE_636": {"DENSITY": [0.12861833825992006, 0.29013619186428147, 0.34087474722756317, 0.4443649950991557, 0.44291969943234855, 0.4146617377580774, 0.4309961100690022], "TOTAL_ENERGY": [0.26045793815896623, 0.9644600452996596, 0.9004903985486249, 0.9501325878761658, 0.9502012363327342, 0.9357807732088057, 0.9433834566463424], "MOMENTUM_X": [0.004047160107706113, 0.2893509315871253, 0.3150355316048287, 0.41251231009591227, 0.4114244789368978, 0.38457501304286107, 0.3999137489779702], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1509": {}, "NODE_444": {"DENSITY": [0.9999987792500249, 0.9927369439630285, 0.930773223432074, 0.822081327237177, 0.7303842582025092, 0.6671466878867195, 0.6232229643195444], "TOTAL_ENERGY": [2.499995727397797, 2.474676311683628, 2.2649482737412914, 1.9223001120111973, 1.6581738663468542, 1.4894121437379537, 1.3785740020175663], "MOMENTUM_X": [8.511159673225482e-07, 0.008558287441781429, 0.0782834568803477, 0.18675350103266403, 0.26325239632362446, 0.3071087322435088, 0.33291287555271], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_518": {}, "ELEMENT_965": {}, "ELEMENT_650": {}, "ELEMENT_1135": {}, "NODE_559": {"DENSITY": [0.36108751227898706, 0.3543037120603317, 0.37000462755926355, 0.36614087093635156, 0.3750018200400371, 0.3742254628552561, 0.3784454594716565], "TOTAL_ENERGY": [0.8160363911946193, 0.8117626853367103, 0.8256093436441397, 0.8299704847416864, 0.839594293234661, 0.8427386441148497, 0.848085732148352], "MOMENTUM_X": [0.42375293148075593, 0.3923083171814292, 0.4009461473992199, 0.39272391772222043, 0.39880137345952077, 0.39509058640152334, 0.3969559622531119], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_51": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000002, 0.9999999999992961], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000067, 2.4999999999975353], "MOMENTUM_X": [1.0964297167490607e-36, -2.9344786147484195e-30, -1.7015120218782972e-26, 5.287477802649178e-24, -6.135211817885714e-19, -2.3076168138540955e-15, 8.198593564088684e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_309": {}, "ELEMENT_1277": {}, "ELEMENT_304": {}, "ELEMENT_1559": {}, "ELEMENT_226": {}, "ELEMENT_1287": {}, "NODE_771": {"DENSITY": [0.12499999999999993, 0.12500000001845224, 0.12499963087040258, 0.1323161660568766, 0.30617838890524235, 0.25125992151072346, 0.26464363370634975], "TOTAL_ENERGY": [0.2499999999999998, 0.2500000000516662, 0.2499989664402476, 0.2718019135811222, 1.1044366131863388, 0.7872381486955317, 0.8424564806105979], "MOMENTUM_X": [9.02995433657367e-17, 2.460376266281449e-11, -5.026409836564816e-07, 0.009659608732385494, 0.3347302132188753, 0.21416928881795047, 0.23699590985581356], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_397": {}, "ELEMENT_1522": {}, "NODE_48": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000002, 0.9999999999992079], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000007, 2.4999999999972284], "MOMENTUM_X": [2.9615107833648572e-36, -5.859025064335762e-30, -2.8929671547023403e-26, -2.2003324080925988e-23, -8.725796300534137e-19, -2.5738207124059906e-15, 9.900310111594635e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_476": {}, "NODE_585": {"DENSITY": [0.28593079349607203, 0.4391395890719927, 0.4437147212092953, 0.4016378309624971, 0.44438418916317424, 0.41892822440558825, 0.4243873462587975], "TOTAL_ENERGY": [0.8956319117284113, 0.9039968868630508, 0.9611329057892142, 0.9324940343696929, 0.9488631968635991, 0.9403528998254198, 0.9414768847612829], "MOMENTUM_X": [0.27617493379965524, 0.39841546868287625, 0.4189763518103356, 0.37624694466136493, 0.41582446424783287, 0.39298447622570054, 0.3977010418936466], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1091": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, -7.933089031753737e-41, 1.1958264969201865e-36, -9.163510882651801e-32, 1.1220981345437612e-27, 5.87695910270411e-23, -1.3121765416940457e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_117": {}, "ELEMENT_947": {}, "ELEMENT_951": {}, "NODE_106": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.000000000000604, 0.9999999977304048], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000001, 2.5000000000021148, 2.4999999920564178], "MOMENTUM_X": [-2.5093732170211186e-32, 1.8230333872413866e-26, -3.88579749061819e-23, -3.095561365176827e-19, -4.2114539806770483e-16, -7.182811220184207e-13, 2.736637378789738e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_772": {"DENSITY": [0.12499999999999994, 0.1250000000455821, 0.12499927310994331, 0.13844107466531674, 0.29514640083884053, 0.26056445500516495, 0.264063303453258], "TOTAL_ENERGY": [0.24999999999999983, 0.2500000001276298, 0.24999796471582017, 0.29197784052451814, 1.0467833282811163, 0.8423213989826067, 0.8387693225420317], "MOMENTUM_X": [1.5847684370155567e-16, 4.994279896829315e-11, -8.391722062279765e-07, 0.019548318829899637, 0.31537440944660017, 0.2370944551773724, 0.23720151731915404], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_410": {}, "ELEMENT_478": {}, "ELEMENT_233": {}, "NODE_565": {"DENSITY": [0.3930852534108608, 0.3741022595612517, 0.3613850209926794, 0.3792632434380186, 0.36771904521353904, 0.371767936901232, 0.3759014703070104], "TOTAL_ENERGY": [0.9090204434791463, 0.830023735789563, 0.8224621451275302, 0.8376429771421254, 0.8314141345489623, 0.834330456260901, 0.838579993681808], "MOMENTUM_X": [0.42274018935137236, 0.39567914793974857, 0.3832345502448846, 0.4025721282718537, 0.39004821730318273, 0.39347142735337326, 0.3972047359127898], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_844": {}, "ELEMENT_739": {}, "ELEMENT_30": {}, "ELEMENT_253": {}, "NODE_259": {"DENSITY": [1.0, 1.0000000000000002, 1.0000000000002003, 0.9999999999045049, 0.9999986267987547, 0.9998835852249304, 0.9976766744512818], "TOTAL_ENERGY": [2.5, 2.5000000000000013, 2.500000000000702, 2.4999999996657682, 2.4999951937996614, 2.4995925727245316, 2.491877099950792], "MOMENTUM_X": [1.6598045404763915e-20, -3.0457067969479446e-16, -2.583879888004005e-13, 1.425640931312101e-10, 1.6226119477852285e-06, 0.0001375217129177817, 0.00274202468631274], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1413": {}, "NODE_1082": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999985], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999956], "MOMENTUM_X": [0.0, 8.144149686495784e-39, -6.619001321364788e-35, 2.9359214260657303e-30, -1.5202485187623985e-25, -3.1818059848475853e-22, -2.1481926814771682e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_48": {}, "ELEMENT_153": {}, "ELEMENT_1239": {}, "TIME": [0.030000000000000002, 0.05999999999999999, 0.085, 0.11000000000000003, 0.13500000000000004, 0.16000000000000006, 0.18500000000000008], "ELEMENT_808": {}, "ELEMENT_38": {}, "NODE_494": {"DENSITY": [0.9939132128557066, 0.8576005551612355, 0.71059721038044, 0.6231252590050763, 0.5727220908294944, 0.5405188894397466, 0.5181697799930121], "TOTAL_ENERGY": [2.4787766525509327, 2.0315128170274583, 1.605133800874085, 1.3790325581753935, 1.2576795587754312, 1.183682368659588, 1.1340570875692084], "MOMENTUM_X": [0.007363453085280336, 0.15467357743592255, 0.2797999246348946, 0.3344206125714121, 0.3586080222528036, 0.37093078056473705, 0.37790216265257937], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_559": {}, "ELEMENT_472": {}, "ELEMENT_1850": {}, "ELEMENT_799": {}, "ELEMENT_100": {}, "NODE_411": {"DENSITY": [0.9999999943828354, 0.999850351359285, 0.9915825492569946, 0.9406448435616509, 0.8515700230785214, 0.7695552432205022, 0.7082294669222412], "TOTAL_ENERGY": [2.499999980339926, 2.4994762820191925, 2.4706606073010793, 2.2975272108753817, 2.011858258418907, 1.7679882652593357, 1.5976981384780822], "MOMENTUM_X": [-4.933119952632729e-08, 0.0001778191995204739, 0.009906075092412748, 0.0676053606267244, 0.1592283134847202, 0.23242185658407957, 0.2794975135833405], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1263": {}, "ELEMENT_1501": {}, "ELEMENT_821": {}, "NODE_1020": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001105, 0.12499999985868929], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000003086, 0.24999999960432995], "MOMENTUM_X": [9.660955745062398e-38, -8.872998301048232e-32, 5.6534614804408596e-27, -6.376319503807653e-24, -7.677882576536076e-19, 1.7980852213641917e-14, -2.2195016194254315e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_642": {"DENSITY": [0.12543805409909098, 0.2753273905213238, 0.2940952866936055, 0.40613741405424775, 0.46010505453899103, 0.42406257075658804, 0.4170961138843355], "TOTAL_ENERGY": [0.25123086620967117, 0.9166919046575746, 0.8429585833033404, 0.9441255547339614, 0.9528326461790252, 0.9402543460428503, 0.9374968171244674], "MOMENTUM_X": [0.00036244903093022495, 0.2668906914779735, 0.261535483236598, 0.3791217616867452, 0.4249127709805336, 0.3923237770539217, 0.38593062726349103], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_537": {}, "ELEMENT_8": {}, "ELEMENT_1602": {}, "ELEMENT_1056": {}, "ELEMENT_1938": {}, "NODE_354": {"DENSITY": [1.0000000000036595, 1.0000000097983823, 0.999979124350433, 0.9984753038824147, 0.9818546292806126, 0.9299801853171005, 0.8589292440684927], "TOTAL_ENERGY": [2.5000000000128084, 2.500000034294339, 2.499926936227493, 2.494667742924368, 2.437006081045164, 2.2620669284528945, 2.034458295038274], "MOMENTUM_X": [4.910325352010606e-12, -1.2584315626855327e-08, 2.473045642286468e-05, 0.0018056744846720305, 0.021242323086595325, 0.0792580597234551, 0.1521652630849355], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_676": {"DENSITY": [0.12499977785101049, 0.1484166054045469, 0.2905586596001551, 0.28442793666496546, 0.3642493533587733, 0.4506449523313713, 0.4519887050487424], "TOTAL_ENERGY": [0.24999937798336974, 0.32683785506551694, 0.9989564683494748, 0.8587387066505151, 0.9167088704443337, 0.9511786745623685, 0.9531116585440419], "MOMENTUM_X": [-3.976814761035753e-07, 0.03427736083223247, 0.29768372941184235, 0.2578765034539966, 0.33788901915079966, 0.41722033191880054, 0.4188795465348023], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1098": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006], "MOMENTUM_X": [0.0, 8.635728837020917e-38, 7.746714053091728e-34, -1.3913365000887122e-29, -3.74413991569666e-25, -8.724460627409429e-22, 3.452159631660325e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_568": {"DENSITY": [0.39493186678236164, 0.37325683222295813, 0.36350655611728777, 0.37854327890519124, 0.36840850977777734, 0.3766185157953055, 0.3737433077770529], "TOTAL_ENERGY": [0.9139863535071869, 0.8287843776718445, 0.8266359065175831, 0.8382818359616597, 0.8333091742166335, 0.8394992142499078, 0.8397153058037976], "MOMENTUM_X": [0.4253109751877698, 0.39393098963520223, 0.38498244401021936, 0.40138727337659214, 0.3898257979990751, 0.3975154206898742, 0.39370774369250783], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1275": {}, "NODE_944": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000053, 0.12499999999900324, 0.12499995919345483, 0.12573888085868362], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000144, 0.24999999999720907, 0.24999988574169907, 0.252080757260253], "MOMENTUM_X": [-3.156906380557297e-29, 7.690978707613788e-26, 3.6780335632827236e-20, 1.6462127608805434e-16, -6.429910716273528e-13, -4.367663804618763e-08, 0.000689346352805354], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_43": {}, "NODE_9": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000001], "MOMENTUM_X": [-1.980479215152451e-43, -1.153078899356798e-34, -1.645250551440938e-31, -2.752320284809709e-28, 1.354122890526405e-23, 3.408321929176717e-20, -3.68004867987848e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_174": {}, "NODE_739": {"DENSITY": [0.12499999999988898, 0.12499995711231225, 0.12592215493771328, 0.2727500841714179, 0.23949932815178793, 0.2782074155996379, 0.3057612536200242], "TOTAL_ENERGY": [0.2499999999996891, 0.24999987991451733, 0.2525998092691026, 0.9269756346077773, 0.7259595515441314, 0.9044765377768398, 0.8924504296987031], "MOMENTUM_X": [-4.032104109517686e-14, -4.799779828585108e-08, 0.0008655506760659837, 0.27274552031773747, 0.1900468347558696, 0.2651472384758538, 0.28458401867438815], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_173": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999992, 1.0000000000039855, 0.9999999863817342, 0.9999977725638103], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999973, 2.5000000000139497, 2.4999999523360708, 2.4999922039830804], "MOMENTUM_X": [1.1825001962160286e-27, 5.51062798140902e-22, -3.76839867978621e-19, 1.0236760359922247e-15, -4.817646597218699e-12, 1.602390255725831e-08, 2.6325560751972706e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1191": {}, "NODE_403": {"DENSITY": [1.0000000023193636, 0.9999707080447637, 0.9966916716168647, 0.9645223553974354, 0.8874434407652044, 0.8037265398412686, 0.7374858945708489], "TOTAL_ENERGY": [2.5000000081177727, 2.4998974803179586, 2.4884404304810452, 2.3777555297503605, 2.124222309917965, 1.867207597763324, 1.6774865417368525], "MOMENTUM_X": [5.233263767625498e-10, 3.427915991567607e-05, 0.003894727726059518, 0.04095538364654522, 0.12358881059865666, 0.20297525476700637, 0.2575014803537764], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_232": {"DENSITY": [1.0, 1.0, 0.9999999999999705, 1.0000000000457594, 0.9999999097384724, 0.9999860133598386, 0.9995408856253238], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999896, 2.5000000001601568, 2.499999684084671, 2.4999510471366815, 2.498393461425218], "MOMENTUM_X": [-6.920097604754824e-22, -1.1094481826687583e-17, 3.562247037287146e-14, -5.4167179555967036e-11, 1.0611778799234973e-07, 1.650953813024871e-05, 0.000542690562415273], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1922": {}, "ELEMENT_1640": {}, "ELEMENT_7": {}, "ELEMENT_71": {}, "NODE_123": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000000662, 1.0000000000131521], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000002314, 2.500000000046032], "MOMENTUM_X": [-2.4811925884368215e-36, 3.8508050797331773e-29, -4.4623774129362145e-25, -7.966003535664615e-21, 8.191711889096333e-17, -8.117451798922544e-14, -1.3472667707440478e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1092": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997], "MOMENTUM_X": [0.0, -2.949018226279403e-40, 2.9262258489339117e-36, -9.16719052785304e-32, 5.271014945384425e-27, -9.739824549114925e-23, -1.1125611138632475e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_55": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000019], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000067], "MOMENTUM_X": [4.581100315366662e-41, 2.074012613860644e-33, 1.9742965537135654e-29, 3.9353702564153476e-25, 2.3976700915875723e-22, 6.646480146019725e-18, -2.2748771376803704e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_822": {"DENSITY": [0.125, 0.12500000000003042, 0.12499999956326657, 0.12500187579894245, 0.15208030082572158, 0.2829515324701048, 0.2692492213136023], "TOTAL_ENERGY": [0.25, 0.2500000000000851, 0.2499999987771464, 0.25000525247913014, 0.34102219054206523, 0.970889084166971, 0.8904238217175229], "MOMENTUM_X": [-3.0482612603987612e-18, 5.910439780551207e-14, -7.777141095824883e-10, 3.0644285416449088e-06, 0.04117921989343207, 0.284906763323192, 0.25414718826119376], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1225": {}, "ELEMENT_1848": {}, "NODE_244": {"DENSITY": [1.0, 1.0, 1.0000000000000222, 0.9999999999647761, 0.9999995620994827, 0.9999552379580758, 0.9989074799901105], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000777, 2.4999999998767164, 2.499998467348616, 2.499843336604046, 2.4961781782124834], "MOMENTUM_X": [3.4835911082216276e-21, -7.27537423050715e-17, -2.2523806716039865e-14, 3.7730487602798525e-11, 5.152852986284341e-07, 5.2865002471642224e-05, 0.0012911994363902241], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_517": {}, "NODE_625": {"DENSITY": [0.1435365267237436, 0.302390777377503, 0.3958090593228847, 0.45712137532307007, 0.4208443096826818, 0.42370255129882767, 0.42994735733318035], "TOTAL_ENERGY": [0.30989709553567335, 0.9412817260013446, 0.9330422301615239, 0.9536981472553553, 0.9403803905266461, 0.9400756907458868, 0.9427304404595418], "MOMENTUM_X": [0.02728400080427283, 0.2942610180312543, 0.3688050277548295, 0.4241609462180815, 0.39120092838532206, 0.3934011578353777, 0.39917389228171823], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_570": {}, "NODE_704": {"DENSITY": [0.12499998521130457, 0.1279604991898568, 0.2594465940335895, 0.2647583744969125, 0.30740124982707473, 0.3955555018710239, 0.45042053261605214], "TOTAL_ENERGY": [0.2499999585916587, 0.2584589595786191, 0.8443808459826869, 0.8417880856367295, 0.885891914845532, 0.9289128680259735, 0.9533263108443853], "MOMENTUM_X": [-1.3933325684029799e-08, 0.0029797677235271413, 0.23869466436948839, 0.23916936310558268, 0.2848792327332934, 0.36793189699694856, 0.41912436016171284], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_173": {}, "NODE_292": {"DENSITY": [1.0, 0.9999999999998481, 1.0000000004074752, 0.9999995416515661, 0.9999210992132591, 0.9978817116678648, 0.9829957957926209], "TOTAL_ENERGY": [2.5, 2.499999999999469, 2.500000001426164, 2.4999983957809873, 2.4997238589751594, 2.492593406354935, 2.44092302193028], "MOMENTUM_X": [-2.951544948557453e-17, 1.6972523564291478e-13, -4.751451868452707e-10, 5.408889031464137e-07, 9.313634092507334e-05, 0.0024993977008504363, 0.019886270817068393], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_406": {"DENSITY": [0.9999999697685726, 0.9997243669526364, 0.9874968768632396, 0.9276232468205933, 0.8400435869748024, 0.7649806799859351, 0.7087453251800951], "TOTAL_ENERGY": [2.499999894190009, 2.499035452919129, 2.4565038244226605, 2.254632576019908, 1.9774423628130187, 1.7566647557769854, 1.6012482314172045], "MOMENTUM_X": [-1.3437668397554698e-07, 0.0003212568772665166, 0.01471080369926846, 0.08252215305290217, 0.1715044542277386, 0.23737914996205983, 0.279999982265716], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_977": {}, "ELEMENT_102": {}, "ELEMENT_674": {}, "NODE_859": {"DENSITY": [0.125, 0.125, 0.12499999999999377, 0.12500000011061543, 0.12499788612072447, 0.15221504105206835, 0.29050000159219586], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999998263, 0.25000000030972336, 0.2499940811967782, 0.34239822888496735, 1.0129477076848536], "MOMENTUM_X": [-5.217051095076099e-25, -9.408132378959028e-20, -7.706852764106773e-15, 1.1003657007995666e-10, -2.0927572070851946e-06, 0.044011694163926474, 0.29958380746711843], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1080": {}, "ELEMENT_1676": {}, "ELEMENT_1350": {}, "ELEMENT_1537": {}, "ELEMENT_925": {}, "ELEMENT_1340": {}, "ELEMENT_1561": {}, "ELEMENT_1233": {}, "NODE_667": {"DENSITY": [0.12499918341956043, 0.18660833603434013, 0.2816433253820904, 0.3143083821442155, 0.40988060750223193, 0.4657964682251675, 0.42482910631763154], "TOTAL_ENERGY": [0.2499977136380586, 0.48497261960220606, 0.9268666057481276, 0.8976513997010812, 0.9323979956182342, 0.9604891717316283, 0.9404506096893662], "MOMENTUM_X": [6.227026095551148e-07, 0.10188633700298444, 0.2728942073364734, 0.2921122831075102, 0.3790314496809829, 0.43199712566165765, 0.3933192983367358], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_837": {}, "NODE_1025": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999978, 0.1250000000046512], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999942, 0.25000000001302336], "MOMENTUM_X": [4.565443438796785e-42, 6.93974832255967e-35, 3.0292151555013795e-31, 2.1245668287481228e-26, -2.746758575603944e-21, -2.565244257163134e-16, 5.143158345857486e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_172": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999991, 1.0000000000014377, 0.9999999994174963, 0.999999641542902], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999964, 2.500000000005032, 2.4999999979612366, 2.4999987454004162], "MOMENTUM_X": [-7.023663564678513e-29, -7.173727891107838e-24, 4.1449354010923e-20, 1.0883489469899164e-15, -1.6945682582982677e-12, 7.069905634883086e-10, 4.2481660627135403e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1462": {}, "ELEMENT_1611": {}, "NODE_755": {"DENSITY": [0.12499999999987302, 0.12499998254206449, 0.12519336125110675, 0.2230150113773923, 0.26002186393887733, 0.2753266476608848, 0.2920528783634413], "TOTAL_ENERGY": [0.2499999999996444, 0.24999995111778517, 0.2505422426832471, 0.6604324956092709, 0.8369850370716526, 0.9003369244037275, 0.8824917697253059], "MOMENTUM_X": [1.557605658085465e-13, -1.641537008394948e-08, 0.0001845859962972342, 0.17071938785206087, 0.2332186379582673, 0.26118647823444563, 0.27048893871748153], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_698": {}, "NODE_662": {"DENSITY": [0.12499835919111031, 0.18236589200683115, 0.276893218211882, 0.3111920694089538, 0.41203250933389773, 0.4835031345989827, 0.4147543937719135], "TOTAL_ENERGY": [0.2499954057700909, 0.46889518690137644, 0.912246404290309, 0.9166296945593511, 0.9285842585898406, 0.9726553462367772, 0.9360643986609313], "MOMENTUM_X": [-1.500031928959071e-06, 0.09901978477532722, 0.26647006141386415, 0.29511328931938974, 0.38039130823788314, 0.45051470195757826, 0.3847691782409001], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1450": {}, "ELEMENT_1368": {}, "NODE_326": {"DENSITY": [1.0, 0.9999999999994892, 1.000000002092632, 0.9999994311696251, 0.99981329348089, 0.9952504221713482, 0.9680314019822869], "TOTAL_ENERGY": [2.5, 2.4999999999982125, 2.5000000073242123, 2.499998009094918, 2.499346593055542, 2.4834119729223736, 2.3895750565034177], "MOMENTUM_X": [-6.933182663852339e-17, 8.204755215773194e-13, -2.643412006704221e-09, 8.411394683563796e-07, 0.0002274197160883397, 0.005592383975647163, 0.03670108251307243], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1216": {}, "ELEMENT_1376": {}, "ELEMENT_45": {}, "ELEMENT_1831": {}, "ELEMENT_569": {}, "ELEMENT_1206": {}, "NODE_1065": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001554], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000004347], "MOMENTUM_X": [-6.120834962295679e-43, -4.387270651223712e-36, 7.8988388767714e-31, 1.3828488887872038e-26, -1.2293617229563612e-22, -1.8239752757815573e-18, 4.341470400027399e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1399": {}, "ELEMENT_717": {}, "ELEMENT_334": {}, "ELEMENT_32": {}, "NODE_473": {"DENSITY": [0.9975091312755147, 0.8984107147210316, 0.7677066471637737, 0.6770596975976215, 0.6207969637395709, 0.5830758745278014, 0.5557363374450393], "TOTAL_ENERGY": [2.4912996601466, 2.1604072886465793, 1.766164262410471, 1.5186702407638457, 1.3756899785637668, 1.2836304113125567, 1.220370398205246], "MOMENTUM_X": [0.0035325510673760315, 0.11199506551067578, 0.2360231546547581, 0.3011599251224583, 0.3348792889059844, 0.35333599926854753, 0.3642726602122043], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_240": {"DENSITY": [1.0, 1.0, 1.000000000000062, 0.999999999947954, 0.9999995610739669, 0.99995424308099, 0.998858870088392], "TOTAL_ENERGY": [2.5, 2.5000000000000004, 2.5000000000002167, 2.499999999817839, 2.4999984637593275, 2.499839854778258, 2.4960082400028467], "MOMENTUM_X": [2.0937841599028928e-20, -1.2609871373963447e-17, -6.988643998020426e-14, 5.364421315439771e-11, 5.218522256276147e-07, 5.4414078209203956e-05, 0.0013528238590571312], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_261": {"DENSITY": [1.0, 0.9999999999999928, 1.0000000000169469, 0.9999999849705825, 0.9999914490286719, 0.999560312657415, 0.9940613678979336], "TOTAL_ENERGY": [2.5, 2.4999999999999756, 2.5000000000593148, 2.4999999473970402, 2.4999700717543014, 2.49846143519032, 2.4792703657966384], "MOMENTUM_X": [2.0220120699473096e-18, -3.556433740264489e-15, -2.085546892766427e-11, 1.8644382514229696e-08, 1.0234693845426427e-05, 0.0005206237810927136, 0.006974337156049246], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1312": {}, "ELEMENT_511": {}, "ELEMENT_665": {}, "ELEMENT_738": {}, "ELEMENT_276": {}, "ELEMENT_801": {}, "ELEMENT_29": {}, "ELEMENT_629": {}, "NODE_877": {"DENSITY": [0.125, 0.125, 0.12500000000001268, 0.12499999988375651, 0.1250001278087044, 0.13725262827494658, 0.28565528383182903], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000356, 0.24999999967451836, 0.2500003578662273, 0.28772158541071674, 0.9875139226681999], "MOMENTUM_X": [-2.9393513792422786e-23, -6.6234363166532125e-19, 1.5288619875784548e-14, -1.4523848299940287e-10, 6.081178809782983e-08, 0.016534756306656233, 0.2913514973210566], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_205": {"DENSITY": [1.0, 1.0, 0.9999999999999987, 1.0000000000032672, 0.9999999973659891, 0.9999987055287012, 0.9999188419600475], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999956, 2.5000000000114357, 2.499999990780963, 2.4999954693540136, 2.4997159587992046], "MOMENTUM_X": [-1.7703071534982987e-23, 4.56481023735091e-19, 1.4341063809394026e-15, -4.044643855955588e-12, 3.229006450584078e-09, 1.550190433794473e-06, 9.632145345468883e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_253": {"DENSITY": [1.0, 1.0000000000000004, 1.0000000000017761, 0.9999999978599907, 0.9999980765480453, 0.999867388801825, 0.99757586770866], "TOTAL_ENERGY": [2.5, 2.5000000000000013, 2.5000000000062164, 2.4999999925099665, 2.4999932679260994, 2.4995358930338663, 2.4915251751064202], "MOMENTUM_X": [2.306408217937339e-19, 3.430645382738249e-16, -2.09568746886241e-12, 2.4859837092917716e-09, 2.2715857250349738e-06, 0.00015704458405351452, 0.0028669714995771638], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_73": {}, "NODE_1037": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999996, 0.12500000000108627], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999983, 0.25000000000304157], "MOMENTUM_X": [8.755874239143373e-43, -8.374095853165311e-37, -5.051250035718134e-31, 1.47223482453484e-26, -1.2286339810356198e-21, -5.559907882880746e-17, 1.0407931577708994e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1121": {}, "ELEMENT_51": {}, "ELEMENT_1515": {}, "ELEMENT_1747": {}, "ELEMENT_1106": {}, "ELEMENT_1612": {}, "ELEMENT_1314": {}, "ELEMENT_1849": {}, "ELEMENT_1558": {}, "ELEMENT_756": {}, "ELEMENT_772": {}, "NODE_927": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999942, 0.12500000001057684, 0.12499980074760846, 0.1299781960770134], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2499999999999984, 0.2500000000296152, 0.24999944209398, 0.2644959654726832], "MOMENTUM_X": [-8.110960803123444e-31, 3.0056081578050458e-25, 8.622947347698829e-21, -8.191400837218916e-16, 1.266533680803839e-11, -2.599333443733333e-07, 0.005694075062798255], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1122": {}, "ELEMENT_1778": {}, "ELEMENT_1448": {}, "NODE_1058": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999618], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999999893], "MOMENTUM_X": [-5.205490182303353e-47, 7.162167605415225e-38, 1.451509634770776e-33, -8.304318376359458e-29, -1.2163946211270109e-24, 6.890788795811976e-20, -4.9449603324838395e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_729": {"DENSITY": [0.12500000000074396, 0.12499958927409549, 0.13452680923096044, 0.2908159404814865, 0.25979736346221816, 0.28288917976490163, 0.3451333958626226], "TOTAL_ENERGY": [0.25000000000208317, 0.24999884996904453, 0.27872382310777766, 1.0157110377106804, 0.8269958198192012, 0.8720290268757758, 0.9079372634527625], "MOMENTUM_X": [1.0504154285041415e-12, -4.865290723333101e-07, 0.01233318159108128, 0.3025107076481057, 0.23099236332917383, 0.26035883001745785, 0.3203454330876855], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_554": {"DENSITY": [0.35769390134083107, 0.3462854515948974, 0.36424208702893685, 0.36563663756394643, 0.36634510760369676, 0.37523535817865483, 0.3726348156144385], "TOTAL_ENERGY": [0.803322728054315, 0.8033571717622027, 0.812603939333987, 0.826343978726613, 0.8291532304289498, 0.8377808523943623, 0.8394260019022416], "MOMENTUM_X": [0.42264482139529286, 0.38867331711747743, 0.3971113119989928, 0.3954068887190452, 0.3923689028205557, 0.39881754288455956, 0.3937596966329883], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_155": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000003249, 0.999999999854406, 0.9999998811672707], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000011373, 2.4999999994904223, 2.4999995840854776], "MOMENTUM_X": [2.733432117347049e-30, -1.5041931587204784e-24, -2.2882138268154416e-20, 1.8852637323453486e-16, -3.8216438635953727e-13, 1.7500050503872202e-10, 1.404616452967124e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_136": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000786, 0.9999999999488721, 0.9999999599185594], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000275, 2.499999999821052, 2.499999859714961], "MOMENTUM_X": [5.9378394577925256e-30, -4.096007660762055e-26, 1.9687760331881934e-22, 1.8062856203931492e-17, -9.190761948027562e-14, 5.982944267438516e-11, 4.7267745346953104e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_363": {"DENSITY": [0.9999999999328445, 1.0000000210127133, 0.9998994077926289, 0.9954239766188511, 0.963968021817274, 0.8973010506401511, 0.8254484783838612], "TOTAL_ENERGY": [2.499999999764956, 2.5000000735445016, 2.499647949339788, 2.4840194810822176, 2.375837721386256, 2.155623473700903, 1.9319083273354238], "MOMENTUM_X": [-6.549652700709683e-11, -1.588976951143936e-08, 0.00012024171310089499, 0.005381042743588702, 0.04140037891903127, 0.11304082749559652, 0.1828176045833049], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_134": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.000000000000084, 0.9999999999436994, 0.9999999518207122], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000293, 2.499999999802948, 2.4999998313724983], "MOMENTUM_X": [1.6836737169240168e-29, -1.3613104410193123e-24, 1.942754207839337e-22, 3.091984557372176e-17, -1.0469278737256803e-13, 6.885772808747868e-11, 5.781825126848318e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_617": {"DENSITY": [0.13296688211450153, 0.30771739226924444, 0.3685200422921177, 0.4829106144932659, 0.4279003826703225, 0.39234163899130725, 0.4487792264560688], "TOTAL_ENERGY": [0.27392650333527796, 1.0244978664320306, 0.9037537734696558, 0.9652738271676096, 0.943067868338234, 0.9196409115837599, 0.949059539631507], "MOMENTUM_X": [0.010774014173095672, 0.31700856535121646, 0.3357920586994714, 0.44509558090538853, 0.39456601384435025, 0.35910370060681246, 0.4125357361597223], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_252": {"DENSITY": [1.0, 1.0, 0.9999999999998467, 1.0000000002216334, 0.9999998321084473, 0.9999709795108239, 0.9991036207252367], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999994627, 2.5000000007757164, 2.499999412379631, 2.49989842986088, 2.4968640047813437], "MOMENTUM_X": [1.4818527617560362e-22, -2.614784573834795e-17, 1.7716735659430285e-13, -2.567883491917445e-10, 2.0056160224637068e-07, 3.437572939817577e-05, 0.0010597275877047743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_613": {"DENSITY": [0.1784831730401909, 0.3314796081053096, 0.4441188372287626, 0.4447527066462794, 0.4132164678422376, 0.4318156761693767, 0.42556004461864894], "TOTAL_ENERGY": [0.4507090405942782, 0.9132641761940401, 0.9512207365261682, 0.9463129570490738, 0.9369637703697332, 0.944172253923389, 0.9413610258201262], "MOMENTUM_X": [0.08850037902452855, 0.31188597052374134, 0.4132962075923333, 0.41214138748597723, 0.3840098720821442, 0.4010121945873674, 0.3951786690474786], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_617": {}, "ELEMENT_584": {}, "ELEMENT_361": {}, "ELEMENT_1240": {}, "ELEMENT_1458": {}, "NODE_283": {"DENSITY": [1.0, 1.0, 0.9999999999986605, 1.0000000015453057, 0.9999997088683005, 0.9999243678302955, 0.9978778046470119], "TOTAL_ENERGY": [2.5, 2.5000000000000004, 2.499999999995312, 2.50000000540857, 2.4999989810393424, 2.4997352983006307, 2.492579546845057], "MOMENTUM_X": [3.35227087753184e-21, -1.677089304782058e-16, 1.617638880519006e-12, -1.8516267374486593e-09, 4.216422930790388e-07, 9.259441817330199e-05, 0.002514045119685059], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1093": {}, "ELEMENT_857": {}, "ELEMENT_894": {}, "ELEMENT_643": {}, "ELEMENT_111": {}, "ELEMENT_1296": {}, "ELEMENT_1209": {}, "ELEMENT_1818": {}, "NODE_242": {"DENSITY": [1.0, 1.0, 1.000000000000067, 0.9999999999051028, 0.9999995489652879, 0.999955062875615, 0.9989050021853759], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000002345, 2.49999999966786, 2.499998421378963, 2.4998427238773733, 2.4961695253044804], "MOMENTUM_X": [9.680706293844007e-21, -3.290806209089492e-17, -7.51537835671812e-14, 1.0417131632499637e-10, 5.318145229090068e-07, 5.31965731293346e-05, 0.0012961964898021215], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_803": {"DENSITY": [0.12499999999999921, 0.1250000000036275, 0.12499991476225643, 0.12695271348289253, 0.25410666434182766, 0.2577115246809815, 0.26463965272369494], "TOTAL_ENERGY": [0.2499999999999978, 0.250000000010157, 0.2499997613344164, 0.2555370027604002, 0.8179665570425507, 0.8297328320437015, 0.8588412340142478], "MOMENTUM_X": [8.925432656285063e-16, 3.56394940910138e-12, -8.849123411223119e-08, 0.0018124004149745448, 0.2288323205138752, 0.23046608442002497, 0.24301546721410788], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1199": {}, "ELEMENT_1983": {}, "NODE_322": {"DENSITY": [0.999999999999985, 1.0000000000558957, 0.9999998923608977, 0.9999495726379978, 0.9981097135599708, 0.9825001462966124, 0.9373207163110853], "TOTAL_ENERGY": [2.499999999999947, 2.5000000001956355, 2.4999996232631787, 2.49982350940308, 2.4933901354602956, 2.4392221564101746, 2.2863217901084476], "MOMENTUM_X": [-1.8600897034694816e-14, -6.902257009738328e-11, 1.259281300079565e-07, 5.9545883501755974e-05, 0.002233283379800153, 0.020475167080499703, 0.07126654161235714], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1016": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000322, 0.12499999996857468], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000905, 0.2499999999120092], "MOMENTUM_X": [-2.4932678054737146e-39, -7.872101224871939e-34, 4.999635847536114e-29, 8.364525714013462e-24, -2.444703420974417e-19, 2.2790884684674894e-15, -5.930578561156476e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_764": {}, "ELEMENT_1961": {}, "ELEMENT_1872": {}, "NODE_13": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 4.8743549195005525e-36, 3.1267676106778663e-32, 2.981816229425767e-28, 8.76272744134892e-25, 4.982669232715591e-21, -1.6534599537764778e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_935": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000128, 0.12499999991154559, 0.12500012282444464, 0.13863941268674948], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000358, 0.24999999975232767, 0.2500003439131867, 0.2921603878978938], "MOMENTUM_X": [-1.881980558082107e-27, 1.049453973659443e-22, 2.832673267493387e-20, 6.270814076202164e-15, -6.124881034315484e-11, -8.874853458501241e-08, 0.0188042441198132], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1210": {}, "NODE_892": {"DENSITY": [0.125, 0.125, 0.125, 0.1249999999999639, 0.12500000072859682, 0.1250037364702169, 0.22372309907440405], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999989894, 0.250000002040071, 0.2500104650755735, 0.6679449626248698], "MOMENTUM_X": [1.0385179196540761e-28, -2.586976934300833e-23, 9.23844551778068e-19, -1.1981520398291942e-14, -2.1016701967028045e-10, 1.7190858225998772e-05, 0.17681939085487414], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1952": {}, "ELEMENT_1989": {}, "ELEMENT_1153": {}, "ELEMENT_495": {}, "NODE_901": {"DENSITY": [0.125, 0.125, 0.12500000000000008, 0.1250000000010291, 0.1249999674531276, 0.12545549838785613, 0.2376147660858515], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000002, 0.2500000000028814, 0.24999990886877563, 0.25128026686977645, 0.730382604403803], "MOMENTUM_X": [5.7546123996181385e-25, 1.2355136741770713e-20, 3.541135085099424e-17, 5.273887112089019e-13, -3.3822525459425193e-08, 0.0004387851018934331, 0.19548757206366643], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_339": {"DENSITY": [1.0000000000046594, 1.000000006631217, 0.99999135774242, 0.999061928238007, 0.9864119893213719, 0.9417933344844739, 0.8763570771002201], "TOTAL_ENERGY": [2.500000000016308, 2.5000000232092594, 2.499969752271577, 2.4967183396004513, 2.4527369138007806, 2.301340254164358, 2.0894490778206736], "MOMENTUM_X": [5.938933700550354e-12, -8.214212166974276e-09, 9.854802194062277e-06, 0.0011000569447319017, 0.016014524659542576, 0.06694647443790719, 0.13604847305317283], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1298": {}, "ELEMENT_958": {}, "NODE_99": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999998, 1.0000000000022193], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999933, 2.500000000007767], "MOMENTUM_X": [4.869965341275935e-38, -8.46408393838899e-31, -1.0900515450216342e-27, 1.12152820075724e-22, -4.626433386604453e-19, 2.121928137333392e-15, -2.5903150222170572e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1054": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000014969], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000004191], "MOMENTUM_X": [6.283891121683977e-41, 6.680435574196527e-34, 4.183852222604931e-30, -2.372706119065302e-25, -1.235206830860351e-21, 1.2688427798019833e-17, 1.1493268318230553e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1166": {}, "ELEMENT_1950": {}, "ELEMENT_775": {}, "ELEMENT_1722": {}, "ELEMENT_490": {}, "ELEMENT_210": {}, "ELEMENT_644": {}, "NODE_929": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000155, 0.12499999998722004, 0.12499998891284057, 0.12962867971928782], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000433, 0.2499999999642162, 0.24999996895578167, 0.2634385707649386], "MOMENTUM_X": [-1.7900606343029553e-29, 7.662028111666365e-25, 8.719372268865923e-20, 5.956956385679774e-16, -5.4713207456395955e-12, -1.351295208739584e-07, 0.005245187062581673], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_850": {"DENSITY": [0.125, 0.125, 0.12500000000025557, 0.12499999590458301, 0.12507863924032783, 0.21780939352579573, 0.24738608896633915], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000071554, 0.2499999885328328, 0.2502203508666291, 0.6373083081588734, 0.7737228662078828], "MOMENTUM_X": [-1.777505118498135e-23, -2.3727593856316057e-18, 2.694022079979367e-13, -5.017432370722596e-09, 7.676517554014331e-05, 0.16245836381215123, 0.20750605955370893], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_989": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000133, 0.12499999999926026, 0.12499986365657012], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000037, 0.24999999999792857, 0.2499996182386887], "MOMENTUM_X": [-2.1809122572637442e-33, -1.1352022652304242e-28, 5.204560249568727e-24, 8.008370599965535e-20, 1.392565450802876e-16, 2.272847094205734e-12, -1.732144243023279e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_715": {"DENSITY": [0.12499999995019102, 0.12539244250166162, 0.225033902332341, 0.2600183726060862, 0.28681849843549895, 0.35397501094526607, 0.4361758270849092], "TOTAL_ENERGY": [0.24999999986053492, 0.2511016804608112, 0.6681018182041621, 0.8332892895005124, 0.8828314421583306, 0.9101539989055403, 0.9468229646887517], "MOMENTUM_X": [-1.2234856951979504e-09, 0.0003259805142303341, 0.17332902957791851, 0.23326804817848398, 0.2672920004191923, 0.3290816637499055, 0.4057409555249008], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_185": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000389, 0.999999999975655, 0.9999999349697924, 0.9999926136384609], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000001363, 2.4999999999147926, 2.499999772394283, 2.4999741478390143], "MOMENTUM_X": [1.2065416384166218e-25, 1.2538128213953667e-21, 2.0426095695522966e-18, -4.5072152479646314e-14, 2.7759013792481347e-11, 7.661158669166294e-08, 8.736433042825205e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1415": {}, "ELEMENT_480": {}, "NODE_175": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999968, 1.0000000000068623, 0.9999999882427908, 0.9999978880383428], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999885, 2.5000000000240172, 2.499999958849767, 2.499992608142893], "MOMENTUM_X": [-9.454513763554773e-28, 3.0409445698949736e-22, 1.810845095945432e-19, 3.8213384676385805e-15, -8.018090708209268e-12, 1.3847471649440625e-08, 2.4921646842097684e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_52": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [-1.3175773445862669e-46, 1.6403158109511293e-36, 6.347062957121985e-33, 3.9029535904695086e-29, -7.0196688085361625e-25, 9.508897053462362e-21, 5.352812901767491e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_917": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000752, 0.12499999993210115, 0.12500053573444808, 0.1472487379309897], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000211, 0.2499999998098833, 0.25000150010783045, 0.3227596754620846], "MOMENTUM_X": [-6.381253140023471e-29, -2.6324211160680477e-26, -3.063653922865899e-19, 7.369293623249322e-15, -1.2894229120569196e-10, 1.1166139860984434e-06, 0.03229125395573719], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1269": {}, "ELEMENT_530": {}, "NODE_702": {"DENSITY": [0.12499999489933239, 0.12589882065822036, 0.25057811321785156, 0.26383744960582217, 0.2986730190850946, 0.37596089605777677, 0.4513733505243022], "TOTAL_ENERGY": [0.2499999857181315, 0.2525340333546737, 0.7974731521227626, 0.8410148290772416, 0.8925631490232878, 0.9206545893064064, 0.9522407777029706], "MOMENTUM_X": [-5.617975424992878e-09, 0.0008519128529574973, 0.2212589117377084, 0.23701502380922612, 0.2784330152354745, 0.3487912097420392, 0.4185059903407845], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_338": {"DENSITY": [0.999999999999974, 1.000000000256416, 0.9999996255990632, 0.9998600904650757, 0.9958726481909075, 0.9701315442347902, 0.9126230452124375], "TOTAL_ENERGY": [2.49999999999991, 2.5000000008974563, 2.499998689597127, 2.499510354224205, 2.485582180833493, 2.3967907734438914, 2.205078249712328], "MOMENTUM_X": [-3.55364137068898e-14, -3.0291682962926165e-10, 4.4564532371581653e-07, 0.00016527372508684117, 0.0048643082092219, 0.03465704118454144, 0.09774315416595163], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1252": {}, "ELEMENT_53": {}, "ELEMENT_654": {}, "NODE_218": {"DENSITY": [1.0, 1.0, 1.0, 0.999999999999942, 1.0000000000559273, 0.9999999912055423, 0.9999954181137295], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999797, 2.5000000001957456, 2.499999969219398, 2.499983963438713], "MOMENTUM_X": [1.2414229883605112e-27, 2.4389662545400275e-22, -2.0575193632158333e-17, 6.888752253917301e-14, -6.691518260352357e-11, 1.0866897062459481e-08, 5.4850823502565256e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_805": {}, "ELEMENT_1345": {}, "NODE_389": {"DENSITY": [1.0000000008150685, 0.9999953694899857, 0.9988835994061334, 0.9813027326647962, 0.920826126692682, 0.8390425038457002, 0.7681886402039244], "TOTAL_ENERGY": [2.5000000028527394, 2.499983793278746, 2.4960949739907243, 2.4351157434503583, 2.2320312458637637, 1.973310483106274, 1.7640046332280175], "MOMENTUM_X": [1.0820614404115371e-09, 5.43260103469946e-06, 0.0013203519989409866, 0.021859619132431903, 0.08904324322329812, 0.17115345918211838, 0.23355252040239952], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1032": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000283, 0.12499999998402657], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000794, 0.2499999999552744], "MOMENTUM_X": [-2.63879428668075e-38, -4.142553172520606e-32, -5.864408586756281e-29, 1.885747178557106e-23, 4.076536387928987e-20, 5.583187119584732e-16, -5.713987576120021e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1948": {}, "ELEMENT_1469": {}, "ELEMENT_580": {}, "ELEMENT_904": {}, "NODE_482": {"DENSITY": [0.9984700137897641, 0.9143989222841665, 0.7740422582794533, 0.6736068190903686, 0.6127017862267222, 0.573396346421093, 0.5462439613907911], "TOTAL_ENERGY": [2.494650955871205, 2.2115208271610034, 1.7813183292533685, 1.5061139296264396, 1.3525810955773847, 1.2589003048969456, 1.1963525812662015], "MOMENTUM_X": [0.0018855206777522895, 0.09536953248621848, 0.2284269451903769, 0.3029344223583484, 0.3385753455232337, 0.35734082668410005, 0.36834613041373526], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1128": {}, "ELEMENT_1604": {}, "NODE_343": {"DENSITY": [1.0000000000011502, 1.0000000030382135, 0.9999957254278962, 0.9994626802393789, 0.9906631616924877, 0.9525703671193256, 0.8873924542680772], "TOTAL_ENERGY": [2.5000000000040257, 2.500000010633748, 2.499985039042994, 2.4981199227004707, 2.4674616654693926, 2.3373222257660706, 2.1239507880193598], "MOMENTUM_X": [1.3399462061839017e-12, -3.651264928784548e-09, 5.057268920926178e-06, 0.0006367380363373337, 0.01099470875030557, 0.05448001114391469, 0.12389271785372502], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_277": {"DENSITY": [1.0, 1.0000000000000013, 0.9999999999987628, 1.0000000018630089, 0.999997507120462, 0.9997874723078406, 0.9961106845801897], "TOTAL_ENERGY": [2.5, 2.5000000000000044, 2.4999999999956697, 2.5000000065205317, 2.4999912749347146, 2.499256232660697, 2.486411302862413], "MOMENTUM_X": [3.9924626417110536e-20, -1.1482628277771587e-15, 1.219574849168499e-12, -2.0044626009882984e-09, 2.979056028086842e-06, 0.00025193513119127844, 0.004593792288282446], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_175": {}, "NODE_506": {"DENSITY": [0.91423949250466, 0.6886361309081643, 0.5996456275411179, 0.5494484278730027, 0.5211392927609276, 0.5026078913637996, 0.4860362347331116], "TOTAL_ENERGY": [2.214631518990264, 1.5504289575412276, 1.3310734619784712, 1.2140195025748732, 1.1450260952467843, 1.101081838873352, 1.0684205189467768], "MOMENTUM_X": [0.11281735801098725, 0.2862170438586303, 0.34338936117402147, 0.36327604265695035, 0.3743353367849181, 0.3814565680535502, 0.3833180370692254], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_516": {}, "NODE_603": {"DENSITY": [0.22867083765754206, 0.3848859604798994, 0.4576775118435017, 0.41736241969063204, 0.4268980847796087, 0.4281807475193282, 0.4253316807831385], "TOTAL_ENERGY": [0.6744461432830955, 0.9173645353043406, 0.9594229228360273, 0.936540849864458, 0.9409241069695318, 0.9421061320869799, 0.9415129193090449], "MOMENTUM_X": [0.17771405219226494, 0.35701916373868003, 0.4276878867759332, 0.38826198495915676, 0.39673703449668846, 0.39766649217173056, 0.3947005252034376], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1525": {}, "ELEMENT_1814": {}, "NODE_376": {"DENSITY": [0.9999999998872069, 0.9999995195171457, 0.9996664890691046, 0.9909862189254034, 0.9474110323427709, 0.8721374544927202, 0.7989035558269272], "TOTAL_ENERGY": [2.499999999605224, 2.4999983183109955, 2.498832936945801, 2.468586239440635, 2.320050264260178, 2.075788066821757, 1.8530457567016891], "MOMENTUM_X": [-6.44431299283585e-11, 5.809748018004692e-07, 0.00039530925660307694, 0.010618104002571332, 0.06020405575785945, 0.13919922536158866, 0.20751293182317845], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_148": {}, "ELEMENT_1666": {}, "NODE_121": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999992, 1.0000000000013274, 0.9999999991025094], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.5000000000046447, 2.499999996858782], "MOMENTUM_X": [-4.1254401339364876e-33, -8.0709133377183545e-28, -8.209687998172819e-24, -5.419815606902833e-21, 1.0352278385261201e-15, -1.542346777764726e-12, 1.0684680743253541e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_721": {"DENSITY": [0.1250000000305686, 0.1250053372591041, 0.15925675430290132, 0.2862323788719715, 0.2710416150537231, 0.30418210929575334, 0.38340191818476144], "TOTAL_ENERGY": [0.25000000008559203, 0.2500149457889631, 0.368745956593454, 0.9835235252201641, 0.8658943633064213, 0.884796563303045, 0.9232553824569701], "MOMENTUM_X": [1.358463157915364e-11, 8.034371949745687e-06, 0.053169541681045596, 0.29052491429323485, 0.24895883372280392, 0.28070337176314203, 0.35530082939836866], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_508": {}, "ELEMENT_735": {}, "NODE_337": {"DENSITY": [1.0000000000000002, 0.999999999992386, 1.0000000134277522, 0.9999952117948732, 0.9993845334847891, 0.9897387550926409, 0.9494549225894956], "TOTAL_ENERGY": [2.5000000000000013, 2.499999999973351, 2.500000046997133, 2.4999832413429584, 2.497846540208203, 2.464245520926818, 2.3266942780360846], "MOMENTUM_X": [3.843192355054309e-16, 9.581449025720135e-12, -1.5604875126095416e-08, 6.34043547839092e-06, 0.0007399679297287895, 0.01198697921816096, 0.0573192077733263], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1276": {}, "NODE_426": {"DENSITY": [1.0000000869109988, 0.9993801891310766, 0.980632612066644, 0.906405685102084, 0.8103577131926357, 0.7337472432353241, 0.6788602974278142], "TOTAL_ENERGY": [2.5000003041885255, 2.4978314640636436, 2.4328205068514763, 2.185160813564933, 1.8869328480484224, 1.667165970491287, 1.519607680804112], "MOMENTUM_X": [-1.5368256015628928e-07, 0.0007293117915505939, 0.022565015293667293, 0.1040568986953217, 0.19710317963291246, 0.2603813328224588, 0.29921170875374226], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1585": {}, "NODE_98": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [-2.1885042976369209e-47, 5.7873336369822695e-37, 1.5468869985899927e-33, 5.534456996790352e-29, -8.708029551473456e-25, -1.0850652105445813e-21, 2.994370476939046e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1712": {}, "ELEMENT_1926": {}, "ELEMENT_1973": {}, "NODE_427": {"DENSITY": [1.0000000691255682, 0.9994931119486716, 0.9818027085403948, 0.9073196768627784, 0.8097312376421723, 0.7326228169733672, 0.6778172101528956], "TOTAL_ENERGY": [2.50000024193951, 2.498226428996807, 2.4368426676674337, 2.1880814198969345, 1.885047924072371, 1.6640987023972484, 1.516966153831019], "MOMENTUM_X": [-1.2025852395061879e-07, 0.0005977504735000785, 0.021253562908387827, 0.10334900394999777, 0.19813843273111217, 0.261786335531772, 0.3004275951830674], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_304": {"DENSITY": [1.0, 1.0000000000000158, 0.9999999999884485, 1.0000000228267398, 0.9999886470542496, 0.999257210605505, 0.9900952973437067], "TOTAL_ENERGY": [2.5, 2.500000000000056, 2.49999999995957, 2.5000000798935904, 2.4999602649778208, 2.49740118205422, 2.4654811076882868], "MOMENTUM_X": [2.2776486677626234e-19, -1.8864098506649572e-14, 4.650937496801467e-12, -2.1506088197801237e-08, 1.4417497631217613e-05, 0.0008889852009273608, 0.011574624569195929], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1028": {}, "ELEMENT_1866": {}, "NODE_274": {"DENSITY": [1.0, 0.9999999999999603, 1.000000000097094, 0.9999998898784997, 0.999973203233833, 0.999042139443608, 0.9900432041922359], "TOTAL_ENERGY": [2.5, 2.499999999999861, 2.5000000003398295, 2.4999996145747816, 2.4999062127671445, 2.4966490764583, 2.4653057397473215], "MOMENTUM_X": [-2.6210089185938438e-17, 2.2790664762588657e-14, -1.1584699580105205e-10, 1.3086993683592047e-07, 3.1899174156767215e-05, 0.0011364511802203908, 0.011714420523572106], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_942": {}, "NODE_40": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000005], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000178], "MOMENTUM_X": [1.1913723446124207e-41, -4.27596801450336e-34, -1.9058427399669375e-31, 4.9341995091232465e-26, -4.110832409287488e-22, -1.7150298434568794e-18, -6.035924967260584e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_924": {}, "ELEMENT_908": {}, "NODE_712": {"DENSITY": [0.1250000000555423, 0.12508302527216458, 0.20376921168290518, 0.2692332212079148, 0.2844761531268111, 0.334334837767726, 0.4256191049793213], "TOTAL_ENERGY": [0.25000000015551854, 0.25023265151725443, 0.5650588741875909, 0.8823237741765643, 0.8985819607818144, 0.899757003941777, 0.9427664540208979], "MOMENTUM_X": [-5.728764392415326e-10, 8.609397971837186e-05, 0.13377855073846034, 0.25186740766912113, 0.268451922609136, 0.30952324218143595, 0.39519437307027505], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1338": {}, "ELEMENT_99": {}, "NODE_103": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999925], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999974], "MOMENTUM_X": [3.476307352475395e-41, 4.0977892750669886e-34, 1.013022930388323e-29, 1.050570690057499e-25, -1.0794268940261337e-21, -1.28837606604341e-18, 8.312657302707304e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1583": {}, "ELEMENT_1274": {}, "ELEMENT_1146": {}, "ELEMENT_905": {}, "ELEMENT_311": {}, "NODE_434": {"DENSITY": [1.0000000028317053, 0.9998481569058466, 0.9888109673172277, 0.9223912673306159, 0.8190349722576815, 0.734273336331212, 0.6750632805976536], "TOTAL_ENERGY": [2.5000000099109694, 2.4994686050886603, 2.4610398243458036, 2.236853229327431, 1.9114060030521158, 1.6663277040986184, 1.5070222494301373], "MOMENTUM_X": [-1.5515713395836958e-08, 0.00019187855230383551, 0.0130703784578921, 0.08623228681556082, 0.18784005408706395, 0.2587773473500742, 0.30089258569674454], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_523": {"DENSITY": [0.8365906918245224, 0.6064539364455186, 0.534619334719567, 0.49681677071457914, 0.47441894275654495, 0.46259402116327314, 0.45288973617667677], "TOTAL_ENERGY": [1.97237953723895, 1.3327249380208472, 1.1671137331148385, 1.085256634492458, 1.0408550273379311, 1.0137982398908894, 0.9945340026389958], "MOMENTUM_X": [0.18615837754974388, 0.33963231184552456, 0.37641364901961877, 0.3849700172423423, 0.38821531106485213, 0.3919141360210837, 0.3928883869931319], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_367": {}, "NODE_265": {"DENSITY": [1.0, 0.9999999999999968, 1.0000000000158726, 0.9999999815775956, 0.9999925136880272, 0.9996364107759039, 0.995007826668645], "TOTAL_ENERGY": [2.5, 2.499999999999988, 2.500000000055553, 2.499999935521584, 2.4999737980238126, 2.4987276728745544, 2.4825672529351945], "MOMENTUM_X": [7.199677650111868e-19, 1.1622906317279595e-15, -1.868915437705949e-11, 2.1584052863140258e-08, 8.853107774946687e-06, 0.0004306356036312997, 0.005893693215888819], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_984": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000014, 0.12500000000017725, 0.12499995415409502], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.2500000000004961, 0.24999987163149123], "MOMENTUM_X": [-2.8352598363068475e-35, 2.7897214378584594e-30, -4.1074514912769898e-25, 2.847742990450505e-20, -9.297451738009056e-17, 2.180268897505682e-12, -7.325712614676061e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_65": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000001328], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000464], "MOMENTUM_X": [-1.4701372699130844e-39, 2.9977872118840977e-32, 7.685832921854911e-30, -2.2913614168194786e-24, 1.5706766770767654e-20, 1.137326719793074e-16, -1.5635906410115923e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_285": {}, "ELEMENT_1555": {}, "NODE_880": {"DENSITY": [0.125, 0.125, 0.12500000000003644, 0.12499999962068195, 0.12500240153364817, 0.1532564735999442, 0.26906509513560667], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000001021, 0.24999999893790953, 0.25000672457592155, 0.34514979261258305, 0.8951877469304466], "MOMENTUM_X": [-3.269156267678263e-22, -2.9788906931653824e-18, 4.18422778893482e-14, -4.464436503704066e-10, 2.6154198591441935e-06, 0.0438950594611043, 0.25642607037742926], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_548": {}, "NODE_579": {"DENSITY": [0.3523631411702572, 0.436885429525226, 0.39295378507817025, 0.40439784683386587, 0.4025167332566632, 0.3965224583847276, 0.40119242022383717], "TOTAL_ENERGY": [0.9595551444531691, 0.9014329029666156, 0.8945072351630923, 0.8958857463952055, 0.8892416673056224, 0.8854964394783553, 0.8865118802966752], "MOMENTUM_X": [0.3549702805546682, 0.41683932023669623, 0.3843419609512773, 0.3977015637982181, 0.39715538923732446, 0.3926297070046335, 0.39828172724089295], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_109": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000007, 1.0000000000002527, 0.9999999979873613], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000002, 2.5000000000008846, 2.4999999929557646], "MOMENTUM_X": [-1.8038864348841908e-32, 4.501608250943117e-27, -2.783976100088827e-23, -1.733559750219415e-19, -7.199456402961542e-16, -3.3513984042104594e-13, 2.383664466000465e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1661": {}, "ELEMENT_1108": {}, "NODE_330": {"DENSITY": [0.9999999999998246, 1.0000000005679717, 0.9999993088185707, 0.9998270384838206, 0.9954599688019359, 0.9690714829276819, 0.912201944110288], "TOTAL_ENERGY": [2.4999999999993854, 2.5000000019879, 2.4999975808663617, 2.499394693946461, 2.4841442617464944, 2.3931897655691516, 2.2037728279935584], "MOMENTUM_X": [-2.0871586223151343e-13, -5.978281901126587e-10, 8.230838246416584e-07, 0.000205880038859491, 0.005368293404751371, 0.035875721622682225, 0.09809336576200828], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_992": {}, "ELEMENT_886": {}, "ELEMENT_677": {}, "NODE_176": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999996, 1.0000000000006772, 0.9999999999253595, 0.9999997769845945], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999987, 2.50000000000237, 2.4999999997387574, 2.499999219446183], "MOMENTUM_X": [-1.4986669513406165e-29, -2.0043924217614488e-24, 2.7537552103108044e-20, 4.951791363175371e-16, -8.18038899886775e-13, 1.0677962750608928e-10, 2.658539726990838e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_16": {}, "NODE_890": {"DENSITY": [0.125, 0.125, 0.12500000000000241, 0.12499999999384313, 0.12499981871646657, 0.12870955483500662, 0.26908067609897246], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000666, 0.24999999998276073, 0.24999949240656755, 0.26070031288951595, 0.8939167710247575], "MOMENTUM_X": [-8.494199186834691e-24, 1.323798461489695e-19, 4.185578186949611e-16, -2.870738930860107e-13, -2.479804409172747e-07, 0.004225452162655419, 0.2552513789644869], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1719": {}, "NODE_7": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 7.585679638890631e-36, 6.445848834284053e-32, 2.802008646071429e-28, 2.03175202769158e-24, 4.3826919277329195e-21, -2.3252548626977412e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_491": {}, "ELEMENT_1705": {}, "ELEMENT_351": {}, "NODE_44": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, -2.929691221517008e-38, -1.4174057742415415e-35, -5.8542345461775154e-30, 9.990734047868212e-27, -1.1736352524238835e-22, -7.2081819799932e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1265": {}, "NODE_1106": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997], "MOMENTUM_X": [0.0, -1.2016528070052377e-39, -9.329592864823124e-37, 2.4431820730642323e-31, 2.258482407447822e-26, -2.127865310861755e-22, -1.5927267463243362e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1309": {}, "ELEMENT_242": {}, "ELEMENT_1086": {}, "ELEMENT_1222": {}, "NODE_819": {"DENSITY": [0.125, 0.12500000000001663, 0.12499999965063498, 0.1250026100400056, 0.15179235369134964, 0.28557203535609965, 0.26536289491876297], "TOTAL_ENERGY": [0.25, 0.2500000000000464, 0.24999999902177777, 0.25000730848575986, 0.3398254968717911, 0.9853167806958246, 0.867478582051572], "MOMENTUM_X": [-4.53125588908899e-19, 2.2038810269021842e-14, -5.641453699026203e-10, 3.893636247556187e-06, 0.04015188995989562, 0.29026759566385024, 0.24496814676019385], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_644": {"DENSITY": [0.1254203627074581, 0.27557966156638264, 0.2930098257155236, 0.4047201407719074, 0.46496728040895136, 0.42528992652921865, 0.410361721504186], "TOTAL_ENERGY": [0.25118118139530166, 0.9182827048487774, 0.8373776323044876, 0.943078954205199, 0.9563112618099052, 0.9435547100361641, 0.9348738082129858], "MOMENTUM_X": [0.00036150812016462074, 0.2681349331029089, 0.2593337643385847, 0.3775825354582484, 0.42991628583004204, 0.39445091846210767, 0.37995152632156454], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_537": {"DENSITY": [0.6699288237160881, 0.5179617821682494, 0.4763490917206901, 0.45829836530054174, 0.444694699637406, 0.43847805762452463, 0.4324986816383065], "TOTAL_ENERGY": [1.4836129943950642, 1.1371688646872526, 1.048121175469172, 1.0051083325621772, 0.9800862649072772, 0.9651782857365727, 0.9539989621381603], "MOMENTUM_X": [0.2573150497257436, 0.3712427524984294, 0.38653342379102623, 0.39243244371636155, 0.39265541686529204, 0.39494264013246544, 0.3948782468989693], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_69": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000699], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000002448], "MOMENTUM_X": [-1.3079184281722725e-39, -4.274389323040309e-31, -4.039923060855523e-27, -1.522341639503889e-23, -1.4627627241452804e-19, 9.62400844937804e-17, -8.048266669405764e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1426": {}, "ELEMENT_931": {}, "NODE_952": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000030806, 0.12499999470726522, 0.12506319801349083], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999994, 0.25000000000086253, 0.24999998518034314, 0.2501770624321012], "MOMENTUM_X": [2.326153170612486e-31, -2.2273509575038994e-26, -1.900078124414221e-21, -1.7046120684386734e-17, 2.471410112578246e-13, -5.938948058493266e-09, 6.895561484137968e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_927": {}, "ELEMENT_1715": {}, "NODE_1079": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25], "MOMENTUM_X": [0.0, -3.0594080997525257e-40, 2.697070587387188e-36, -1.4367846788079726e-31, 9.543254158617556e-27, 1.3233882743894137e-22, -6.79143556756617e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1737": {}, "ELEMENT_1817": {}, "ELEMENT_690": {}, "NODE_682": {"DENSITY": [0.12499926186031524, 0.16747829865797606, 0.27174843850593916, 0.2986520979608195, 0.38524389636991785, 0.45085527943629644, 0.42929076881293693], "TOTAL_ENERGY": [0.2499979332171016, 0.4021597220359524, 0.895622544677255, 0.8906762613867888, 0.9211142894059606, 0.9548759534614427, 0.946269025750075], "MOMENTUM_X": [-8.575018271171993e-07, 0.06891410298789466, 0.2587140687864403, 0.2791529946429316, 0.3575520421341183, 0.42002122174776113, 0.4003025473260103], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1377": {}, "ELEMENT_668": {}, "NODE_477": {"DENSITY": [0.9999494478508466, 0.9697448855205832, 0.8485453172030288, 0.7242739698503657, 0.6449001852989408, 0.5953307835929436, 0.5621544557536349], "TOTAL_ENERGY": [2.49982307726718, 2.395535909638283, 2.0015012174021827, 1.6381808122861232, 1.4286394346586027, 1.3067903765743483, 1.2291087280453454], "MOMENTUM_X": [6.329589620873149e-05, 0.03470108324262833, 0.16000370493248706, 0.2660181604367718, 0.31969916336072624, 0.3469402826477724, 0.3622438398360804], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1978": {}, "ELEMENT_1072": {}, "ELEMENT_1256": {}, "ELEMENT_723": {}, "NODE_946": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000142, 0.1249999999974699, 0.12499990014110263, 0.12778353920612187], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000394, 0.24999999999291564, 0.249999720395227, 0.25794010115401017], "MOMENTUM_X": [-2.0093263334094225e-28, 4.641600503078284e-24, 1.1706885478455125e-19, 5.146978644918559e-16, -1.2227487283208217e-12, -1.1458437504221199e-07, 0.0027457836916863843], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1543": {}, "NODE_975": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000783, 0.12499999993222041, 0.12500006252442178], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000002187, 0.24999999981021712, 0.25000017506815264], "MOMENTUM_X": [-6.68913168984635e-34, 2.8626837436571017e-28, 3.379009829068e-23, -2.680567511214902e-19, 6.467777663679318e-15, -6.841348823355022e-11, -7.08053874315064e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_662": {}, "ELEMENT_1878": {}, "ELEMENT_1036": {}, "NODE_231": {"DENSITY": [1.0, 1.0, 0.9999999999999754, 1.0000000000363043, 0.9999999043850459, 0.9999858427025259, 0.999539050061898], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999134, 2.5000000001270646, 2.499999665347682, 2.499950449848821, 2.498387042094437], "MOMENTUM_X": [-1.117954384059561e-21, -1.5045925437049572e-17, 3.0633344951968407e-14, -4.4003681886590684e-11, 1.1254165343479776e-07, 1.6749385026451343e-05, 0.0005458344837571598], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_611": {"DENSITY": [0.17842021617325637, 0.32995045184665295, 0.44493693725444633, 0.44698027444008576, 0.4076860831761688, 0.4321039384990965, 0.4298951417107442], "TOTAL_ENERGY": [0.4503377772408532, 0.9055493640043797, 0.9533082644406029, 0.9481455925813254, 0.9357717485126715, 0.9432129081973719, 0.9426794166277233], "MOMENTUM_X": [0.08826841584194053, 0.30808249266857207, 0.4137913548128864, 0.413962414050243, 0.37877934055306345, 0.40044477256753036, 0.3984514490646391], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1270": {}, "ELEMENT_1944": {}, "ELEMENT_136": {}, "ELEMENT_376": {}, "ELEMENT_1461": {}, "ELEMENT_1070": {}, "ELEMENT_936": {}, "ELEMENT_716": {}, "ELEMENT_180": {}, "ELEMENT_119": {}, "ELEMENT_1858": {}, "ELEMENT_533": {}, "ELEMENT_267": {}, "ELEMENT_720": {}, "ELEMENT_1137": {}, "ELEMENT_1528": {}, "ELEMENT_871": {}, "ELEMENT_1800": {}, "ELEMENT_519": {}, "NODE_489": {"DENSITY": [0.99202915669817, 0.8556152454228834, 0.7134734453549468, 0.6269984562346116, 0.5757184967019923, 0.5432074232802822, 0.5210963363769892], "TOTAL_ENERGY": [2.472228806305717, 2.0256413033402407, 1.6123924680058568, 1.38844704689995, 1.265473543701868, 1.1901954998329476, 1.139886539329555], "MOMENTUM_X": [0.00872973804811836, 0.15596807378848065, 0.27512700039896465, 0.3306457997363498, 0.3558147557414157, 0.36911288071647635, 0.3770947199021724], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1888": {}, "ELEMENT_1976": {}, "ELEMENT_736": {}, "ELEMENT_163": {}, "ELEMENT_1246": {}, "ELEMENT_623": {}, "ELEMENT_1744": {}, "ELEMENT_1795": {}, "ELEMENT_268": {}, "ELEMENT_1606": {}, "ELEMENT_1081": {}, "ELEMENT_1503": {}, "NODE_464": {"DENSITY": [0.9997367365336672, 0.9560442897942567, 0.8353350758024052, 0.7247823207416005, 0.6520298162389973, 0.6042358250272605, 0.5711470024412103], "TOTAL_ENERGY": [2.4990788033286395, 2.349282917403328, 1.9628010501755797, 1.6430778594313997, 1.450839573138631, 1.3325018469974828, 1.2540869225614193], "MOMENTUM_X": [0.0003380383850721496, 0.05044847509944426, 0.17437426897572916, 0.2669461657687194, 0.31590166215154764, 0.34224499112657863, 0.35762248636778543], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_17": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 1.3128297441109706e-37, -1.8170676833621672e-33, 1.504334017126972e-29, -1.992353219759683e-25, -1.720613803762495e-21, 3.6766145124695627e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_409": {"DENSITY": [0.9999999998260347, 0.9999930629445722, 0.9979902289877189, 0.9702667148295304, 0.8921215132026241, 0.804076976973013, 0.7355642517390688], "TOTAL_ENERGY": [2.499999999391122, 2.499975720449092, 2.4929731544120712, 2.3972917699726093, 2.13912960272773, 1.8683366739496714, 1.6724017297528655], "MOMENTUM_X": [8.790377481434208e-10, 8.439844308026113e-06, 0.0024034388870596696, 0.03482643573485049, 0.11989606429454867, 0.20410334191380375, 0.260383357828591], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_647": {}, "ELEMENT_158": {}, "NODE_654": {"DENSITY": [0.12502696858276502, 0.23547945510819074, 0.2774090253888129, 0.3556032976028565, 0.44797770426332983, 0.45261584372555985, 0.4105723377812667], "TOTAL_ENERGY": [0.25007554580457375, 0.7182789559758072, 0.8543408824011686, 0.9241096380492656, 0.9501443918830244, 0.9534989143722565, 0.9345927239915652], "MOMENTUM_X": [3.28695613755766e-05, 0.1922057162048171, 0.25121306869429244, 0.33256045973222087, 0.41457208437190957, 0.4192876892586367, 0.3801254029601756], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_959": {}, "NODE_300": {"DENSITY": [1.0000000000000004, 0.9999999999994321, 1.000000000317547, 0.9999968972230756, 0.99973192414434, 0.9952644869932732, 0.9720435015219431], "TOTAL_ENERGY": [2.500000000000001, 2.499999999998012, 2.500000001111413, 2.4999891403023327, 2.4990618665906013, 2.483462096164892, 2.4033207005285395], "MOMENTUM_X": [3.60716647405475e-16, 9.496964678557708e-13, -4.1564157398850763e-10, 3.6544764711625136e-06, 0.0003167992733316934, 0.005585216256143269, 0.03249552429069917], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_788": {"DENSITY": [0.12499999999999986, 0.12499999998734751, 0.12499996621196514, 0.12820879343373737, 0.28002096988643127, 0.2527105796133519, 0.26914673254366767], "TOTAL_ENERGY": [0.24999999999999967, 0.24999999996457306, 0.24999990539342518, 0.2592109118773991, 0.9591671504628966, 0.7975523569462046, 0.8733804683620602], "MOMENTUM_X": [8.979157827855977e-17, -1.7754252663046725e-12, -1.100771866058478e-07, 0.003465008254740798, 0.2817602825849457, 0.2176888854067889, 0.24950266063862844], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_762": {"DENSITY": [0.12500000000000264, 0.12499999981234822, 0.1250052631379649, 0.17647852362461758, 0.2695930724775218, 0.27680211448714737, 0.27438949572623245], "TOTAL_ENERGY": [0.2500000000000073, 0.249999999474575, 0.25001473850319256, 0.4421776063656007, 0.8934678812549574, 0.9242694399598855, 0.8593401517346799], "MOMENTUM_X": [-3.792046963614213e-15, -5.632276017969193e-10, 9.277444175657188e-06, 0.08557883591129586, 0.2547824162272492, 0.26861679963558266, 0.2504097885928994], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_750": {"DENSITY": [0.12499999999999853, 0.12499999810190145, 0.12505528318772027, 0.22286025092964817, 0.24663458870820823, 0.2820003110815774, 0.28418234065250947], "TOTAL_ENERGY": [0.24999999999999584, 0.24999999468532422, 0.25015487552425897, 0.66583910910593, 0.7675557853987479, 0.9462334523343725, 0.8720284419312215], "MOMENTUM_X": [-6.745259295503937e-15, -2.706489298535788e-09, 5.668311136917686e-05, 0.1766114957069891, 0.20618740469683808, 0.27865978546833853, 0.2618038701273034], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1486": {}, "ELEMENT_1586": {}, "ELEMENT_454": {}, "ELEMENT_1290": {}, "ELEMENT_1758": {}, "ELEMENT_1934": {}, "ELEMENT_37": {}, "ELEMENT_1011": {}, "ELEMENT_1109": {}, "ELEMENT_1185": {}, "NODE_10": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000053], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000187], "MOMENTUM_X": [1.1187305583067677e-41, 3.354290869216063e-34, -1.9735498669663215e-29, -2.0978476072467405e-26, -6.795549533623124e-22, 3.8758041257958217e-20, -5.989434520549622e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1089": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000197], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000055], "MOMENTUM_X": [0.0, -5.414526234207642e-36, -5.922214583878323e-32, -7.693555762827425e-28, 5.211922414626022e-24, 1.2776601374182877e-19, 3.348171011115955e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1220": {}, "NODE_200": {"DENSITY": [1.0, 1.0, 1.0, 1.000000000000215, 0.9999999999004164, 0.9999997802669791, 0.9999793075292506], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000007523, 2.499999999651459, 2.4999992309345314, 2.49992757714154], "MOMENTUM_X": [2.7906364809244247e-25, -7.297749336804265e-21, 1.6675367204523217e-17, -2.5374853781496383e-13, 1.2077743811232785e-10, 2.5933523583124983e-07, 2.4438914287027962e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_154": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999288, 1.0000000000532818], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999751, 2.500000000186487], "MOMENTUM_X": [-4.067451294480569e-36, 1.31860902623978e-29, 7.1100147148566e-26, -1.2256126753856707e-20, -5.992072680809123e-17, 7.317643613178045e-14, -6.317064882304367e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1582": {}, "ELEMENT_1371": {}, "ELEMENT_146": {}, "ELEMENT_362": {}, "NODE_1050": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000026198], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.2500000000007336], "MOMENTUM_X": [2.3367308242735277e-43, -8.275674957806435e-36, 1.4719488303201074e-31, 3.086483352809208e-27, -7.154141026647968e-22, -1.4696467998018377e-17, 2.5816090357881686e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_107": {}, "NODE_623": {"DENSITY": [0.1428272279103306, 0.30621657858403917, 0.39169740543707876, 0.463748252807034, 0.42282274986619867, 0.4171811985245333, 0.43480762165478337], "TOTAL_ENERGY": [0.3072334685936284, 0.9587578389799201, 0.9178430524596117, 0.9569995756197229, 0.9425425814796954, 0.9372324799697962, 0.9455802006656363], "MOMENTUM_X": [0.025727713560513333, 0.3018012828322096, 0.36055689640043764, 0.42953716067420683, 0.3925088417060812, 0.38638798197225566, 0.4029089910870979], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_431": {}, "ELEMENT_1100": {}, "ELEMENT_98": {}, "NODE_969": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1249999999999997, 0.12500000000625797, 0.12499986335094106], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999917, 0.2500000000175223, 0.24999961738316154], "MOMENTUM_X": [1.3208115006790436e-36, -8.808202476790691e-31, 1.1020867864105e-25, -4.688577967093321e-21, -4.282110766030049e-16, 8.151523781663995e-12, -1.9700232308570818e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1521": {}, "ELEMENT_1518": {}, "ELEMENT_290": {}, "ELEMENT_1873": {}, "ELEMENT_1587": {}, "NODE_532": {"DENSITY": [0.6662540624360408, 0.5196185279730274, 0.47429187350132845, 0.4561610048219622, 0.44391684099004836, 0.43393703835079345, 0.43097355446826485], "TOTAL_ENERGY": [1.4737178585356312, 1.139785498320617, 1.0426080826444004, 0.9993236235094929, 0.9753920149379157, 0.9589219632913503, 0.9492377508308041], "MOMENTUM_X": [0.253264917418181, 0.37641978088832406, 0.38727081011593384, 0.3930725354194366, 0.39446025713519484, 0.39315020592903027, 0.3957369855248623], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_49": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000016], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000053], "MOMENTUM_X": [2.2027860712349e-42, -3.5754700873451953e-34, -1.0997608417724085e-30, 2.8336332022308963e-26, -1.2806101672513156e-22, -1.1505289282489263e-18, -1.9347363045576275e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1165": {}, "ELEMENT_1139": {}, "ELEMENT_809": {}, "ELEMENT_651": {}, "ELEMENT_249": {}, "NODE_408": {"DENSITY": [0.9999999860069976, 0.9998538464677889, 0.9914167198098769, 0.9394191059884885, 0.8505101274224913, 0.7696776956929741, 0.7090275819321861], "TOTAL_ENERGY": [2.499999951024492, 2.4994885135495175, 2.4700855246288214, 2.2934603408387404, 2.008629048285789, 1.7683736401086547, 1.599835564884753], "MOMENTUM_X": [-5.770010668482604e-08, 0.00017523383650712126, 0.01012112368392548, 0.06890684656992477, 0.15998721878149041, 0.23187447922086282, 0.27839884190491965], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_321": {"DENSITY": [0.9999999999999718, 1.0000000000612987, 0.9999998969173892, 0.9999504726586542, 0.998119987185513, 0.9824465420377121, 0.9370808532098437], "TOTAL_ENERGY": [2.499999999999901, 2.5000000002145453, 2.499999639210896, 2.499826659338626, 2.4934260546636358, 2.439038239190995, 2.2855316729992614], "MOMENTUM_X": [-3.4848768834208605e-14, -7.354070310845978e-11, 1.2121440317002047e-07, 5.8663829898599505e-05, 0.0022253440533335786, 0.02055479748431341, 0.071550197844575], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1161": {}, "ELEMENT_1895": {}, "ELEMENT_1330": {}, "NODE_93": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [-2.4678859840872277e-50, 4.728210764308784e-39, -2.5140362038510057e-34, 1.7091820701814477e-29, 1.1567127794881984e-25, -5.152212151814765e-22, -2.391587447211742e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_649": {}, "NODE_978": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000086, 0.12499999995543065, 0.12499940025440825], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000241, 0.24999999987520583, 0.24999832071262382], "MOMENTUM_X": [-6.485543176503155e-33, 4.41590582968742e-27, 6.283794106100301e-23, -5.088934893391185e-19, 6.1890797581357844e-15, -4.7226203977450754e-11, -6.732911463223596e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1903": {}, "ELEMENT_479": {}, "ELEMENT_825": {}, "NODE_574": {"DENSITY": [0.35783682775454806, 0.4547697612543624, 0.39102502028340197, 0.4220472573412365, 0.41618488001329157, 0.40232104940996277, 0.4195788961973955], "TOTAL_ENERGY": [0.9981727926619061, 0.9252109527645775, 0.9082665282953992, 0.926109196835096, 0.9141684869174941, 0.9097170350184679, 0.9153306638693832], "MOMENTUM_X": [0.36575488561392644, 0.4295241759667564, 0.3757840208865082, 0.4087489424604788, 0.40304899930103333, 0.3909622193660359, 0.40797790636840475], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_964": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000003564, 0.12499999953251423, 0.1250032342804691], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000998, 0.2499999986910398, 0.25000905662185785], "MOMENTUM_X": [3.7780962504299565e-32, 6.711308550487961e-28, -1.3339206161415382e-22, -3.826103173153495e-18, 6.070569251792672e-14, -9.761198525300546e-10, 5.306222126462272e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_525": {"DENSITY": [0.8353640275272443, 0.6079481490590016, 0.5355363212363615, 0.4977272996516778, 0.4760622656372097, 0.4634356575549915, 0.4535237966994806], "TOTAL_ENERGY": [1.968199576851953, 1.3381446945723536, 1.1675265848559593, 1.0874174348362242, 1.0431716387696954, 1.0157134327619162, 0.996523368610836], "MOMENTUM_X": [0.18465945559056854, 0.3412727773755549, 0.37593538332008497, 0.3849862079628027, 0.3888024804881794, 0.391767593425027, 0.3926290389844363], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_302": {"DENSITY": [1.0, 1.0000000000000124, 1.0000000000541815, 0.9999999862160021, 0.9999747606687779, 0.9988474077750733, 0.9873357318269624], "TOTAL_ENERGY": [2.5, 2.500000000000043, 2.500000000189635, 2.499999951756007, 2.4999116635998546, 2.49596816776339, 2.455919916051836], "MOMENTUM_X": [-5.606074660518011e-19, -1.74966478335769e-14, -6.672380105556197e-11, 1.8072213095730476e-08, 3.024791376857626e-05, 0.0013743641535192497, 0.014964706360832799], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1101": {}, "ELEMENT_1968": {}, "ELEMENT_596": {}, "ELEMENT_61": {}, "ELEMENT_196": {}, "ELEMENT_600": {}, "NODE_203": {"DENSITY": [1.0, 1.0, 1.0, 1.00000000000005, 1.00000000004138, 0.9999998433642844, 0.9999825319308088], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000000174, 2.500000000144829, 2.4999994517750475, 2.499938862320387], "MOMENTUM_X": [1.4691913512148607e-25, -1.8663867059127527e-21, -3.4027909780061625e-17, -6.37472985216327e-14, -4.323619177926714e-11, 1.857121521887324e-07, 2.065781506367017e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_502": {}, "ELEMENT_684": {}, "ELEMENT_843": {}, "ELEMENT_1238": {}, "ELEMENT_1229": {}, "NODE_439": {"DENSITY": [0.9999960646088795, 0.9890738222068064, 0.9163526839732707, 0.811135296392462, 0.7282402136018217, 0.670430001064594, 0.6291245087847914], "TOTAL_ENERGY": [2.4999862262504493, 2.4619739466908834, 2.217979621001426, 1.8910848060567045, 1.6547282115285813, 1.5007640115874383, 1.3961480342824941], "MOMENTUM_X": [2.232334536519065e-06, 0.012855490018055565, 0.09456977526251556, 0.1981889777235405, 0.2659848253380091, 0.3056523651789489, 0.32981265159328976], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1874": {}, "ELEMENT_482": {}, "ELEMENT_1970": {}, "ELEMENT_1321": {}, "ELEMENT_1593": {}, "ELEMENT_114": {}, "ELEMENT_972": {}, "ELEMENT_1995": {}, "NODE_1011": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000008596, 0.12499999850562693], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000002406, 0.24999999581575547], "MOMENTUM_X": [1.0887610733051143e-35, 3.9360380960165946e-30, -3.878064352927548e-26, -1.2251299746901885e-21, -2.915537757459176e-18, 1.6212774114762032e-13, -2.9038891599232533e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1502": {}, "ELEMENT_1674": {}, "ELEMENT_758": {}, "NODE_922": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001635, 0.12499999979651573, 0.12500025151224306, 0.14801724997036392], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000004574, 0.2499999994302441, 0.25000070426951887, 0.32573448431651575], "MOMENTUM_X": [1.6892278231673923e-27, -7.205508569038704e-23, -1.7578677933812235e-18, 3.27598942764437e-14, -3.6987169646122307e-10, 7.590425150239135e-07, 0.03460567124138741], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1359": {}, "ELEMENT_11": {}, "ELEMENT_863": {}, "ELEMENT_672": {}, "NODE_156": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999973, 1.0000000000051192, 0.9999999944761577, 0.999998727271491], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999991, 2.500000000017919, 2.499999980666554, 2.4999955454533582], "MOMENTUM_X": [-6.3775205619721546e-27, 1.3190792857292897e-23, 3.632423413704264e-20, 3.0536981432957767e-15, -5.769393976413049e-12, 6.278140890080556e-09, 1.4719562454630056e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1613": {}, "ELEMENT_269": {}, "ELEMENT_1810": {}, "ELEMENT_1812": {}, "NODE_448": {"DENSITY": [0.9999993253648569, 0.9926732060296164, 0.9297288706953947, 0.8205485645849582, 0.7295390380410622, 0.6670559146466941, 0.6236675336207652], "TOTAL_ENERGY": [2.4999976387973466, 2.4744532693605925, 2.261464785919235, 1.917567547702836, 1.6556620195905722, 1.4889746696265642, 1.3794291070684819], "MOMENTUM_X": [1.37494050051049e-06, 0.008580107004750284, 0.07924712556655444, 0.18779022659398106, 0.26344852116324513, 0.30673285253421295, 0.33231634886402384], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_865": {}, "ELEMENT_634": {}, "ELEMENT_1697": {}, "ELEMENT_1149": {}, "ELEMENT_1918": {}, "ELEMENT_995": {}, "ELEMENT_705": {}, "NODE_516": {"DENSITY": [0.9277541515449065, 0.6909340544412242, 0.5851047566236843, 0.5343314419878825, 0.5049090043893226, 0.48541331260546566, 0.4724708086064841], "TOTAL_ENERGY": [2.256095263951357, 1.5539506674790213, 1.2879209323870078, 1.169430448117657, 1.104225115415001, 1.063079728904466, 1.0351623321991352], "MOMENTUM_X": [0.08331118663619067, 0.2941917506571761, 0.3530325582493003, 0.3737154666024684, 0.3823435171096034, 0.3863238995415621, 0.3890736919486708], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_2": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [0.0, 8.895914246453532e-36, -4.159298188732737e-33, -1.743221815146698e-29, -8.926757885715762e-25, -1.695247006263821e-21, 7.68496059338769e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_374": {}, "ELEMENT_1424": {}, "NODE_430": {"DENSITY": [1.000000032400433, 0.9996763856833667, 0.9847559667409065, 0.9125586483785317, 0.812130425862219, 0.7322737204813153, 0.676061417722247], "TOTAL_ENERGY": [2.500000113401523, 2.498867578444696, 2.447026144931906, 2.2051180148005716, 1.8923420614716822, 1.6634108510377947, 1.5127166272490826], "MOMENTUM_X": [-6.211740355185637e-08, 0.00038943458208487414, 0.018048938069715605, 0.09861886231752401, 0.19706707049009684, 0.26303759178489794, 0.3023442473071167], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_598": {}, "ELEMENT_899": {}, "NODE_502": {"DENSITY": [0.9714354734929025, 0.7800208824441702, 0.650859756365509, 0.5821726433701617, 0.5419763133640824, 0.5155972119609055, 0.4979172176846335], "TOTAL_ENERGY": [2.4014399283164845, 1.7998601825354146, 1.4472411645005212, 1.2777599477485304, 1.1850702471321717, 1.127680881584189, 1.0891070608422846], "MOMENTUM_X": [0.03038916209613532, 0.22427454680870187, 0.3166252566530142, 0.3541760704304411, 0.3705708934291127, 0.37865514191109495, 0.38373127253988043], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_732": {"DENSITY": [0.12500000000383404, 0.12500014112729133, 0.13434780255189174, 0.2906555459096715, 0.2583863162210417, 0.286525949179448, 0.3445436084200218], "TOTAL_ENERGY": [0.2500000000107353, 0.25000039515852945, 0.2781301596779528, 1.0137708920201636, 0.8154947758753774, 0.8813753011033074, 0.9074504131949368], "MOMENTUM_X": [5.372043914014327e-12, 2.5766838237105542e-08, 0.011936330318208772, 0.3021636134035157, 0.22635844591933274, 0.26544389296583815, 0.3195583941488628], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_138": {}, "ELEMENT_1136": {}, "ELEMENT_1381": {}, "ELEMENT_1084": {}, "ELEMENT_1885": {}, "ELEMENT_1672": {}, "ELEMENT_1303": {}, "NODE_64": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000135, 0.9999999999915016], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000475, 2.499999999970256], "MOMENTUM_X": [1.8404101808746833e-35, 1.374478836522176e-29, 1.147304666208856e-25, -8.176155695461137e-22, -2.678377729316425e-18, -1.6018447243052184e-14, 9.99653860526756e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_1026": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999963, 0.12500000000804828], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999892, 0.2500000000225352], "MOMENTUM_X": [1.0058518947584136e-41, 2.7380486035330227e-34, 3.565136248433189e-30, -1.934903420132895e-25, 3.3739330420962834e-21, -5.316089372691327e-16, 9.40610609491449e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_631": {"DENSITY": [0.128552090496286, 0.29439502648328714, 0.3363551092764151, 0.44658899201755115, 0.4464047963328038, 0.41247751304344393, 0.42832177068242056], "TOTAL_ENERGY": [0.2602438408311959, 0.9852134797120923, 0.880664982728344, 0.9544000304101035, 0.9482352623081276, 0.9351903591521793, 0.9423288702158618], "MOMENTUM_X": [0.0038409505379264244, 0.2975663318713713, 0.30550090245190914, 0.4146778530488951, 0.41264677123707616, 0.38159558020266354, 0.39633194871251404], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_27": {}, "ELEMENT_609": {}, "ELEMENT_1956": {}, "ELEMENT_1052": {}, "ELEMENT_204": {}, "NODE_271": {"DENSITY": [0.9999999999999999, 0.9999999999999125, 1.0000000002437353, 0.9999997636659027, 0.9999493817969071, 0.9984533788934128, 0.9863610403950793], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999999996936, 2.500000000853073, 2.499999172830797, 2.499822841159099, 2.4945908517280864, 2.4525524741089955], "MOMENTUM_X": [-1.2599744513319787e-16, 7.614556432335497e-14, -2.738977884441787e-10, 2.6714936837509297e-07, 5.883979018482993e-05, 0.0018227961462261675, 0.016083798347361917], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_534": {}, "ELEMENT_1574": {}, "NODE_961": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000213, 0.1249999997520088, 0.1250032358538993], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000005956, 0.24999999930562455, 0.2500090611400454], "MOMENTUM_X": [-1.6506408222277653e-34, 1.3981858549266202e-28, 1.983891852055016e-23, -1.275349586800688e-18, 2.5285883890306835e-14, -4.829301880649705e-10, 5.612153842498365e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_384": {}, "ELEMENT_469": {}, "ELEMENT_810": {}, "NODE_239": {"DENSITY": [1.0, 1.0000000000000002, 0.999999999999964, 1.0000000001132456, 0.9999995149808585, 0.9999462363989681, 0.9986705352322442], "TOTAL_ENERGY": [2.5, 2.500000000000001, 2.4999999999998743, 2.5000000003963603, 2.499998302433559, 2.4998118328622643, 2.495349810052689], "MOMENTUM_X": [3.3455054306607616e-20, 5.135620717543715e-18, 1.9507160746730328e-14, -1.220696061522315e-10, 5.846357748265405e-07, 6.394073073039103e-05, 0.0015694163225817702], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1307": {}, "NODE_998": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000024816, 0.12499998704241201], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000017, 0.2500000000006949, 0.2499999637187563], "MOMENTUM_X": [-1.5045819846435235e-35, 1.606608693777613e-30, -5.110055201713475e-25, 2.6810864946244874e-21, 5.888582814265072e-17, -1.0073999056322086e-13, -1.2286193971988664e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_962": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000427, 0.1249999995339149, 0.1250045497274147], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000001195, 0.24999999869496173, 0.2500127402952029], "MOMENTUM_X": [2.8375408691951164e-33, 6.010409064047071e-29, 2.0373939228242035e-23, -3.7254521866471944e-18, 5.1014419151597806e-14, -8.218886761181003e-10, 6.926484132462377e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_878": {"DENSITY": [0.125, 0.125, 0.12500000000001277, 0.12499999989066567, 0.12499992100693566, 0.13866035601768964, 0.28136996118734797], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000003564, 0.24999999969386374, 0.24999977881903593, 0.2924855174815132, 0.9622250368265653], "MOMENTUM_X": [-4.290975441681374e-23, -9.15497903555176e-19, 1.5835911924337636e-14, -1.3623141635351626e-10, -1.7288318395194979e-07, 0.0190347295624076, 0.28135907535336613], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_806": {"DENSITY": [0.125, 0.12500000000002676, 0.12499999867768606, 0.12502198313487922, 0.1962877158086438, 0.25734312604065895, 0.2789252537278022], "TOTAL_ENERGY": [0.25, 0.2500000000000749, 0.24999999629752107, 0.25006157024160836, 0.5329213045003287, 0.8271858238152039, 0.9425625936805059], "MOMENTUM_X": [-1.1932174996600309e-18, 4.1000066838381165e-14, -2.0068379674678313e-09, 2.750262809350995e-05, 0.12223869373844042, 0.22864071219621035, 0.27476544915102025], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1497": {}, "NODE_474": {"DENSITY": [0.9983939581168866, 0.9098522208214301, 0.7737194632329035, 0.6764008507391078, 0.6164795005373112, 0.5771529372841039, 0.5494738096715467], "TOTAL_ENERGY": [2.494386704313772, 2.1967329940532974, 1.7805682008340007, 1.5130310987132647, 1.3612022704355902, 1.2666808935266483, 1.203276399953128], "MOMENTUM_X": [0.0023177909127240783, 0.09851098001272131, 0.2274020333968124, 0.2990401211891139, 0.3353833546548153, 0.35495310273322006, 0.3664559854622787], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_934": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000522, 0.12499999998114496, 0.12499966526639425, 0.13237465552454591], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000001465, 0.2499999999472059, 0.24999906274683564, 0.2719026259442164], "MOMENTUM_X": [-7.04412095862981e-28, 3.61808062551811e-23, 1.6441660302786507e-19, 1.9966945003705146e-15, -7.271371998328014e-12, -4.726665164392904e-07, 0.00940958341899989], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_119": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000093, 0.999999999996158, 0.9999999890908041], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000000324, 2.4999999999865525, 2.4999999618178146], "MOMENTUM_X": [1.9002192103263734e-30, 1.8400899024738807e-25, 1.1928433823181785e-22, -2.1871986286996316e-18, -1.1764777934676624e-14, 4.778599084866237e-12, 1.3121366984903815e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_577": {}, "ELEMENT_1576": {}, "ELEMENT_640": {}, "ELEMENT_1859": {}, "NODE_854": {"DENSITY": [0.125, 0.12499999999999997, 0.12500000000041364, 0.12499999160228513, 0.12510157124102866, 0.21263794443747447, 0.2594990879573954], "TOTAL_ENERGY": [0.25, 0.2499999999999999, 0.25000000000115813, 0.24999997648639946, 0.2502846571470044, 0.6101510648195242, 0.83867950421075], "MOMENTUM_X": [1.8580239464729427e-21, -3.740161376500762e-17, 2.3072993057332347e-13, -8.481459379594147e-09, 0.00010297987901095353, 0.1515711394893664, 0.2334103983901004], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_272": {"DENSITY": [1.0, 1.0000000000000013, 1.000000000002546, 0.9999999984945153, 0.9999957513169677, 0.9997168341225546, 0.9954645644612604], "TOTAL_ENERGY": [2.5, 2.5000000000000053, 2.5000000000089115, 2.4999999947308047, 2.499985129646532, 2.499009059771868, 2.4841584158010317], "MOMENTUM_X": [1.0173091666590177e-19, -1.1517817378964218e-15, -3.198611169441059e-12, 1.9903380155572992e-09, 5.039991152444732e-06, 0.0003348994672084031, 0.0053483472878968295], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_298": {}, "ELEMENT_861": {}, "ELEMENT_910": {}, "ELEMENT_320": {}, "NODE_456": {"DENSITY": [1.0000012303763004, 0.9966447529049551, 0.9459526254914298, 0.8316269844924673, 0.7302487189508412, 0.6623483090345034, 0.616683905187986], "TOTAL_ENERGY": [2.500004306319416, 2.48827750597808, 2.3150805909344823, 1.949515293966446, 1.6549529453426854, 1.4736994023568573, 1.359066002128886], "MOMENTUM_X": [-1.1437528442122014e-06, 0.00400159208895671, 0.06091407113273321, 0.17611519446312457, 0.2616933695284813, 0.30900351648482643, 0.33583799693464866], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1138": {}, "ELEMENT_1362": {}, "NODE_481": {"DENSITY": [0.9983638368572417, 0.9141318260850838, 0.7754753002008081, 0.6748492429596514, 0.6134187264443042, 0.5737634945963147, 0.5463164186488676], "TOTAL_ENERGY": [2.494280459998534, 2.2107058973183027, 1.785533320680327, 1.5093115378653406, 1.3541300562343759, 1.2595204791899097, 1.1965487904790506], "MOMENTUM_X": [0.002090358421101225, 0.09542748357369679, 0.22685965019402277, 0.30160869754904307, 0.3377955117305273, 0.356870655912393, 0.36795864086692165], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_812": {}, "NODE_951": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999997, 0.12500000000038, 0.12499999439140091, 0.12507132839424318], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999994, 0.2500000000010639, 0.24999998429592316, 0.2501998516558747], "MOMENTUM_X": [9.601418352237496e-32, -1.158044101641318e-26, -9.424022096695299e-22, -2.749989044272073e-17, 3.5321446700842314e-13, -6.2269383205165925e-09, 7.6088138380219e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1438": {}, "ELEMENT_1997": {}, "NODE_622": {"DENSITY": [0.14281139991681058, 0.3063262346540871, 0.39079505781425156, 0.46565046539089666, 0.42204372662552336, 0.4138307250840884, 0.438064436979291], "TOTAL_ENERGY": [0.30717467189659153, 0.9591029494309373, 0.915353274475352, 0.961927516528786, 0.9408392300702886, 0.9357429916672019, 0.9466029443668061], "MOMENTUM_X": [0.02569309047899341, 0.3018826514387037, 0.3589265849843195, 0.43249877854733076, 0.3913801311592051, 0.3832540225826604, 0.40576769072823204], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_995": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999996, 0.1250000000007807, 0.12499998679607281], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2499999999999999, 0.25000000000218603, 0.2499999630290067], "MOMENTUM_X": [1.8398974981041607e-36, -3.51594975846312e-31, -4.453640546608124e-26, -5.5843044822089425e-22, -4.1230895214048574e-17, 6.658206771427252e-13, -1.2654584689878563e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1373": {}, "NODE_659": {"DENSITY": [0.1250220848482528, 0.23896253508958948, 0.27859343201144826, 0.359880279900225, 0.4449444533797931, 0.4342779106350178, 0.41694244488083193], "TOTAL_ENERGY": [0.25006187983547684, 0.7343555318884851, 0.858648008151805, 0.9167561953784735, 0.9475171960526039, 0.9420835120050923, 0.9346782468896735], "MOMENTUM_X": [3.345299393140387e-05, 0.19665307283346992, 0.2523580216204778, 0.3336300906683948, 0.41082699736981027, 0.40062275701525196, 0.3844512814463456], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_618": {}, "NODE_201": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999832, 1.0000000000185554, 0.9999999953342904, 0.9999977644536845], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999414, 2.5000000000649427, 2.4999999836700155, 2.4999921755976167], "MOMENTUM_X": [-7.580034051897339e-28, -6.321017739551272e-24, -3.7134325926986605e-19, 1.9483369084108087e-14, -2.1962156097379312e-11, 5.847563321366609e-09, 2.6666517416481636e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_3": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000004], "MOMENTUM_X": [0.0, -3.620245945038796e-35, 3.358228933067788e-31, 3.7830658059854018e-28, 9.766263939812432e-24, 3.9196309713831708e-22, -1.3095410647696037e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "NODE_211": {"DENSITY": [1.0, 1.0, 0.9999999999999993, 1.0000000000021982, 0.9999999984440104, 0.999999060666098, 0.9999379361949189], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999998, 2.500000000007694, 2.4999999945540368, 2.4999967123331546, 2.4997827835987128], "MOMENTUM_X": [-6.228661864771276e-25, 1.1553338503314843e-20, 7.380126770186174e-16, -2.5765361142991546e-12, 1.8449881390514807e-09, 1.1082269613700176e-06, 7.330518180082967e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1142": {}, "ELEMENT_1114": {}, "ELEMENT_170": {}, "NODE_92": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 1.000000000000318, 0.9999999995729457], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.500000000001113, 2.4999999985053103], "MOMENTUM_X": [-1.0490982630558625e-32, -1.3554343307074942e-27, -5.51322017269326e-24, 4.316387473766031e-20, 1.9083715888363114e-16, -3.860140451156777e-13, 5.16476727391185e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_542": {}, "ELEMENT_675": {}, "ELEMENT_1304": {}, "ELEMENT_1779": {}, "ELEMENT_591": {}, "ELEMENT_791": {}, "NODE_988": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000133, 0.12499999999503272, 0.12499992817671893], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000366, 0.24999999998609151, 0.24999979889489163], "MOMENTUM_X": [-1.1136470675014993e-33, -7.786605364452607e-29, 3.3120618692065e-24, 5.747518374854456e-20, 2.0116930383144604e-16, -1.2222826993958006e-12, -9.61907837170609e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1422": {}, "NODE_346": {"DENSITY": [1.000000000000335, 1.0000000027645763, 0.9999956459097342, 0.9994526523241506, 0.9905777031870638, 0.9524601184349957, 0.8871885226332993], "TOTAL_ENERGY": [2.500000000001173, 2.5000000096760173, 2.4999847607301184, 2.4980848384172947, 2.467164294665848, 2.336941957104389, 2.12326244473388], "MOMENTUM_X": [3.4228670194996284e-13, -3.2297247085165074e-09, 5.115459744998273e-06, 0.00064590942121699, 0.01106845483421419, 0.054530484060794304, 0.12399398404942748], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_632": {}, "ELEMENT_1811": {}, "ELEMENT_1181": {}, "ELEMENT_893": {}, "ELEMENT_1393": {}, "ELEMENT_403": {}, "NODE_545": {"DENSITY": [0.5382355625723745, 0.4502919130872221, 0.42687712355586044, 0.4164201471189194, 0.41789874866550164, 0.41196065522625414, 0.41258635828932494], "TOTAL_ENERGY": [1.1691296374580347, 0.9931432248756601, 0.9379141952061353, 0.9238550872736302, 0.9202196756787444, 0.9140656160544072, 0.9126863433577393], "MOMENTUM_X": [0.3933661602736005, 0.41006724763779057, 0.39828344012719624, 0.3948938119865817, 0.3996259554976208, 0.39542395877079894, 0.397225041080057], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_1221": {}, "ELEMENT_186": {}, "ELEMENT_1943": {}, "NODE_748": {"DENSITY": [0.12500000000318298, 0.12499982473584682, 0.13071518345485617, 0.2678360798740355, 0.2623882828196504, 0.27748698967134766, 0.3292706216703172], "TOTAL_ENERGY": [0.25000000000891237, 0.2499995092608593, 0.2666705301720091, 0.8900104769255835, 0.8489210397775685, 0.8679426309392825, 0.8999240654646103], "MOMENTUM_X": [-1.0802158036076063e-12, -2.60794584651768e-07, 0.006570464660241384, 0.25538236558957733, 0.23901877852485515, 0.25578817421713335, 0.30619985485494644], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_498": {}, "ELEMENT_1200": {}, "NODE_507": {"DENSITY": [0.9238119256827558, 0.6930098342076056, 0.5932301554558859, 0.5420171952157766, 0.5125472100352018, 0.49288237646872013, 0.47804782999368794], "TOTAL_ENERGY": [2.2439187391229574, 1.5577539875214323, 1.3060659721508707, 1.1876101976697715, 1.119457507978088, 1.0775507790407675, 1.0481163421881077], "MOMENTUM_X": [0.09160777599486261, 0.28512309805027686, 0.3454012008317032, 0.36896979361984783, 0.3797019099384609, 0.38548998797297973, 0.38798666565548867], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_697": {}, "ELEMENT_1571": {}, "ELEMENT_839": {}, "ELEMENT_265": {}, "NODE_194": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 1.0000000000004199, 0.9999999997144173, 0.9999996803607223, 0.9999721737604493], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.5000000000014704, 2.4999999990004618, 2.499998881262756, 2.499902609608571], "MOMENTUM_X": [2.5070644028479963e-24, 6.174176022216564e-20, 1.2037037842298398e-16, -5.308547541614222e-13, 3.545160296906403e-10, 3.8375878786424723e-07, 3.308365440980581e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_65": {}, "ELEMENT_779": {}, "ELEMENT_1380": {}, "ELEMENT_1899": {}, "NODE_77": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5], "MOMENTUM_X": [-7.023388421466392e-49, 1.1862218351197133e-37, -3.5769795060586016e-34, 5.51016534935397e-29, 6.635237688911412e-26, -1.1806343070963604e-21, 1.545462575038564e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]}, "ELEMENT_964": {}, "ELEMENT_1915": {}, "ELEMENT_1802": {}, "ELEMENT_356": {}, "ELEMENT_301": {}, "ELEMENT_771": {}, "ELEMENT_939": {}, "ELEMENT_597": {}, "ELEMENT_1923": {}, "ELEMENT_1900": {}} \ No newline at end of file +{"TIME": [0.030000000000000002, 0.05999999999999999, 0.085, 0.11000000000000003, 0.13500000000000004, 0.16000000000000006, 0.18500000000000008], "NODE_1": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 2.192768373044373e-35, 2.8750101559655826e-32, -9.014389809700241e-29, -1.2381864695073685e-24, -1.0605832252963171e-21, -1.1512673984590999e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_2": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 8.959600537215325e-36, -3.219930518085632e-33, -1.658716615341598e-29, -8.486502432996321e-25, -1.6611872932966795e-21, 7.98207624767749e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_3": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002], "MOMENTUM_X": [0.0, -1.4865609843907727e-35, 3.2953831385177967e-31, 3.893310537957066e-28, 1.0252892416885508e-23, 3.9542307353954064e-22, -1.3000884271857534e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000004]}, "NODE_4": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 1.9690821267121862e-35, 1.390511711882204e-31, 1.7178593149607854e-28, 3.497868183907539e-24, 1.770004332086715e-21, -3.922104391208492e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_5": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 2.8223620118093333e-36, -2.254361282862839e-33, 2.4428822771399132e-29, -4.897850303414284e-25, -2.234879947434012e-21, 3.609429654630562e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_6": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000001], "MOMENTUM_X": [-2.4003700720679033e-42, -1.1573374485267533e-33, -2.0301335368814618e-30, 6.224886483542075e-27, 3.272617259521982e-23, -4.1661700659851003e-20, -1.1113924828139399e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000003]}, "NODE_7": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 1.2751607638834118e-35, 6.302771710469162e-32, 2.835073593198166e-28, 2.2147590612612025e-24, 4.56325303958247e-21, -2.2984323349471172e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_8": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000004], "MOMENTUM_X": [-5.041838143008967e-43, -3.581751168014753e-34, -3.4320987682733014e-31, 1.5482177888743569e-27, 2.1262089908982887e-23, -1.1454851666856238e-21, -5.166251413916799e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000013]}, "NODE_9": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002], "MOMENTUM_X": [-1.9473527636657794e-43, -1.2582070916163732e-34, -1.7738862269792527e-31, -3.4644769908478696e-28, 1.2101155008967727e-23, 3.3947698581073975e-20, -3.7188000345688477e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000001]}, "NODE_10": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000053], "MOMENTUM_X": [8.31248772150034e-42, -9.450940412369163e-34, -1.9791655029489442e-29, -2.1177249018162693e-26, -7.022230476304969e-22, 3.8032592896344683e-20, -6.017426655356435e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000187]}, "NODE_11": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 7.975539293574042e-37, -2.1102045039733173e-33, 2.654867365015742e-29, -3.3424022945580906e-25, -2.1312091143839117e-21, 1.6190751750092714e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_12": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000024], "MOMENTUM_X": [-3.374743579567023e-42, -2.0047596006979127e-33, -9.297752009981343e-30, -1.9783813538571414e-27, -2.7478154289576455e-22, -4.261236660251672e-20, -3.176271464061262e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000009]}, "NODE_13": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 7.840168657162502e-36, 3.108558986416898e-32, 3.008921528788949e-28, 1.0008088576201128e-24, 5.212763283967998e-21, -1.638269751541351e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_14": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000022], "MOMENTUM_X": [-1.2155989007555706e-42, -1.1438508543885501e-33, -4.733364156877697e-30, -8.06484849364688e-27, -1.956140617208749e-22, -7.87013855373183e-20, -2.6797481368168285e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000075]}, "NODE_15": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002], "MOMENTUM_X": [-6.734211055457302e-44, -4.311636226345504e-35, -5.406344673905842e-32, -1.130053809589841e-27, 9.598086484780396e-24, 4.996963135648719e-20, -2.5450806284735574e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000001]}, "NODE_16": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000226], "MOMENTUM_X": [3.0499891118206865e-39, 7.124335554113014e-32, 1.3830679210834519e-28, -4.555490277529157e-25, -1.5025748441160462e-21, 3.767401835246205e-18, -2.6400903107292452e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.50000000000008]}, "NODE_17": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 9.957615096644625e-39, -1.6033570051968542e-33, 1.5349905076727623e-29, -1.899462406578725e-25, -1.652437758117597e-21, 3.4805915813647347e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_18": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000127], "MOMENTUM_X": [7.624412975796808e-40, 2.018812246274401e-32, 3.320552738715896e-29, -1.7730131401098447e-25, -1.500581675592725e-21, 1.8066954494071108e-18, -1.5393957807852225e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000045]}, "NODE_19": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 4.224156225279276e-36, 1.2504396340693428e-32, 2.5484990301517433e-28, 3.02511180679621e-25, 2.756894180143981e-21, -5.413874170356697e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_20": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000018], "MOMENTUM_X": [-8.71194882489576e-43, -6.901926566089397e-34, -2.6177406717231883e-30, -1.1478380034082616e-26, -1.0690183078281206e-22, -2.004623415420029e-19, -2.2279112032721056e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000006]}, "NODE_21": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000011], "MOMENTUM_X": [3.1199349014193216e-40, 7.091821910074227e-33, 2.0874361041691285e-29, -6.457775447163594e-26, -1.0771349754876128e-21, 3.1905487441641538e-19, -1.3365359827946313e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000039]}, "NODE_22": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [-2.0032516964898261e-44, -5.284194642025121e-36, 9.863442930764283e-33, -1.1652157790882922e-27, 7.089491997008673e-24, 4.807434107824925e-20, -1.2528888322121661e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000004]}, "NODE_23": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, -1.6827684843270303e-37, -8.157874980500973e-34, 2.303480154757139e-30, -7.245694159944209e-26, -1.0670792731730733e-21, -1.8565041113808005e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_24": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000063], "MOMENTUM_X": [-3.921918507828619e-38, 1.7940247515988082e-31, 1.0475049879845897e-27, 2.18685724318362e-24, 3.998577835058076e-20, -2.9119860934317624e-17, -7.61080142445495e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000002216]}, "NODE_25": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000013], "MOMENTUM_X": [-4.854500501227089e-43, -3.688611922169677e-34, -1.2762175422130137e-30, -1.2050944645126033e-26, -3.454214950388481e-23, -1.834643787842697e-19, -1.4184859395021426e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000004]}, "NODE_26": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000109], "MOMENTUM_X": [1.2401703986086023e-40, 2.3022457810907068e-33, 1.0840209301110382e-29, 9.77764282888046e-27, -8.491734600124857e-22, -1.5214029090664854e-18, -1.3080634999998162e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000039]}, "NODE_27": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 1.7215659789699093e-36, 3.539624449898841e-33, 1.7942632977608833e-28, 1.502232358483183e-25, 2.6646183141575564e-22, -1.2930860153156838e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_28": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000455], "MOMENTUM_X": [-5.925558452991757e-39, 1.4960996963553959e-31, 5.622388296783977e-28, 6.369193246166916e-26, 1.8282828009827396e-20, -3.3238035127481176e-18, -5.415585036036528e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.50000000000016]}, "NODE_29": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000409], "MOMENTUM_X": [-3.3260426913477515e-39, 8.097740114158516e-32, 3.156921337816562e-28, 6.943185712811574e-26, 1.5254264607415384e-20, -6.4023626493628935e-18, -4.8615280247355645e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000143]}, "NODE_30": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [-4.896439002427368e-45, 6.004254469915567e-36, 2.406427058006326e-32, -7.159743634064571e-28, 3.61615113387262e-24, 3.8669064530446527e-20, -7.984607778853397e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_31": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000089], "MOMENTUM_X": [4.301592927997101e-41, -2.514132631821646e-35, 3.543532305168997e-30, 5.394146502508511e-26, -6.390083491043495e-22, -2.0096935807578898e-18, -1.0443656955117237e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000031]}, "NODE_32": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000004], "MOMENTUM_X": [-2.1107373884516547e-43, -1.4923219622750776e-34, -5.058900126302999e-31, -1.0144973294295409e-26, -6.429478702314304e-24, -5.978069990554172e-20, -5.386587113554338e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000013]}, "NODE_33": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000486], "MOMENTUM_X": [-1.188294607594813e-39, 4.937738908183268e-32, 1.9078939026893731e-28, 2.626842891204501e-25, 1.0816151688977735e-20, -1.9386202818930316e-19, -5.70829129080054e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000171]}, "NODE_34": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, -1.1924727125347683e-37, -2.6368692344486473e-34, -4.952071144079812e-30, -1.1403336322643681e-26, -4.997582468456847e-22, -1.6005070524232011e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_35": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000007, 0.9999999999999384], "MOMENTUM_X": [-1.046112793271276e-36, -3.0471452401678627e-30, -8.125435262557975e-27, 2.8339650748656013e-23, 1.5606543789428305e-20, -6.874304705671212e-16, 4.373946975556425e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000002, 2.499999999999785]}, "NODE_36": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 4.601774807179287e-37, 3.111742780084452e-34, 1.0266147120644475e-28, 1.7536173746448598e-25, -8.162415973476491e-22, 9.655718487246592e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_37": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0000000000000575], "MOMENTUM_X": [-2.8003552862177996e-37, -7.945056513874787e-31, -2.478067704791852e-27, 1.402984094902082e-23, 5.988099755725626e-20, -2.436324605478192e-16, -6.311216240649929e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000004, 2.500000000000201]}, "NODE_38": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0000000000000533], "MOMENTUM_X": [-8.97984314215596e-38, -2.8312452405672195e-31, -1.8406506679040696e-27, 8.05046070883542e-24, 4.3722396139958955e-20, -2.1827671132814032e-16, -6.550090352318917e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000001, 2.500000000000187]}, "NODE_39": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999], "MOMENTUM_X": [-9.344160956907962e-46, 5.4194469137959285e-36, 1.6651925416049718e-32, -2.3612181958218293e-28, 6.782340168707127e-25, 2.3732543535980512e-20, 5.4920035400600005e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_40": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000005], "MOMENTUM_X": [1.2024524883795798e-41, -6.6748707206187555e-34, -1.7861260890383601e-31, 5.544022789220255e-26, -3.9288948581027153e-22, -1.7259627625916568e-18, -6.075461128907138e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000018]}, "NODE_41": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000488], "MOMENTUM_X": [-2.9224813906855577e-40, 2.6262141156426567e-32, 1.0745238557491705e-28, 4.311143988131829e-25, 5.100562835938467e-21, 8.728127066067225e-18, -5.6607582774643806e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.50000000000017]}, "NODE_42": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999], "MOMENTUM_X": [-6.915644753102741e-44, -3.8289741089697326e-35, -1.3635708106240138e-31, -6.900644167859534e-27, -5.4562415212795344e-24, 2.5282771213791307e-20, 9.284064520166317e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996]}, "NODE_43": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.00000000000013], "MOMENTUM_X": [-3.2709989671709145e-38, -7.236126016890184e-32, -1.2857208564646211e-27, 3.488329206946391e-24, 3.256888216354995e-20, -1.0543856862579829e-16, -1.5169802152641607e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000004, 2.5000000000004556]}, "NODE_44": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, -4.92097026985874e-38, -2.5979944244473916e-35, -5.850744655658267e-30, -5.844998337371177e-28, -1.1987596211412974e-22, -7.149902568026869e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_45": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000056, 0.9999999999975335], "MOMENTUM_X": [1.9589096219261775e-35, -1.18605864530388e-29, -4.575431514578456e-26, -2.0792362794843094e-22, -1.8861726047617116e-18, -6.067924662143954e-15, 2.6731219718959795e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000019, 2.4999999999913665]}, "NODE_46": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 2.9729216639016413e-38, -3.192543665686541e-34, 4.501237337497087e-29, 1.5931876566253074e-25, -8.0175999015542325e-22, 3.6630711549702755e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_47": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000362], "MOMENTUM_X": [7.886708341905923e-43, 1.0456221948000716e-32, 5.260705886064813e-29, 4.561495074219126e-25, 1.3555786878086906e-21, 1.0188600552161383e-17, -4.270575351439098e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000001275]}, "NODE_48": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000002, 0.999999999999201], "MOMENTUM_X": [2.9343688119039965e-36, -7.018480624560279e-30, -2.875457266323546e-26, -2.0978636364957413e-23, -8.754430984590242e-19, -2.5789161302106046e-15, 9.987106617364665e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000007, 2.499999999997203]}, "NODE_49": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000016], "MOMENTUM_X": [2.2323952767934394e-42, -5.188256375974948e-34, -1.1293980771559736e-30, 3.259610236023899e-26, -1.4264142046043927e-22, -1.168373802606048e-18, -1.951431803857559e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000053]}, "NODE_50": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000001923], "MOMENTUM_X": [-1.1773858768454036e-38, 3.4243248073784567e-32, -6.868630848651669e-28, -1.0422130502057794e-24, 3.0438966901630545e-20, 4.663494819656892e-17, -2.2302749054696507e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000006732]}, "NODE_51": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000002, 0.9999999999992899], "MOMENTUM_X": [1.0868985350194159e-36, -4.007069948801638e-30, -1.702813207278198e-26, 6.196869877425553e-24, -6.145889417287093e-19, -2.306458593835544e-15, 8.268575333193563e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000067, 2.4999999999975144]}, "NODE_52": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [-1.3050423952643112e-46, 2.5597403260551904e-36, 6.679793512061164e-33, 3.0209125479493835e-29, -3.7284772804904053e-25, 9.579092632507563e-21, 5.381574408064052e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_53": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997], "MOMENTUM_X": [-1.6613029028654949e-44, -3.7558523720833848e-37, -5.31087134392153e-33, -3.683790417478716e-27, -8.448522321990692e-24, 4.840208128727128e-20, 3.1254785307529615e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999]}, "NODE_54": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000016, 0.9999999999997881], "MOMENTUM_X": [2.546957563754288e-37, -2.638727323408372e-30, -1.0822488480521111e-26, 8.692222983356245e-24, -5.181802333205269e-19, -1.7961757635918836e-15, 2.543934082441667e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000053, 2.499999999999259]}, "NODE_55": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000019], "MOMENTUM_X": [4.411627533621584e-41, 2.4480669259167973e-33, 2.0326214106533895e-29, 3.6705719883625137e-25, 2.606925616513416e-22, 6.6158975692206085e-18, -2.2860837998566404e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000067]}, "NODE_56": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000001892], "MOMENTUM_X": [-4.4734901013256115e-39, 5.788757999424169e-32, -2.22843773479722e-28, -3.2972687722100787e-24, 2.8191290182597637e-20, 1.129568484501908e-16, -2.2069372842531308e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000662]}, "NODE_57": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, -1.2431466331042415e-38, 2.1107883546749012e-35, -3.636030857287048e-30, -6.1012610781083744e-27, 2.079011231979064e-23, -2.1118385641208951e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_58": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000346, 0.9999999999775412], "MOMENTUM_X": [1.0485813216251082e-34, 6.590583282852212e-29, 3.723447844363754e-25, -1.9616162124516173e-21, 5.7895209707658846e-18, -3.894441923031447e-14, 2.4998526543282875e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000001217, 2.499999999921395]}, "NODE_59": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, -4.299027739707343e-38, -1.8843620328236047e-34, 1.30135189662289e-29, 9.410391933377467e-26, -3.7879713365862565e-22, -1.6258732417853065e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_60": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999994], "MOMENTUM_X": [1.1086435296649764e-43, -2.388452916403857e-34, -7.825021657807916e-31, 1.0019177284191287e-26, -1.742305663574185e-25, -5.939938333487471e-19, 4.483734762599971e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982]}, "NODE_61": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000149, 0.9999999999904651], "MOMENTUM_X": [5.381717411424774e-35, 1.8981149314449894e-29, 1.315688317054523e-25, -1.2127359415364087e-21, -1.9120215333531568e-18, -1.837120812819068e-14, 1.1659343177768452e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000524, 2.4999999999666285]}, "NODE_62": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000007, 1.0000000000003808], "MOMENTUM_X": [4.0272909877099816e-38, -1.439580592672314e-30, -6.878174360050302e-27, -2.149558801136987e-24, -3.3371670848591446e-19, -8.411392509767757e-16, -4.286748735115967e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000002, 2.500000000001333]}, "NODE_63": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [-1.219047383100316e-47, 7.481140615206135e-37, 1.3007359773009128e-33, 8.970129741954031e-29, -1.877008158383408e-25, 8.554403375191937e-22, 2.271721355581856e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_64": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000135, 0.9999999999914551], "MOMENTUM_X": [1.8053356443287967e-35, 9.289016581292231e-30, 1.1361360143755511e-25, -8.342931316574273e-22, -2.756899029200865e-18, -1.606588166214436e-14, 1.005162289238108e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000475, 2.4999999999700924]}, "NODE_65": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000001332], "MOMENTUM_X": [-1.4648359429876891e-39, 4.078674351065876e-32, 1.0469284892894045e-29, -2.97039465355143e-24, 1.5608658002707595e-20, 1.1459085923962368e-16, -1.5695812450660267e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000466]}, "NODE_66": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999998], "MOMENTUM_X": [-2.827320792054188e-45, 5.331042463584261e-36, 1.710930991966318e-32, -1.4024882723920817e-27, -6.822560715463018e-24, 3.395466129252086e-20, 2.7587863555170334e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999]}, "NODE_67": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000129, 0.9999999999940928], "MOMENTUM_X": [8.712659834632807e-36, 1.1924688561382167e-30, 1.0232509759481764e-25, -5.5215730427754935e-22, -2.0438453068344266e-18, -1.490840829305903e-14, 6.965037159979003e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000444, 2.4999999999793237]}, "NODE_68": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000049], "MOMENTUM_X": [2.1653184175236508e-41, -2.5558644505282913e-34, 4.7865989112188546e-30, 2.3578477494961653e-25, 2.9704154892164046e-22, 2.475198285007991e-18, -6.4611819847678574e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000178]}, "NODE_69": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000701], "MOMENTUM_X": [7.254587533368289e-40, -5.678287528836504e-31, -4.092141580309928e-27, -1.2502741002262302e-23, -1.3520163590694727e-19, 8.529915429452525e-17, -8.068204302550326e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000024536]}, "NODE_70": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999999], "MOMENTUM_X": [-7.236762528372036e-44, -6.797707459176627e-35, -2.878835162217858e-31, -1.4266543732059474e-27, 2.0390772744245487e-23, -1.4157428377860436e-19, 1.1584459979870686e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999964]}, "NODE_71": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000009, 0.9999999999979762], "MOMENTUM_X": [3.1064097516893235e-36, -2.7494311702430207e-30, 7.24713010274688e-26, -1.9844572337453889e-22, -1.7858064993686294e-18, -1.0666506318726706e-14, 2.4779641435692225e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000315, 2.4999999999929168]}, "NODE_72": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, -8.705014412433001e-40, 9.548268006243485e-36, -1.36214502738501e-30, -6.608712103723446e-27, 2.3853543883470526e-23, 7.713620117303965e-20], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_73": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.000000000000171, 0.9999999998490993], "MOMENTUM_X": [-2.108144605420793e-33, 5.896178530489582e-29, 1.623778271562607e-24, 1.9013070792122267e-20, 9.99418113667793e-17, -1.933162988134219e-13, 1.6989044403920383e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000005977, 2.4999999994718465]}, "NODE_74": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, -2.5469788349885224e-38, -3.651196351116359e-35, 7.935207269516858e-31, 3.293798950393965e-26, -5.938225331877626e-23, -1.2075185254698228e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_75": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000806, 0.9999999999291981], "MOMENTUM_X": [-3.4846596393379555e-34, 7.798503472879665e-29, 1.2866711606732825e-24, 5.5301882294818245e-21, 4.7230897544926557e-17, -9.877254978974331e-14, 8.597354469020495e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000283, 2.4999999997521933]}, "NODE_76": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.00000000000007, 0.999999999936579], "MOMENTUM_X": [-7.990485236803257e-35, 8.841807194512638e-29, 8.194713847532222e-25, 2.7630421210200846e-21, 1.9442092907876285e-17, -8.352637120423772e-14, 7.485603508642425e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000002456, 2.499999999778027]}, "NODE_77": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [-6.915604817384537e-49, 8.683492701779827e-38, -1.9464989895741156e-34, 5.574259353310424e-29, 9.959296174430024e-26, -1.1703125169255957e-21, 1.4396856209099226e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_78": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000000637], "MOMENTUM_X": [-2.5707851787114827e-40, 1.8254028360737797e-32, 6.046466474150201e-29, -1.5344334596445697e-24, 3.1049781852077595e-21, 7.703027511138026e-17, -7.670368446791903e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000223]}, "NODE_79": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 1.0000000000006752], "MOMENTUM_X": [-7.881279448630741e-39, -1.1098104738022727e-31, -2.1252820699224745e-27, -1.5657646251508306e-23, -2.995490325438055e-20, 5.630706604826828e-16, -7.871511562818926e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.500000000002363]}, "NODE_80": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999981], "MOMENTUM_X": [4.9547081852959864e-42, -5.6192170540372295e-34, -4.559696455080328e-31, 1.1699921641657432e-25, 4.04799614666023e-22, -2.504627585967233e-18, 1.9198491018890805e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999993]}, "NODE_81": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000004, 1.0000000000010763], "MOMENTUM_X": [9.060139854685471e-37, -3.466779711242437e-30, 3.6750234979073296e-26, 9.770968886038696e-23, -1.7555658459059748e-18, -4.9095977602846024e-15, -1.1494504466539603e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000014, 2.5000000000037668]}, "NODE_82": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999], "MOMENTUM_X": [-3.197307359743834e-46, 2.9421246211091526e-36, 9.073643652613012e-33, -2.6915720873225193e-28, -3.0776382133642923e-24, 9.731141511249691e-21, 1.185453289342439e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996]}, "NODE_83": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000074, 0.999999999948672], "MOMENTUM_X": [-6.212966927602441e-36, 8.359542281700799e-29, 5.381141983141105e-25, 5.449805059673391e-22, 2.320170399177591e-17, -8.642396033661717e-14, 6.04385823297307e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000258, 2.499999999820351]}, "NODE_84": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000648, 0.9999999999695933], "MOMENTUM_X": [1.355241554959884e-35, 5.394039259457076e-29, 3.7034592516785527e-25, -2.478965672287337e-22, 2.4637346537016346e-17, -7.597590356281228e-14, 3.6202583382001416e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000227, 2.4999999998935776]}, "NODE_85": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999993], "MOMENTUM_X": [-2.3623211499229456e-44, -5.951725243671171e-36, -4.0800516953089233e-32, -3.4164202286429234e-27, 9.702370789749567e-25, 6.203172631303223e-20, 8.952476090146916e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999998]}, "NODE_86": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 1.0000000000004405], "MOMENTUM_X": [-6.878913426967527e-39, 4.22653105340331e-32, -8.413081098930234e-28, -1.3430196072019382e-23, -3.781239992607666e-21, 5.964734734996206e-16, -5.216326616680202e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999982, 2.500000000001542]}, "NODE_87": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000138], "MOMENTUM_X": [3.946869048584192e-41, 4.8735854918995006e-33, 3.6317587440522743e-29, -3.8583879612435146e-25, -1.0999923531257262e-21, 1.983471599153697e-17, -1.8139389414279157e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000000484]}, "NODE_88": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, 1.4759411443980855e-39, -1.5834824044656327e-36, -2.9272473953367826e-31, -4.6513323156051076e-27, 9.091701921657411e-24, 1.5566775462919742e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_89": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000006009, 0.9999999991388174], "MOMENTUM_X": [-2.938411824794009e-32, 1.0832799824857631e-27, -1.3764436183030978e-23, 4.939911750594609e-20, 2.1904164666882181e-16, -6.896373484210378e-13, 9.763906480219957e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000021037, 2.4999999969858613]}, "NODE_90": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000024247], "MOMENTUM_X": [2.463990026001586e-37, -2.456598173427937e-30, 1.0445649025891882e-26, 2.043145221333142e-22, -1.2770975220647831e-18, -1.0603050922932015e-16, -2.7751351685692235e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000084874]}, "NODE_91": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [0.0, -7.617309504108643e-39, 8.775151966509312e-36, -1.406206927392091e-30, 3.79105380701863e-27, 1.9830405143670222e-23, -3.3919879911657593e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_92": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000003184, 0.9999999995711829], "MOMENTUM_X": [-1.0425157593160148e-32, -1.0694525768425441e-27, -5.3353109945845244e-24, 4.4411213506422857e-20, 1.936133878956443e-16, -3.864596099435299e-13, 5.185992226166285e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.500000000001114, 2.4999999984991397]}, "NODE_93": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [-2.430716217352762e-50, -3.8373657189265664e-38, -2.0010796650305014e-34, 1.7275598127978493e-29, 1.0964919891448995e-25, -5.0742849560661305e-22, -2.4365484040085935e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_94": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.000000000000251, 0.9999999996173996], "MOMENTUM_X": [-4.3601823816603675e-33, -8.443840839664432e-28, -5.61893208361901e-24, 2.7134692930388687e-20, 1.3086185996223709e-16, -3.025877808856792e-13, 4.5248695572462473e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000879, 2.4999999986609]}, "NODE_95": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000429, 0.999999999990085], "MOMENTUM_X": [9.096247223554351e-36, 2.2894866749671007e-29, 2.5055390034985357e-25, -6.506928883773939e-24, 1.04082567569258e-17, -5.0831244070659054e-14, 1.2291476368483782e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5000000000001505, 2.499999999965299]}, "NODE_96": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999968], "MOMENTUM_X": [3.4729490414696298e-43, -2.8618540311959533e-34, -9.591050191704253e-31, 3.8708483375266043e-26, 2.706014778841041e-22, -8.479312849496102e-19, 3.803303138211448e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999885]}, "NODE_97": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000003064, 0.9999999996667726], "MOMENTUM_X": [-1.9199787239561685e-33, -2.7611463643503413e-28, -6.809286274458325e-24, 2.6927755486547108e-20, 1.9681586173521963e-16, -3.5975137222487997e-13, 3.923603788038811e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000001073, 2.499999998833704]}, "NODE_98": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0], "MOMENTUM_X": [-2.1638803326662253e-47, 8.545585409649675e-37, 1.8675315971429362e-33, 5.675020152778066e-29, -6.479601903176682e-25, -1.096490885382534e-21, 2.9784164796497974e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5]}, "NODE_99": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999998, 1.0000000000022267], "MOMENTUM_X": [5.003669317022223e-38, -1.104817636965971e-30, -1.204333943126766e-27, 1.540757387925996e-22, -4.589957554530555e-19, 2.121860690011514e-15, -2.5991174582336077e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999933, 2.5000000000077938]}, "NODE_100": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999996, 1.0000000000001878], "MOMENTUM_X": [-3.0569199902482855e-39, 4.96949561603212e-32, -1.579615034101436e-28, -8.820478326531328e-24, -1.5024913670107307e-20, 3.7133795089553502e-16, -2.2820985781168116e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.5000000000006577]}, "NODE_101": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 1.0000000000003333, 0.999999999764792], "MOMENTUM_X": [-6.491943309904808e-34, -2.1550215171829074e-29, -6.2674268251788636e-24, 2.2855529123090138e-20, 2.6220346584345133e-16, -3.89057962207879e-13, 2.784766822222147e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000001167, 2.499999999176773]}, "NODE_102": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997], "MOMENTUM_X": [-3.5980815091674965e-45, 5.01979238866478e-36, 1.525859847308463e-32, -1.699431285145179e-27, -7.112090583236064e-24, 4.7016143682298604e-20, 4.279615998427654e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999]}, "NODE_103": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999926], "MOMENTUM_X": [3.4791308390294713e-41, 1.4667157513015623e-34, 1.0463308406106733e-29, 8.054370943037303e-26, -1.0265696761467578e-21, -1.2869818506091752e-18, 8.31076548576525e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999974]}, "NODE_104": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.000000000000018, 1.0000000000034146], "MOMENTUM_X": [4.542069399732572e-36, 3.2907707095881784e-30, 1.5921292214604115e-25, 4.946369206053949e-22, 3.331457907604202e-18, -2.1855805833013156e-14, -3.4848034852537037e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000063, 2.5000000000119518]}, "NODE_105": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.000000000000002, 1.0000000000007054, 0.9999999956195529], "MOMENTUM_X": [8.396473231072848e-32, 4.7790470297426834e-26, -4.695558734897815e-24, -9.454992585390226e-19, -2.2785647977673434e-15, -8.748176574677849e-13, 4.992170867653123e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000000075, 2.5000000000024696, 2.499999984668435]}, "NODE_106": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.0000000000006009, 0.9999999977218118], "MOMENTUM_X": [-2.499787073144436e-32, 1.7209167800044676e-26, -3.744094554052539e-23, -3.134080049440929e-19, -4.243575999890128e-16, -7.144781870478562e-13, 2.7469604024625745e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000001, 2.5000000000021037, 2.4999999920263427]}, "NODE_107": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000002818, 0.9999999998761645], "MOMENTUM_X": [-1.3793279485026075e-34, 8.760226899653897e-29, -4.2598806941943915e-24, 7.410553637761095e-21, 2.2135816279707086e-16, -3.306106114150137e-13, 1.4864708251627127e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000009877, 2.499999999566578]}, "NODE_108": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999978], "MOMENTUM_X": [-8.985334300507648e-44, -7.943590499970249e-35, -3.703199715690673e-31, 3.851531709976499e-27, 7.451592069761976e-23, -4.008638713503079e-20, 2.6140035351540508e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999925]}, "NODE_109": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000007, 1.0000000000002491, 0.999999997979711], "MOMENTUM_X": [-1.818849722727639e-32, 3.7000350535189926e-27, -2.6863461901273334e-23, -1.8227417333648621e-19, -7.122013316830047e-16, -3.308064726475998e-13, 2.392725162349007e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000002, 2.5000000000008713, 2.499999992928988]}, "NODE_110": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999982, 1.0000000000013254], "MOMENTUM_X": [-5.028483640507136e-39, -2.6714300138798184e-31, -2.9236197928277892e-27, 6.387781920915586e-23, -6.3062961607279e-20, 2.1044933270324814e-15, -1.5732256500284318e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999994, 2.500000000004638]}, "NODE_111": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000000304], "MOMENTUM_X": [-6.528254744071564e-40, 2.3266954239866936e-32, 5.400516201989516e-29, -3.971240880878627e-24, -1.750417374246841e-20, 1.1269575346995198e-16, -3.8747435640488235e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000001066]}, "NODE_112": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000000002, 1.000000000008077], "MOMENTUM_X": [2.2522485327433788e-36, -3.7652218061657195e-30, 8.721908485317565e-26, 7.813586742459153e-22, 1.653868132472302e-18, -9.352236068757822e-16, -9.224439319524059e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000000001, 2.5000000000282694]}, "NODE_113": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000004, 1.0000000000006468, 0.9999999981623523], "MOMENTUM_X": [-1.4309546165627607e-32, -1.9719007623185357e-28, -1.7503220527061502e-23, -7.340138443328324e-20, -3.0767337320210377e-16, -7.637133074235942e-13, 2.1645489557736644e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000001, 2.500000000002262, 2.499999993568231]}, "NODE_114": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999898], "MOMENTUM_X": [7.410932377210983e-42, -5.557383710326903e-34, 2.3022879210005745e-31, 1.1504503043351034e-25, 2.4004931692875174e-22, -2.6919446926444192e-18, 1.1210822367284588e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999964]}, "NODE_115": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.000000000000175, 0.9999999999647289], "MOMENTUM_X": [-1.5853519654099076e-35, 9.684937850338222e-29, -1.967247756990673e-24, -7.381915569687713e-21, 1.4214263915208072e-16, -2.0745604196916728e-13, 4.4447355070199824e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000612, 2.4999999998765516]}, "NODE_116": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 1.000000000001155, 0.9999999985715672], "MOMENTUM_X": [-8.680122760640475e-33, -1.3213963734066611e-27, -1.1675123757164507e-23, -1.8356146176530723e-20, 4.694470340670689e-16, -1.3397798669595053e-12, 1.6874093022401708e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999987, 2.500000000004043, 2.4999999950004854]}, "NODE_117": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000289, 0.9999999999890387, 0.9999999796923402], "MOMENTUM_X": [6.675228054512518e-30, 3.480874453439149e-26, 3.2607212353232125e-22, 1.907704680358903e-19, -3.144367864307567e-14, 1.201211816245131e-11, 2.3241475241489175e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000101, 2.4999999999616347, 2.499999928923191]}, "NODE_118": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999933, 1.000000000006816], "MOMENTUM_X": [8.988691363929623e-37, -3.508724942003596e-30, 3.204011304013501e-26, 7.137795925288358e-22, -7.146266804731965e-20, 7.300203224022762e-15, -7.955594009787103e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999977, 2.500000000023856]}, "NODE_119": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000093, 0.9999999999961156, 0.9999999890523046], "MOMENTUM_X": [1.877693331229768e-30, 1.7861771214027241e-25, 1.1547915818489486e-22, -2.2830060739022028e-18, -1.186147128705284e-14, 4.829939176625421e-12, 1.3167530077718674e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000000324, 2.4999999999864047, 2.499999961683067]}, "NODE_120": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999991, 1.0000000000004945], "MOMENTUM_X": [-9.874538603375304e-39, 2.3187930868969096e-32, -1.4831701685774628e-27, 8.820377676063317e-24, 6.970321986282028e-20, 1.1911554449838966e-15, -5.988546746178717e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.5000000000017306]}, "NODE_121": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999992, 1.000000000001331, 0.9999999990988095], "MOMENTUM_X": [-4.1108235821183254e-33, -1.0164643713268492e-27, -8.077162659089507e-24, -9.441046007230074e-21, 1.0203711604598123e-15, -1.5468873106281916e-12, 1.0728660286907887e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.5000000000046585, 2.499999996845833]}, "NODE_122": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000102, 0.9999999999946425, 0.9999999903636551], "MOMENTUM_X": [7.97099197686937e-31, 1.2981293316850783e-25, 1.6248740031969619e-22, -1.7413642391115393e-18, -1.1908461143993227e-14, 6.154489036912977e-12, 1.1425281907782648e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000000355, 2.4999999999812488, 2.4999999662727928]}, "NODE_123": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000000666, 1.0000000000131521], "MOMENTUM_X": [-2.1184875085875196e-36, 5.006093050688922e-29, -4.4161620727336685e-25, -1.1413832879540244e-20, 8.12205534420349e-17, -8.162605621810576e-14, -1.346466799188325e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000002327, 2.500000000046033]}, "NODE_124": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999719], "MOMENTUM_X": [1.328423866354549e-41, 5.907709124962878e-33, 4.476549315462943e-29, -9.177321304011594e-25, -7.106026538816055e-21, 1.2607797409140562e-17, 2.4354501761412697e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999027]}, "NODE_125": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.000000000000009, 0.999999999996772, 0.9999999909854336], "MOMENTUM_X": [3.148489885202318e-31, 6.537990355114371e-26, 3.312079460951748e-22, -1.2390524940378554e-18, -1.0492683027041613e-14, 3.748043029546107e-12, 1.0624082789369986e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000031, 2.4999999999887015, 2.4999999684490173]}, "NODE_126": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.999999999999999, 1.0000000000010887, 0.999999999581152], "MOMENTUM_X": [-1.5372575364104185e-33, -2.3931427645386123e-28, -6.58186570088492e-24, -9.949916459571758e-21, 1.0525085129847184e-15, -1.2763939399670008e-12, 5.069967204188743e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999997, 2.5000000000038107, 2.4999999985340327]}, "NODE_127": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000049, 1.0000000000007658, 0.9999999925258762], "MOMENTUM_X": [7.607540746119286e-32, 2.930361432842272e-26, 4.0815541171592356e-22, -1.2131711249600588e-18, -5.728227451768469e-15, -8.105676370345765e-13, 8.819981663129734e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000017, 2.50000000000268, 2.4999999738405663]}, "NODE_128": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999942, 1.0000000000036315], "MOMENTUM_X": [2.115613501991921e-37, -1.5456752969379414e-30, 2.8664355871067083e-27, 4.072496577348787e-22, 6.822406883400993e-19, 6.831698204485078e-15, -4.3480846037336784e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999796, 2.5000000000127103]}, "NODE_129": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999991, 1.000000000025826], "MOMENTUM_X": [1.2042762319453567e-36, 1.0153659641772031e-29, 1.074498186918812e-25, -7.11531933875332e-21, 1.7135791785049737e-17, -2.1187892269892698e-15, -2.945399816895688e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.5000000000903917]}, "NODE_130": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999997, 1.0000000000000469], "MOMENTUM_X": [-4.0993923232917114e-39, 5.180930970190248e-32, -3.0114233374209143e-28, -6.88585132962922e-24, 1.4047037932470994e-20, 4.2978913818824533e-16, -1.0747165313507007e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.500000000000164]}, "NODE_131": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 1.0000000000039224, 0.9999999947554085], "MOMENTUM_X": [-1.184033101805134e-33, 8.83650900055771e-27, 3.5535981166568696e-22, -8.820837057890882e-19, -1.1378249294551116e-16, -4.476816891861795e-12, 6.220111414384512e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.500000000013729, 2.49999998164393]}, "NODE_132": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000002172, 0.9999999998724595, 0.9999999131624365], "MOMENTUM_X": [2.149917283738921e-29, -3.8107654773489394e-24, -3.2288164175062584e-21, 1.0106904681924604e-16, -2.4022305563056376e-13, 1.4299440140318964e-10, 9.97491889218682e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.50000000000076, 2.499999999553608, 2.4999996960685436]}, "NODE_133": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999993, 1.0000000000006242, 0.9999999999065009], "MOMENTUM_X": [-4.354603297614863e-34, 1.7263992123520368e-28, -5.840325315525251e-24, -2.8978513346230335e-20, 7.442445745369918e-16, -7.442401978151802e-13, 1.2141545667599052e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999998, 2.500000000002185, 2.499999999672754]}, "NODE_134": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000842, 0.9999999999433676, 0.9999999516607582], "MOMENTUM_X": [1.6806603966688047e-29, -1.267477206523472e-24, 1.3106404820717363e-22, 3.09495445804929e-17, -1.0510978646047305e-13, 6.925925759884673e-11, 5.80096855488078e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000002944, 2.499999999801787, 2.4999998308126594]}, "NODE_135": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000793, 0.9999999999392579, 0.9999999577952624], "MOMENTUM_X": [9.26423910207499e-30, -2.797190891111642e-25, 3.0184514899273272e-22, 2.1129656370743603e-17, -9.417836601127617e-14, 7.112801736740794e-11, 5.0081444358287386e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000278, 2.4999999997874034, 2.4999998522834233]}, "NODE_136": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000788, 0.9999999999485779, 0.9999999597827058], "MOMENTUM_X": [5.945077869681007e-30, -4.245084173284418e-26, 1.2846225047353807e-22, 1.8558879387457847e-17, -9.231647805264855e-14, 6.017427698165623e-11, 4.742796420000718e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000002762, 2.4999999998200226, 2.4999998592394737]}, "NODE_137": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999967, 1.0000000000048557, 0.9999999970420543], "MOMENTUM_X": [-1.1014679943060889e-32, -6.994921453212461e-28, 2.142106475923979e-22, -5.997467687800758e-20, 3.598467893472744e-15, -5.620695004033796e-12, 3.5416315552996093e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999989, 2.5000000000169944, 2.49999998964719]}, "NODE_138": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999971, 1.0000000000012086], "MOMENTUM_X": [1.108450680776172e-38, -3.4514184762687053e-31, -3.1920191327344325e-27, 1.2798989281816213e-22, 4.620559001685834e-19, 3.706340834124573e-15, -1.6602882451894108e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999999, 2.500000000004231]}, "NODE_139": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999784, 1.000000000019298], "MOMENTUM_X": [2.4454318176044103e-36, -3.807037422302894e-30, 1.3507572878040639e-25, -2.061796031971941e-21, -5.530573968337746e-18, 2.5111196912474405e-14, -2.2936834921085195e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999924, 2.500000000067542]}, "NODE_140": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000002087, 1.0000000000542917], "MOMENTUM_X": [-1.124608747335153e-34, 1.890248956737198e-28, -3.769541665989433e-24, -3.631274184814751e-20, 3.171705882978273e-16, -2.5978663711686237e-13, -5.711179177245838e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999999, 2.500000000000731, 2.5000000001900218]}, "NODE_141": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000617, 0.9999999999721131, 0.999999965039752], "MOMENTUM_X": [3.1224251375691418e-30, 9.289305206826973e-26, 3.4487050368347506e-23, 1.37101432754396e-17, -7.24573267554617e-14, 3.3163127935868895e-11, 4.123644341565436e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000002163, 2.4999999999023963, 2.499999877639135]}, "NODE_142": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999963, 1.00000000000379, 0.9999999988183527], "MOMENTUM_X": [-6.245260602214743e-33, -1.7628785861133184e-27, 7.414503761877412e-23, 4.353670304285368e-19, 4.234147378443716e-15, -4.45037846551939e-12, 1.445950847639217e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999987, 2.5000000000132654, 2.499999995864235]}, "NODE_143": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000329, 0.9999999999969248, 0.999999973567609], "MOMENTUM_X": [1.2780586742770125e-30, 1.11035495343787e-25, -8.718323568691408e-23, 7.891273527681022e-18, -3.935764009177933e-14, 4.3945123837940255e-12, 3.1283233629450414e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.500000000000116, 2.4999999999892384, 2.4999999074866346]}, "NODE_144": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999993, 1.0000000000012206, 0.9999999990677536, 0.9999996551713727], "MOMENTUM_X": [-8.944603406081041e-28, -9.041333335648802e-24, -9.435513274466113e-21, 8.065261442101144e-16, -1.362994104309317e-12, 1.053879987709851e-09, 3.9745185798917245e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999998, 2.500000000004272, 2.499999996737138, 2.4999987931000422]}, "NODE_145": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999996, 1.0000000000005265, 0.9999999995538842, 0.9999998021463103], "MOMENTUM_X": [-2.4249045983409204e-28, -1.515984137349411e-23, 4.74499242221522e-21, 4.1858388887694146e-16, -6.5013417477699e-13, 5.425720958347342e-10, 2.3692425456930054e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.5000000000018425, 2.4999999984385948, 2.4999993075121694]}, "NODE_146": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.999999999999982, 1.0000000000095632], "MOMENTUM_X": [1.1900870937608935e-36, -3.909092311367925e-30, 4.9503272536207144e-26, 2.606812075085605e-22, -7.91324018675155e-18, 2.079947282407443e-14, -1.1986908960833814e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999937, 2.5000000000334714]}, "NODE_147": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000004448, 0.999999999555753, 0.9999998286596792], "MOMENTUM_X": [-1.1875351211067118e-28, -1.2343287432846796e-23, 3.969085115931461e-21, 3.067257390630407e-16, -5.324880615420655e-13, 5.234748570173143e-10, 2.034379690962403e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.5000000000015574, 2.4999999984451367, 2.4999994003089405]}, "NODE_148": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999872, 1.000000000077729], "MOMENTUM_X": [-3.3900390488655026e-35, 8.310645830379769e-29, -1.1425910822279759e-24, -3.0561885297266965e-20, 1.7427024695751165e-17, 1.0871883702786273e-14, -9.16295193322823e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.499999999999955, 2.5000000002720513]}, "NODE_149": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000047, 1.0000000000127827, 0.9999999832534626], "MOMENTUM_X": [4.0903342861033765e-31, 5.203143108603444e-26, -2.9837155928556743e-23, 3.8916108470555853e-19, -6.803212720522795e-15, -1.4312269934340452e-11, 1.9946852867063654e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000000173, 2.5000000000447407, 2.499999941387121]}, "NODE_150": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000004703, 0.9999999995898401, 0.9999998347982104], "MOMENTUM_X": [-5.09468785214642e-29, -7.465825975470457e-24, -7.582858907166133e-21, 2.9053475981187594e-16, -5.525050878418889e-13, 4.811257563279123e-10, 1.9494748994832044e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.5000000000016467, 2.499999998564441, 2.4999994217937935]}, "NODE_151": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999977, 1.0000000000019775, 0.9999999998373201], "MOMENTUM_X": [-2.210256205742478e-33, -3.490212493996744e-28, 5.491876807050402e-24, 4.593275488713673e-19, 2.758373975722433e-15, -2.366906410505676e-12, 2.2954918371792324e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999916, 2.5000000000069216, 2.4999999994306203]}, "NODE_152": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000004399, 0.999999999705748, 0.9999998510841689], "MOMENTUM_X": [-1.0233612480485467e-29, -3.717753250912754e-24, -1.8224679761650226e-20, 2.453453357397176e-16, -5.146177891325849e-13, 3.4740011617851953e-10, 1.7562422924035915e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.500000000001539, 2.4999999989701176, 2.4999994787946362]}, "NODE_153": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999889, 1.0000000000165195, 0.9999999916668824], "MOMENTUM_X": [9.768737872976206e-32, 5.01152456199848e-27, 3.12327146714123e-22, 4.282820616364049e-19, 1.2165385610073348e-14, -1.9076414353076188e-11, 1.004672922183982e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999961, 2.5000000000578178, 2.499999970834088]}, "NODE_154": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0, 0.9999999999999284, 1.0000000000534732], "MOMENTUM_X": [-4.4477419361630175e-36, 1.5048268940128196e-29, 7.53254785267551e-26, -1.407978033692706e-20, -6.01299954192397e-17, 7.343013114736566e-14, -6.339302152452036e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.49999999999975, 2.5000000001871565]}, "NODE_155": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000003262, 0.9999999998535838, 0.9999998807715598], "MOMENTUM_X": [3.93232671602894e-30, -1.3794445611549902e-24, -2.3015138611385822e-20, 1.8820389834343482e-16, -3.838351948394887e-13, 1.7598287735837633e-10, 1.4092921687515428e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000011426, 2.499999999487545, 2.4999995827004904]}, "NODE_156": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999973, 1.0000000000051286, 0.9999999944546741, 0.9999987236166711], "MOMENTUM_X": [-6.398845013297434e-27, 1.3590809043195924e-23, 3.985236095934569e-20, 3.0258671203209655e-15, -5.779358177632394e-12, 6.302710489039382e-09, 1.4762006991799657e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999991, 2.50000000001795, 2.4999999805913595, 2.4999955326615044]}, "NODE_157": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999992, 1.0000000000005658, 1.0000000002064977], "MOMENTUM_X": [-5.717854889270123e-34, 2.919041240332923e-28, -7.889779654550593e-24, 2.2983936945402315e-19, 9.964787870918363e-16, -6.943383474912957e-13, -2.3892440626823514e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999973, 2.50000000000198, 2.5000000007227423]}, "NODE_158": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999986, 1.0000000000024467, 0.9999999972147355, 0.9999992455947947], "MOMENTUM_X": [-3.118456783494652e-27, 8.097154697039366e-25, 4.0173714121045137e-22, 1.876519431795622e-15, -2.9903855677410636e-12, 3.3745806850601176e-09, 9.015979788557715e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999947, 2.500000000008563, 2.499999990251574, 2.4999973595829523]}, "NODE_159": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999989, 1.000000000001764, 0.999999997341758, 0.9999993516214163], "MOMENTUM_X": [-1.61808829455356e-27, -2.086499883011255e-23, -7.38544533793221e-21, 1.2763087109577166e-15, -2.139711702271933e-12, 3.1430272329861976e-09, 7.701951388189611e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999964, 2.500000000006174, 2.499999990696154, 2.4999977306758203]}, "NODE_160": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 1.0000000000001663, 0.9999999999769588, 0.9999999179142663], "MOMENTUM_X": [4.56374870272047e-30, -2.1026553356330325e-25, -1.937620430968699e-20, 8.865249895996608e-17, -1.9932051887619606e-13, 3.143706309554259e-11, 9.74720944646869e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.500000000000582, 2.499999999919356, 2.4999997126999465]}, "NODE_161": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999868, 1.000000000012017, 0.9999999972721847], "MOMENTUM_X": [1.332328628331899e-32, -7.325906344441719e-27, 4.31755026049899e-22, 1.626208829079914e-18, 1.4995781029677097e-14, -1.4109416925194244e-11, 3.393351648122326e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999954, 2.5000000000420597, 2.499999990452647]}, "NODE_162": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999989, 1.0000000000019769, 0.9999999974454002, 0.9999993706057169], "MOMENTUM_X": [-9.822054095415539e-28, -1.4251986997966022e-23, 9.274837152840881e-21, 1.3755769829485372e-15, -2.3360298455637343e-12, 3.001612178278956e-09, 7.432553874009031e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999996, 2.5000000000069185, 2.4999999910589, 2.499997797120807]}, "NODE_163": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999987, 1.0000000000022005, 0.9999999979408927, 0.9999994163177397], "MOMENTUM_X": [-5.345618813769656e-28, -1.4587458149975943e-23, 1.5189979618608246e-20, 1.5310344763241385e-15, -2.572936816254604e-12, 2.4265100532317758e-09, 6.884632340125866e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999956, 2.500000000007702, 2.499999992793125, 2.4999979571127726]}, "NODE_164": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999999, 0.9999999999999113, 1.000000000232137], "MOMENTUM_X": [-1.5074695773817838e-34, 2.3619458109928187e-28, -5.706770840920973e-24, 3.07109193918877e-20, 8.527007087939698e-17, 1.9247708771919962e-14, -2.597180624541787e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5, 2.4999999999996905, 2.50000000081248]}, "NODE_165": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000000293, 1.000000000042492, 0.9999999534633812], "MOMENTUM_X": [2.2236848490290133e-30, 9.670263033495027e-26, -1.0715016237149089e-20, 1.2543017692396299e-17, -3.984690614748367e-14, -4.6911293718590926e-11, 5.57105502372186e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000001026, 2.500000000148722, 2.4999998371218393]}, "NODE_166": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999922, 1.0000000000056113, 0.999999999964077], "MOMENTUM_X": [-1.2808387278659232e-33, -4.136397024891246e-27, 1.852339493736956e-22, 1.529317288923283e-18, 9.261462237998982e-15, -6.74732911450781e-12, 8.162110085002585e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999725, 2.5000000000196394, 2.499999999874269]}, "NODE_167": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999988, 1.000000000002041, 0.9999999986821887, 0.99999951058415], "MOMENTUM_X": [-2.412312920287634e-28, -1.2796781627745591e-23, 2.4439053599515522e-20, 1.468824883820641e-15, -2.3859120417658866e-12, 1.5662836133593327e-09, 5.780814559857015e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999956, 2.5000000000071445, 2.499999995387661, 2.4999982870450066]}, "NODE_168": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000013, 1.000000000012363, 0.9999999712071308, 0.9999955872880781], "MOMENTUM_X": [4.206191919151232e-26, -8.814364324675227e-22, 1.0991381743583278e-18, -5.079719708951298e-16, -1.4193283592548299e-11, 3.286836925248615e-08, 5.121032335992525e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000000005, 2.5000000000432707, 2.4999998992249597, 2.4999845555450455]}, "NODE_169": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999969, 1.0000000000071865, 0.9999999849557686, 0.9999973132754469], "MOMENTUM_X": [8.354738941612129e-27, 5.372277598105125e-22, -4.683973000364384e-19, 3.413702287211139e-15, -8.623727187730438e-12, 1.8168577897973224e-08, 3.205378873817047e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999989, 2.5000000000251523, 2.49999994734519, 2.499990596478432]}, "NODE_170": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999618, 1.0000000000529237, 0.9999999800244623], "MOMENTUM_X": [7.111249010577171e-31, 4.7903413056804853e-26, -3.7693042959357986e-21, -1.6092810256634164e-17, 4.072167542934035e-14, -6.090219442884492e-11, 2.428993031723181e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999998663, 2.500000000185233, 2.49999993008562]}, "NODE_171": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999999, 1.000000000002944, 0.9999999860748005, 0.9999977056524567], "MOMENTUM_X": [4.648840798750447e-27, 7.64088287577589e-22, -6.990190993586173e-19, 2.310557518655472e-16, -3.799058349038666e-12, 1.650114806061674e-08, 2.7265146735307934e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000103046, 2.4999999512618025, 2.49999196979409]}, "NODE_172": {"DENSITY": [1.0, 1.0, 1.0, 0.999999999999999, 1.0000000000014435, 0.999999999414554, 0.9999996403886234], "MOMENTUM_X": [-8.396682470836952e-29, -6.939227176275381e-24, 4.2322239860365645e-20, 1.0906466061268913e-15, -1.7014752408196356e-12, 7.105360114618259e-10, 4.261838952838069e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999964, 2.500000000005053, 2.4999999979509386, 2.499998741360443]}, "NODE_173": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999992, 1.0000000000039695, 0.9999999863299736, 0.9999977661310199], "MOMENTUM_X": [1.3111264768370326e-27, 5.438508238911725e-22, -3.576960118534941e-19, 9.936874699770036e-16, -4.799561634440744e-12, 1.6084822832111768e-08, 2.6401604944690566e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999998, 2.5000000000138938, 2.4999999521549077, 2.499992181468369]}, "NODE_174": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999972, 1.0000000000013705, 1.000000000751271], "MOMENTUM_X": [-1.4227014673541135e-33, -6.407698177243638e-28, 2.109555999184968e-23, 1.1886276916018884e-18, 3.5869516948206e-15, -2.0697020606534836e-12, -7.586714002397007e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.4999999999999907, 2.500000000004796, 2.5000000026294478]}, "NODE_175": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999967, 1.0000000000068652, 0.9999999881970405, 0.9999978818373628], "MOMENTUM_X": [-7.154200382972825e-28, 2.992188236336675e-22, 2.048484108679167e-19, 3.80216342298747e-15, -8.021283347255802e-12, 1.3901349902361469e-08, 2.499483337033093e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999885, 2.500000000024028, 2.499999958689642, 2.4999925864395136]}, "NODE_176": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999996, 1.0000000000006806, 0.9999999999246033, 0.9999997762476045], "MOMENTUM_X": [-1.821627963345047e-29, -1.793170483070752e-24, 2.7471746123119255e-20, 4.912192807624168e-16, -8.220800790846778e-13, 1.0774464191807784e-10, 2.6673147137535407e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999987, 2.5000000000023825, 2.4999999997361115, 2.499999216866719]}, "NODE_177": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999567, 1.0000000000348268, 0.9999999951100716], "MOMENTUM_X": [1.5430881459327564e-31, -7.508987844900549e-27, -2.144051281458803e-22, -1.6263543677357085e-17, 5.071948793257156e-14, -4.1504257235047766e-11, 6.004598374465573e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999849, 2.500000000121894, 2.4999999828852517]}, "NODE_178": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999943, 1.0000000000088343, 0.9999999914480715, 0.9999981546799387], "MOMENTUM_X": [-1.1097856630461392e-27, 1.0887291746760007e-22, 7.882200937290389e-19, 6.425196069332814e-15, -1.0260714672727733e-11, 1.0123631197676574e-08, 2.1791749434929898e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999805, 2.5000000000309206, 2.499999970068251, 2.4999935413864147]}, "NODE_179": {"DENSITY": [1.0, 1.0, 1.0, 1.000000000000117, 0.999999999965435, 0.9999998656249774, 0.9999857364552103], "MOMENTUM_X": [9.535249860996455e-25, 7.972875094426918e-21, 2.8440939027128386e-17, -1.2522539638059849e-13, 3.713413972213587e-11, 1.5399197683907755e-07, 1.6606552393696096e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.50000000000041, 2.4999999998790234, 2.499999529687461, 2.4999500779682062]}, "NODE_180": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000001084, 1.0000000001461822, 0.9999998881021347], "MOMENTUM_X": [-1.0953081459483176e-31, 1.6491551271098164e-25, -6.962934550189861e-21, 5.213269647148488e-18, -1.5151380643692773e-13, -1.6035003447194343e-10, 1.3470179771179984e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.5000000000003793, 2.5000000005116383, 2.499999608357499]}, "NODE_181": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000286, 0.9999999999934952, 0.9999999272216503, 0.9999910506379697], "MOMENTUM_X": [3.538154946789943e-25, 4.733167213502477e-22, 3.4614958977607652e-18, -3.867071840560882e-14, 9.186937133544758e-12, 8.76276026905154e-08, 1.0658977920970949e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000000101, 2.4999999999772338, 2.4999997452757885, 2.4999686773872947]}, "NODE_182": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999939, 1.0000000000082752, 0.9999999951186624, 0.9999985692877016], "MOMENTUM_X": [-7.799315185065989e-28, 1.3220194105683854e-23, 1.0277598492881163e-18, 6.9445079525998395e-15, -9.655524586884527e-12, 5.839610185664042e-09, 1.6936888459748156e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999979, 2.500000000028964, 2.4999999829153197, 2.499994992510958]}, "NODE_183": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000409, 0.9999999999725896, 0.9999999342450092, 0.9999923944285266], "MOMENTUM_X": [2.063222047064643e-25, 1.8061340318556977e-21, 1.6797493582144158e-18, -4.7631163233163384e-14, 3.0967582971272035e-11, 7.8032550714029e-08, 9.040234531352077e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000000143, 2.499999999904063, 2.499999769857541, 2.4999733806119253]}, "NODE_184": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999999751, 1.0000000000150975, 1.0000000012516894], "MOMENTUM_X": [2.0988329271970533e-32, -1.2061029589144193e-26, 4.987303072946168e-22, -7.736916982536569e-18, 3.0363366084363924e-14, -1.947754710740484e-11, -7.077625093503245e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5, 2.499999999999913, 2.500000000052841, 2.500000004380913]}, "NODE_185": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000393, 0.9999999999753929, 0.9999999347398651, 0.999992593397724], "MOMENTUM_X": [1.2310050892194465e-25, 1.2386989967848828e-21, 2.024427003362551e-18, -4.53287648657008e-14, 2.806381664541684e-11, 7.688249982245148e-08, 8.760376574591669e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000001372, 2.4999999999138747, 2.499999771589537, 2.499974076996999]}, "NODE_186": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999958, 1.0000000000055218, 0.9999999981369309, 0.9999990422321335], "MOMENTUM_X": [-3.859785407337978e-28, -1.1607529818392035e-23, 8.709646956588248e-19, 4.997950384987314e-15, -6.529541044970797e-12, 2.2898604265964287e-09, 1.1387413351186324e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999985, 2.5000000000193263, 2.4999999934792583, 2.4999966478142825]}, "NODE_187": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000226, 0.9999999999955681, 0.9999999409670006, 0.9999928555550005], "MOMENTUM_X": [6.185424541354678e-26, 7.422250096771313e-22, -2.406317843924499e-18, -2.624310136628875e-14, 5.282613741159412e-12, 6.952527642705251e-08, 8.434991802298249e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000000079, 2.499999999984489, 2.499999793384511, 2.4999749945393943]}, "NODE_188": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998722, 1.0000000001587677, 0.9999999599549061], "MOMENTUM_X": [1.6314693736782778e-30, 2.8646303890341093e-25, -1.6858554822791674e-20, -1.5810591319470534e-16, 1.457263933743123e-13, -1.8767673019765654e-10, 4.842700741772586e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000000004, 2.4999999999995537, 2.5000000005556866, 2.4999998598421747]}, "NODE_189": {"DENSITY": [1.0, 1.0, 1.0, 0.999999999999999, 1.0000000000187483, 0.9999999536549031, 0.9999935732883566], "MOMENTUM_X": [2.43967365471319e-26, 7.764219962650018e-22, -1.372641533071482e-18, 7.129410480682563e-16, -2.1280410177879808e-11, 5.475489885388457e-08, 7.589822925127531e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999964, 2.5000000000656204, 2.499999837792167, 2.4999775065874354]}, "NODE_190": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999981, 1.0000000000023523, 0.9999999998983645, 0.9999994672112918], "MOMENTUM_X": [-1.3527605240782875e-28, -7.426436265563951e-24, 4.634418226297614e-19, 2.0705587327856525e-15, -2.8610985923816605e-12, 1.9056946063598352e-10, 6.377115724691297e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999994, 2.500000000008234, 2.499999999644276, 2.4999981352400966]}, "NODE_191": {"DENSITY": [1.0, 1.0, 0.9999999999999997, 1.0000000000011715, 0.9999999993011852, 0.9999994280555256, 0.9999568812887235], "MOMENTUM_X": [7.1428661172784e-24, 3.058670700861464e-19, 3.3768031948347093e-16, -1.282337128457975e-12, 7.811799274717904e-10, 6.579300766247369e-07, 5.035463228347757e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999987, 2.5000000000041003, 2.4999999975541485, 2.49999799819501, 2.4998490878569393]}, "NODE_192": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999801, 1.0000000000319216, 0.999999969789736, 0.9999947844688815], "MOMENTUM_X": [6.708999490129585e-27, 6.18636221526351e-22, -3.572763559883058e-18, 2.243077430764093e-14, -3.672534916190426e-11, 3.593138549331706e-08, 6.1705840157775356e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999303, 2.5000000001117257, 2.4999998942640786, 2.499981745692685]}, "NODE_193": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 0.9999999999998611, 1.0000000000979998, 0.9999999949527432], "MOMENTUM_X": [6.318904560394656e-31, 7.931064364680281e-26, -5.749438093316133e-21, -1.2066263261437437e-16, 1.5567112357580786e-13, -1.182167888110612e-10, 9.721980870867028e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000000004, 2.4999999999995137, 2.5000000003429994, 2.499999982334601]}, "NODE_194": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 1.0000000000004219, 0.9999999997125364, 0.9999996793185068, 0.9999721031600545], "MOMENTUM_X": [2.5438268535623434e-24, 5.525703526925894e-20, 1.211264700609395e-16, -5.33231504487332e-13, 3.5681348022342704e-10, 3.8500671830546585e-07, 3.316742901561392e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.5000000000014775, 2.4999999989938786, 2.499998877615003, 2.499902362514394]}, "NODE_195": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 1.0000000000004217, 0.9999999996332177, 0.9999997158856009, 0.9999763609016946], "MOMENTUM_X": [9.946377813398809e-25, -1.0927333360147711e-20, 1.2888528031435552e-16, -5.002111629940679e-13, 4.2886238904008756e-10, 3.374880767716112e-07, 2.809635918128319e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.5000000000014757, 2.4999999987162624, 2.4999990055997805, 2.499917264208756]}, "NODE_196": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 1.0000000000004285, 0.9999999996305, 0.9999997168033369, 0.9999770203299748], "MOMENTUM_X": [5.839436846717073e-25, -1.9110964111279198e-20, 1.1335163502038043e-16, -5.015896848075091e-13, 4.3025623155423404e-10, 3.340028530892672e-07, 2.7195102308045316e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999996, 2.5000000000014997, 2.499999998706751, 2.4999990088118516, 2.4999195721396625]}, "NODE_197": {"DENSITY": [1.0, 1.0, 1.0, 1.0, 1.0000000000002958, 1.0000000004939513, 0.9999997692587872], "MOMENTUM_X": [-2.896321865406348e-29, -1.1742371273165992e-24, 1.3897996943213838e-19, 7.995348855278054e-18, -3.8884518414908755e-13, -5.753320787345271e-10, 2.7745033486859346e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999996, 2.5000000000010343, 2.500000001728828, 2.4999991924058675]}, "NODE_198": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999755, 1.000000000030055, 0.9999999848563144, 0.9999962894413204], "MOMENTUM_X": [5.746710713413026e-28, 2.279604075725331e-22, -7.392694953635574e-18, 2.8167001182464327e-14, -3.5029044377648047e-11, 1.8257870425088072e-08, 4.404641520158992e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999143, 2.5000000001051927, 2.499999946997101, 2.499987013070952]}, "NODE_199": {"DENSITY": [1.0, 1.0, 0.9999999999999999, 1.0000000000003577, 0.999999999737876, 0.9999997351090567, 0.9999775461731886], "MOMENTUM_X": [4.045413921533813e-25, -1.3965875807142282e-20, 5.912790213241657e-17, -4.1802413572198763e-13, 3.0771925897658605e-10, 3.120465335169594e-07, 2.652114860171032e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000001252, 2.4999999990825645, 2.499999072881846, 2.4999214125388898]}, "NODE_200": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000002163, 0.9999999998995032, 0.9999997795085266, 0.9999792519471074], "MOMENTUM_X": [2.5253312372901097e-25, -7.307450488215052e-21, 1.5343252775918862e-17, -2.5529382287841643e-13, 1.218684988634342e-10, 2.602301684811338e-07, 2.450455950336587e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.500000000000757, 2.4999999996482614, 2.499999228279947, 2.499927382608211]}, "NODE_201": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999832, 1.0000000000186298, 0.9999999953128738, 0.9999977576510705], "MOMENTUM_X": [-6.111615888749583e-28, -8.532835258588048e-24, -3.6044666358690006e-19, 1.961810936507908e-14, -2.2049626239115163e-11, 5.874017889492461e-09, 2.674757282934596e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999414, 2.500000000065204, 2.499999983595057, 2.4999921517885246]}, "NODE_202": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000004, 0.9999999999995612, 1.0000000004724214, 0.9999999360023766], "MOMENTUM_X": [-8.345030369293097e-31, 5.315638822948639e-25, 1.0880629952151693e-21, -5.03994179741761e-16, 4.043951652777982e-13, -5.373829500083757e-10, 9.139624748584847e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000000013, 2.499999999998464, 2.5000000016534742, 2.499999776008331]}, "NODE_203": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000000504, 1.0000000000412077, 0.9999998428109371, 0.9999824840682503], "MOMENTUM_X": [1.3277011957419533e-25, -1.9227271800117947e-21, -3.486770656939255e-17, -6.44809092582104e-14, -4.300798093829516e-11, 1.8636776925868429e-07, 2.0714409455061807e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.5000000000001763, 2.5000000001442255, 2.4999994498383327, 2.499938694804467]}, "NODE_204": {"DENSITY": [1.0, 1.0, 0.9999999999999964, 1.0000000000077747, 0.9999999942367856, 0.9999977624875475, 0.9998781681874175], "MOMENTUM_X": [-8.651084448160891e-23, 5.667811758491703e-19, 3.3954453671394172e-15, -8.626543899618362e-12, 6.501091075304183e-09, 2.5840391615792793e-06, 0.00014269841360549943], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999988, 2.500000000027212, 2.4999999798287504, 2.499992168716337, 2.4995736147638405]}, "NODE_205": {"DENSITY": [1.0, 1.0, 0.9999999999999987, 1.0000000000032783, 0.9999999973532117, 0.9999987015549474, 0.9999186475893034], "MOMENTUM_X": [-1.745642940429655e-23, 4.164435806354674e-19, 1.43988452741263e-15, -4.058016585670024e-12, 3.244546145820643e-09, 1.5549383558094772e-06, 9.655167737544166e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999956, 2.500000000011474, 2.4999999907362405, 2.4999954554458954, 2.4997152785577113]}, "NODE_206": {"DENSITY": [1.0, 1.0, 0.9999999999999988, 1.0000000000028102, 0.9999999971676159, 0.99999886741871, 0.9999311110225028], "MOMENTUM_X": [-1.1338310935298492e-23, 1.684214712011707e-20, 1.3556280149250173e-15, -3.3633742903193975e-12, 3.3412080842969713e-09, 1.3463134040989212e-06, 8.185340487752975e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999996, 2.5000000000098357, 2.499999990086655, 2.4999960359681914, 2.4997588972726583]}, "NODE_207": {"DENSITY": [1.0, 1.0, 0.9999999999999989, 1.0000000000028806, 0.9999999970796816, 0.9999988712922915, 0.9999332358199843], "MOMENTUM_X": [-5.712590759421349e-24, -2.2416255867667642e-20, 1.328959732643528e-15, -3.393902931957497e-12, 3.4192123080909527e-09, 1.332719805653218e-06, 7.904152042732246e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999996, 2.5000000000100817, 2.499999989778886, 2.4999960495256577, 2.4997663334717592]}, "NODE_208": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999934, 1.0000000000070401, 1.000000000344906, 0.9999988981549235], "MOMENTUM_X": [-4.151038795606109e-28, -3.0691187658325153e-23, 9.420143933627095e-19, 7.593887748182306e-15, -8.536886192929101e-12, -3.314471298520841e-10, 1.321102750516003e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999978, 2.500000000024641, 2.5000000012071726, 2.499996143544683]}, "NODE_209": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999357, 1.0000000001081875, 0.999999908758666, 0.9999868680762375], "MOMENTUM_X": [5.501269646104018e-26, 5.427440606607677e-22, -8.144460317604723e-17, 6.949115396273171e-14, -1.2323452697285085e-10, 1.0912310247499778e-07, 1.55702863295483e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999775, 2.500000000378656, 2.4999996806553506, 2.4999540385865098]}, "NODE_210": {"DENSITY": [1.0, 1.0, 0.9999999999999989, 1.0000000000027425, 0.9999999975509536, 0.9999989180713306, 0.9999341559072278], "MOMENTUM_X": [-2.6428609028335353e-24, 8.804196582754541e-21, 1.111288648038624e-15, -3.2127240457497832e-12, 2.8752919165541386e-09, 1.2752450213813154e-06, 7.779820973402904e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999997, 2.5000000000095985, 2.499999991428338, 2.499996213252061, 2.4997695534954287]}, "NODE_211": {"DENSITY": [1.0, 1.0, 0.9999999999999993, 1.0000000000022076, 0.9999999984357743, 0.9999990576175534, 0.9999377787571241], "MOMENTUM_X": [-9.64565155569092e-25, 1.1703037691182145e-20, 7.389239458105558e-16, -2.5873499821786137e-12, 1.8547374463939973e-09, 1.1118236682189629e-06, 7.349113223958059e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999998, 2.5000000000077263, 2.49999999452521, 2.4999967016632594, 2.499782232600979]}, "NODE_212": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999096, 1.0000000000995692, 0.9999999608100144, 0.9999915001315011], "MOMENTUM_X": [1.6005332344387116e-26, 8.952214589977297e-22, -5.643296372771179e-17, 1.028164081256533e-13, -1.1561060121638566e-10, 4.769447564230399e-08, 1.0115977675573292e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999996825, 2.500000000348491, 2.499999862835053, 2.499970250595931]}, "NODE_213": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999998, 1.0000000000005673, 1.0000000016848487, 0.9999995936033913], "MOMENTUM_X": [-1.4235835830802982e-28, -1.1695619251239156e-23, 6.995726460595578e-19, 9.253671651203977e-16, -1.4475236539636364e-12, -1.750543369805332e-09, 5.386259745960017e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999999, 2.5000000000019864, 2.500000005896971, 2.4999985776122804]}, "NODE_214": {"DENSITY": [1.0, 1.0, 0.9999999999999998, 1.0000000000012916, 0.9999999994018179, 0.9999992811222054, 0.9999456292818273], "MOMENTUM_X": [-1.2215912185859726e-25, -9.530058821826866e-21, 2.67072853826399e-16, -1.5337839065110276e-12, 7.326439334458772e-10, 8.508226493837727e-07, 6.427632148684111e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999999, 2.500000000004521, 2.499999997906363, 2.499997483928787, 2.4998097077880788]}, "NODE_215": {"DENSITY": [1.0, 1.0, 0.9999999999999802, 1.000000000038118, 0.9999999638860163, 0.9999919194481812, 0.9996786936104476], "MOMENTUM_X": [-1.2810500606686731e-21, -2.534653231154557e-17, 2.2895442760343718e-14, -4.2838700324940084e-11, 4.0982048215459603e-08, 9.368101645676521e-06, 0.00037740980223551244], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999932, 2.500000000133414, 2.4999998736010616, 2.4999717181941286, 2.498875605200604]}, "NODE_216": {"DENSITY": [1.0, 1.0, 0.9999999999999907, 1.000000000018316, 0.9999999823063925, 0.9999951455993135, 0.9997783288504557], "MOMENTUM_X": [-4.599989246932741e-22, -6.459609077159899e-18, 1.151152075685954e-14, -2.2336111660219952e-11, 2.1539653453226778e-08, 5.799984597530693e-06, 0.0002626305896491906], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999968, 2.5000000000641065, 2.499999938072375, 2.499983009645643, 2.4992242374240514]}, "NODE_217": {"DENSITY": [1.0, 1.0, 0.9999999999999927, 1.0000000000135318, 0.9999999825587018, 0.9999958154338952, 0.9998119474470204], "MOMENTUM_X": [-1.9631794623324836e-22, -1.207045499175544e-18, 8.810847519014018e-15, -1.6342332212094205e-11, 2.0661198515742704e-08, 4.976748803918961e-06, 0.0002233321474595543], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999742, 2.500000000047362, 2.499999938955458, 2.49998535405434, 2.4993418790624418]}, "NODE_218": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999419, 1.0000000000561537, 0.9999999911638442, 0.9999954044377317], "MOMENTUM_X": [2.0444990372968937e-27, 2.1655960882331706e-22, -2.0529905092481408e-17, 6.925022611969108e-14, -6.718493152258336e-11, 1.0917841190935485e-08, 5.501439814330872e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.499999999999796, 2.500000000196538, 2.4999999690734542, 2.499983915572958]}, "NODE_219": {"DENSITY": [1.0, 1.0, 0.9999999999999926, 1.0000000000136025, 0.999999981918903, 0.9999958432572138, 0.9998184018687386], "MOMENTUM_X": [-1.0243652179263063e-22, -8.289580836871424e-21, 8.780312753164215e-15, -1.615429105063198e-11, 2.1236044355818613e-08, 4.913519744608166e-06, 0.00021503957541776643], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999974, 2.500000000047608, 2.499999936716161, 2.499985451434904, 2.499364464962431]}, "NODE_220": {"DENSITY": [1.0, 1.0, 1.0, 1.0000000000003526, 1.0000000000921279, 0.999999538777915, 0.9999573120241211], "MOMENTUM_X": [2.1421951892839455e-25, -1.5427252957966104e-20, -1.6246003936968596e-16, -4.494666722100039e-13, -7.989662481962029e-11, 5.491855297438619e-07, 5.056632798822503e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000004, 2.5000000000012346, 2.500000000322448, 2.49999838572315, 2.499850595363958]}, "NODE_221": {"DENSITY": [1.0, 1.0, 0.9999999999999927, 1.000000000014333, 0.9999999836598374, 0.9999959440903426, 0.999819787624526], "MOMENTUM_X": [-5.427522800379891e-23, 6.684924897503235e-19, 8.54091959204478e-15, -1.6844116158903827e-11, 1.9196413325427753e-08, 4.7842312390035425e-06, 0.00021298941370463648], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999747, 2.500000000050166, 2.4999999428094326, 2.499985804348905, 2.499369313818468]}, "NODE_222": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999999788, 1.0000000000194447, 1.0000000033664194, 0.9999979968290524], "MOMENTUM_X": [-6.243542637735923e-28, -4.1291216750424294e-23, -6.204448317936371e-18, 2.8650790254144616e-14, -2.6530433324802448e-11, -2.3964675827796516e-09, 2.560482287335685e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5, 2.4999999999999263, 2.500000000068057, 2.5000000117824692, 2.4999929889105545]}, "NODE_223": {"DENSITY": [1.0, 1.0, 1.0000000000000002, 0.9999999999997952, 1.0000000003553353, 0.9999997652768604, 0.9999706804419144], "MOMENTUM_X": [1.782682586516289e-25, -2.047285437894038e-21, -3.2032617932661183e-16, 2.0843987945214546e-13, -4.0019777494925514e-10, 2.824106010033959e-07, 3.483308608272589e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.500000000000001, 2.4999999999992824, 2.500000001243671, 2.4999991784691282, 2.4998973831095093]}, "NODE_224": {"DENSITY": [1.0, 1.0, 0.9999999999999934, 1.0000000000138707, 0.999999987748225, 0.9999963369852127, 0.9998265330340956], "MOMENTUM_X": [-2.816871301433325e-23, 8.247990160756314e-19, 7.54894256699511e-15, -1.6215958212262364e-11, 1.4465357388144621e-08, 4.322102331557204e-06, 0.00020490166190606133], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999774, 2.500000000048548, 2.4999999571187885, 2.499987179474848, 2.4993929182871977]}, "NODE_225": {"DENSITY": [1.0, 1.0, 0.9999999999999953, 1.000000000010848, 0.999999993004142, 0.9999970495345077, 0.9998437764587819], "MOMENTUM_X": [-1.1501019544562864e-23, 4.2230071250896772e-19, 5.253996035854332e-15, -1.2728951464459224e-11, 8.361815654556227e-09, 3.489074385269281e-06, 0.00018463841574535241], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999984, 2.5000000000379687, 2.499999975514497, 2.499989673388088, 2.499453260226417]}, "NODE_226": {"DENSITY": [1.0, 1.0, 0.9999999999999392, 1.0000000001231635, 0.9999998080728544, 0.9999729961532815, 0.9992105459261197], "MOMENTUM_X": [-4.675790177011134e-21, -1.5397527749976467e-16, 7.579695030807653e-14, -1.411083453495944e-10, 2.189016108940493e-07, 3.1420632376178e-05, 0.0009297146305431935], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999787, 2.500000000431072, 2.4999993282550736, 2.4999054878981317, 2.4972379594646013]}, "NODE_227": {"DENSITY": [1.0, 1.0, 0.9999999999999595, 1.000000000072, 0.9999999009737504, 0.9999831977748175, 0.9994366818392602], "MOMENTUM_X": [-2.7188683464110324e-21, -7.757149921187684e-17, 5.179147785078274e-14, -8.598320380879894e-11, 1.1990288156848683e-07, 2.0028835422572763e-05, 0.0006662397142750554], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999858, 2.5000000002519993, 2.49999965340815, 2.499941192765733, 2.498028928730881]}, "NODE_228": {"DENSITY": [1.0, 1.0, 1.0000000000000002, 0.9999999999996941, 1.0000000003030018, 0.9999999166987847, 0.999982859017387], "MOMENTUM_X": [7.906164914519227e-26, 2.8038017946322643e-21, -2.2294128248019633e-16, 3.5822512773972336e-13, -3.5938781010014826e-10, 1.0087965883173079e-07, 2.0495869370074512e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000004, 2.4999999999989297, 2.5000000010605072, 2.4999997084457632, 2.499940007109624]}, "NODE_229": {"DENSITY": [1.0, 1.0, 0.999999999999976, 1.0000000000397347, 0.9999999072136183, 0.9999856340024217, 0.9995199553529491], "MOMENTUM_X": [-1.432413618102635e-21, -2.381261361620083e-17, 3.133013285734222e-14, -4.893385033458655e-11, 1.1016796488005603e-07, 1.708790919751254e-05, 0.0005696933030439845], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999156, 2.500000000139071, 2.499999675247685, 2.4999497194154587, 2.4983202429742657]}, "NODE_230": {"DENSITY": [1.0, 1.0, 0.999999999999998, 1.000000000005945, 0.9999999976331878, 0.9999979559556108, 0.9998721751526293], "MOMENTUM_X": [-3.727410776002293e-24, 1.035937057821383e-19, 2.112791324604944e-15, -7.108054566294798e-12, 2.942218725702688e-09, 2.427827616164825e-06, 0.00015130470162751452], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999994, 2.500000000020808, 2.4999999917161575, 2.499992845853038, 2.49955264161846]}, "NODE_231": {"DENSITY": [1.0, 1.0, 0.9999999999999755, 1.0000000000362235, 0.9999999040259944, 0.9999858032865913, 0.9995380515692007], "MOMENTUM_X": [-1.1169141020493995e-21, -1.495117675590425e-17, 3.058992479001602e-14, -4.391527234700136e-11, 1.129643958722544e-07, 1.679602345087007e-05, 0.000547016315810068], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999914, 2.500000000126782, 2.499999664091002, 2.4999503118951862, 2.4983835489337527]}, "NODE_232": {"DENSITY": [1.0, 1.0, 0.9999999999999705, 1.0000000000457472, 0.9999999093914862, 0.9999859737849872, 0.9995398786772945], "MOMENTUM_X": [-6.603527032825349e-22, -1.1075291799525874e-17, 3.562989390677074e-14, -5.415492281764022e-11, 1.0652571447999706e-07, 1.655625579316563e-05, 0.0005438804878284977], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999998965, 2.5000000001601146, 2.499999682870221, 2.4999509086268024, 2.4983899386688693]}, "NODE_233": {"DENSITY": [1.0, 1.0, 1.0, 0.9999999999998074, 1.0000000001617413, 0.9999999912933616, 0.9999915900232155], "MOMENTUM_X": [1.9999638000643846e-26, 1.4983449639579232e-21, -1.0695806557370844e-16, 2.324345937345956e-13, -2.0030707401954298e-10, 1.8416616975537522e-08, 1.0510967342889923e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000004, 2.4999999999993268, 2.500000000566095, 2.499999969526768, 2.4999705652256807]}, "NODE_234": {"DENSITY": [1.0, 1.0, 1.0000000000000002, 1.0000000000015434, 1.0000000003518343, 0.9999988339515311, 0.9999074450460168], "MOMENTUM_X": [-7.37656794675915e-25, -3.136226280886417e-20, -2.8290694145637504e-16, -1.989608025039309e-12, -2.9108072389506735e-10, 1.3946200858328376e-06, 0.00010981224688933803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000013, 2.500000000005402, 2.5000000012314194, 2.4999959188331564, 2.4996760727655256]}, "NODE_235": {"DENSITY": [1.0, 1.0, 0.9999999999999646, 1.0000000000577274, 0.999999925778821, 0.9999869574850128, 0.9995504925315601], "MOMENTUM_X": [-1.9090377789545556e-22, -3.3165726607773972e-18, 4.130540075449627e-14, -6.734529575458291e-11, 8.748938646892969e-08, 1.5392524996951393e-05, 0.0005309678303276914], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999998765, 2.5000000002020464, 2.4999997402258862, 2.499954351524177, 2.4984270687854297]}, "NODE_236": {"DENSITY": [1.0, 1.0, 0.9999999999999655, 1.00000000005928, 0.9999999501313548, 0.9999890090841786, 0.9995844030828612], "MOMENTUM_X": [-3.032212432553397e-23, -1.2395313122768826e-18, 4.0143166876850354e-14, -6.902171153709178e-11, 5.9196750452368074e-08, 1.299126129511676e-05, 0.0004910711124380357], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999998788, 2.5000000002074785, 2.499999825459746, 2.4999615320267092, 2.4985457047147537]}, "NODE_237": {"DENSITY": [1.0, 1.0, 1.0000000000000009, 0.9999999999993385, 1.0000000011298527, 0.9999994897985979, 0.9999421196798332], "MOMENTUM_X": [1.1540861147863266e-25, -2.2472642412865524e-20, -1.0267102549531245e-15, 7.351177378150135e-13, -1.324205511383716e-09, 6.139232238273982e-07, 6.913955075731109e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.500000000000003, 2.499999999997685, 2.500000003954485, 2.4999982142956583, 2.4997974249306574]}, "NODE_238": {"DENSITY": [1.0, 1.0000000000000007, 1.000000000000186, 1.0000000000054778, 0.9999990997460328, 0.9999164222177552, 0.9981966940419729], "MOMENTUM_X": [1.0333924896504785e-19, 4.24095119918249e-16, -2.0443385342864576e-13, -2.7059768702382714e-11, 1.0318608947073035e-06, 9.759041591713857e-05, 0.002128195139911591], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.500000000000002, 2.500000000000651, 2.5000000000191718, 2.499996849112843, 2.4997074904522707, 2.493693785363975]}, "NODE_239": {"DENSITY": [1.0, 1.0000000000000002, 0.9999999999999648, 1.0000000001125098, 0.9999995133109696, 0.9999460980311703, 0.9986679506364396], "MOMENTUM_X": [3.367154766932172e-20, 6.450325299978049e-18, 1.8223912470337242e-14, -1.2111585115042342e-10, 5.866422154541429e-07, 6.410491580477135e-05, 0.001572458726357181], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.500000000000001, 2.4999999999998774, 2.500000000393784, 2.4999982965889505, 2.499811348602527, 2.495340775167854]}, "NODE_240": {"DENSITY": [1.0, 1.0, 1.0000000000000628, 0.9999999999466427, 0.9999995595653391, 0.9999541238754431, 0.9988565952141921], "MOMENTUM_X": [2.1084175044953816e-20, -1.6893819498401448e-17, -7.11558501160385e-14, 5.517057136069856e-11, 5.236461379843188e-07, 5.4555760962379564e-05, 0.0013555164965253837], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000004, 2.5000000000002203, 2.4999999998132503, 2.499998458479134, 2.499839437579287, 2.496000286538393]}, "NODE_241": {"DENSITY": [1.0, 1.0, 0.9999999999999762, 1.0000000000448293, 0.999999975065559, 0.9999918925327537, 0.9996470703626771], "MOMENTUM_X": [-3.936488779956792e-23, 8.732321230200832e-19, 2.79789160949942e-14, -5.2690635153537025e-11, 3.00759087514641e-08, 9.614844876724442e-06, 0.0004175080194949532], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999999165, 2.500000000156902, 2.4999999127294585, 2.499971623991812, 2.4987649583098754]}, "NODE_242": {"DENSITY": [1.0, 1.0, 1.0000000000000682, 0.9999999999035296, 0.9999995473995863, 0.9999549448749033, 0.9989027945639591], "MOMENTUM_X": [9.79760763075098e-21, -3.3925939877219835e-17, -7.642770073538489e-14, 1.0598992116099156e-10, 5.336612674959624e-07, 5.333626372883355e-05, 0.001298807271558048], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.500000000000238, 2.499999999662353, 2.49999841589901, 2.499842310894575, 2.496161806630848]}, "NODE_243": {"DENSITY": [1.0, 1.0, 1.0000000000000004, 0.9999999999989893, 1.0000000009052714, 0.9999998605514597, 0.9999688306898318], "MOMENTUM_X": [2.0472945661473549e-25, 5.952324567288314e-22, -7.295772253504579e-16, 1.099420905620976e-12, -1.0520902320516067e-09, 1.9997697717957597e-07, 3.833620150638699e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.500000000000002, 2.4999999999964633, 2.5000000031684504, 2.4999995119301723, 2.4998909092785153]}, "NODE_244": {"DENSITY": [1.0, 1.0, 1.000000000000023, 0.999999999963501, 0.9999995605465474, 0.9999551186601543, 0.9989052521066312], "MOMENTUM_X": [3.483748533208071e-21, -7.262051786881763e-17, -2.357965978901704e-14, 3.9212639514012596e-11, 5.171127859183584e-07, 5.300589988260219e-05, 0.0012938305417170204], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.500000000000081, 2.4999999998722537, 2.499998461913345, 2.499842919080984, 2.4961703886395363]}, "NODE_245": {"DENSITY": [1.0, 1.0, 0.9999999999999908, 1.0000000000225506, 0.9999999931881027, 0.9999949537073266, 0.9997319094287377], "MOMENTUM_X": [-2.290984758992457e-23, 5.908284495338076e-19, 1.1123667054238895e-14, -2.7063700498860338e-11, 8.680391002920925e-09, 6.014670609351763e-06, 0.0003177503885226161], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999968, 2.500000000078927, 2.49999997615836, 2.4999823380257364, 2.499061806091983]}, "NODE_246": {"DENSITY": [1.0, 1.0, 0.9999999999999424, 1.0000000000865288, 0.9999996180936188, 0.999957275732494, 0.9989181769624198], "MOMENTUM_X": [2.81867917978818e-22, -8.588826201691089e-17, 6.794086647655197e-14, -9.977066526330991e-11, 4.4992372243306576e-07, 5.043184803860352e-05, 0.0012775926096566662], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999997984, 2.5000000003028506, 2.4999986633279896, 2.499850468462926, 2.49621556856617]}, "NODE_247": {"DENSITY": [1.0, 1.0, 0.9999999999998641, 1.000000000196975, 0.9999997167352493, 0.9999625942500999, 0.9989769801154568], "MOMENTUM_X": [-8.02097570713861e-22, -6.87453891579679e-17, 1.5617090708154578e-13, -2.2623595871007727e-10, 3.351875219172842e-07, 4.41979581706905e-05, 0.0012083381893545704], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999524, 2.5000000006894134, 2.499999008573554, 2.4998690824775522, 2.496421166973075]}, "NODE_248": {"DENSITY": [1.0, 1.0, 1.0000000000000002, 1.0000000000051676, 1.0000000017968236, 0.999997473895709, 0.9998219477462812], "MOMENTUM_X": [-8.151729999294953e-24, -2.3676705468177024e-20, -3.6858591798351936e-16, -6.449696179565652e-12, -1.9865782157346828e-09, 3.0308178432021223e-06, 0.00021250925930374367], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000018, 2.5000000000180878, 2.500000006288883, 2.499991158648038, 2.4993768725998358]}, "NODE_249": {"DENSITY": [1.0, 1.000000000000001, 1.0000000000046756, 0.9999999963134147, 0.9999962036465778, 0.9997605408090162, 0.9961779858228507], "MOMENTUM_X": [1.776547357053487e-18, 1.2063074114904712e-15, -5.092152308581023e-12, 4.0495591556950905e-09, 4.372998607891565e-06, 0.0002805634090010889, 0.004516328416788361], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.500000000000004, 2.5000000000163656, 2.4999999870969525, 2.4999867127924698, 2.499161994295032, 2.486646516730863]}, "NODE_250": {"DENSITY": [1.0, 1.0000000000000013, 1.000000000001457, 0.9999999988152022, 0.9999978544535323, 0.9998397772254086, 0.9970758117792357], "MOMENTUM_X": [6.317660169736549e-19, 1.003398999343098e-15, -1.936942002936543e-12, 1.5325921280421679e-09, 2.576566781389286e-06, 0.00019012722624806738, 0.0034442314363246156], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000044, 2.5000000000050995, 2.4999999958532078, 2.4999924905975677, 2.4994392671311996, 2.4897791670764993]}, "NODE_251": {"DENSITY": [1.0, 1.0000000000000007, 1.0000000000017326, 0.9999999981715136, 0.9999981052547628, 0.9998637669056906, 0.997464917830922], "MOMENTUM_X": [3.326073927115091e-19, 5.625009639634328e-16, -2.072119564312268e-12, 2.1431910820832558e-09, 2.2547194474998436e-06, 0.00016192885296087143, 0.0030006522044542217], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.500000000000002, 2.5000000000060636, 2.4999999936002966, 2.499993368399546, 2.499523218437561, 2.491137752995024]}, "NODE_252": {"DENSITY": [1.0, 1.0, 0.9999999999998463, 1.000000000222291, 0.9999998314635359, 0.9999708973001644, 0.9991016763047386], "MOMENTUM_X": [-4.1370206794573327e-22, -2.7411423528905653e-17, 1.7761459843905747e-13, -2.57536811923223e-10, 2.0133068536995566e-07, 3.447307111143701e-05, 0.001062024852439517], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999461, 2.500000000778018, 2.499999410122441, 2.4998981421323263, 2.496857204994663]}, "NODE_253": {"DENSITY": [1.0, 1.0000000000000004, 1.0000000000017848, 0.9999999978464512, 0.9999980703209178, 0.999867061274683, 0.9975713563151142], "MOMENTUM_X": [2.3051670788187797e-19, 3.3319128650420945e-16, -2.1063260572191967e-12, 2.5017945906081774e-09, 2.2789429824105265e-06, 0.00015743241633825832, 0.002872296947401077], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000013, 2.5000000000062466, 2.4999999924625795, 2.499993246131204, 2.4995347468454012, 2.491509420504705]}, "NODE_254": {"DENSITY": [1.0, 1.0, 1.0000000000000029, 0.9999999999976665, 1.000000003667947, 0.9999990611074728, 0.999896289663322], "MOMENTUM_X": [-1.5910336003820204e-24, -9.322145381770162e-20, -3.0313257898944877e-15, 1.690397098258307e-12, -3.932173041051704e-09, 1.2420476003743712e-06, 0.00012599705630402858], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.50000000000001, 2.4999999999918328, 2.5000000128378144, 2.4999967138783714, 2.4996370334021347]}, "NODE_255": {"DENSITY": [1.0, 1.0000000000000004, 1.000000000001536, 0.9999999981125336, 0.9999980917673562, 0.9998669372943414, 0.9975760615790791], "MOMENTUM_X": [1.3746277720053436e-19, 8.782402865548586e-17, -1.8018805175957836e-12, 2.196707491135848e-09, 2.2479639892192143e-06, 0.00015721958209939345, 0.002862799814835314], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000013, 2.500000000005376, 2.4999999933938675, 2.4999933211934864, 2.499534312721865, 2.491525812055982]}, "NODE_256": {"DENSITY": [1.0, 1.0, 0.999999999999896, 1.0000000001607823, 0.999999928289992, 0.9999805430358858, 0.9992869680422709], "MOMENTUM_X": [-1.6704887390734976e-22, -5.466104740938573e-18, 1.2171260625902665e-13, -1.8855035309342718e-10, 8.74253335795435e-08, 2.313530848140246e-05, 0.000844354418452168], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999999636, 2.5000000005627374, 2.499999749014984, 2.4999319013413133, 2.4975052349013307]}, "NODE_257": {"DENSITY": [1.0, 1.0000000000000004, 1.0000000000009877, 0.9999999989037547, 0.9999982687850674, 0.9998709548433464, 0.9975844750690628], "MOMENTUM_X": [5.622145315542979e-20, -1.4660469126429105e-16, -1.1612257100359813e-12, 1.2930002734571155e-09, 2.039884842326722e-06, 0.0001523547688870948, 0.0028506710112015925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000013, 2.500000000003457, 2.4999999961631416, 2.4999939407540905, 2.499548372057886, 2.491555147462787]}, "NODE_258": {"DENSITY": [1.0, 1.0, 0.9999999999999626, 1.0000000000729479, 0.9999999863085397, 0.9999892297383789, 0.9994996353301183], "MOMENTUM_X": [-3.7078679537708057e-23, 1.821330679247982e-18, 4.526288028500019e-14, -8.790858911662661e-11, 1.7140009938275276e-08, 1.2899867051180663e-05, 0.0005967141171147911], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999998694, 2.500000000255318, 2.4999999520798912, 2.499962304310905, 2.4982491488927]}, "NODE_259": {"DENSITY": [1.0, 1.0000000000000002, 1.0000000000002047, 0.9999999999009136, 0.9999986220651624, 0.9998832821554486, 0.9976721478888525], "MOMENTUM_X": [1.2355251040925816e-20, -3.0905778584780286e-16, -2.633806795643914e-13, 1.4693505645129242e-10, 1.6282049362818024e-06, 0.00013787970077703063, 0.00274735968533096], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000013, 2.5000000000007163, 2.499999999653198, 2.4999951772321154, 2.499591512106411, 2.491861290488699]}, "NODE_260": {"DENSITY": [1.0, 0.9999999999999797, 1.00000000004131, 0.9999999643437767, 0.9999854677515809, 0.9993657923182404, 0.9924939404553326], "MOMENTUM_X": [2.815837891291816e-18, -1.0222166442366905e-14, -4.508802306823052e-11, 3.9912893654861e-08, 1.681832274598811e-05, 0.000745444181014738, 0.008869021908724963], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999294, 2.5000000001445857, 2.499999875203222, 2.49994913754603, 2.49778096693829, 2.473817900508846]}, "NODE_261": {"DENSITY": [1.0, 0.9999999999999926, 1.0000000000170173, 0.9999999848931439, 0.9999914233829086, 0.9995593229759868, 0.9940517788164869], "MOMENTUM_X": [2.0140934477857123e-18, -3.587824971507947e-15, -2.0936709996787054e-11, 1.8739304909809978e-08, 1.0265307772320915e-05, 0.0005217926359805244, 0.0069855342056176235], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999975, 2.5000000000595612, 2.4999999471260055, 2.499969981995031, 2.4984579728082603, 2.4792369802265566]}, "NODE_262": {"DENSITY": [1.0, 1.0000000000000002, 0.9999999999995657, 1.0000000006058867, 0.9999990845838125, 0.9999048804171272, 0.9978939097787769], "MOMENTUM_X": [3.925232488506755e-21, -2.958780250583427e-16, 4.74444142894852e-13, -6.771575640183244e-10, 1.088515669517657e-06, 0.00011257256827956215, 0.002487571494525522], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.500000000000001, 2.49999999999848, 2.5000000021206032, 2.49999679604516, 2.499667097804083, 2.4926358525642853]}, "NODE_263": {"DENSITY": [1.0, 0.9999999999999952, 1.000000000015865, 0.9999999833605903, 0.9999925515695901, 0.9996243236556879, 0.9947794521595539], "MOMENTUM_X": [5.162889682349611e-19, 1.7628485096468152e-16, -1.8811319393184584e-11, 1.9703636568834983e-08, 8.867421842393982e-06, 0.0004462033861324051, 0.00616450491504677], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999836, 2.500000000055528, 2.4999999417620677, 2.4999739306101803, 2.4986853850661244, 2.4817716251779824]}, "NODE_264": {"DENSITY": [1.0, 1.0, 1.0000000000000004, 1.000000000014593, 1.0000000089374124, 0.9999952296187896, 0.9996876635932698], "MOMENTUM_X": [-2.953695555537345e-23, 4.519984243431859e-19, 4.186944986147522e-15, -2.3853098863114206e-11, -7.474899291846977e-09, 6.077273139907327e-06, 0.0003757330722042646], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.5000000000000018, 2.5000000000510756, 2.5000000312809436, 2.499983303716247, 2.498906992148914]}, "NODE_265": {"DENSITY": [1.0, 0.9999999999999967, 1.000000000015924, 0.9999999814888584, 0.9999924909798966, 0.999635569917255, 0.9949993332884024], "MOMENTUM_X": [7.181942740942305e-19, 1.1225867958637468e-15, -1.8749740815073617e-11, 2.1688168075517066e-08, 8.879970305897715e-06, 0.00043163118639521114, 0.005903684379354082], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999988, 2.5000000000557336, 2.4999999352110054, 2.4999737185460456, 2.4987247309383864, 2.4825376594581465]}, "NODE_266": {"DENSITY": [1.0, 0.9999999999999979, 1.0000000000149627, 0.999999982327392, 0.9999924885006426, 0.9996344575041912, 0.9950117962495135], "MOMENTUM_X": [7.560569579004545e-19, 1.3388393219601265e-15, -1.7560286316672868e-11, 2.067950624883524e-08, 8.858581579811974e-06, 0.000432028444438019, 0.005882294761153931], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999933, 2.50000000005237, 2.4999999381458733, 2.499973709867575, 2.498720837327267, 2.482580956413252]}, "NODE_267": {"DENSITY": [1.0, 1.0, 0.9999999999993979, 1.0000000007562397, 0.9999995259349069, 0.9999323792887385, 0.99825938874985], "MOMENTUM_X": [6.293630863526809e-22, -1.4019210113949203e-16, 6.812282541930208e-13, -8.676149378882615e-10, 5.701374959646073e-07, 8.026217163312987e-05, 0.002059070297051293], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000004, 2.499999999997894, 2.50000000264684, 2.4999983407726827, 2.4997633358457723, 2.4939127729240806]}, "NODE_268": {"DENSITY": [1.0, 0.9999999999999996, 1.0000000000126232, 0.9999999863007242, 0.9999929610872984, 0.999640377401927, 0.9950008383606614], "MOMENTUM_X": [4.1368827710236773e-19, 7.910971160191138e-16, -1.4774360419322184e-11, 1.610192586514428e-08, 8.297873930178177e-06, 0.0004246395405039043, 0.0058907492402725595], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999982, 2.500000000044181, 2.499999952052535, 2.499975363906354, 2.4987415480666613, 2.4825426087575106]}, "NODE_269": {"DENSITY": [1.0, 1.0, 0.9999999999996124, 1.000000000510365, 0.9999998351763408, 0.99995937480645, 0.9987145190971133], "MOMENTUM_X": [-4.539530129446091e-22, -3.013820238928891e-17, 4.612841641560659e-13, -6.081505041287212e-10, 2.0006148919346874e-07, 4.859216088449015e-05, 0.0015314902119371177], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.499999999998643, 2.5000000017862765, 2.49999942311726, 2.499857814917119, 2.495503543671171]}, "NODE_270": {"DENSITY": [1.0, 1.0000000000000009, 1.0000000000080893, 0.9999999925213641, 0.9999940842542638, 0.9996656201494962, 0.9951078468910136], "MOMENTUM_X": [2.2304209204934545e-19, -2.598510007126402e-16, -9.551525986711685e-12, 8.933768212791104e-09, 6.986366957584161e-06, 0.0003949356369597432, 0.005764676417178583], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000027, 2.500000000028312, 2.4999999738247736, 2.499979294961213, 2.498829866182072, 2.4829152997183637]}, "NODE_271": {"DENSITY": [0.9999999999999999, 0.9999999999999121, 1.000000000244349, 0.9999997627313831, 0.9999492458740697, 0.998450332240474, 0.9863426958042756], "MOMENTUM_X": [-1.2618978233988022e-16, 7.624615845612743e-14, -2.745978835990313e-10, 2.682131421010097e-07, 5.899853327282048e-05, 0.0018264013234124807, 0.016105348454164625], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999999996927, 2.5000000008552217, 2.4999991695599806, 2.4998223654549196, 2.4945802041045195, 2.45248903673672]}, "NODE_272": {"DENSITY": [1.0, 1.0000000000000013, 1.0000000000025682, 0.9999999984790306, 0.9999957373404607, 0.9997161292907486, 0.9954563045122736], "MOMENTUM_X": [1.2259532137050479e-19, -1.1491213332656942e-15, -3.225443598143679e-12, 2.0095148922220942e-09, 5.056564455278739e-06, 0.000335732792902626, 0.005358060837871673], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.500000000000005, 2.500000000008989, 2.499999994676607, 2.499985080728994, 2.4990065935470107, 2.4841296222428224]}, "NODE_273": {"DENSITY": [1.0, 0.9999999999999521, 1.0000000001185751, 0.9999998875938869, 0.999968731700732, 0.9988808724954805, 0.9887984165408439], "MOMENTUM_X": [-4.4546851956636027e-17, 1.577164430766155e-14, -1.4403309200105625e-10, 1.3748367232555083e-07, 3.730508795544184e-05, 0.0013221668554478571, 0.013101323238240536], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999833, 2.5000000004150147, 2.4999996065786427, 2.4998905629151738, 2.4960851899849015, 2.460987539224407]}, "NODE_274": {"DENSITY": [1.0, 0.99999999999996, 1.0000000000973293, 0.9999998894256367, 0.9999731273660117, 0.9990400967977511, 0.9900281829957438], "MOMENTUM_X": [-2.6290253600352962e-17, 2.2705063187370284e-14, -1.1612344449893247e-10, 1.3140861895835851e-07, 3.1989454150893644e-05, 0.001138871092719743, 0.011731965761680561], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.49999999999986, 2.5000000003406524, 2.499999612989761, 2.499905947237811, 2.4966419338448316, 2.4652536236517384]}, "NODE_275": {"DENSITY": [1.0, 1.0, 0.9999999999998651, 1.000000000218067, 0.9999999888061787, 0.9999796452338344, 0.999145476493705], "MOMENTUM_X": [-8.005192102248492e-23, 1.2779135109733274e-19, 1.8622513344497103e-13, -2.832214648945775e-10, 3.038471070083589e-08, 2.5334258553667803e-05, 0.0010195675721850655], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5, 2.4999999999995284, 2.500000000763234, 2.4999999608216275, 2.4999287591621693, 2.4970103852545322]}, "NODE_276": {"DENSITY": [1.0, 0.9999999999999637, 1.0000000000943496, 0.9999998806931618, 0.999973189218142, 0.9990732760066121, 0.9904336105789953], "MOMENTUM_X": [-1.9794432645542594e-17, 2.493364895246969e-14, -1.1170304470224381e-10, 1.4033589709394272e-07, 3.173513822131729e-05, 0.0010973491832007784, 0.01125923438725139], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999873, 2.5000000003302247, 2.4999995824261045, 2.4999061636933795, 2.4967579488226783, 2.4666605149186096]}, "NODE_277": {"DENSITY": [1.0, 1.0000000000000013, 0.9999999999987661, 1.0000000018654416, 0.9999974986826953, 0.9997869288942011, 0.9961033682762699], "MOMENTUM_X": [5.1224587837102573e-20, -1.1515834431052482e-15, 1.2148836921341706e-12, -2.0064885495855223e-09, 2.989125629346613e-06, 0.0002525788652997425, 0.004602411890334862], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000044, 2.499999999995681, 2.5000000065290457, 2.499991245402617, 2.4992543311126547, 2.4863857842862673]}, "NODE_278": {"DENSITY": [1.0, 0.9999999999999688, 1.0000000000919247, 0.9999998820548316, 0.999973004884363, 0.9990703187031635, 0.99046596341469], "MOMENTUM_X": [-1.066938478421084e-17, 2.232221463502922e-14, -1.0836321329327677e-10, 1.383744740557058e-07, 3.186429444899901e-05, 0.0010987574710377285, 0.011211069831780489], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.49999999999989, 2.500000000321736, 2.4999995871919456, 2.4999055185311185, 2.4967475993806123, 2.466772458121042]}, "NODE_279": {"DENSITY": [1.0, 0.9999999999999758, 1.0000000000879614, 0.9999998985519346, 0.9999740742698923, 0.9990756805918081, 0.9904129720836967], "MOMENTUM_X": [-5.265647382389888e-18, 1.84392197013957e-14, -1.0295581361924689e-10, 1.1919002490172333e-07, 3.0576312752993364e-05, 0.001091336395127378, 0.01126498238179897], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999915, 2.500000000307865, 2.499999644931798, 2.499909261261323, 2.4967663407618064, 2.4665880418475337]}, "NODE_280": {"DENSITY": [1.0, 1.0000000000000004, 0.9999999999979039, 1.0000000023815812, 0.999998896461263, 0.999862641104032, 0.9969818225799348], "MOMENTUM_X": [1.0802718082270847e-20, -5.820929846488604e-16, 2.4482719916013775e-12, -2.808512192669149e-09, 1.3294869964176385e-06, 0.0001641192003272078, 0.003590338563488828], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000018, 2.499999999992665, 2.500000008335536, 2.4999961376171433, 2.499519277940365, 2.4894510009423962]}, "NODE_281": {"DENSITY": [1.0, 0.9999999999999859, 1.0000000000731237, 0.9999999298075112, 0.9999772397717986, 0.9991204496051063, 0.9905066029716966], "MOMENTUM_X": [-1.7250840979389694e-19, 1.1150641720029238e-14, -8.551662180559458e-11, 8.307702980137462e-08, 2.6871220919383116e-05, 0.0010385260035648538, 0.011154626360761958], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999516, 2.5000000002559335, 2.4999997543263026, 2.499920340214642, 2.4969228886501114, 2.4669124093104724]}, "NODE_282": {"DENSITY": [1.0, 0.9999999999999976, 1.0000000000444116, 0.9999999660408909, 0.9999825043114895, 0.9992258526868383, 0.9909829700727204], "MOMENTUM_X": [4.0206102450718114e-19, 1.512982582988822e-15, -5.273071842667376e-11, 4.1039635161132965e-08, 2.0722192901028317e-05, 0.0009149972523984662, 0.010603237640853733], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999916, 2.5000000001554405, 2.499999881143121, 2.4999387656922525, 2.497291501814095, 2.468565689942847]}, "NODE_283": {"DENSITY": [1.0, 1.0, 0.9999999999986557, 1.000000001551378, 0.9999997076754786, 0.9999241581445482, 0.9978734297241023], "MOMENTUM_X": [2.086826940025669e-21, -1.6872476922972403e-16, 1.6232009894454136e-12, -1.8587025436058126e-09, 4.2330122681040643e-07, 9.284922015888654e-05, 0.002519195257145699], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000004, 2.499999999995295, 2.5000000054298233, 2.499998976864468, 2.4997345644592457, 2.4925642637443235]}, "NODE_284": {"DENSITY": [0.9999999999999996, 0.9999999999998063, 1.0000000009912895, 0.9999987078644377, 0.999837939289518, 0.9965137253918406, 0.9769412390039578], "MOMENTUM_X": [-5.220892795732745e-16, 9.595426084346776e-13, -1.147959587108676e-09, 1.472115799802055e-06, 0.00018919137026483882, 0.004116276972594544, 0.027071458178092412], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999987, 2.4999999999993214, 2.500000003469512, 2.499995477529321, 2.4994328358415547, 2.487818007407709, 2.4201062362576686]}, "NODE_285": {"DENSITY": [0.9999999999999998, 0.999999999999903, 1.0000000005814456, 0.9999993390549357, 0.9998957632020163, 0.9973820303192934, 0.9804570279653751], "MOMENTUM_X": [-3.457661042073992e-16, 4.58565350468417e-13, -6.994930076790606e-10, 8.015939397174237e-07, 0.0001239865597724963, 0.0030850926092037103, 0.022725771859241368], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999999, 2.4999999999996594, 2.500000002035058, 2.499997686693398, 2.499635192067645, 2.4908484302339993, 2.4321749664086165]}, "NODE_286": {"DENSITY": [0.9999999999999998, 0.99999999999987, 1.0000000004109553, 0.9999993870173245, 0.9999108661971787, 0.9977333010874065, 0.9823324036973495], "MOMENTUM_X": [-1.7988117089816334e-16, 3.1740088572312446e-13, -4.964653970780351e-10, 7.297220942702575e-07, 0.00010605553771000348, 0.002684925770678915, 0.020674145774371877], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999999995457, 2.500000001438344, 2.4999978545615695, 2.4996880470905616, 2.492075172395703, 2.4386390707857175]}, "NODE_287": {"DENSITY": [0.9999999999999999, 0.9999999999998445, 1.0000000003684464, 0.9999993536616036, 0.999911945036062, 0.997818546732702, 0.9829978437495762], "MOMENTUM_X": [-1.405687027244605e-16, 2.837378805642679e-13, -4.419335724583462e-10, 7.622676323561212e-07, 0.0001042889105976053, 0.002580949341467466, 0.01991360533305373], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.499999999999456, 2.5000000012895622, 2.4999977378166167, 2.4996918225018074, 2.4923728899817097, 2.4409338141834387]}, "NODE_288": {"DENSITY": [1.0, 1.0000000000000044, 1.0000000000140643, 0.9999999937173722, 0.9999887353597722, 0.999389811180681, 0.9920047723612528], "MOMENTUM_X": [3.053620282130829e-19, -4.702177626168257e-15, -1.7706875514696853e-11, 8.521947085307532e-09, 1.341212064595374e-05, 0.0007225862453685835, 0.009418766587531113], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.500000000000015, 2.5000000000492246, 2.4999999780108024, 2.4999605740128095, 2.497864974208745, 2.4721153236383273]}, "NODE_289": {"DENSITY": [0.9999999999999999, 0.9999999999998337, 1.0000000003631493, 0.9999993496700358, 0.9999110892930066, 0.9978141094430796, 0.9830687514827927], "MOMENTUM_X": [-1.1709167270589988e-16, 2.4652336990802445e-13, -4.334370896135999e-10, 7.645403467182012e-07, 0.00010501914479668192, 0.0025819649960798826, 0.019817093094901886], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999996, 2.4999999999994174, 2.500000001271022, 2.4999977238461306, 2.4996888275616542, 2.492357356717011, 2.441177578679016]}, "NODE_290": {"DENSITY": [1.0, 0.9999999999998281, 1.0000000003943428, 0.9999994071196059, 0.9999130245667371, 0.9978109926883433, 0.9829490129906641], "MOMENTUM_X": [-8.110607813732557e-17, 2.1262917003844947e-13, -4.6415340588462465e-10, 6.969043180060451e-07, 0.00010261796945943037, 0.0025830508986073525, 0.019942260535823195], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999993996, 2.500000001380201, 2.4999979249194566, 2.499695600280954, 2.4923464301100586, 2.440763337735893]}, "NODE_291": {"DENSITY": [1.0, 1.0000000000000044, 0.9999999999965613, 1.0000000061578562, 0.9999942480120754, 0.9995810944596859, 0.9935269544062525], "MOMENTUM_X": [1.5476234410726046e-19, -4.968625899687589e-15, 3.671441970356293e-12, -7.067344505455622e-09, 6.907475065250754e-06, 0.0005000431048112048, 0.007680725937894758], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.500000000000016, 2.499999999987965, 2.500000021552498, 2.4999798681112786, 2.4985341366048637, 2.477409861175355]}, "NODE_292": {"DENSITY": [1.0, 0.999999999999848, 1.0000000004085308, 0.999999539810357, 0.9999208766920178, 0.9978773161379408, 0.982971555798725], "MOMENTUM_X": [-2.874295592497045e-17, 1.7009728199136378e-13, -4.763556243491303e-10, 5.43061323618165e-07, 9.33989969064517e-05, 0.002504577664577832, 0.019914318768052712], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999467, 2.500000001429857, 2.4999983893367577, 2.499723080215718, 2.4925780522492897, 2.4408394098507906]}, "NODE_293": {"DENSITY": [1.0, 1.000000000000002, 0.9999999999929118, 1.000000007508721, 0.9999978544012429, 0.9997489111815083, 0.9951851526527205], "MOMENTUM_X": [5.60756203474072e-20, -2.4779475824222085e-15, 7.55700794981193e-12, -8.341286642973171e-09, 2.836781643272264e-06, 0.0003035517905103372, 0.005665686948524266], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000075, 2.499999999975192, 2.5000000262805244, 2.4999924904161723, 2.4991213025922927, 2.4831839900295223]}, "NODE_294": {"DENSITY": [1.0, 0.9999999999999056, 1.0000000003359582, 0.9999997196252151, 0.9999358169071328, 0.9980715392619378, 0.983525033975067], "MOMENTUM_X": [-1.2930438314069667e-17, 1.0051145255192721e-13, -3.9325763168493603e-10, 3.344290210621136e-07, 7.593534394209798e-05, 0.002277262109887154, 0.01928359522425019], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999996696, 2.500000001175853, 2.499999018688449, 2.499775366952562, 2.493256518231634, 2.4427471783408317]}, "NODE_295": {"DENSITY": [1.0000000000000042, 0.9999999999982953, 1.0000000015749344, 0.9999939223651988, 0.9995269013296113, 0.9927901059726585, 0.9637435029887543], "MOMENTUM_X": [5.309997543196376e-15, 1.5863702762880733e-12, -1.9713317813004265e-09, 6.972237512928687e-06, 0.0005545312683344453, 0.008515657985348278, 0.04225548339752516], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000014, 2.4999999999940323, 2.500000005512269, 2.4999787283572075, 2.4983445540813327, 2.474848836849887, 2.3750806562121145]}, "NODE_296": {"DENSITY": [1.0000000000000016, 0.9999999999991028, 1.0000000016955004, 0.9999966873614018, 0.9996821787326802, 0.9943706737456162, 0.9683256294031775], "MOMENTUM_X": [1.7227041364647686e-15, 1.5907591143462438e-12, -1.936549730177671e-09, 3.9932163675414666e-06, 0.0003769722964098722, 0.006612325507584758, 0.036541458452863496], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000058, 2.4999999999968607, 2.5000000059342518, 2.499988405790838, 2.498887811496123, 2.480348162549571, 2.390623856652385]}, "NODE_297": {"DENSITY": [1.0000000000000009, 0.9999999999994633, 1.0000000007297924, 0.9999970338956041, 0.9997282615478639, 0.9950656816361645, 0.9709089802374796], "MOMENTUM_X": [1.1483168575742818e-15, 9.761109309075693e-13, -8.978236654582975e-10, 3.5340750477220384e-06, 0.0003230773595803003, 0.005830013455374461, 0.033782537854559716], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000036, 2.4999999999981215, 2.500000002554273, 2.499989618655045, 2.499049053087503, 2.4827695013971907, 2.399445828635698]}, "NODE_298": {"DENSITY": [1.0000000000000007, 0.9999999999994557, 1.0000000003589282, 0.9999969324880449, 0.9997338698842392, 0.9952569561172487, 0.9718807751248331], "MOMENTUM_X": [7.669834759246338e-16, 9.116884381445244e-13, -4.616351438321601e-10, 3.625060858750613e-06, 0.00031528319595832847, 0.005601667328136635, 0.032699605115187304], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000002, 2.499999999998095, 2.5000000012562493, 2.4999892637294776, 2.4990686757202543, 2.483435971888487, 2.402766276911932]}, "NODE_299": {"DENSITY": [1.0, 0.9999999999999744, 1.0000000001894456, 0.999999884752282, 0.9999554598609901, 0.9984110916660388, 0.9849559342872356], "MOMENTUM_X": [-5.572935046316261e-18, 2.4958969243836844e-14, -2.2530347268651485e-10, 1.4107493298030718e-07, 5.28985687493499e-05, 0.001879540800934847, 0.017646212082298135], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999999103, 2.5000000006630585, 2.499999596633023, 2.499844113300502, 2.494442995875088, 2.447687381923812]}, "NODE_300": {"DENSITY": [1.0000000000000004, 0.9999999999994366, 1.000000000310469, 0.9999968864230899, 0.9997312473718851, 0.9952558206955514, 0.9720090233802352], "MOMENTUM_X": [3.61952467192681e-16, 9.494626999854244e-13, -4.0758094133233e-10, 3.6671994488782744e-06, 0.0003175989462700792, 0.005595404327210977, 0.032534878341353816], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000001, 2.4999999999980265, 2.500000001086639, 2.4999891025025285, 2.4990594985418753, 2.483431895034237, 2.403202861654372]}, "NODE_301": {"DENSITY": [1.0, 0.9999999999993205, 1.0000000006686538, 0.9999970524885707, 0.9997335629468639, 0.9952283092364583, 0.9718058801811483], "MOMENTUM_X": [4.534283365651105e-17, 1.0281380490496876e-12, -8.045463542140415e-10, 3.468132523347364e-06, 0.0003144615258578653, 0.005622313805665529, 0.03274530549262039], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000004, 2.4999999999976215, 2.5000000023402875, 2.4999896837293587, 2.4990675999422978, 2.483335865676551, 2.4025059326053166]}, "NODE_302": {"DENSITY": [1.0, 1.0000000000000124, 1.0000000000545197, 0.9999999861101675, 0.9999746835685365, 0.998844784672559, 0.9873157220823557], "MOMENTUM_X": [-1.7978075903755052e-19, -1.742248204605344e-14, -6.713203379162019e-11, 1.8204167183656902e-08, 3.0340189497897663e-05, 0.0013774867364559, 0.014988141850107372], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000000426, 2.500000000190818, 2.4999999513855866, 2.4999113937565376, 2.4959589969140454, 2.455850642997902]}, "NODE_303": {"DENSITY": [1.0, 0.9999999999991616, 1.0000000012692003, 0.9999975371251703, 0.9997504545166527, 0.995303877522926, 0.9716881256699865], "MOMENTUM_X": [-8.33788762514726e-17, 1.1109826762706065e-12, -1.4729735801798406e-09, 2.9039572225031254e-06, 0.0002945491274701789, 0.0055324101330833965, 0.032876419849515934], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999970655, 2.5000000044422004, 2.4999913799516578, 2.4991267040090994, 2.4835990307645166, 2.4020997123719883]}, "NODE_304": {"DENSITY": [1.0, 1.000000000000016, 0.9999999999884843, 1.0000000228881663, 0.9999886103787645, 0.9992554374365111, 0.9900787287326542], "MOMENTUM_X": [2.326328491560811e-19, -1.8859899295443603e-14, 4.572171132793346e-12, -2.1555925807624095e-08, 1.4463559727893797e-05, 0.0008910937111856587, 0.01159379912173826], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.500000000000056, 2.4999999999596945, 2.5000000801085807, 2.4999601366154156, 2.497394980359754, 2.465423601529337]}, "NODE_305": {"DENSITY": [1.0, 0.9999999999992034, 1.000000001579629, 0.9999982969271929, 0.9997880781659092, 0.9956153197523792, 0.9722104723007418], "MOMENTUM_X": [-9.267800225378082e-17, 9.854606575583064e-13, -1.826636050592879e-09, 2.021401973730829e-06, 0.0002505340958003546, 0.00516932362648583, 0.032299076242214744], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.4999999999972116, 2.500000005528702, 2.499994039251776, 2.4992583552064693, 2.4846844326188764, 2.4038806264098542]}, "NODE_306": {"DENSITY": [1.0000000000000135, 1.0000000000011535, 0.9999999831535864, 0.9999747308215319, 0.9987389408943246, 0.986297405245545, 0.9466150598011756], "MOMENTUM_X": [1.6647862259706932e-14, -1.5069469467604056e-11, 1.793816462726468e-08, 2.9168599384753208e-05, 0.0014833494664529855, 0.016154510693788295, 0.0615771119146745], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000466, 2.5000000000040368, 2.4999999410375535, 2.4999115591757817, 2.4955890486675223, 2.452335996123163, 2.3173903139196557]}, "NODE_307": {"DENSITY": [1.00000000000001, 0.9999999999967456, 0.9999999972101249, 0.9999854154417191, 0.99911479419923, 0.988886095186148, 0.9520785205310558], "MOMENTUM_X": [1.1686577798686863e-14, -4.091877970421733e-12, 4.2533005670064834e-09, 1.7493049013877074e-05, 0.0010470561884456289, 0.01299616336964064, 0.05471096337011947], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000355, 2.49999999998861, 2.499999990235439, 2.4999489545147533, 2.4969031653019926, 2.461293919429335, 2.3356216779016057]}, "NODE_308": {"DENSITY": [1.000000000000006, 1.0000000000009213, 0.9999999933087689, 0.9999872173771811, 0.9992398323081416, 0.9901149250076936, 0.9553050896517378], "MOMENTUM_X": [6.6487710301911055e-15, -4.861663200774933e-12, 7.916693466933856e-09, 1.5233236600298538e-05, 0.0009027615345485635, 0.011633755176807658, 0.05137511879292074], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000204, 2.5000000000032236, 2.499999976580691, 2.4999552611784637, 2.497340450085019, 2.4655567149489706, 2.3465034700149903]}, "NODE_309": {"DENSITY": [1.0, 0.9999999999995195, 1.000000001290266, 0.9999991041645265, 0.9998432708047714, 0.9962397056007881, 0.9739787770908156], "MOMENTUM_X": [-7.319065096500031e-17, 5.804731492034508e-13, -1.502447652390976e-09, 1.0770929507450306e-06, 0.00018582165748549053, 0.004440966896298491, 0.0303181949645051], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999998318, 2.5000000045159303, 2.499996864577754, 2.499451492799276, 2.4868616733860915, 2.4099284012488154]}, "NODE_310": {"DENSITY": [1.0000000000000044, 1.000000000001702, 0.9999999908936253, 0.9999869996095039, 0.9992606601231033, 0.9904898862925642, 0.9565701579609365], "MOMENTUM_X": [5.362724116311767e-15, -4.592391873387254e-12, 1.0616729744951095e-08, 1.5385219429050613e-05, 0.0008757920256191886, 0.011195391063868028, 0.05001163825104222], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000016, 2.500000000005958, 2.49999996812769, 2.4999544989969418, 2.497413287325899, 2.4668577865490584, 2.350771861346019]}, "NODE_311": {"DENSITY": [1.0000000000000036, 1.000000000001609, 0.99999999032636, 0.9999867604540473, 0.9992546186274638, 0.9905051572110674, 0.9567623479727126], "MOMENTUM_X": [4.250658395061834e-15, -3.3906086591341773e-12, 1.1195561067623447e-08, 1.5616788078634863e-05, 0.0008810007869792297, 0.01116532550698904, 0.04977528225333646], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000012, 2.500000000005631, 2.4999999661422603, 2.4999536619623934, 2.497392152193554, 2.4669104381263423, 2.3514170422870735]}, "NODE_312": {"DENSITY": [1.0000000000000024, 1.0000000000007536, 0.9999999924890518, 0.9999871411227789, 0.9992542800971557, 0.990430523900217, 0.9564758337155017], "MOMENTUM_X": [2.8930710249129805e-15, -1.4572215224409823e-12, 8.699446770441641e-09, 1.5145258471502739e-05, 0.000880234602718743, 0.011242276436859839, 0.05006294911901121], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000084, 2.5000000000026383, 2.4999999737116823, 2.4999549942794235, 2.497390962278069, 2.4666509327589408, 2.350445049987391]}, "NODE_313": {"DENSITY": [1.0, 0.9999999999998711, 1.0000000006630252, 0.9999997024971519, 0.999902852743137, 0.9971177296390462, 0.9772473630908103], "MOMENTUM_X": [-2.192829514908352e-17, 1.5302071056920055e-13, -7.962037879855552e-10, 3.6260408560993956e-07, 0.00011624960258156612, 0.0034313578848600233, 0.026710648185957173], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999999549, 2.500000002320588, 2.4999989587402722, 2.4996600023987376, 2.489925623492124, 2.421139474723765]}, "NODE_314": {"DENSITY": [1.0000000000000013, 0.9999999999986556, 0.999999997579294, 0.9999886707635169, 0.9992849377134482, 0.990478626884295, 0.9561636933747142], "MOMENTUM_X": [1.5884518037605452e-15, 1.4508619488094495e-12, 2.9180061468194926e-09, 1.3356412014765874e-05, 0.000843889196532666, 0.011183473976178665, 0.05040595812660534], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000005, 2.499999999995295, 2.4999999915275293, 2.4999603479434063, 2.497498180145784, 2.466817210182149, 2.349384491212667]}, "NODE_315": {"DENSITY": [1.0, 1.0000000000000397, 1.0000000001749139, 1.000000000019308, 0.9999502146136579, 0.9980156660541935, 0.9813668830415955], "MOMENTUM_X": [-6.3008730797401035e-18, -3.171751231284636e-14, -2.6018499618549514e-10, 3.4635455006996064e-08, 6.169040333003278e-05, 0.00235466825268735, 0.021601617402933634], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.5000000000001394, 2.500000000612199, 2.500000000067585, 2.4998257561868145, 2.4930612801360477, 2.435292695007037]}, "NODE_316": {"DENSITY": [1.0000000000000007, 0.999999999996582, 1.0000000029515823, 0.9999914532389671, 0.9993683299766262, 0.9909040653700044, 0.9565153293367459], "MOMENTUM_X": [6.722378309569236e-16, 3.994842007853421e-12, -3.233094701964336e-09, 1.0120248183769893e-05, 0.0007462853114430184, 0.010691860806019568, 0.05004557061512169], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000002, 2.4999999999880367, 2.500000010330538, 2.499970086491987, 2.497789854420225, 2.468293359639125, 2.350561792888328]}, "NODE_317": {"DENSITY": [0.9999999999998548, 1.0000000001596245, 0.9999997875758787, 0.9999060972844324, 0.9969365429796742, 0.97602911223926, 0.9258709235833267], "MOMENTUM_X": [-1.9079664833719157e-13, -1.4994013568351569e-10, 2.3503429518670903e-07, 0.00010901615100793676, 0.0036127591220070764, 0.028126865819327503, 0.08437689620093033], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999492, 2.5000000005586873, 2.499999256515715, 2.499671357696258, 2.4892937055561206, 2.416987570996091, 2.248639274457767]}, "NODE_318": {"DENSITY": [0.999999999999939, 1.0000000000522817, 0.9999999175449217, 0.9999427919315973, 0.9977525359672926, 0.9798407817583681, 0.9318723486121798], "MOMENTUM_X": [-6.861170192039006e-14, -6.83064739705347e-11, 1.0344575537969967e-07, 6.831498576679092e-05, 0.0026504990161191153, 0.023422887851747322, 0.07677363501470652], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999997864, 2.500000000182987, 2.499999711407256, 2.4997997785456834, 2.4921424720629446, 2.430060803858661, 2.2682384750418616]}, "NODE_319": {"DENSITY": [0.9999999999999589, 1.0000000000601885, 0.9999999089128839, 0.9999504554156453, 0.9980536543092636, 0.9817787513314836, 0.9355485860662545], "MOMENTUM_X": [-4.9478304935789244e-14, -7.173732391207774e-11, 1.0829299134645329e-07, 5.9020289798084144e-05, 0.0023075249249640915, 0.021317609365354463, 0.07313274689749755], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999857, 2.5000000002106613, 2.4999996811951237, 2.4998265990624904, 2.493194339221248, 2.4367368890688668, 2.2804443485342163]}, "NODE_320": {"DENSITY": [1.0, 0.9999999999963995, 1.0000000053470939, 0.9999948204941876, 0.9995060929397036, 0.9919155882759202, 0.9584348946560693], "MOMENTUM_X": [1.578747594826956e-16, 4.249670625131593e-12, -6.063713182905669e-09, 6.182426027972488e-06, 0.0005848593435920243, 0.009521435886584434, 0.04796643268402059], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000004, 2.4999999999873994, 2.50000001871483, 2.499981871788237, 2.4982717550649642, 2.4718066366327744, 2.3570402520473386]}, "NODE_321": {"DENSITY": [0.9999999999999717, 1.0000000000615499, 0.9999998963927557, 0.9999503269759334, 0.9981159594119273, 0.9824208304810992, 0.9370220068487929], "MOMENTUM_X": [-3.5062820887686315e-14, -7.386064898864919e-11, 1.2183267962855578e-07, 5.883644192960307e-05, 0.0022301046821424624, 0.020584558504293176, 0.07161438297784506], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999005, 2.500000000215424, 2.4999996373746796, 2.4998261494781007, 2.4934119831027703, 2.438949616020129, 2.2853363077001054]}, "NODE_322": {"DENSITY": [0.999999999999985, 1.0000000000561182, 0.9999998917964777, 0.9999494222125459, 0.9981056345857942, 0.9824742872571842, 0.9372611670304968], "MOMENTUM_X": [-1.8693468694115537e-14, -6.93481077358422e-11, 1.2658951392950003e-07, 5.972351687528327e-05, 0.002238096063871869, 0.02050507615612959, 0.07133147440735454], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999947, 2.500000000196413, 2.4999996212877087, 2.4998229829441976, 2.493375885061056, 2.43913301887712, 2.286124038882814]}, "NODE_323": {"DENSITY": [1.0, 0.999999999997976, 1.0000000042758375, 0.9999977051473617, 0.9996702466505307, 0.993494479538746, 0.9624856745858008], "MOMENTUM_X": [-5.17179427104655e-17, 2.5103417563838037e-12, -5.078972739604395e-09, 2.769968450349991e-06, 0.00039412379453146636, 0.007723987837171292, 0.043625829118836654], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999992916, 2.500000014965431, 2.4999919680280716, 2.4988460597860334, 2.477297756076584, 2.370766074228992]}, "NODE_324": {"DENSITY": [0.9999999999999948, 1.0000000000478748, 0.9999999011414518, 0.9999500112184576, 0.9980941945252981, 0.9823305807533965, 0.9369090211373101], "MOMENTUM_X": [-6.4869736871120014e-15, -5.966275530125415e-11, 1.154703829797047e-07, 5.892532467409404e-05, 0.0022486771339904244, 0.020653443106021987, 0.07166656226714987], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999822, 2.500000000167562, 2.499999653995113, 2.499825044307366, 2.493335886105129, 2.438636399132295, 2.2849459172605715]}, "NODE_325": {"DENSITY": [1.0, 1.0000000000312963, 0.9999999307878507, 0.9999541581265308, 0.9981385001731777, 0.9822896814667502, 0.9363893181579965], "MOMENTUM_X": [1.7850832931722562e-16, -3.956780667808552e-11, 8.147304092513201e-08, 5.404646677291017e-05, 0.0021956430428309195, 0.020695645180247833, 0.07222052188019394], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000001, 2.5000000001095377, 2.499999757757495, 2.4998395576666956, 2.49349063826371, 2.438493536188317, 2.2832083514413446]}, "NODE_326": {"DENSITY": [1.0, 0.9999999999994866, 1.000000002101944, 0.9999994287257035, 0.9998127756530076, 0.9952410160345672, 0.9679903349740571], "MOMENTUM_X": [-6.870236288266427e-17, 8.248289974831941e-13, -2.6547343080158154e-09, 8.445931312019089e-07, 0.00022804573867849667, 0.005603373681788872, 0.03674722369620192], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5, 2.499999999998203, 2.500000007356804, 2.4999980005412024, 2.4993447810129803, 2.4833791889116994, 2.3894350251578356]}, "NODE_327": {"DENSITY": [1.000000000000002, 1.0000000000072495, 0.9999999721644226, 0.999963043957874, 0.9982991228072148, 0.9827670817848391, 0.9364488366779716], "MOMENTUM_X": [2.5504759013202052e-15, -1.1143179239523122e-11, 3.4018345247470914e-08, 4.3695743232550355e-05, 0.00200778137949264, 0.020154116752066947, 0.07220805079763969], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000067, 2.500000000025372, 2.4999999025754813, 2.4998706566062587, 2.4940518292206595, 2.4401371680119666, 2.2833898591438393]}, "NODE_328": {"DENSITY": [0.9999999999996239, 1.0000000013693293, 0.99999846169449, 0.9996866235097113, 0.9932290674823079, 0.9612476612569287, 0.9021628807457196], "MOMENTUM_X": [-4.909046942194486e-13, -1.2772799400691493e-09, 1.7320787899686024e-06, 0.00036575556134724684, 0.007992567133336057, 0.045101014294060764, 0.10960861920126623], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999986837, 2.500000004792652, 2.4999946159367625, 2.4989033664688964, 2.476376868499685, 2.3666429157756657, 2.1715551158915236]}, "NODE_329": {"DENSITY": [0.9999999999996944, 1.0000000006286338, 0.9999992845788527, 0.9997987965985953, 0.9948099275149127, 0.9663041756034406, 0.908284050850961], "MOMENTUM_X": [-3.674323671501258e-13, -6.314737534776833e-10, 8.763486838055498e-07, 0.00023932295525696582, 0.006098593744277187, 0.03880162932065026, 0.10176966985484925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999989306, 2.5000000022002182, 2.4999974960275564, 2.4992958675136507, 2.4818789592154795, 2.3837550341567733, 2.191002455782675]}, "NODE_330": {"DENSITY": [0.9999999999998229, 1.0000000005702803, 0.9999993058989131, 0.9998265650632832, 0.9954511920368035, 0.9690326389885308, 0.912133455956128], "MOMENTUM_X": [-2.1024836509272538e-13, -5.990190450660393e-10, 8.265555437854729e-07, 0.00020644317843114567, 0.005378629661371203, 0.03591986194216672, 0.09816538059229776], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999993805, 2.5000000019959803, 2.49999757064757, 2.4993930372916764, 2.484113673293235, 2.3930573629487273, 2.2035501673603353]}, "NODE_331": {"DENSITY": [1.0000000000000016, 0.9999999999890372, 1.0000000049953222, 0.9999752379715797, 0.998602726206133, 0.9841995190251288, 0.9382661602606361], "MOMENTUM_X": [2.45540830603581e-15, 1.0799787827719298e-11, -4.227784811059094e-09, 2.943779564267932e-05, 0.0016526437237476817, 0.018521067746988955, 0.07034189362675353], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000006, 2.499999999961632, 2.5000000174836297, 2.4999133341554836, 2.4951128578353554, 2.445078530099936, 2.2894174148489643]}, "NODE_332": {"DENSITY": [0.9999999999998574, 1.0000000005645582, 0.9999992530446566, 0.999828160782575, 0.9956070297657141, 0.9699937351638988, 0.9136754819096677], "MOMENTUM_X": [-1.7778260466053996e-13, -6.095307293326981e-10, 8.813170667751351e-07, 0.00020363119407471454, 0.005190667988089419, 0.034855065494946234, 0.09667102660684111], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999995013, 2.500000001975955, 2.4999973856578315, 2.4993986206400622, 2.484656776533939, 2.3963353684885567, 2.208571645099631]}, "NODE_333": {"DENSITY": [0.9999999999998821, 1.0000000005259269, 0.9999992250009376, 0.9998254498980341, 0.99559603030987, 0.9701073564103802, 0.9139194317452467], "MOMENTUM_X": [-1.5074741367648285e-13, -5.830045341118042e-10, 9.104257764984856e-07, 0.00020626942549889052, 0.005195573865355085, 0.03470271215475726, 0.09639391237666711], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999587, 2.5000000018407444, 2.499997287504905, 2.499389133929464, 2.4846183311542047, 2.396721058824305, 2.2093547654126744]}, "NODE_334": {"DENSITY": [1.000000000000001, 0.9999999999863066, 1.0000000166906098, 0.9999870800000612, 0.9990034910073543, 0.9867104852773584, 0.9427756353444696], "MOMENTUM_X": [1.3652720761108737e-15, 1.594519583075858e-11, -1.951692027500219e-08, 1.5533692816223816e-05, 0.0011895973772840132, 0.015706511592963733, 0.06570627306991546], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000036, 2.4999999999520726, 2.5000000584171342, 2.4999547803583413, 2.4965139430061583, 2.453758970769964, 2.304455114742151]}, "NODE_335": {"DENSITY": [0.9999999999999144, 1.0000000004822402, 0.9999992543021401, 0.9998254988367917, 0.9955574085059529, 0.9698850694032564, 0.9135299035460182], "MOMENTUM_X": [-1.1178787082542163e-13, -5.459332925312056e-10, 8.736845683399331e-07, 0.00020583653455319745, 0.0052345938994770875, 0.03492657209710849, 0.0967357303848353], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999997, 2.5000000016878396, 2.4999973900589816, 2.4993893047596583, 2.4844835749214225, 2.3959599131262874, 2.2080722667197126]}, "NODE_336": {"DENSITY": [0.9999999999999476, 1.0000000004061127, 0.9999993901267403, 0.9998349732474114, 0.9956003686123863, 0.969686806859604, 0.9128397792791881], "MOMENTUM_X": [-7.071055437136839e-14, -4.669150367151162e-10, 7.164685947762831e-07, 0.00019459251905855915, 0.005181756777276508, 0.03514296654241433, 0.09743961402477001], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999998166, 2.500000001421394, 2.4999978654446036, 2.4994224586878624, 2.484633135689401, 2.3952792277997497, 2.2058074010161803]}, "NODE_337": {"DENSITY": [1.0000000000000002, 0.9999999999923603, 1.000000013478519, 0.9999951944395821, 0.9993829577658965, 0.9897206162672839, 0.949399018531129], "MOMENTUM_X": [3.9264046771647267e-16, 9.61285087927376e-12, -1.566182668147645e-08, 6.363032729287854e-06, 0.0007418491730718829, 0.012007951518887922, 0.05738056004588907], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000013, 2.4999999999732623, 2.5000000471748174, 2.4999831805998616, 2.4978410285455883, 2.4641825886287037, 2.3265064715574804]}, "NODE_338": {"DENSITY": [0.9999999999999739, 1.000000000257651, 0.9999996237841136, 0.9998596769502031, 0.9958640599391001, 0.9700910770608782, 0.9125495834605549], "MOMENTUM_X": [-3.5741763730970145e-14, -3.043459813017401e-10, 4.4780237481858175e-07, 0.00016576214078611943, 0.004874405521649959, 0.03470312929102932, 0.09782058308727463], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999094, 2.500000000901779, 2.4999986832448067, 2.4995089071395737, 2.485552235981674, 2.396652682531785, 2.2048392387838516]}, "NODE_339": {"DENSITY": [1.0000000000046874, 1.0000000066368993, 0.9999913273119758, 0.999059741982174, 0.9863912398996246, 0.9417396366506648, 0.8762877477908375], "MOMENTUM_X": [5.976166921439798e-12, -8.23468153076835e-09, 9.889888382365286e-06, 0.0011026351293168754, 0.016038917043310397, 0.06700616621825896, 0.13611836965441218], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000164064, 2.5000000232291475, 2.4999696457662046, 2.4967106950058784, 2.4526651808373026, 2.3011615791483644, 2.089231289146375]}, "NODE_340": {"DENSITY": [1.0000000000021254, 1.0000000036812602, 0.999995520936237, 0.999364274682871, 0.9891132291264113, 0.947813935861777, 0.8821263556452688], "MOMENTUM_X": [2.3167415060817826e-12, -4.5897938480838184e-09, 5.433305848750378e-06, 0.0007534160622533683, 0.012728956204178833, 0.05937858847998175, 0.1285125063382927], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000007438, 2.5000000128844095, 2.499984323329733, 2.4977757146706403, 2.4620844339837724, 2.3213335047683965, 2.1071456711632153]}, "NODE_341": {"DENSITY": [0.9999999999999906, 1.0000000000807032, 0.9999998633119044, 0.9998982454137645, 0.9964498901481219, 0.9718505843380084, 0.9140240858637817], "MOMENTUM_X": [-1.1773884777828412e-14, -1.0419955013210025e-10, 1.694987828132231e-07, 0.00012066310933537915, 0.004191999752944755, 0.03274774933526364, 0.09643844018008466], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999967, 2.500000000282462, 2.4999995215917328, 2.499643879014941, 2.4875952914610506, 2.4026575747090977, 2.2096257647513142]}, "NODE_342": {"DENSITY": [1.000000000001529, 1.0000000030923328, 0.9999958878861185, 0.9994512865671544, 0.9903162694292936, 0.9512563495130266, 0.8858575868412457], "MOMENTUM_X": [1.7740374202498262e-12, -3.784363926014423e-09, 4.904805188322178e-06, 0.0006523768391043813, 0.011402077354585618, 0.05588084480179249, 0.12526583406193367], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000053517, 2.500000010823164, 2.4999856076445255, 2.498080071655762, 2.466258036059663, 2.3329047794915403, 2.1190619785498535]}, "NODE_343": {"DENSITY": [1.0000000000011586, 1.0000000030427925, 0.9999957096126014, 0.999461313567298, 0.9906466622396332, 0.9525166191649642, 0.8873118841931676], "MOMENTUM_X": [1.3504530631595924e-12, -3.6579940985808105e-09, 5.076014192817406e-06, 0.0006383570854714934, 0.01101401356535736, 0.05453986207623427, 0.12397454329418375], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000004055, 2.5000000106497735, 2.499984983689786, 2.4981151420486842, 2.4674044047446606, 2.3371415175548553, 2.123694367832368]}, "NODE_344": {"DENSITY": [1.0000000000007128, 1.0000000028790417, 0.999995573580341, 0.9994548027721066, 0.9906480929366671, 0.9526956988354164, 0.8875042105286408], "MOMENTUM_X": [8.032890158731679e-13, -3.4145561267129362e-09, 5.2165157802253e-06, 0.000644513547061951, 0.010998749884722228, 0.05431363993567267, 0.12376668333262196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000002495, 2.5000000100766466, 2.499984507579219, 2.498092364139748, 2.4674090360104635, 2.3377396049288404, 2.1242887548049336]}, "NODE_345": {"DENSITY": [0.9999999999999984, 0.9999999999713601, 1.0000000109494265, 0.9999403581072482, 0.9973123740091946, 0.975374661702541, 0.9185576002579386], "MOMENTUM_X": [1.4490075171064833e-17, 2.9161562401324894e-11, -1.0110297022407361e-08, 7.153402014110575e-05, 0.003202945524458782, 0.028890941430323162, 0.09203672195685182], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999947, 2.4999999998997606, 2.500000038322993, 2.4997912605285157, 2.4906053882032624, 2.4147236433426342, 2.2244524430661174]}, "NODE_346": {"DENSITY": [1.0000000000003375, 1.0000000027690208, 0.9999956289319758, 0.9994512250929048, 0.990560813203938, 0.9524053895085186, 0.8871059908884119], "MOMENTUM_X": [3.4548726645240903e-13, -3.234240206081876e-09, 5.135400113065998e-06, 0.0006475929867547079, 0.011088170694733489, 0.054591311490584396, 0.12407758909083683], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000011813, 2.5000000096915733, 2.499984701308311, 2.498079845945242, 2.4671056805945173, 2.336757948002825, 2.1229997693822398]}, "NODE_347": {"DENSITY": [1.0000000000001, 1.0000000026954656, 0.999996136942757, 0.999468700728214, 0.9905623948034461, 0.9520068003452775, 0.8863214723126026], "MOMENTUM_X": [5.293650057042904e-14, -3.1082313754302304e-09, 4.540364922362648e-06, 0.0006265532295759998, 0.011080977820154233, 0.05501798118907797, 0.1248308406337459], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000003495, 2.500000009434129, 2.4999864793358992, 2.498140972364943, 2.4671104686545546, 2.335409399524199, 2.1204777460205926]}, "NODE_348": {"DENSITY": [1.000000000000001, 0.9999999999517604, 1.0000000541155263, 0.9999727599980698, 0.9982032259392511, 0.97996353876981, 0.9257853671177743], "MOMENTUM_X": [2.734488228714516e-15, 5.1149488629777534e-11, -5.5998536800546265e-08, 3.4491143639610025e-05, 0.0021374980773198526, 0.023194838612491712, 0.0828972173021594], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000000044, 2.4999999998311617, 2.500000189404346, 2.4999046616709473, 2.4937167243150853, 2.430463605290654, 2.2479215913156883]}, "NODE_349": {"DENSITY": [0.999999999999988, 1.0000000022723425, 0.9999972026355497, 0.9995279906200835, 0.9909199168686987, 0.9521855076477921, 0.8857048570405126], "MOMENTUM_X": [-8.04595012880757e-14, -2.620542495424226e-09, 3.310415098415184e-06, 0.0005572353269452047, 0.010668062155803433, 0.05485500997571838, 0.1255536005178208], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999959, 2.5000000079532, 2.4999902092438173, 2.4983483762723657, 2.46835062992639, 2.3359981850120524, 2.118485345610432]}, "NODE_350": {"DENSITY": [1.0000000000087765, 1.0000000198312768, 0.9999589242262089, 0.9974657581103471, 0.975086946655194, 0.9178869950893425, 0.8490118371289974], "MOMENTUM_X": [1.2318575249188074e-11, -2.7218797039887564e-08, 4.7238983542762564e-05, 0.0029830439882447646, 0.029214359500027074, 0.0929950897473345, 0.16287416857018605], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000030718, 2.500000069409471, 2.499856238430537, 2.491141361370455, 2.4137730508086404, 2.2225685214920414, 2.00448470686523]}, "NODE_351": {"DENSITY": [1.000000000008037, 1.0000000148934498, 0.9999770075242319, 0.9981965812138637, 0.9792456619787836, 0.9245422896427199, 0.8542427147434302], "MOMENTUM_X": [9.924732117993074e-12, -1.975690157659752e-08, 2.767330964193067e-05, 0.0021295303560519823, 0.024092304118507792, 0.08456934631550825, 0.15586209690126568], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000281286, 2.500000052127074, 2.499919527589175, 2.4936938118858265, 2.4280233865250116, 2.2441167048353123, 2.019830046397396]}, "NODE_352": {"DENSITY": [0.9999999999999561, 1.0000000013539985, 0.9999985183117507, 0.9996344390742372, 0.9918998320339695, 0.9540425306627918, 0.8866776329925276], "MOMENTUM_X": [-9.618804608319613e-14, -1.583287690635386e-09, 1.7812760796438682e-06, 0.00043278738235655464, 0.009536763358512024, 0.05287739043382775, 0.12480613873328167], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999846, 2.500000004738994, 2.4999948140969015, 2.498720783448303, 2.4717535990644413, 2.3422387983025965, 2.121563644831799]}, "NODE_353": {"DENSITY": [1.0000000000044458, 1.0000000106483244, 0.9999794915341604, 0.9984332816618549, 0.9812291784686825, 0.9284587836811633, 0.857607054825421], "MOMENTUM_X": [5.6511183981556576e-12, -1.4045654561633528e-08, 2.4461430031065412e-05, 0.0018594676043378728, 0.021956463991492373, 0.08079374786329874, 0.15320793736406857], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.50000000001556, 2.5000000372691353, 2.4999282213545757, 2.494520914229289, 2.4348523029031837, 2.2570473362490655, 2.0303464728080796]}, "NODE_354": {"DENSITY": [1.0000000000036993, 1.0000000097817725, 0.9999790541676103, 0.9984717277614205, 0.9818260376971523, 0.9299110403958523, 0.8588400927273082], "MOMENTUM_X": [4.956431007511255e-12, -1.2586021173690741e-08, 2.4813770999999326e-05, 0.0018099046799701032, 0.021275394757299622, 0.07933274458480784, 0.15225182417012217], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000012947, 2.5000000342362036, 2.4999266905941635, 2.4946552457095654, 2.436907601352644, 2.2618387955843904, 2.034181560207118]}, "NODE_355": {"DENSITY": [1.0000000000033427, 1.0000000087487104, 0.9999785169574495, 0.998459549583822, 0.9818633632255543, 0.9301291498717137, 0.8589278264941544], "MOMENTUM_X": [4.494880421834607e-12, -1.1241098802849984e-08, 2.5366795407447847e-05, 0.0018206181846146415, 0.021211884807367833, 0.07906959217641558, 0.15216608919640007], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000117, 2.500000030620488, 2.4999248104009224, 2.4946126698746647, 2.4370352649569567, 2.2625504176724127, 2.034428191708655]}, "NODE_356": {"DENSITY": [0.9999999999999621, 1.0000000004054475, 0.9999995616599795, 0.9997649083067685, 0.9935259583033811, 0.9584103807956443, 0.890811399858295], "MOMENTUM_X": [-5.759879419537236e-14, -4.929484833732431e-10, 5.391408813870021e-07, 0.00028149385642751393, 0.0076930379810412446, 0.048265232505892486, 0.12109737248757023], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999998668, 2.500000001419065, 2.499998465810552, 2.4991772842602744, 2.477408494355887, 2.3569861570780906, 2.1347887267882997]}, "NODE_357": {"DENSITY": [1.000000000002713, 1.0000000084096845, 0.9999784831004305, 0.998444321901577, 0.9817100957136197, 0.9297979846052921, 0.858543017419248], "MOMENTUM_X": [3.59683026655544e-12, -1.060010181243074e-08, 2.5331039011133684e-05, 0.0018355685727584727, 0.021366435236928, 0.0793600715311372, 0.15242047134275846], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000009495, 2.500000029433895, 2.499924691894963, 2.4945594337653287, 2.4365061070603344, 2.2614478895104213, 2.033203347984008]}, "NODE_358": {"DENSITY": [1.0000000000019345, 1.0000000098997979, 0.9999800402499864, 0.998467536536082, 0.9816069419368578, 0.9292087480796594, 0.8577553326456198], "MOMENTUM_X": [2.4418931532238092e-12, -1.1913490635805588e-08, 2.3479860399325998e-05, 0.0018066819940263808, 0.021475044312087084, 0.07996575981901631, 0.15311608639719912], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.50000000000677, 2.500000034649292, 2.499930141768407, 2.4946405303541623, 2.436148731807103, 2.259489638146228, 2.0307255718255224]}, "NODE_359": {"DENSITY": [0.999999999999979, 0.9999999999169198, 1.0000000693835205, 0.9998764945537114, 0.9953612276142016, 0.9646071697199066, 0.8980234706931516], "MOMENTUM_X": [-1.8901463130063646e-14, 3.047468643417962e-11, -1.8046183961249653e-08, 0.000152318508284191, 0.005467364062680724, 0.04051322403897274, 0.11189239622173662], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999999263, 2.499999999709218, 2.5000002428423316, 2.4995677619666608, 2.483798813523249, 2.3779246239802467, 2.157453655251849]}, "NODE_360": {"DENSITY": [1.0000000000012073, 1.00000001134999, 0.9999840967415238, 0.9985884420290537, 0.9819826806469116, 0.9290450183193918, 0.8569011545745052], "MOMENTUM_X": [1.286886407101783e-12, -1.3250233495410524e-08, 1.8779493023379413e-05, 0.0016651941029625927, 0.021050442158051227, 0.08019849477762932, 0.15406066931140974], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000004226, 2.500000039724967, 2.4999443391662663, 2.4950630544129524, 2.4374402654046063, 2.2589288392907676, 2.028039607404792]}, "NODE_361": {"DENSITY": [1.0000000000006235, 1.000000009721293, 0.9999899957413142, 0.9988433286583801, 0.9833878849763306, 0.9306996565145053, 0.8573210718079531], "MOMENTUM_X": [4.277379938394157e-13, -1.1266736517392218e-08, 1.1918068499563254e-05, 0.0013676049107255468, 0.01945610549080961, 0.07856169204912357, 0.15396041951191064], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000021827, 2.500000034024527, 2.4999649853265993, 2.4959540113216163, 2.442282966483648, 2.2643756964400863, 2.0293276773043547]}, "NODE_362": {"DENSITY": [0.9999999998580757, 0.9999999676565451, 0.9998319585526467, 0.993873158649517, 0.9582752741309981, 0.8905217370366126, 0.820968397297128], "MOMENTUM_X": [-1.580049959179824e-10, 4.1022029995288814e-08, 0.0001946260119210869, 0.00722569615983181, 0.048477141938811384, 0.12170425991395636, 0.18907947658675187], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999503265, 2.4999998867979403, 2.4994119123602707, 2.4786194003764264, 2.3566266216915674, 2.1343819531393606, 1.919521233088019]}, "NODE_363": {"DENSITY": [0.9999999999323144, 1.0000000208368964, 0.9998990963727462, 0.9954146322764117, 0.9639225577771593, 0.8972237712654878, 0.8253640303866775], "MOMENTUM_X": [-6.610265537784338e-11, -1.5559193768710202e-08, 0.0001206114028133733, 0.005391963448906301, 0.04145127165193261, 0.11311965135509601, 0.18289399787317398], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999997630997, 2.5000000729291414, 2.499646859502179, 2.4839869177565594, 2.3756834218387595, 2.1553753749853155, 1.9316538010387896]}, "NODE_364": {"DENSITY": [0.999999999947133, 0.9999999976028421, 0.9999113093619254, 0.9959728591093718, 0.9667977779153867, 0.9012713582220205, 0.8281836408726253], "MOMENTUM_X": [-5.215155900138673e-11, 5.763112080895643e-09, 0.00010567299132696088, 0.004766528032947444, 0.03845786427857432, 0.10948505980300843, 0.18095908572578298], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999998149653, 2.499999991609951, 2.499689599911524, 2.485933000114271, 2.385466971872231, 2.1684585910869836, 1.9402842761265862]}, "NODE_365": {"DENSITY": [0.9999999999561731, 0.9999999890522288, 0.9999108342364431, 0.9960855086671357, 0.9677189300594987, 0.9027453634146307, 0.8291086367857354], "MOMENTUM_X": [-4.19240890844675e-11, 1.5278299531513633e-08, 0.00010566570803160859, 0.004627864437642511, 0.03744445693074704, 0.10811719314582167, 0.18040148882225018], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999846606, 2.4999999616828066, 2.4996879369136877, 2.4863256900794024, 2.388601616134696, 2.1732121334517394, 1.9430929639671464]}, "NODE_366": {"DENSITY": [0.9999999999691958, 0.9999999820859691, 0.9999090868322539, 0.9960695114567041, 0.9678150836617121, 0.9029443620113519, 0.8290572502593402], "MOMENTUM_X": [-2.692019411799752e-11, 2.150739651840673e-08, 0.00010744683257164094, 0.004639073664277233, 0.0373082191768568, 0.10788695111228092, 0.18046484804512883], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999998921854, 2.4999999373009, 2.499681821548003, 2.486269829232033, 2.38892672008285, 2.173839070621743, 1.942903928632891]}, "NODE_367": {"DENSITY": [1.000000000000205, 1.000000005282855, 0.999995590568773, 0.9991951589747531, 0.9860589545194267, 0.9354950124676298, 0.8607360532311523], "MOMENTUM_X": [1.014619958828504e-14, -6.3078986848602656e-09, 5.3380177366115615e-06, 0.0009622988039909601, 0.01648204998600475, 0.07375487539163597, 0.15122986589894935], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000000717, 2.500000018489992, 2.4999845670397356, 2.4971842294568325, 2.4515099087564005, 2.280269024578725, 2.0400043562201846]}, "NODE_368": {"DENSITY": [0.999999999981851, 0.9999999789971207, 0.9999082734551464, 0.9960278633966507, 0.9675955248919118, 0.9026035629443941, 0.8286993463292247], "MOMENTUM_X": [-1.2932072947774936e-11, 2.327100014783574e-08, 0.00010812226702265798, 0.004681123209045027, 0.0375198028859572, 0.10814768045023761, 0.18065100895214747], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999364784, 2.4999999264899295, 2.499678974899404, 2.4861245093261854, 2.388176517279653, 2.1727240119574134, 1.9417820612103958]}, "NODE_369": {"DENSITY": [0.9999999999999907, 1.0000000014543888, 0.9999990387777872, 0.9995282165755605, 0.9893616141357396, 0.9429429074163176, 0.8673627755020049], "MOMENTUM_X": [-9.082906349076919e-14, -2.121670825462238e-09, 1.4916070776698836e-06, 0.0005713706350070326, 0.012423637915637237, 0.06438397171871293, 0.1426159032844506], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999999967, 2.5000000050903606, 2.499996635726601, 2.498349175264548, 2.462939664954143, 2.304889389991939, 2.0599622310142687]}, "NODE_370": {"DENSITY": [0.9999999999914897, 0.9999999920209327, 0.9999120833633324, 0.9960397591810862, 0.9673248752536513, 0.9018893963563701, 0.8279917851188497], "MOMENTUM_X": [-3.1052388884178453e-12, 8.058562778008513e-09, 0.00010349311625734885, 0.004662948131639678, 0.03780751134791589, 0.10883740667295945, 0.18120345548766717], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999702136, 2.4999999720732675, 2.499692308011916, 2.4861658201836305, 2.3872503501307425, 2.1704000362584344, 1.9396030480815447]}, "NODE_371": {"DENSITY": [0.9999999999977714, 1.0000000189157792, 0.99992508693247, 0.9962435675327532, 0.9675751738641005, 0.9013540598819725, 0.827021626011856], "MOMENTUM_X": [1.6447731171320986e-12, -2.187027154585739e-08, 8.836167442469094e-05, 0.004424777266381852, 0.0375423559958761, 0.10947050621209939, 0.18222695304280068], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999922, 2.5000000662052284, 2.4997378160536634, 2.4868763450344478, 2.3880948384537, 2.1686442389417953, 1.9366343837624151]}, "NODE_372": {"DENSITY": [1.0000000000011484, 1.0000000378603342, 0.9999473060167664, 0.9967678812988693, 0.9692805713375492, 0.9025416797664869, 0.8269295159682958], "MOMENTUM_X": [2.258638105775634e-12, -4.3159331016215684e-08, 6.249745635695783e-05, 0.0038151066549117346, 0.03566791421556963, 0.10846168636715912, 0.1826827764388208], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000000040195, 2.5000001325111727, 2.4998155769699517, 2.488705256056766, 2.393899361903458, 2.1724523572325087, 1.9363499799357664]}, "NODE_373": {"DENSITY": [0.9999999997492822, 0.9999989151747567, 0.9993995404397237, 0.9867221296321043, 0.9356032692985644, 0.8606639894770145, 0.7926302983776985], "MOMENTUM_X": [-1.5452889047258312e-10, 1.2242126977632828e-06, 0.0007005096451940392, 0.01564196722963774, 0.07378814920921979, 0.15164279014217105, 0.2141834114845644], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999991224877, 2.4999962031161083, 2.4978990886368373, 2.453815690826169, 2.2808501076339973, 2.0405652260728755, 1.835886558888298]}, "NODE_374": {"DENSITY": [0.9999999997824873, 0.9999996326094189, 0.9996151843126816, 0.9895648168550717, 0.9424528341553895, 0.8669036592517388, 0.7960511416797118], "MOMENTUM_X": [-1.799353643789285e-10, 5.007003251539126e-07, 0.00045763166557386323, 0.012201769014881021, 0.06519860502710133, 0.1434853638081281, 0.20894754969813117], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999992387054, 2.49999871413382, 2.4986534455144924, 2.4636542224469413, 2.3034554506272804, 2.059284429491547, 1.844495760485904]}, "NODE_375": {"DENSITY": [0.9999999998723739, 0.9999995665217578, 0.9996634441208841, 0.9907021893099355, 0.9461301253676458, 0.8707266708033375, 0.7982194292251213], "MOMENTUM_X": [-7.923463905010771e-11, 5.316612226464182e-07, 0.00040059742353967104, 0.010955015656786275, 0.061548087079136025, 0.14037084160661537, 0.2077631635086743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999995533084, 2.4999984828270163, 2.4988222860050473, 2.467600740841208, 2.315764733528645, 2.071356047716647, 1.8510141827322832]}, "NODE_376": {"DENSITY": [0.9999999998862966, 0.9999995168009629, 0.9996655364345656, 0.9909688025109065, 0.9473472503243696, 0.8720411411907104, 0.7988007294762581], "MOMENTUM_X": [-6.571524808678724e-11, 5.845074453774396e-07, 0.00039643772125566633, 0.010638493484624346, 0.060274582020763565, 0.1392947464599405, 0.20760264409860085], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999602038, 2.4999983088043662, 2.4988296039808593, 2.4685257908675453, 2.319836815889312, 2.0754856590476947, 1.8527435365860931]}, "NODE_377": {"DENSITY": [1.0000000000019027, 1.0000000335743524, 0.9999718404983485, 0.9975896431639681, 0.9730898759023171, 0.9072207164006726, 0.8294446145693373], "MOMENTUM_X": [1.237604434750412e-12, -4.00010564542112e-08, 3.391300998389583e-05, 0.002876587067548097, 0.031547859257544476, 0.10411067903006589, 0.1810260333867482], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000006659, 2.500000117510235, 2.4999014435244304, 2.491573795942316, 2.406913606560203, 2.187614185259209, 1.9440470790563538]}, "NODE_378": {"DENSITY": [0.9999999998886994, 0.9999994832878347, 0.9996608720715185, 0.9909602330816871, 0.9475023086420198, 0.8721495271079741, 0.7986007337794818], "MOMENTUM_X": [-6.635458944684315e-11, 6.192447869585478e-07, 0.00040103960271302495, 0.010634760179660701, 0.06007138592980997, 0.13917392099050954, 0.20781261676779877], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999996104485, 2.4999981915085145, 2.498813283804261, 2.4684957470726028, 2.3203506991172316, 2.075801760639061, 1.8521154079061788]}, "NODE_379": {"DENSITY": [0.9999999998987826, 0.9999994628304272, 0.9996567984276861, 0.9908738817232237, 0.9472381912293995, 0.87182209656505, 0.7982759858053834], "MOMENTUM_X": [-5.826722142750334e-11, 6.341518887693159e-07, 0.00040490659314198205, 0.010721553552334423, 0.060304613131569394, 0.13937679590657498, 0.2079301564727442], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.49999999964574, 2.4999981199076284, 2.4987990300507827, 2.468195665094186, 2.3194610895559475, 2.0747489904277736, 1.8511105491770523]}, "NODE_380": {"DENSITY": [1.0000000000012015, 1.0000000174985737, 0.9999896748453206, 0.99845005632733, 0.9782687948667103, 0.915244378385646, 0.8350653909540476], "MOMENTUM_X": [4.2037951262698575e-13, -2.1933243080144077e-08, 1.3745567125677852e-05, 0.0018513257534907858, 0.025112929414720347, 0.09395472998928914, 0.1734495994626032], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000004205, 2.5000000612450086, 2.499963862258591, 2.494579402204461, 2.424641156189529, 2.213347529172673, 1.9600309406876772]}, "NODE_381": {"DENSITY": [0.9999999999156296, 0.9999995328737334, 0.9996635960349997, 0.9908329454971487, 0.9467763895331297, 0.8710826504204361, 0.7977093250773666], "MOMENTUM_X": [-4.083343072736723e-11, 5.480722136310396e-07, 0.00039623758029206854, 0.01075983490065983, 0.06078045055133126, 0.140027246929026, 0.20828923219135648], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999997047033, 2.4999983650589424, 2.4988228106349233, 2.4680528876967087, 2.31790598539354, 2.072397946163906, 1.849396352262183]}, "NODE_382": {"DENSITY": [0.9999999999380397, 0.9999997352944431, 0.9996984871913271, 0.9911024943880504, 0.9467396246087402, 0.8702448802670872, 0.7967455989448409], "MOMENTUM_X": [-2.0168098198783347e-11, 3.1663968907217657e-07, 0.00035542910730570207, 0.010447012677019123, 0.06085444636239673, 0.14095222191890955, 0.20926346304821958], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999997831384, 2.499999073530897, 2.498944884809135, 2.4689875835751844, 2.3177671208252857, 2.0697299434048064, 1.846527645430083]}, "NODE_383": {"DENSITY": [0.9999999999653012, 0.99999997555435, 0.9997693813979797, 0.9920168319548278, 0.9484574340003911, 0.8708191423453433, 0.7962382997086274], "MOMENTUM_X": [-7.069770801644106e-12, 4.0220505446050837e-08, 0.0002728482489255436, 0.009394172691641558, 0.059071950582944684, 0.14068972592976703, 0.21013301575674498], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999878554, 2.4999999144402554, 2.4991929406475584, 2.472162529810738, 2.323506728240456, 2.0715088712507086, 1.8450460899922272]}, "NODE_384": {"DENSITY": [1.0000000032219707, 0.9999904569943446, 0.9981174008674928, 0.9741654563232548, 0.9075436032686469, 0.829283921444241, 0.7643289696294059], "MOMENTUM_X": [4.288647653339334e-09, 1.0491918230651423e-05, 0.0022095956592090875, 0.030271729336331016, 0.10401218240300852, 0.18150716950315396, 0.2378360042272745], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000011276898, 2.499966599727175, 2.4934174451545155, 2.410639306796053, 2.1890925477870713, 1.9446548445889384, 1.7545750142478698]}, "NODE_385": {"DENSITY": [1.000000001570661, 0.9999955904778675, 0.998716176933469, 0.9787348272972215, 0.9150159231058903, 0.8346569020628621, 0.7667009690690089], "MOMENTUM_X": [2.032166941248615e-09, 5.322117902455561e-06, 0.001520101472323334, 0.02466082622171485, 0.09456644001473617, 0.1742112450089918, 0.2335949573278568], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000005497313, 2.4999845667373655, 2.4955097543067084, 2.4262814390398, 2.213008328920963, 1.95985667461869, 1.7595872123406189]}, "NODE_386": {"DENSITY": [1.000000001300441, 0.9999956969948722, 0.9988745604062398, 0.9807306119407792, 0.9191902678010357, 0.8379606370034021, 0.7681674444003943], "MOMENTUM_X": [1.6430505822377144e-09, 5.055525190791896e-06, 0.0013377295890222747, 0.02253646214365973, 0.09069100575723552, 0.17187374661541105, 0.23312475876819952], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000004551544, 2.4999849395390124, 2.4960634014690175, 2.433148387714456, 2.2266905158148247, 1.9700418702945206, 1.7639574884911848]}, "NODE_387": {"DENSITY": [1.0000000011274321, 0.9999954860523658, 0.9988905556648501, 0.9812495747702766, 0.9205687370027418, 0.8389737392235943, 0.7684114102491488], "MOMENTUM_X": [1.4470304581061418e-09, 5.285442437006087e-06, 0.001314681036001084, 0.0219426619150603, 0.08934968024311776, 0.1712155082537766, 0.23331360767235895], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000003946013, 2.4999842012442692, 2.4961193006113125, 2.434933721470452, 2.231199737236014, 1.9731361414460877, 1.7646852497410053]}, "NODE_388": {"DENSITY": [0.999999999989398, 1.0000001059089316, 0.9998596988843249, 0.9936673799552922, 0.9531705761995873, 0.874874141146834, 0.7977926526524617], "MOMENTUM_X": [-3.197026938650621e-12, -1.2280205168367745e-07, 0.00016847423220373026, 0.007533876563081774, 0.054199920041163, 0.13731991848371233, 0.20950098758698701], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999628923, 2.500000370681276, 2.4995089868154987, 2.4779022216173954, 2.3393468365002494, 2.084321992580962, 1.8497434382196514]}, "NODE_389": {"DENSITY": [1.0000000008270016, 0.9999953486174827, 0.9988806635023196, 0.9812704270171935, 0.9207414661404633, 0.8389328689862008, 0.7680768181537789], "MOMENTUM_X": [1.0943927341711612e-09, 5.45646267436122e-06, 0.0013238252523936167, 0.02189691669732661, 0.08913344063394794, 0.17125630693905816, 0.23364404990460655], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000002894506, 2.4999837202255177, 2.496084710557512, 2.435004555611882, 2.23175414957351, 1.9729761667669004, 1.7636853068403324]}, "NODE_390": {"DENSITY": [1.0000000004955372, 0.9999952362685756, 0.9988670023411884, 0.9811287193245356, 0.9204662658111442, 0.8386289478406274, 0.7677866424184774], "MOMENTUM_X": [7.088190025598946e-10, 5.575678420893347e-06, 0.0013372462680780722, 0.02203457416227039, 0.08934134897546613, 0.17139260698047493, 0.23369998526019167], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.50000000173438, 2.4999833270065217, 2.4960369423509374, 2.4345157664927735, 2.230843182847868, 1.9720144750915594, 1.7627963447202353]}, "NODE_391": {"DENSITY": [1.000000000001119, 1.0000001057503143, 0.9999350055302249, 0.9955822010232708, 0.9602545521089219, 0.8826782780165467, 0.8021577760864937], "MOMENTUM_X": [-7.948998630085251e-13, -1.200066178127541e-07, 8.212283824704465e-05, 0.0052160467194252436, 0.04532745640168704, 0.12733175843505962, 0.2031875935829907], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000000003917, 2.5000003701261213, 2.4997725291284456, 2.4845698867917525, 2.3631664607146, 2.1083546973632568, 1.861141211074809]}, "NODE_392": {"DENSITY": [1.000000000200904, 0.999995508187165, 0.9988728145581901, 0.9809738960425566, 0.9198549900234663, 0.8379651961723742, 0.7673942225420298], "MOMENTUM_X": [3.998887619458426e-10, 5.250821672192031e-06, 0.0013280505539916166, 0.022194264395121774, 0.08993386147456887, 0.17189540279144863, 0.23385162621472297], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000007031633, 2.499984278713998, 2.496057241429548, 2.4339807206027606, 2.228826635810271, 1.969952734669153, 1.7616183800146212]}, "NODE_393": {"DENSITY": [0.9999999999747238, 0.9999965865244715, 0.9989495853324594, 0.9812180131775026, 0.9194326031734141, 0.8369621234485688, 0.7665395292336679], "MOMENTUM_X": [2.160261043287358e-10, 4.022795790785217e-06, 0.0012376794222554153, 0.021916825472149196, 0.090433881321869, 0.17294114996900314, 0.2346828897310326], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999999115325, 2.499988052870834, 2.496325611643985, 2.4348173995744826, 2.2274175573423842, 1.9668514921968547, 1.7591433500825306]}, "NODE_394": {"DENSITY": [0.9999999998652868, 0.9999982648080655, 0.9991406466017683, 0.9825473084781823, 0.9208069332891482, 0.836916457382173, 0.7657354801011722], "MOMENTUM_X": [1.172470926038397e-10, 2.095085581883997e-06, 0.0010151551368130134, 0.020417698521466597, 0.08916454323812302, 0.17337070558594103, 0.235815538628811], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999995285043, 2.4999939268384987, 2.496993646553057, 2.439393200465093, 2.2318929755361343, 1.9666941306069503, 1.7568759865733703]}, "NODE_395": {"DENSITY": [1.0000000059746132, 0.9999425770763934, 0.9948161532467422, 0.9546485866126478, 0.8752025748160215, 0.7971681949989954, 0.7362890485927649], "MOMENTUM_X": [-4.16765006750121e-10, 6.521166102764779e-05, 0.006102222698211281, 0.05257807521270888, 0.13728497954412727, 0.21032541082101236, 0.25983106621762597], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000020911146, 2.4997990276852855, 2.48190398143464, 2.3444568661425738, 2.0860908215848357, 1.8493356901797113, 1.6761794928302602]}, "NODE_396": {"DENSITY": [1.0000000042375545, 0.9999694830976318, 0.9962465374172061, 0.9610540814889257, 0.882582336466507, 0.8013978530009201, 0.7375811487696287], "MOMENTUM_X": [2.9746642596034923e-09, 3.664210315098713e-05, 0.004420446319758782, 0.044624447158978515, 0.12783702961668053, 0.2041541621569795, 0.25658174041844534], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.50000001483144, 2.499893193374386, 2.4868881194324666, 2.3659945842656396, 2.1087548353929164, 1.8602953362585044, 1.6776703640450479]}, "NODE_397": {"DENSITY": [1.000000002833126, 0.9999717993684802, 0.9966828364833984, 0.9640678743170681, 0.8868143197001346, 0.8039807603488939, 0.7383330555069348], "MOMENTUM_X": [2.8607220738395854e-10, 3.346077566656125e-05, 0.003931290823184986, 0.04154728031608153, 0.12426592245147644, 0.20270746768832232, 0.25674913120200304], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000009915941, 2.4999012998859187, 2.488409950409984, 2.376225007016362, 2.122285036862733, 1.8680878512065917, 1.6799735892076595]}, "NODE_398": {"DENSITY": [1.0000000026380824, 0.999971091675059, 0.9967460538175761, 0.9649036494784977, 0.8881481269183032, 0.8046164740001055, 0.7382742453582445], "MOMENTUM_X": [-9.190769279002953e-11, 3.4124422172599777e-05, 0.003849073499923418, 0.040633468304394044, 0.1231066540534815, 0.2025008706602136, 0.257214490293594], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000092332884, 2.4998988230222223, 2.4886303828654492, 2.3790604226852485, 2.126528219933065, 1.8699769419062715, 1.6798535052099925]}, "NODE_399": {"DENSITY": [0.9999999998876034, 0.999999692753849, 0.9994217995646536, 0.98537718722341, 0.9258697613311985, 0.8399927774895123, 0.7663492812667778], "MOMENTUM_X": [4.1409432768944937e-11, 3.9909584992262624e-07, 0.0006928984217244838, 0.01729758660470374, 0.08428125614210313, 0.17125935442023282, 0.23607551689098072], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999606612, 2.499998924639148, 2.4979769448514704, 2.4491603462477465, 2.2485382988079343, 1.9761751749875833, 1.7588029092466826]}, "NODE_400": {"DENSITY": [1.0000000027186533, 0.9999705277142645, 0.9967306497895189, 0.9649733814116277, 0.888260731915967, 0.8043999679546102, 0.737836579801166], "MOMENTUM_X": [1.7011407171707731e-10, 3.4732243839491356e-05, 0.0038614973144334005, 0.040524457202535655, 0.12296597990146574, 0.20271368163020387, 0.25762524486173094], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000009515286, 2.499896849232621, 2.488576595997872, 2.37929450965399, 2.1268658264220797, 1.869291133267382, 1.6785941336154429]}, "NODE_401": {"DENSITY": [1.0000000026642055, 0.9999699265092935, 0.9966961172558699, 0.9647860666690724, 0.8880009585360779, 0.8041196814331176, 0.7375797753418447], "MOMENTUM_X": [3.9647326963407997e-10, 3.53070150011571e-05, 0.003895900555694492, 0.040692247534795736, 0.12311527783295086, 0.20278921059982746, 0.2576305496768022], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000093247197, 2.4998947450824383, 2.4884560701178646, 2.3786561285996823, 2.126021366564965, 1.8684165489774622, 1.6778128757207955]}, "NODE_402": {"DENSITY": [0.99999999995278, 1.0000003088979323, 0.9996875673349594, 0.989028279121033, 0.93435982843205, 0.8468722483902127, 0.7693496588593189], "MOMENTUM_X": [-3.16015726159487e-12, -2.70555647815699e-07, 0.00038339414849464525, 0.012811425257073458, 0.07359023148533617, 0.16223192280568224, 0.231082977112693], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999998347304, 2.500001081142856, 2.4989066853103403, 2.46178740894383, 2.2763314502258036, 1.9962197327915225, 1.7655012101925573]}, "NODE_403": {"DENSITY": [1.0000000023442064, 0.9999705883740069, 0.9966835030443231, 0.9644679228964654, 0.8873389615124783, 0.8036078048026998, 0.7373693511664751], "MOMENTUM_X": [5.40188872991009e-10, 3.441733914035148e-05, 0.003904326373118733, 0.04101674889459236, 0.12369454105451971, 0.20307931145259994, 0.2575900480647007], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000008204722, 2.4998970614870712, 2.48841193506189, 2.37757080804795, 2.1238898747560175, 1.866856936960809, 1.6771633550498526]}, "NODE_404": {"DENSITY": [1.0000000015585528, 0.9999749777501332, 0.9968161788882857, 0.9645249985397449, 0.8865528568888346, 0.8025974559064376, 0.7366979310997379], "MOMENTUM_X": [7.300080258027852e-10, 2.9358038167552136e-05, 0.00374708950424347, 0.04096172532801018, 0.12455641286368223, 0.2040740140006769, 0.25822328297732733], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000005454935, 2.499912423710045, 2.4888746251402174, 2.377754654793656, 2.1213490296270607, 1.8638262221186337, 1.6752700434576562]}, "NODE_405": {"DENSITY": [1.000000000491262, 0.9999835969326981, 0.9972464231735201, 0.9660990836293654, 0.8873033665515576, 0.8020327821826797, 0.7357145582923238], "MOMENTUM_X": [9.619030889022886e-10, 1.9440457402650956e-05, 0.003247546424158476, 0.03925877260910563, 0.12408392929537655, 0.20502934016756652, 0.2594843066066624], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000001719416, 2.4999425899686845, 2.4903759317509646, 2.3830927747057125, 2.123706008706164, 1.862154637039395, 1.672592409506138]}, "NODE_406": {"DENSITY": [0.9999999689354526, 0.999723541404068, 0.9874738785410773, 0.9275486718558198, 0.839948108172975, 0.7648888068071957, 0.708661271723085], "MOMENTUM_X": [-1.3559497011258853e-07, 0.00032229020875129216, 0.0147376648082113, 0.08260384858899951, 0.1715948579228213, 0.23745422946106304, 0.2800596665935259], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999891274089, 2.499032564511833, 2.45642428706054, 2.25438784029361, 1.9771527140977982, 1.756405562835402, 1.6010241483211496]}, "NODE_407": {"DENSITY": [0.9999999786146875, 0.9998378608350014, 0.9903906987481436, 0.9354149794493011, 0.8465567326025165, 0.7678104911829899, 0.7088680963068441], "MOMENTUM_X": [-6.595952573120829e-08, 0.00019593505954857937, 0.01123780842971343, 0.07276358871454675, 0.16290575399132748, 0.23253156124338753, 0.2777711403888659], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999251514082, 2.499432576353888, 2.4665239703060413, 2.2801308980082786, 1.9963301779639675, 1.7628240406307427, 1.599154123582187]}, "NODE_408": {"DENSITY": [0.9999999856102751, 0.9998533584481731, 0.9913984090090269, 0.9393423218659407, 0.8503965822377011, 0.7695602710431698, 0.7089153184951494], "MOMENTUM_X": [-5.825433244971232e-08, 0.0001758409936382412, 0.010142492677926303, 0.0689907545251214, 0.16009563378648478, 0.23197083338131477, 0.2784787493258148], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999949635964, 2.4994868058150934, 2.4700219647722514, 2.2932052477918585, 2.008279405074448, 1.7680379165945121, 1.5995329608262805]}, "NODE_409": {"DENSITY": [0.9999999998307544, 0.9999930321132922, 0.9979848429005111, 0.9702168589262621, 0.8920162913926915, 0.8039593182678074, 0.7354524055349427], "MOMENTUM_X": [8.841985031386434e-10, 8.47712014206644e-06, 0.002409860915298406, 0.03488364925531764, 0.1200041841792042, 0.2042071356422135, 0.26046833419765586], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999994076405, 2.499975612540798, 2.4929543416157753, 2.3971217354161634, 2.1387934521833256, 1.867989250105009, 1.6720924212415653]}, "NODE_410": {"DENSITY": [0.999999988900029, 0.9998517842469459, 0.9915787065555596, 0.9404575475204332, 0.851479767601177, 0.7698076897223856, 0.708603947606782], "MOMENTUM_X": [-5.6647877921268234e-08, 0.0001766415817911613, 0.009921972413700686, 0.06784666516473195, 0.15932887239029778, 0.2321723902236547, 0.2791394804633716], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999611501025, 2.4994812963771436, 2.4706475024915218, 2.296911062971575, 2.0116150018640497, 1.768764557871959, 1.5987502422898123]}, "NODE_411": {"DENSITY": [0.9999999940628704, 0.9998498521289809, 0.9915643594644378, 0.9405658501712144, 0.8514482671506765, 0.7694266424280904, 0.7081053531396386], "MOMENTUM_X": [-4.979714516182481e-08, 0.00017842751942319726, 0.009927319972355247, 0.06769185849338728, 0.15934494548728395, 0.2325274336275809, 0.2795856161095994], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999792200485, 2.499474535054967, 2.4705974569517926, 2.2972644815911885, 2.0114828904512794, 1.7676205562605731, 1.5973638395296053]}, "NODE_412": {"DENSITY": [1.0000000002416847, 0.9998473129426492, 0.9914964039066929, 0.9403632257926393, 0.8512112420438039, 0.7691658290527735, 0.7078798973195112], "MOMENTUM_X": [-4.011747279881521e-08, 0.0001805979323382382, 0.009994153587278669, 0.0678455310818771, 0.15942955972408118, 0.23255474280242636, 0.2795525333745762], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000008458967, 2.499465649221585, 2.470361296716296, 2.296585327771448, 2.0107248464493246, 1.7668171348150443, 1.5966807570505808]}, "NODE_413": {"DENSITY": [0.9999999997709197, 0.9999989816569281, 0.9987732579462677, 0.9761607290257607, 0.900986160439922, 0.8094209292016288, 0.7370727759522002], "MOMENTUM_X": [4.211105798308212e-10, 1.884726318134604e-06, 0.001475748166586843, 0.027490366061489004, 0.10864004807683261, 0.19663325901196088, 0.256753501066357], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499999999198219, 2.4999964358086944, 2.495709204027892, 2.4174137559391236, 2.1670603464404325, 1.882655827338007, 1.6742853438056453]}, "NODE_414": {"DENSITY": [1.0000000058462013, 0.9998477289744546, 0.9914264584181302, 0.9398882832145794, 0.8506161829403982, 0.7688453528329237, 0.7078388444151529], "MOMENTUM_X": [-3.001978433016455e-08, 0.00017918608505534549, 0.010061550208956018, 0.06830408259972082, 0.15986350771901647, 0.23261730245760812, 0.27935519705192174], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000020461706, 2.499467104388534, 2.470117843098371, 2.2949950698921793, 2.008857338385229, 1.7658440142676863, 1.5964962268155753]}, "NODE_415": {"DENSITY": [1.0000000085020082, 0.9998616182525967, 0.991588438843599, 0.9395983400948403, 0.8496042816897904, 0.7679674906515453, 0.7073962248948623], "MOMENTUM_X": [-1.9972633619149177e-08, 0.00016264131486206675, 0.009868112800655228, 0.0686375686735885, 0.1609000203884664, 0.2334308207170012, 0.27976944891465416], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000297570293, 2.499515707390045, 2.470679192877218, 2.294009629791023, 2.00568952863906, 1.763288189852896, 1.5952765733262035]}, "NODE_416": {"DENSITY": [1.0000000061211531, 0.9998964489509915, 0.9923833163313165, 0.9410507114296103, 0.8496265746671061, 0.7670399815790381, 0.7063391271382421], "MOMENTUM_X": [-9.224100147829897e-09, 0.00012221933530109848, 0.00895477087933378, 0.06719578939889664, 0.16126693337669173, 0.23470671573677424, 0.28104907698480036], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000214240363, 2.4996375959431822, 2.473439440785367, 2.2988210739162693, 2.005725595406589, 1.760654261275303, 1.5924996360147723]}, "NODE_417": {"DENSITY": [1.0000002449640202, 0.9988807525875976, 0.9734115349105947, 0.8934542308296558, 0.8030667319651477, 0.7328333515017167, 0.6815483703034275], "MOMENTUM_X": [-3.015349836044191e-07, 0.0013052062179585953, 0.03113785115630329, 0.11872050956502714, 0.20523848617020368, 0.2625075807015684, 0.2984790016434002], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000008573741264, 2.4960851940625632, 2.408094281501393, 2.144038115431567, 1.866900408383981, 1.666944662475155, 1.5292619825227942]}, "NODE_418": {"DENSITY": [1.0000000971473506, 0.9992866229354379, 0.9784566684495674, 0.9019672924092323, 0.8083732570619666, 0.7343634215373016, 0.6806784397096468], "MOMENTUM_X": [-2.3289370872216663e-07, 0.0008512081088740443, 0.02496344777190691, 0.10800752022174348, 0.1978419507990811, 0.2588634303207555, 0.2971048732912771], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000003400157356, 2.4975042799922376, 2.4253476928712026, 2.1708408088234203, 1.8810457960703106, 1.668815868803188, 1.5242351532152008]}, "NODE_419": {"DENSITY": [1.0000001124743083, 0.999360369095181, 0.9803975057231117, 0.9064062756275897, 0.8114582786434759, 0.7352358342056091, 0.68004326976446], "MOMENTUM_X": [-1.6279512453232833e-07, 0.0007619545883418184, 0.022929739790815123, 0.10412056899074826, 0.19606566749345397, 0.2591058930565926, 0.2982451104832114], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000003936600934, 2.497762177169598, 2.4320216463196678, 2.1852485868165683, 1.8903994465273448, 1.671488167782762, 1.5228572453707574]}, "NODE_420": {"DENSITY": [1.0000000014698678, 0.9999431810228987, 0.9940069561257481, 0.9461163318901801, 0.8533739181295942, 0.7677942762024152, 0.7052855269777417], "MOMENTUM_X": [-4.06890443323644e-10, 6.8537837120369e-05, 0.007142424165164036, 0.06213313657003504, 0.15858075542211966, 0.23503364307187075, 0.2825824297127089], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000051445377, 2.499801141475588, 2.4790861836016336, 2.315740683594156, 2.0173833981554714, 1.763013939207089, 1.5899466635241102]}, "NODE_421": {"DENSITY": [1.0000001218591017, 0.999360281311411, 0.9807935335441516, 0.9076345206295018, 0.8121491216243573, 0.7351327662693737, 0.6795359113396587], "MOMENTUM_X": [-1.5819718060295695e-07, 0.0007585081633826847, 0.0224685540625294, 0.1029795548162409, 0.19579175143895078, 0.25962615121848726, 0.29902234636487446], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000004265068765, 2.497761860168243, 2.433382164035697, 2.1892157814345667, 1.8924516825089306, 1.671233880549179, 1.5215987237981865]}, "NODE_422": {"DENSITY": [1.0000001164261143, 0.9993555952728642, 0.9807942388085491, 0.9077216071155861, 0.8119209721911005, 0.7346291175700642, 0.6790229328899493], "MOMENTUM_X": [-1.6370056978063e-07, 0.0007634715657505685, 0.02244523604793027, 0.10285243456089006, 0.19599720380197846, 0.26006795171412644, 0.2994609965054574], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000004074914246, 2.4977454700193054, 2.4333835944993187, 2.189481916022987, 1.8917217058218951, 1.6697822732472325, 1.520218143484539]}, "NODE_423": {"DENSITY": [0.9999999992440305, 0.9999799524572198, 0.9959676373596519, 0.9543789862839646, 0.8617617397684794, 0.7715710159629803, 0.7055643756128864], "MOMENTUM_X": [2.3506882584530477e-09, 2.7056631457050907e-05, 0.00477668325486169, 0.05177261028096475, 0.14779906270161491, 0.22911618371152484, 0.2800531577441513], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999999973541067, 2.4999298348680212, 2.485914711459845, 2.3433355391715742, 2.0424415153441275, 1.7717688679797836, 1.5879869931678452]}, "NODE_424": {"DENSITY": [1.0000001046729041, 0.999348077571049, 0.9806890528240071, 0.9075356952678845, 0.811696999460283, 0.7343841261707805, 0.6788271004287687], "MOMENTUM_X": [-1.650526507896084e-07, 0.0007710086748835753, 0.02254050159184324, 0.10295312344744713, 0.19603202979495107, 0.2600605477065493, 0.29940082701410803], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000003663551897, 2.4977191752594967, 2.4330211349487536, 2.188870629142443, 1.8910159893042675, 1.6690375389608245, 1.5196257827310538]}, "NODE_425": {"DENSITY": [1.0000000934542805, 0.9993441764060634, 0.98050953858969, 0.906986570609526, 0.8112624865934619, 0.7342587291727605, 0.6789283312783851], "MOMENTUM_X": [-1.6316856770682572e-07, 0.0007730492270933093, 0.022716835473297958, 0.10342963353341228, 0.19623747951387033, 0.2599225537190022, 0.29909272313727964], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000003270900093, 2.4977055233581975, 2.4324016525892147, 2.1870764324670904, 1.8896804711548694, 1.6686248038992495, 1.519809996664858]}, "NODE_426": {"DENSITY": [1.000000086713332, 0.9993781553247117, 0.980594058034635, 0.9062971293757083, 0.810222405862486, 0.7336140962572887, 0.6787347612123869], "MOMENTUM_X": [-1.5432379765680793e-07, 0.000731721385185057, 0.022609351627585192, 0.10417002201959896, 0.1972234736021922, 0.26048187773274195, 0.2992935244969591], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000003034966913, 2.497824350862301, 2.4326879256288665, 2.1848099025098704, 1.886530819979182, 1.6667981129804257, 1.51927932416708]}, "NODE_427": {"DENSITY": [1.0000000690525095, 0.9994914168225224, 0.981765413787247, 0.9072101420626464, 0.809595823817831, 0.7324914910762093, 0.6776944958861408], "MOMENTUM_X": [-1.208753383541342e-07, 0.0005997606385805852, 0.021296639594042474, 0.10346371643498775, 0.19825922148657066, 0.26188572528633947, 0.3005077338900455], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000241683805, 2.498220499546843, 2.436714271617362, 2.1877269993248576, 1.8846458295881503, 1.6637363794832634, 1.5166456792681515]}, "NODE_428": {"DENSITY": [1.000002123699317, 0.9961798881137482, 0.9501019185067334, 0.8539461257914384, 0.7655625445428003, 0.7012584241929943, 0.6550241318998284], "MOMENTUM_X": [7.562875736530884e-07, 0.004446431238154486, 0.05772464077459244, 0.15823012143802373, 0.236987177918874, 0.2852845769576814, 0.31508759568023503], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500007432947829, 2.4866573339632376, 2.329291803388544, 2.0202610056389947, 1.7586471733880404, 1.5815465719317714, 1.4609204743703295]}, "NODE_429": {"DENSITY": [1.0000014044960173, 0.9973696367554657, 0.9575086177840345, 0.8620695782377883, 0.7692194458602025, 0.7013623265909966, 0.6530917455598647], "MOMENTUM_X": [1.3954601921452627e-07, 0.003090301217500305, 0.04854789910449983, 0.14784529176599728, 0.23118604283505684, 0.2828888182928737, 0.3145759266258098], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000049157365702, 2.4908072911455394, 2.3540769019611294, 2.04447081176481, 1.7669657855871999, 1.5790327361673457, 1.4529705407102431]}, "NODE_430": {"DENSITY": [1.0000000323750284, 0.9996752883040309, 0.9847235641323726, 0.9124515068005165, 0.8119949184739987, 0.7321435260074893, 0.6759409426992132], "MOMENTUM_X": [-6.25042512363973e-08, 0.00039075568195530907, 0.018086863443494253, 0.09873245697785624, 0.19718861291933237, 0.26313582785412254, 0.30242218113663627], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500000113312605, 2.498863739120782, 2.446914315304203, 2.2047698839532606, 1.8919390046307127, 1.6630519926359777, 1.5124027455891242]}, "NODE_431": {"DENSITY": [1.000001114886158, 0.9976413030634932, 0.9606201939105247, 0.8664280900955934, 0.7713167665640416, 0.7013567615028667, 0.6518036426522802], "MOMENTUM_X": [1.7237592260757206e-07, 0.002786659026228686, 0.04544941299685448, 0.14454469660115377, 0.2305195400259528, 0.28380629074356467, 0.31603665882519605], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.50000390210156, 2.4917555987892244, 2.364606053753143, 2.0582019500914623, 1.7732161932514312, 1.5793266587926218, 1.4500109809176167]}, "NODE_432": {"DENSITY": [1.0000010892438984, 0.997657686863156, 0.9613036191252738, 0.8675222252562069, 0.7715651357897609, 0.700969762582669, 0.6511575703571839], "MOMENTUM_X": [1.7522537151448612e-07, 0.00275937174318197, 0.04469697614314989, 0.14369293160899058, 0.23071769075839035, 0.28453926807807545, 0.3168595369100504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500003812353668, 2.491812712180344, 2.3669137775366136, 2.0616094921303274, 1.7739278988956322, 1.578337274023206, 1.448449206758598]}, "NODE_433": {"DENSITY": [1.0000010154917531, 0.9976487248957846, 0.9613297283566421, 0.8674908463331328, 0.771141997055755, 0.7004043062008755, 0.6506763898224253], "MOMENTUM_X": [9.060751781166335e-08, 0.002769575910339824, 0.04463348654004007, 0.14369009408465003, 0.23108407058830405, 0.28500404481449315, 0.31725479537224743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000035542212804, 2.491781416225926, 2.366998687194474, 2.0614796722187494, 1.7726500933357605, 1.5767663140196797, 1.4471956273235047]}, "NODE_434": {"DENSITY": [1.0000000028074556, 0.9998476282553965, 0.9887859437511175, 0.922290569018762, 0.818899572600634, 0.734143302528934, 0.6749443272023902], "MOMENTUM_X": [-1.564606648825089e-08, 0.00019254106050929724, 0.013099242717214962, 0.08633847333458311, 0.18796192216931024, 0.25887551129824676, 0.30096909900461855], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000000098260955, 2.499466755187901, 2.4609531211418343, 2.23652244366102, 1.9109987889254303, 1.6659667417210768, 1.5067112295377425]}, "NODE_435": {"DENSITY": [1.0000008643311542, 0.9976313526903053, 0.9612047973080539, 0.8673291833188412, 0.7709170792178099, 0.700174533953715, 0.6505094389109634], "MOMENTUM_X": [-2.415584240940115e-08, 0.002789572971932556, 0.04472894436136348, 0.1437299359574958, 0.23109062600945726, 0.2849729994064585, 0.31717667783158754], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500003025159289, 2.491720762732383, 2.366574304958851, 2.0609569261159213, 1.7719540597314731, 1.5760773961228942, 1.446691537483761]}, "NODE_436": {"DENSITY": [1.000000690241581, 0.9976096720842531, 0.9608899701691301, 0.8668333383582061, 0.770687952228094, 0.7002200284338288, 0.6507163805634404], "MOMENTUM_X": [-1.5813503849552437e-07, 0.0028105093354495424, 0.045024273018097825, 0.14407555321334145, 0.23105380295237904, 0.28468850433150916, 0.3168066083774106], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000024158458567, 2.4916450121767233, 2.365503894842716, 2.0593816435031393, 1.771244605467016, 1.5761249834302506, 1.447135036120064]}, "NODE_437": {"DENSITY": [1.000000592046293, 0.9976688280263285, 0.9607239822589343, 0.8658553299152388, 0.7698095346677503, 0.6998658379527, 0.6507701261669578], "MOMENTUM_X": [-3.373072663419775e-07, 0.002737764137571022, 0.04518939262771228, 0.14505043886718674, 0.2318077343383475, 0.2849745691907648, 0.31681776317638893], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500002072162416, 2.4918514148624293, 2.3649292779341935, 2.056273598600907, 1.7686689884335458, 1.5751362809728695, 1.447252024032976]}, "NODE_438": {"DENSITY": [1.0000005400825225, 0.9979635461844443, 0.9620348566991016, 0.8659647400414193, 0.7687348808690038, 0.6987025086301976, 0.6498214223723413], "MOMENTUM_X": [-4.8603627273601e-07, 0.002396304409622495, 0.043799534925833716, 0.14530570965753345, 0.23323382910535598, 0.286350774639026, 0.31790538343722907], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500001890289306, 2.4928804155717343, 2.3693502685257903, 2.0565674121602218, 1.7655916284819133, 1.5720922002785012, 1.444941736361054]}, "NODE_439": {"DENSITY": [0.9999960116299289, 0.9890510296355878, 0.9162589635904685, 0.8110183508790502, 0.7281299882353086, 0.6703330764249747, 0.6290471434082961], "MOMENTUM_X": [2.242594576215937e-06, 0.012882633992777988, 0.094668921382157, 0.19829559439446615, 0.26606606770549635, 0.3057142571114498, 0.3298649911584204], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499986040825295, 2.461895060668681, 2.2176753270273677, 1.8907406686986947, 1.6544289117660722, 1.500512898409635, 1.3959360519944024]}, "NODE_440": {"DENSITY": [1.000000206959143, 0.9918833760790626, 0.9255352196694252, 0.8177611657582065, 0.7299436966114748, 0.669005458722847, 0.6261171036236693], "MOMENTUM_X": [8.502867780168342e-07, 0.009505076147246997, 0.08319718230378119, 0.18925327203963657, 0.26198055716371627, 0.304500900873242, 0.3301862376030532], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000007243684665, 2.4717117295146362, 2.2476687100274093, 1.9092190734476853, 1.656711197245946, 1.4938597274153171, 1.385318393740061]}, "NODE_441": {"DENSITY": [1.0000003747259614, 0.9985468690875287, 0.966453873745025, 0.8704509123292259, 0.7696559899332781, 0.6973682498484233, 0.6474604697298231], "MOMENTUM_X": [-4.391382357722869e-07, 0.0017436353586138607, 0.03924160027336183, 0.14194262126007876, 0.23367261105941173, 0.2882714668210697, 0.32004358541382727], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000013115412045, 2.4949182524540596, 2.3843493289272955, 2.07069684317092, 1.7684692411227199, 1.5688865140042942, 1.4393442296240815]}, "NODE_442": {"DENSITY": [0.9999989592059608, 0.9926584476853906, 0.9297087464118957, 0.8214264265899798, 0.7309457001623751, 0.6681449626344178, 0.6242088740808936], "MOMENTUM_X": [7.089955898089244e-07, 0.008676802928556783, 0.07939762164321365, 0.1870787140321171, 0.26235496009208215, 0.30593642195512666, 0.3318541233679667], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499996357239609, 2.4744043089433023, 2.261456995226846, 1.9204101090410692, 1.6597872443617847, 1.4919886148523738, 1.3809574260110007]}, "NODE_443": {"DENSITY": [0.999998675469255, 0.992736298239923, 0.9306382325367457, 0.8221565762144929, 0.7307848484598779, 0.6675523168330467, 0.623482734848046], "MOMENTUM_X": [7.379581529006088e-07, 0.008570494995815147, 0.07846017888011628, 0.18671853145134748, 0.2629214477132966, 0.3067774453506965, 0.33266423268468687], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499995364164685, 2.4746742629090233, 2.2645121552914276, 1.9225816203598614, 1.659352864555294, 1.4905162662273144, 1.3792445925718337]}, "NODE_444": {"DENSITY": [0.9999987571855578, 0.9927188487355683, 0.9306707692522178, 0.8219220991522936, 0.7302203000348353, 0.6669923812025275, 0.6230823304103017], "MOMENTUM_X": [8.627545654714171e-07, 0.008579429145646533, 0.07839387936730442, 0.1868983285432634, 0.26337539632090645, 0.30720658891320474, 0.3329929759365232], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499995650172379, 2.4746134489387654, 2.2646106318829617, 1.9218222558401992, 1.6577225192684837, 1.4890118852736833, 1.3782183367638]}, "NODE_445": {"DENSITY": [1.0000001457574632, 0.9991877473753648, 0.973428578957064, 0.8805139815899204, 0.7744909179201662, 0.697608503195892, 0.6452677674009714], "MOMENTUM_X": [-2.2841666832538777e-07, 0.0009921489038402, 0.03055891250755953, 0.1291863598738918, 0.22652603943532604, 0.28555983589538814, 0.31955683241741467], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000005101512075, 2.497158488464668, 2.4080734336476866, 2.1015574173132934, 1.7800627260140696, 1.5663752577246108, 1.4303629347238438]}, "NODE_446": {"DENSITY": [0.99999878353994, 0.9926816007344407, 0.9305635845455345, 0.821760907259488, 0.7299882793559688, 0.666780208051953, 0.622955115548341], "MOMENTUM_X": [1.180798519112743e-06, 0.008610533333999101, 0.07846022985524986, 0.1868974259367398, 0.2633711596307353, 0.30715779186111164, 0.33290842871981596], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999957424147263, 2.4744839216881616, 2.264254828895601, 1.9213079248592264, 1.6570222734157196, 1.488383036218103, 1.3778059488741494]}, "NODE_447": {"DENSITY": [0.9999987905173141, 0.9926080593367965, 0.9301674209411481, 0.8214264410571357, 0.7299597830073798, 0.6669536090759395, 0.6232386404117967], "MOMENTUM_X": [1.591366001897383e-06, 0.0086745230790297, 0.07880422059178128, 0.1870060410177472, 0.2631400337883651, 0.306791026467471, 0.3325282637864174], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999957668381816, 2.4742279461530328, 2.2629391419392455, 1.9202682878092026, 1.656882003539172, 1.4887506303591083, 1.3784028763527676]}, "NODE_448": {"DENSITY": [0.9999993117189246, 0.9926539942890913, 0.9296244615351614, 0.8203914295022318, 0.7293803795285415, 0.6669075410704103, 0.6235297712277028], "MOMENTUM_X": [1.402060374474707e-06, 0.008602296898388817, 0.07935962728192683, 0.18793226742155403, 0.26356704705810385, 0.30682622492279693, 0.3323905593087811], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499997591036831, 2.47438652176042, 2.261120921451531, 1.9170964075318524, 1.6552254419987453, 1.4885908785839426, 1.3790890665060676]}, "NODE_449": {"DENSITY": [1.000000597729279, 0.9932469941398254, 0.9306071541608701, 0.8197023667114658, 0.7281026739617182, 0.6658352308846096, 0.6227369495548457], "MOMENTUM_X": [1.0239813797080572e-07, 0.00791791439208292, 0.07846980303288814, 0.18902435326474218, 0.2651005681929222, 0.3080625075932095, 0.3333128476222551], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500002092057295, 2.4764464327070166, 2.264324955810071, 1.9149829983289646, 1.6517338039354683, 1.485901775214856, 1.3772291046722904]}, "NODE_450": {"DENSITY": [0.9999137241020003, 0.9733500285746659, 0.872728067270936, 0.7663963455177568, 0.6912560136982913, 0.6402326511337176, 0.6040424895514047], "MOMENTUM_X": [4.521794000322291e-05, 0.03143444734527179, 0.1395508534628959, 0.23645842835847075, 0.2921030465856157, 0.32381671540209345, 0.3430781215432131], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499698049558498, 2.407949631411688, 2.078883416918324, 1.761512097491547, 1.5554525742799015, 1.4238879636295008, 1.3342892017402608]}, "NODE_451": {"DENSITY": [1.0000015241437477, 0.9947286946570597, 0.9359600794516653, 0.822684908223118, 0.7276036776955035, 0.6636497103949196, 0.6198602066023458], "MOMENTUM_X": [-1.204940358651327e-06, 0.006295614597917512, 0.07343662258672201, 0.1876438334323767, 0.2667430782143612, 0.3104057184402844, 0.3355288145476027], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500005334505337, 2.481601623374027, 2.2820459837140503, 1.924104789715414, 1.6507093073980241, 1.4806983111154783, 1.3705798709845984]}, "NODE_452": {"DENSITY": [0.9999581646692631, 0.9788600158206392, 0.8825708071473214, 0.771049051552458, 0.6911135944799517, 0.6374530242939005, 0.5999476054448821], "MOMENTUM_X": [2.1178042705739342e-05, 0.024647255255572598, 0.1273136110163974, 0.2294898187243044, 0.28970145988235263, 0.3237007651137634, 0.34407263520879394], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4998535802948525, 2.426773611119265, 2.109086607156641, 1.7724163266760877, 1.551788138159762, 1.4134217110408502, 1.3212196354344514]}, "NODE_453": {"DENSITY": [0.9999593662051299, 0.980583148493096, 0.8872562023003387, 0.7735536485475053, 0.6909968619753453, 0.6357792845863696, 0.5975011102647665], "MOMENTUM_X": [2.3442874311840805e-05, 0.022840738850215696, 0.12368059158833732, 0.2286885141883585, 0.29094438340244194, 0.3254834783573774, 0.34585692276367735], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499857785377177, 2.4326950870399546, 2.1240903460779132, 1.7798774690734067, 1.5518746166566146, 1.4096195136478267, 1.3156381090676044]}, "NODE_454": {"DENSITY": [0.9999582864222522, 0.9808031034900767, 0.8882317868407451, 0.7737939141835299, 0.6905156352184517, 0.6350592981509271, 0.5967340892515406], "MOMENTUM_X": [2.438349921196926e-05, 0.02255715800372439, 0.1228408287818803, 0.22885721549282736, 0.2917425590748426, 0.32633824790833627, 0.3466001685589823], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499854006302751, 2.4334483907520785, 2.1271749788877976, 1.7805387832061188, 1.5506272006951187, 1.4078924686907617, 1.3139067608403292]}, "NODE_455": {"DENSITY": [0.9999588570068388, 0.9807766547851805, 0.8881850587547483, 0.773345158693888, 0.6898939754484845, 0.6345664010107592, 0.5964216547376323], "MOMENTUM_X": [2.5252162364706642e-05, 0.022555256835642745, 0.12284122031256058, 0.22921041386045138, 0.2921935603447874, 0.3266873498987415, 0.34683059625519], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499856003407915, 2.4333561917414697, 2.1270023902119943, 1.7791741165457629, 1.5489024655793937, 1.4066172881715988, 1.3131765365784631]}, "NODE_456": {"DENSITY": [1.0000012363182647, 0.9966352134296971, 0.9458624217075694, 0.8314704342005003, 0.7300929998739304, 0.6622072706146974, 0.6165559337112996], "MOMENTUM_X": [-1.144482846171939e-06, 0.0040128439157150475, 0.06101198776633116, 0.17625908140329885, 0.2618098113843601, 0.3090907796538731, 0.33590531926835526], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.5000043271163057, 2.4882442333101262, 2.3147787534099997, 1.9490389806412491, 1.6545220475210842, 1.473335220189352, 1.3587511888261066]}, "NODE_457": {"DENSITY": [0.9999599257455856, 0.980718015187936, 0.888101677492496, 0.7731602193769017, 0.6896579997621771, 0.6343725063237419, 0.5962903580525013], "MOMENTUM_X": [2.7497118638830704e-05, 0.02258430624793516, 0.12285822920326196, 0.2292071002959796, 0.2921827435202383, 0.3266209918121402, 0.34671632257286444], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4998597441351684, 2.4331538890078326, 2.126731390112862, 1.7786000659643921, 1.5482109149302519, 1.4060639015765992, 1.3128521537656432]}, "NODE_458": {"DENSITY": [0.9999610495260636, 0.9805543469547638, 0.8877420779940217, 0.7730347068696497, 0.6897878836418593, 0.6346135200485516, 0.5965607249900444], "MOMENTUM_X": [3.0831678383076313e-05, 0.022709814012261208, 0.12310464357721598, 0.22907019876354315, 0.2918408025849197, 0.32622960336449564, 0.3463360875247791], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4998636775943908, 2.4325890908671495, 2.125573625045232, 1.7781926186957435, 1.5484886174499968, 1.406603064529672, 1.3134985042767409]}, "NODE_459": {"DENSITY": [0.9999649489964945, 0.9804663650398309, 0.886870831922781, 0.7721953835171428, 0.6895776417880695, 0.6348499043136087, 0.5970239097237888], "MOMENTUM_X": [3.1389218929915626e-05, 0.022747930223411407, 0.1239436142781814, 0.2296957853625761, 0.2919367818753448, 0.32605787656192775, 0.34607392151227656], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4998773253832196, 2.4322810631585643, 2.1227559309258925, 1.7757061708984527, 1.547873797286471, 1.4071760639551858, 1.314642920872727]}, "NODE_460": {"DENSITY": [0.999976329959348, 0.9813370884204456, 0.8870692875088024, 0.7709516393917571, 0.688331860540988, 0.6339661936976125, 0.5964268473818315], "MOMENTUM_X": [2.2899631426410343e-05, 0.021747908360671656, 0.12403891091903355, 0.23125070416531163, 0.2933536324692682, 0.32707738346917387, 0.34680451268595186], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499917156952263, 2.4352674704548054, 2.123327233448938, 1.7721069135571876, 1.5446303082090784, 1.4050724232926914, 1.3133108926363044]}, "NODE_461": {"DENSITY": [0.9999921460315934, 0.9843022195490119, 0.8922162928134414, 0.7720573140698721, 0.6865769777051988, 0.6310665789502957, 0.5931334627716136], "MOMENTUM_X": [8.267991339704742e-06, 0.018612960427340897, 0.12001292504933304, 0.2318857151126299, 0.295816032920557, 0.3296085117874235, 0.34896769943731837], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4999725114950677, 2.445481012216126, 2.1397989422559016, 1.7755673240355776, 1.540463325284513, 1.398353358105726, 1.3058810182039204]}, "NODE_462": {"DENSITY": [0.9995154788881734, 0.9439956306641077, 0.822290408431203, 0.7213131245736962, 0.6552204024580159, 0.6105457281751274, 0.5788176362425516], "MOMENTUM_X": [0.0006191394760086996, 0.0641457882740938, 0.18845442169591956, 0.2709693860471685, 0.31499468015106175, 0.339349852567225, 0.3540710428886277], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4983049024832953, 2.3090775902195255, 1.9248907946748293, 1.6363697307836416, 1.4624336424281281, 1.3514323179596697, 1.275563955815527]}, "NODE_463": {"DENSITY": [0.999718144128713, 0.9528850067602632, 0.8308924256213983, 0.7234721010293772, 0.6530853493016079, 0.6065664711409763, 0.5741668001621287], "MOMENTUM_X": [0.0003500992332636009, 0.05350932130489747, 0.17711605389260696, 0.26648161312945473, 0.31416132526564033, 0.3403945315734291, 0.35604229865461773], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4990137617500934, 2.338641348670063, 1.9491016017836218, 1.6390991595798508, 1.4530520243968814, 1.3375855703625836, 1.2604305636741564]}, "NODE_464": {"DENSITY": [0.9997358946525293, 0.9559605903219585, 0.8351616725424209, 0.7245965737744606, 0.6518625010843693, 0.6041010882130733, 0.57103671844665], "MOMENTUM_X": [0.0003397057507952742, 0.050540178883978444, 0.1745378988386203, 0.267083528617973, 0.3160085518875222, 0.34233887167520505, 0.357707136849379], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499075858491709, 2.349001465383657, 1.9622756773657608, 1.6425686919679392, 1.4504001016595032, 1.3321255463495714, 1.253758385953597]}, "NODE_465": {"DENSITY": [0.99973360903777, 0.956393635433978, 0.8358822585746213, 0.7243569901100215, 0.6511744179041166, 0.6033354925224712, 0.5703376461715096], "MOMENTUM_X": [0.00034691032531549456, 0.05000333277410417, 0.17410770803166625, 0.2676746813842189, 0.3168979838263925, 0.34313361000379716, 0.3583840770684434], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4990678631565166, 2.3504486836308183, 1.9644295892241883, 1.6418821915211979, 1.4486964120845462, 1.330345717827082, 1.2521385954183557]}, "NODE_466": {"DENSITY": [0.9997323356653929, 0.9563731212787199, 0.8356347955481832, 0.7237606593499472, 0.6505918465215856, 0.6029799880443565, 0.5702053123134926], "MOMENTUM_X": [0.0003469458091434554, 0.05001526532890736, 0.17422131643788977, 0.26811619791618024, 0.3172691181620074, 0.343387281813146, 0.3585541836568925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4990634075008993, 2.350376891388768, 1.9636146501154221, 1.640160801009921, 1.4471280989110502, 1.329424956387906, 1.251775712423873]}, "NODE_467": {"DENSITY": [1.0000015125928767, 0.9888120898061709, 0.9038348475685445, 0.7783600329176346, 0.6866687146005203, 0.6280481349027826, 0.5888130409852503], "MOMENTUM_X": [-2.2414694389004362e-07, 0.013088085470811394, 0.10540427609903746, 0.2230748033008581, 0.29298560597366385, 0.32953134436407977, 0.3501199492408577], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.500005294082847, 2.4610534303660963, 2.1764325845062698, 1.7911436344819591, 1.5369258375487103, 1.3867720777321202, 1.2916423546696862]}, "NODE_468": {"DENSITY": [0.9997291726890515, 0.9563486038095002, 0.835513460780476, 0.7235531253865042, 0.6503627012825048, 0.6028529468110152, 0.5702145604586268], "MOMENTUM_X": [0.0003458660247201662, 0.05006901618985754, 0.17416925883840767, 0.2681450509728068, 0.31723827959123685, 0.34332793945481493, 0.3584982590951241], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4990523387537995, 2.350297093438713, 1.9632152332603183, 1.6395481457069725, 1.4464585050231915, 1.3289808693329666, 1.2515808883065762]}, "NODE_469": {"DENSITY": [0.9997207991146322, 0.9561483365544361, 0.8352801168105652, 0.7236244374606082, 0.6505858809254612, 0.6031700682070381, 0.5706067357618305], "MOMENTUM_X": [0.0003448282368731935, 0.050282759455727105, 0.1741614071182111, 0.26785782488112725, 0.31686656728684903, 0.34299837437579916, 0.3582495530362509], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4990230360423165, 2.349622350238762, 1.9624728772386848, 1.6396945752458996, 1.4469432570663625, 1.3295771688607956, 1.2522421693071017]}, "NODE_470": {"DENSITY": [0.999718333168742, 0.9558078009805109, 0.8343056401900847, 0.7231721154039036, 0.6507519778784763, 0.6037079595779519, 0.5713100372323046], "MOMENTUM_X": [0.00033228840940007333, 0.05062567875797745, 0.17493382943794625, 0.26807614426795545, 0.31669163823940655, 0.3427185947560791, 0.35797494963346915], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499014397161071, 2.3484621844697218, 1.9594367095295093, 1.6383763441571422, 1.4472950180369741, 1.3307480512501864, 1.2537539410183216]}, "NODE_471": {"DENSITY": [0.9997579669045326, 0.9566513940293213, 0.8335557752978832, 0.7217435149280151, 0.6497412653143252, 0.6031285182335676, 0.5709468366201194], "MOMENTUM_X": [0.00027450240150199944, 0.04975352592337221, 0.17601238392653612, 0.2696720532088468, 0.31784875172002686, 0.3435046703942246, 0.3585101401598326], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4991530502962482, 2.3512766145988304, 1.9570808808920432, 1.6344611134021325, 1.4447776946559225, 1.3293774064248023, 1.2529912372467238]}, "NODE_472": {"DENSITY": [0.9998551772436247, 0.9612550332073131, 0.837203123367696, 0.7209684092489977, 0.646949552897776, 0.599659553409614, 0.567280460595716], "MOMENTUM_X": [0.00016526061951925797, 0.045269973647301454, 0.1742913326342169, 0.2719091080401309, 0.32074517449327283, 0.3460095017357783, 0.3604646680013523], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4994931839598236, 2.3668179359251194, 1.968339340428641, 1.6327958095279984, 1.4382707085316373, 1.3215724317208497, 1.24500856225806]}, "NODE_473": {"DENSITY": [0.9975057882469784, 0.8982663009180275, 0.7675710091134964, 0.6769054902532055, 0.6206252628184427, 0.5828795901459135, 0.5556024634888495], "MOMENTUM_X": [0.0035486857882854207, 0.11209777498989587, 0.23617402528086495, 0.3012297172168432, 0.3349088512584973, 0.3533169439735608, 0.36426952549507396], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.491288056853914, 2.159940279180511, 1.765795700821809, 1.5182907932727614, 1.375401776843099, 1.283373897500504, 1.220159975859474]}, "NODE_474": {"DENSITY": [0.9983911779111634, 0.9097065992700677, 0.7735438444244086, 0.6762142459165079, 0.6162976800082064, 0.5769837687560833, 0.5493501574533569], "MOMENTUM_X": [0.0023289867205686593, 0.09863141621119735, 0.22757060969571624, 0.29914350591363653, 0.3354537191967903, 0.3549994125689275, 0.36650744249214556], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4943770229498656, 2.196258491665507, 1.7800717329578906, 1.512550715282233, 1.3608078852944936, 1.2663392159939357, 1.2029825897697122]}, "NODE_475": {"DENSITY": [0.9984644716089043, 0.9141588632341333, 0.7764427463117676, 0.6759079535930661, 0.6140487498026682, 0.5740199167250829, 0.5461269796303685], "MOMENTUM_X": [0.0021500523811388405, 0.0952486544646031, 0.22652678353651348, 0.3009519147460559, 0.33761502775187846, 0.35707243715039344, 0.36827578712778625], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.494632545795115, 2.2108256170384175, 1.7886709845294189, 1.5123190844928782, 1.3557139595819871, 1.2595462915436575, 1.1955007892323075]}, "NODE_476": {"DENSITY": [0.9984535160666413, 0.9147884811756616, 0.7766368975518851, 0.6753131593707554, 0.6132699447081041, 0.5732613511415424, 0.5453586931167396], "MOMENTUM_X": [0.002159943536680526, 0.09460225253927787, 0.22661130812472896, 0.3017988432700059, 0.33846339715296175, 0.3577450424889451, 0.36874267092919183], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4945942248076456, 2.21284943528859, 1.7891525919939653, 1.5107617142493077, 1.353860593552673, 1.2579022676674, 1.1940509991715198]}, "NODE_477": {"DENSITY": [0.99994918118645, 0.9696785281862863, 0.8483640725070967, 0.724080317302833, 0.6447267027415782, 0.5951761207398245, 0.5620163111907427], "MOMENTUM_X": [6.350041432997018e-05, 0.034775709098436, 0.16017449459626135, 0.2661608345264058, 0.3198004372878854, 0.3470148266345258, 0.3623023961996629], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.499822144020319, 2.3953097853104874, 2.0009414884986394, 1.6376474588204004, 1.4281994595111225, 1.3064180731075616, 1.2287845096310637]}, "NODE_478": {"DENSITY": [0.9984487388943035, 0.9147293295541294, 0.7761843563288409, 0.6746592033309933, 0.6128141923542129, 0.5730620502391223, 0.545405363686523], "MOMENTUM_X": [0.002162509588418615, 0.09464812795955878, 0.2268957549499333, 0.302174494940497, 0.33871685068716617, 0.3578824271547618, 0.368851621862306], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4945775320828463, 2.212647561742191, 1.7877596931504076, 1.5089494575497047, 1.3526715313044817, 1.257392126964916, 1.1940708660392703]}, "NODE_479": {"DENSITY": [0.9984354329420638, 0.9147540096885393, 0.7760302287078041, 0.6744251547982489, 0.6125928871257889, 0.5728996641067207, 0.5453308739728161], "MOMENTUM_X": [0.0021516441450020194, 0.09472152826305177, 0.22687960359291515, 0.3022036116206695, 0.3386489484933307, 0.35776047059646066, 0.3687108488026276], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4945309898123993, 2.212741556815344, 1.7872770710912833, 1.5082992458885323, 1.352072599168358, 1.257046437309552, 1.1939514787821883]}, "NODE_480": {"DENSITY": [0.9983980508878191, 0.9146054140797659, 0.7759978216721031, 0.6746190600878978, 0.6127931672722386, 0.5730407965376749, 0.5454960566955572], "MOMENTUM_X": [0.0021383924935517856, 0.09492682314513899, 0.2266599379815204, 0.3018866476162938, 0.33828480023079155, 0.35740191144074696, 0.36840439757197213], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.494400263606615, 2.2122682983752995, 1.787141919440779, 1.5087772011038427, 1.3525617467396174, 1.2575619325513152, 1.1944915466018098]}, "NODE_481": {"DENSITY": [0.9983591544835533, 0.9139821273165728, 0.7752548877273393, 0.6746310001913862, 0.6132139635816377, 0.5735871938435675, 0.5461699009300833], "MOMENTUM_X": [0.002100015233405237, 0.09557659671127557, 0.22704473558314145, 0.30174576082487664, 0.3378903585464369, 0.35694562910921274, 0.3680251732682985], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.49426412171431, 2.21021930566657, 1.7849006737328168, 1.5087509869161122, 1.3536519429553568, 1.2591101156210451, 1.1961913034749014]}, "NODE_482": {"DENSITY": [0.9984649797837546, 0.9142479217922089, 0.7738207907091597, 0.6733949615629664, 0.612512980468538, 0.573237626396251, 0.5461001525413709], "MOMENTUM_X": [0.0018940021935678166, 0.09552525502675803, 0.2286110371906041, 0.3030698839724714, 0.3386733282413525, 0.35742059983673363, 0.36840848975622936], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4946333804586436, 2.2110302145463425, 1.7806827224340225, 1.505566495959995, 1.3521204678587955, 1.258507198283338, 1.1960081267780285]}, "NODE_483": {"DENSITY": [0.9988864425113999, 0.919634605732183, 0.7750750306216088, 0.6709868555313829, 0.6088742045538076, 0.5693578379110034, 0.5423066364253939], "MOMENTUM_X": [0.0013911718576602142, 0.09122301457961406, 0.22959024576131182, 0.30629106353868096, 0.3416110601667814, 0.35971108260418955, 0.3701371285192925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4961057749667352, 2.2286265714041575, 1.7846337740981606, 1.499964754830709, 1.3439918036940763, 1.2499914593897423, 1.1877160598841934]}, "NODE_484": {"DENSITY": [0.9880365050848601, 0.8396095896049515, 0.7103641697628654, 0.6336098147485999, 0.5854941771006369, 0.5538527243993573, 0.5321503223660283], "MOMENTUM_X": [0.012614379833064564, 0.17401295061106697, 0.277914667299273, 0.3272254906451002, 0.35056326401959265, 0.3637434332163938, 0.3724073317709832], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.458400818383193, 1.9782498708036744, 1.607477235396023, 1.4095306403618477, 1.29323543715006, 1.2186579965065274, 1.167276047624899]}, "NODE_485": {"DENSITY": [0.9915980202841417, 0.8502345899775647, 0.7130120395536287, 0.6299607548276079, 0.5799711096177977, 0.5476754480025866, 0.5253985187802349], "MOMENTUM_X": [0.009427234716474449, 0.15910970205809538, 0.2735035418024984, 0.3272399825151204, 0.3530341031770201, 0.3669991252124436, 0.3755483781336474], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4707370825008095, 2.008844368113178, 1.6109110296065596, 1.3951145832982474, 1.2744593289997437, 1.199184521078731, 1.1486160031587518]}, "NODE_486": {"DENSITY": [0.9920581235133288, 0.8549721952360309, 0.7141685750561921, 0.6281508436261996, 0.5765982817544849, 0.5435940310879879, 0.52123127571859], "MOMENTUM_X": [0.008798002664930998, 0.156420102305992, 0.27441600082450346, 0.32967899321815647, 0.3551326655884586, 0.3685489151970193, 0.37668481370342494], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.472331130045382, 2.023722514467135, 1.6144856357517166, 1.3913252259835578, 1.267398296833471, 1.1911223347159903, 1.1402491538273754]}, "NODE_487": {"DENSITY": [0.9920085687281214, 0.8556304085246139, 0.7137551166761875, 0.6273765739986746, 0.5758575145376662, 0.5431283063522546, 0.52093063518805], "MOMENTUM_X": [0.00873523142643133, 0.15612155005953132, 0.27488352115422043, 0.3305898710590507, 0.355836749526045, 0.36920882620915824, 0.37725919010573117], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4721572249940764, 2.025744739794666, 1.6132139059874833, 1.3894454337357578, 1.2656475792918531, 1.1898325991366476, 1.1391626540176145]}, "NODE_488": {"DENSITY": [0.9994354439649985, 0.9319894367693494, 0.783436491270456, 0.670656140779268, 0.6044851228547936, 0.5635977357719552, 0.5362294432555937], "MOMENTUM_X": [0.0007224593496221118, 0.07583458036561172, 0.2184870382113318, 0.3035526143765527, 0.34230479311651923, 0.36170344140872845, 0.37261754160963545], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.498024927313226, 2.268747657326596, 1.8058397911608608, 1.494375928549325, 1.3283563264886176, 1.231923036935606, 1.1699435396618658]}, "NODE_489": {"DENSITY": [0.9919985600804235, 0.8554029232609327, 0.7132057733544717, 0.6267855826970415, 0.5755680137142248, 0.5430528446813945, 0.5209204497462605], "MOMENTUM_X": [0.008749427181230143, 0.15618841517678808, 0.275314615810349, 0.33079894869643367, 0.35595431224045737, 0.3692111049520384, 0.3771494182289646], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4721224777238984, 2.0249903064622163, 1.6116531868520354, 1.387842476935582, 1.264979626582408, 1.1897653585280044, 1.1394965582486225]}, "NODE_490": {"DENSITY": [0.992010240326345, 0.8552762153023614, 0.713120305860467, 0.6265358213030953, 0.5754342129455866, 0.5430322400985456, 0.5209335157720781], "MOMENTUM_X": [0.008766199223430825, 0.15606219797549428, 0.27551492129789595, 0.330748627961761, 0.35590087450161545, 0.36913465811823964, 0.3770341063583181], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4721634443063984, 2.024555389000331, 1.6114629506955527, 1.3871133258111417, 1.2645785479815912, 1.1895747937508667, 1.1395053063339455]}, "NODE_491": {"DENSITY": [0.9920125818005727, 0.8550287418858171, 0.7133325388415088, 0.6267524201514618, 0.5757339472073072, 0.5433875666450751, 0.521142724345854], "MOMENTUM_X": [0.008841217697071862, 0.15581032433208253, 0.27533957380544943, 0.3304493101387469, 0.3557035829462653, 0.3690309290431636, 0.3768547221358179], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.472172570560737, 2.023713494559401, 1.6120522595725264, 1.3875429663978744, 1.265029334008393, 1.190073358689897, 1.1399928967238195]}, "NODE_492": {"DENSITY": [0.9920235334557705, 0.854071911397436, 0.7131305905186188, 0.6271982739565846, 0.5766225796131176, 0.5444292485610293, 0.5220274373928292], "MOMENTUM_X": [0.008980607850673741, 0.1561183422257622, 0.2753281458424987, 0.33006695620730586, 0.35538489706509846, 0.3688250312053979, 0.3765970754041977], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.472211946920449, 2.0206176949141565, 1.6114300435395617, 1.3884993797750462, 1.266673809537274, 1.1919760289569235, 1.1418561342104347]}, "NODE_493": {"DENSITY": [0.9923951215698263, 0.8531753382039398, 0.7116427594574792, 0.6265017339477583, 0.5766326381494863, 0.5446263085832033, 0.522154457709084], "MOMENTUM_X": [0.008746214985218027, 0.15689538656095328, 0.2768247995346915, 0.33096952497152976, 0.3559765452283781, 0.3691996783785955, 0.3767802218719789], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.473502179830518, 2.0176887109054236, 1.6073430426072561, 1.386683813659664, 1.2663124472189844, 1.1922184081317733, 1.142207322878954]}, "NODE_494": {"DENSITY": [0.9938932235030327, 0.8573770185495978, 0.7103444483311536, 0.6228985431510851, 0.5725100099315588, 0.5403350840884633, 0.5180211540709643], "MOMENTUM_X": [0.0073890324129503825, 0.15488458732356275, 0.2799857665724734, 0.33454371504945635, 0.3586851838620905, 0.370989218738938, 0.37795845342707995], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.478707213245373, 2.030820828032814, 1.6044513842650732, 1.3784766049200923, 1.257212511045143, 1.1832818485012735, 1.1337091706363602]}, "NODE_495": {"DENSITY": [0.9608304904121998, 0.7701353453882056, 0.6543857452114985, 0.5936817224982862, 0.5548002330890223, 0.5275652556686962, 0.5088148771019049], "MOMENTUM_X": [0.039467625004999056, 0.2381365150276959, 0.3136086914331971, 0.349843373885211, 0.3651956735165044, 0.3732751610937068, 0.3786260238868214], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.3654310761410917, 1.7756919174658397, 1.4598896712789806, 1.3098767626587562, 1.2171222483200488, 1.1581464093339056, 1.1168600910628483]}, "NODE_496": {"DENSITY": [0.9693195746511617, 0.777510336103426, 0.6523015111910849, 0.5860932523230047, 0.545822139120578, 0.5192695586606932, 0.5015486345037441], "MOMENTUM_X": [0.03123762711514766, 0.22686702817221843, 0.31270095651196084, 0.35130576686972526, 0.3680035276156868, 0.3768499465564994, 0.38267684799917545], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.3941842226641317, 1.7930783944543742, 1.4500741741806347, 1.287621906515122, 1.1941386688196867, 1.1361973530336122, 1.0970406235989651]}, "NODE_497": {"DENSITY": [0.9712807292964192, 0.7804321150351496, 0.6517689311507642, 0.5830361018604572, 0.5424236732233735, 0.5155884269045793, 0.4973094358203035], "MOMENTUM_X": [0.030339844100910805, 0.22509339815444757, 0.31564347896222744, 0.3537812104559784, 0.3704367084464133, 0.37862387474510406, 0.38356438025147754], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.400904556077641, 1.8015419710840037, 1.4496551094205488, 1.280386783513691, 1.1859535119290416, 1.1274359783331844, 1.0881852722049699]}, "NODE_498": {"DENSITY": [0.9712795871095702, 0.7805883962311172, 0.6510462178102272, 0.5821941644259433, 0.5415904538637201, 0.514715776505394, 0.4966916666008369], "MOMENTUM_X": [0.030204991633440842, 0.22518567675172677, 0.3164968679573564, 0.35449215505571025, 0.37079897425863084, 0.3787141614063884, 0.38365596955296233], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4008920307356267, 1.8019063609643282, 1.4477509945044702, 1.2785188309079423, 1.1845633493501768, 1.1264315797731188, 1.087317929948422]}, "NODE_499": {"DENSITY": [0.9962637624576569, 0.8712970410068421, 0.7141859537936524, 0.6192214229673313, 0.5660875919152545, 0.5332350865505873, 0.511226868898769], "MOMENTUM_X": [0.004616073941873366, 0.13762408604626952, 0.27332306318480937, 0.33450742090481916, 0.36074339961639734, 0.3737233584130586, 0.3810321654498787], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4869538494848418, 2.0727568847268265, 1.6101699368068179, 1.3637103797824768, 1.2370180367539825, 1.1629045218583955, 1.114822027767141]}, "NODE_500": {"DENSITY": [0.9712236479865335, 0.7802103527837163, 0.6504517218082491, 0.5818815729960538, 0.5416400686692152, 0.5151093605322327, 0.49729169072584395], "MOMENTUM_X": [0.03019527326365452, 0.22540101245037894, 0.316796561848563, 0.3546380227673582, 0.37087462475389305, 0.37886307713064277, 0.3838443975604579], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4006982617486496, 1.800737188120596, 1.4461298741516084, 1.27758207639909, 1.1844277143103275, 1.1269201085661569, 1.0881320416099087]}, "NODE_501": {"DENSITY": [0.9712624903742623, 0.7799474068179879, 0.6503202302146001, 0.58171155882442, 0.5415791599880564, 0.5151109361970563, 0.4973139385325513], "MOMENTUM_X": [0.030241206563594, 0.22513630428770023, 0.3169622891553151, 0.35454772398595136, 0.37081156173965557, 0.3787598409470301, 0.3837063274116396], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.400834903328492, 1.7998464509222214, 1.4458658357235743, 1.2769754819318253, 1.1842232522832554, 1.1268570182295592, 1.0882340962261081]}, "NODE_502": {"DENSITY": [0.9713330877388185, 0.7797540878889616, 0.6505080743046421, 0.5817997578995449, 0.5416618017280406, 0.5153742590106972, 0.49771970597170523], "MOMENTUM_X": [0.03043799629256976, 0.22457811682414594, 0.31677759471453626, 0.3542338632333271, 0.37060644374418156, 0.37871128843323465, 0.3837765371010894], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4010885170242453, 1.7991235564213568, 1.4464278248348443, 1.277089148519681, 1.1845112145995031, 1.1272083536040154, 1.0886916237837778]}, "NODE_503": {"DENSITY": [0.9713636844756158, 0.7790845577091519, 0.6508000826977667, 0.5823052092688146, 0.5421526553932379, 0.5161331157546882, 0.49854490323063816], "MOMENTUM_X": [0.030891557526661916, 0.22448519899913194, 0.31646131343334877, 0.3536145627468722, 0.3699896711432165, 0.37835226809872824, 0.3835339252018371], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.401212297784397, 1.7970089886429716, 1.4472269247554599, 1.2784866316630243, 1.1862690312606554, 1.1290822440011998, 1.0905159590584805]}, "NODE_504": {"DENSITY": [0.9718833767237097, 0.7774652878604588, 0.6498836844609618, 0.5819080436821198, 0.542013304230376, 0.5164438785443451, 0.4988560529216761], "MOMENTUM_X": [0.030823918262569028, 0.2256996995252628, 0.3174971292288451, 0.3538003236339413, 0.36988816525526835, 0.3784175418282123, 0.3835753779622612], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.40299271534638, 1.7921129362932346, 1.4450116909916502, 1.2781344788764184, 1.1868508273426888, 1.1299652161312048, 1.0913069647418736]}, "NODE_505": {"DENSITY": [0.9752750438823878, 0.7785770733333309, 0.6464480906782735, 0.5771031037459324, 0.5373275498833903, 0.5122555547146465, 0.4947639815668064], "MOMENTUM_X": [0.02825404349231346, 0.22716120324818218, 0.32176260586902156, 0.3568060503128485, 0.37186724116053316, 0.37980463964971184, 0.3843018359664574], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4145847967484926, 1.7956591246520923, 1.437435488870072, 1.26830102178398, 1.1772274769762823, 1.120953952947792, 1.0828272079564183]}, "NODE_506": {"DENSITY": [0.9142619908733706, 0.6883884407848342, 0.5998056678359235, 0.5497085526723774, 0.5211019136883962, 0.5025438396393088, 0.48608328246163596], "MOMENTUM_X": [0.11321542653598474, 0.2862352966177374, 0.3436848213440866, 0.36359564735538763, 0.3743725890965433, 0.3814727584602166, 0.3834032614050744], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.214756783042175, 1.549495151181547, 1.330823414699884, 1.2139334382987246, 1.1448054682512048, 1.1009465888961782, 1.068325218362983]}, "NODE_507": {"DENSITY": [0.9237316899131961, 0.6927055521697844, 0.593067854257599, 0.5418673598576684, 0.5122660531086877, 0.4927012705397152, 0.4779419645765379], "MOMENTUM_X": [0.09188791388009204, 0.2853291835120837, 0.34558885857273963, 0.3691328686482874, 0.3796930687878627, 0.3855303202360941, 0.38806111182830316], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.243680013146672, 1.5568275266391645, 1.3053952011217946, 1.1871901665196989, 1.1189905407602927, 1.0771876046067903, 1.047811426466214]}, "NODE_508": {"DENSITY": [0.9270693158710387, 0.6935808770553304, 0.5900830093982645, 0.5366095759222497, 0.5066070643744194, 0.487774559129934, 0.473746681566419], "MOMENTUM_X": [0.09003258473880878, 0.28652278657165053, 0.3487255178283745, 0.3704565767619173, 0.38043297534051623, 0.38609074324867054, 0.3886324574291115], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.254684838531608, 1.5595815178168693, 1.3002118743513895, 1.1773658382226162, 1.1093563122998482, 1.0674436339665778, 1.038628338766598]}, "NODE_509": {"DENSITY": [0.9824102122045683, 0.789736145893148, 0.6449502100553759, 0.5701856365889776, 0.529401540054463, 0.5044220022512452, 0.4873230452249144], "MOMENTUM_X": [0.02012243944147144, 0.21272533679924355, 0.31978950434873854, 0.35895318349945515, 0.37530024337503276, 0.38350575063322645, 0.38789206917899227], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.4389909237476575, 1.8244042596044032, 1.4274270608362833, 1.2459392644191476, 1.1536055324740877, 1.099067060486897, 1.063282929322267]}, "NODE_510": {"DENSITY": [0.9274459392925427, 0.6926240718847443, 0.5895765974629049, 0.5362947979694782, 0.5070295097377661, 0.4881644823770714, 0.47356340258566865], "MOMENTUM_X": [0.09029972328971161, 0.286227874084261, 0.3499810509219964, 0.3710388830486546, 0.38137207154546804, 0.38677898177180686, 0.38876459244316813], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.25596129559722, 1.5564264780889625, 1.2991087030367054, 1.175815067953168, 1.10903570992272, 1.0672624746504296, 1.0383193798906112]}, "NODE_511": {"DENSITY": [0.9273595013231921, 0.6921114047225317, 0.5890418321761469, 0.5360999058488617, 0.5069863415637651, 0.48809433228063587, 0.4738847635780185], "MOMENTUM_X": [0.09031849921283716, 0.2864517019932513, 0.34999655107125305, 0.3710359627983379, 0.381149859019025, 0.38641245088376913, 0.3886344487645294], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.255669989653083, 1.5549465811986725, 1.2977297299520392, 1.1757117688167393, 1.109311830982979, 1.0679621796149252, 1.0393172977296543]}, "NODE_512": {"DENSITY": [0.9273379030722813, 0.6920872830175124, 0.5886418995133316, 0.5359953828326046, 0.5071086057941182, 0.4882920638234887, 0.47437368870011554], "MOMENTUM_X": [0.0902994027746363, 0.28660414170313897, 0.34959811880560976, 0.37096981154923986, 0.3811298507093507, 0.38641488118846806, 0.3888582751790227], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2555960064066793, 1.554930871756533, 1.296593300341028, 1.1755721337102039, 1.1092118184181343, 1.0680360240253466, 1.0396561091657308]}, "NODE_513": {"DENSITY": [0.9271993470875154, 0.6925837510588528, 0.5885331964177012, 0.5359612816888952, 0.5070856830426577, 0.4880553434651419, 0.4744538621476054], "MOMENTUM_X": [0.09023344438029066, 0.2869917878711845, 0.3491524521435996, 0.37075565066337446, 0.3809637160184332, 0.38605699723093245, 0.3887554897934958], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.255122274926356, 1.556479657386469, 1.2961704111316596, 1.1756250672359536, 1.1093782970850752, 1.0681301586786927, 1.0399668215711322]}, "NODE_514": {"DENSITY": [0.9263520299693985, 0.6934335797534971, 0.5891377679310431, 0.5369299996154423, 0.5080008743468913, 0.4886565878300673, 0.47531533599538833], "MOMENTUM_X": [0.08985202987452909, 0.2879206248408193, 0.34869216282035326, 0.37052834806421336, 0.38077969775819065, 0.38568393998593264, 0.3886513649811497], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.252214235768712, 1.5591858171306279, 1.297469622772329, 1.1774990338090179, 1.1113974192388774, 1.0699624220498705, 1.0417833782995491]}, "NODE_515": {"DENSITY": [0.9247897694198154, 0.692792676246247, 0.5892965659203669, 0.5382342130370728, 0.5091645728516532, 0.4894383713350493, 0.4761011495811982], "MOMENTUM_X": [0.08816788414224877, 0.289654865276438, 0.34902303560881853, 0.3710216933235984, 0.3810956209616962, 0.3857698414783553, 0.38883721709485763], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2467279537518134, 1.5577401295236992, 1.2974193780547825, 1.179023672583796, 1.1132597887255935, 1.0715491324297153, 1.043062667835275]}, "NODE_516": {"DENSITY": [0.9275762516272924, 0.6905921195832873, 0.5848092465964253, 0.5340118236415108, 0.5046329517576872, 0.4852078853965974, 0.4722709369541644], "MOMENTUM_X": [0.08353099018560523, 0.2944813151910383, 0.3531945518823859, 0.37377014302206324, 0.38237536585592885, 0.3863719795937555, 0.38909962941846504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2555174680410235, 1.5530150738790114, 1.2871615151203846, 1.1688088704373858, 1.103707050720071, 1.0626388183007356, 1.034762525510565]}, "NODE_517": {"DENSITY": [0.8233340508557768, 0.6148661127547556, 0.5546871732837434, 0.515508869395674, 0.4893094759127165, 0.4769070065910014, 0.4661927125795518], "MOMENTUM_X": [0.21005173323146825, 0.33149465604926676, 0.3721785901223787, 0.3782967124508165, 0.38126213010402615, 0.3869130364006309, 0.3888773316801902], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9372922436762925, 1.35442762325871, 1.2182547148288088, 1.1262088320536343, 1.0776176866606344, 1.0463580323774233, 1.0225267578215425]}, "NODE_518": {"DENSITY": [0.8351337370078977, 0.6070393477878916, 0.5388094549469077, 0.5002659400704546, 0.4780312488692524, 0.4666125172177748, 0.4561311901250455], "MOMENTUM_X": [0.19243890711738965, 0.3326027604885474, 0.3739928639084831, 0.38263460411078004, 0.3872770821676812, 0.3922713990755323, 0.393113996660094], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.969228550393253, 1.3335610372814586, 1.179659486784086, 1.0939756743412798, 1.0489576817220712, 1.0217642352299114, 1.0014192273710705]}, "NODE_519": {"DENSITY": [0.8362460511632763, 0.6073404702040626, 0.5353555727320746, 0.4973631283059701, 0.47435546952089047, 0.461423708531751, 0.4520011082908471], "MOMENTUM_X": [0.18620101620670196, 0.3392013081252674, 0.37662802959435815, 0.38564319300328187, 0.3887436678903613, 0.39181042791409415, 0.3930858926509339], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9714546068998045, 1.3356559038980302, 1.1690291547256455, 1.0848321405500319, 1.0392394985213784, 1.0116958907280171, 0.9922842557588056]}, "NODE_520": {"DENSITY": [0.9409066300220724, 0.6951300483182554, 0.5783833626859309, 0.5243908003875102, 0.4945604327763236, 0.4763235838890341, 0.464326496925804], "MOMENTUM_X": [0.06557427892263437, 0.28738831080152033, 0.35558574560285383, 0.3777394377550651, 0.3863393782670106, 0.39059534949413593, 0.39316907105140836], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.2987232465128797, 1.5583803320938783, 1.2637031346532779, 1.1407119642499162, 1.0775991399091132, 1.0398553407713296, 1.0150720488316864]}, "NODE_521": {"DENSITY": [0.8363609073346389, 0.6061321934202694, 0.5342397248612746, 0.49612631435947274, 0.473393858853744, 0.46142620751421737, 0.4522870997709271], "MOMENTUM_X": [0.18642236939862444, 0.33939053103723815, 0.3769493696876239, 0.3850579695208584, 0.38821304186179606, 0.3918610592791301, 0.3933198609072255], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9717872590638479, 1.332410266442486, 1.168102313024202, 1.0839433218117658, 1.0392946826706475, 1.0118944169322988, 0.9925692962120676]}, "NODE_522": {"DENSITY": [0.8363907752676073, 0.605380339483107, 0.534288626589514, 0.4966819985316007, 0.4744016387735059, 0.4625176338967023, 0.452666208997054], "MOMENTUM_X": [0.18680314466825293, 0.33894059169768015, 0.3770687798897564, 0.38528296821118335, 0.38867738829815524, 0.39230805255549295, 0.3931289936598132], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9719534480034235, 1.330063934613711, 1.1676766872218225, 1.084435828598804, 1.0404120603152045, 1.0132623890671795, 0.9938059380917428]}, "NODE_523": {"DENSITY": [0.8363379347260504, 0.6055931370992802, 0.5339692847228501, 0.4964092499125608, 0.47408811113100113, 0.4622475922396302, 0.4525924604545186], "MOMENTUM_X": [0.1867572945042245, 0.339511565872694, 0.3764189894210788, 0.3850279086994166, 0.38825449051880634, 0.39190736958954464, 0.3928970238542045], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9717743576755378, 1.3309089047599734, 1.1661890733518512, 1.0845017225982592, 1.0401845541665806, 1.0131969240601262, 0.9939756959101245]}, "NODE_524": {"DENSITY": [0.8361492217232733, 0.606272660615436, 0.5339767963962352, 0.4964747235063158, 0.47440925556103275, 0.46236746528136347, 0.45263370438637723], "MOMENTUM_X": [0.1864854975033059, 0.3407171984078779, 0.37613767511052265, 0.38508322462060357, 0.38845028106398216, 0.39188233902416375, 0.39281440606929297], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.971118019558793, 1.3334270401407444, 1.1652510509419283, 1.08472366649932, 1.040415285102519, 1.0133838935625794, 0.9943161211694664]}, "NODE_525": {"DENSITY": [0.835139456105428, 0.6071900048917539, 0.5348875019199234, 0.4973419207691812, 0.47576750122515804, 0.4631595340091496, 0.453286317130465], "MOMENTUM_X": [0.18527714330036907, 0.3412563358684417, 0.37587458217064057, 0.38502093484626587, 0.3888410904559478, 0.3917888223763948, 0.3926611573141537], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9676911825394532, 1.336638881744604, 1.1665606086249527, 1.08670905322409, 1.0425657168366609, 1.0151726036183084, 0.9960280845702951]}, "NODE_526": {"DENSITY": [0.83251919186555, 0.6068979282802847, 0.5353490817686444, 0.49801622456619526, 0.4773134392455909, 0.4640667964284468, 0.4541778410990114], "MOMENTUM_X": [0.18302580530295942, 0.3406890783683502, 0.3748303379725895, 0.3844238075005761, 0.38915472530745715, 0.3917583109067626, 0.3928097268605648], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9588480138284692, 1.3358495677625741, 1.1675053687633743, 1.0889520193145803, 1.0449378105663636, 1.016952835808554, 0.9974549491274567]}, "NODE_527": {"DENSITY": [0.8339009163504821, 0.6015225681949257, 0.5282340692467098, 0.49186132810174615, 0.4725191064060207, 0.4592472272683742, 0.45010219831158604], "MOMENTUM_X": [0.18335374161843565, 0.34592510941354215, 0.3760816801483129, 0.38458110673718726, 0.38916473553615827, 0.39095502550819056, 0.3920953806435855], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.9629299544053944, 1.3250123548432922, 1.1551186654909809, 1.0782721669612327, 1.0353593173143902, 1.0079221205758444, 0.9891287067554027]}, "NODE_528": {"DENSITY": [0.6383502828075782, 0.5386045233926494, 0.49194464726534587, 0.4742662284213418, 0.4614078056939448, 0.44653432885243927, 0.44475963590905765], "MOMENTUM_X": [0.22349471458683637, 0.3622589788811867, 0.37394088069868653, 0.38316674056616185, 0.3886450470552516, 0.38577871704661204, 0.3918176414395177], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.399931915808467, 1.1945028531339112, 1.0942760662349273, 1.040365492794822, 1.0137629380806692, 0.9897505283618714, 0.9769074394647824]}, "NODE_529": {"DENSITY": [0.6658231511737399, 0.5251308181794833, 0.48147169134950724, 0.46150543658477006, 0.44714875990051917, 0.43817777844666567, 0.43508433464784385], "MOMENTUM_X": [0.25623406553458655, 0.3731495006528112, 0.3896904650748606, 0.39343903559197774, 0.3946501754230066, 0.3948057389965782, 0.39752929916765956], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.4726618851315054, 1.1443619731670793, 1.0576724910310753, 1.0068665478039391, 0.9839589298455775, 0.9671390628373303, 0.9567453241145207]}, "NODE_530": {"DENSITY": [0.6672169215578034, 0.5180428699815663, 0.4728903033369482, 0.4538272756697902, 0.4424370160343584, 0.43371678184066176, 0.4297253577095578], "MOMENTUM_X": [0.255596000956884, 0.373808969742729, 0.3868437662281588, 0.39136563805415675, 0.39384956593635395, 0.3936856588877913, 0.39530295147675376], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.4768642389326296, 1.1359978317213064, 1.0425290095030646, 0.9959823457270567, 0.9730863139249876, 0.957295773137707, 0.947362985795443]}, "NODE_531": {"DENSITY": [0.8517773682272574, 0.5968282398167338, 0.5153903334406469, 0.4800362710404985, 0.46191520710948764, 0.4497082938002759, 0.44209663284335704], "MOMENTUM_X": [0.16163990838600836, 0.34748738135469054, 0.38027519871558063, 0.3900317357033714, 0.3944357481443588, 0.39570783348323796, 0.3968165828813804], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [2.013947585150633, 1.3058449056853254, 1.1207691459013978, 1.046721896073001, 1.0084912031532558, 0.985212561516759, 0.9700144248939673]}, "NODE_532": {"DENSITY": [0.6651001940594584, 0.5196370091029946, 0.4741175193881179, 0.4557504881668665, 0.4436890814991422, 0.4336818050433467, 0.430657650763186], "MOMENTUM_X": [0.25282585472693614, 0.37713205735294103, 0.38759527855080667, 0.3930562748412184, 0.39460157681338415, 0.393245342524868, 0.39579520496696263], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.469320332212273, 1.1391717710061764, 1.0419963928226292, 0.9984848153416047, 0.9747422152284558, 0.9582463952100264, 0.9485769507584294]}, "NODE_533": {"DENSITY": [0.6649835969494255, 0.5189813190886019, 0.47354461379195545, 0.45558401716649694, 0.44348206784713345, 0.4346621731186546, 0.4316761516267805], "MOMENTUM_X": [0.25329210017885323, 0.37645458849337665, 0.38687541531295444, 0.39245480134179384, 0.3939362151056659, 0.39358890642980465, 0.3961305169428751], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.4691779302070054, 1.137534184676786, 1.0419414651911965, 0.9989441309224832, 0.9756876811875764, 0.9597428013750001, 0.9501492356299407]}, "NODE_534": {"DENSITY": [0.6650178160066365, 0.518930068238301, 0.4738126401557068, 0.4561430558931153, 0.4433663915906557, 0.4350553559696668, 0.4312219688318228], "MOMENTUM_X": [0.2534175021528688, 0.3765769647507233, 0.38700952409722256, 0.3928192232540145, 0.39369438102823767, 0.3938586195918232, 0.395579824020709], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.4693491885506955, 1.1377496288084057, 1.0418418773946658, 0.9990535528175108, 0.9755372398984217, 0.9600276077492246, 0.9500833643734345]}, "NODE_535": {"DENSITY": [0.6649063996592268, 0.5188874016979246, 0.4739588917434636, 0.4564880674229876, 0.4431067049064774, 0.43554090013084434, 0.43110516060175896], "MOMENTUM_X": [0.25315204087071963, 0.37709459543982, 0.38735861809869204, 0.39324330424067117, 0.39338680527483544, 0.39423374247777604, 0.39534615239145415], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.4689446596911098, 1.138700005420647, 1.0422697717368485, 0.9995893574502457, 0.9754889183679882, 0.9605415432814066, 0.9503680022314365]}, "NODE_536": {"DENSITY": [0.6654355245550885, 0.5184648367367791, 0.4747348407610668, 0.4574402407365815, 0.4438475418521736, 0.4370771889343224, 0.43175045255264277], "MOMENTUM_X": [0.2523449457206089, 0.37503549799660607, 0.38730121740937473, 0.393349404112248, 0.3932688559536375, 0.3948617838421799, 0.39518699637651716], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.4697044094620633, 1.137885494420668, 1.04460834866073, 1.0017978765160787, 0.9773369922328151, 0.9626954365592598, 0.9520828933928195]}, "NODE_537": {"DENSITY": [0.6689625247398877, 0.5179706441904386, 0.47621563515964566, 0.4580454669217896, 0.444447458724457, 0.4381740407930153, 0.43219904459011294], "MOMENTUM_X": [0.2570839605247107, 0.3717387613701873, 0.3868155776007739, 0.39254833151048735, 0.39275070215421437, 0.3949789865410742, 0.3949109292146874], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.4798506528365944, 1.136246607450221, 1.0475501856783722, 1.0045001768722832, 0.9794949746455187, 0.9645772261289041, 0.9534027328108647]}, "NODE_538": {"DENSITY": [0.6764716889749203, 0.5119910253929352, 0.4727165318350754, 0.4531289675559408, 0.44052521581227233, 0.4343315882826191, 0.4284164008639318], "MOMENTUM_X": [0.28177266812330176, 0.3761968114510736, 0.38942610069589745, 0.3922492315293957, 0.39229364238575537, 0.39396359678991894, 0.39358981651080827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5118036425319954, 1.1256084464477067, 1.037944165039935, 0.995446108434626, 0.9709965547162406, 0.956407720017142, 0.9457000712662855]}, "NODE_539": {"DENSITY": [0.5719467631115494, 0.48218884835636, 0.45277864529427314, 0.42862863709318444, 0.4354510170172246, 0.42309591895822485, 0.41930434020886354], "MOMENTUM_X": [0.39295788221878425, 0.41004665913053995, 0.39402849038141496, 0.3842603163085616, 0.3985777586707909, 0.390334817129236, 0.3906363671389426], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.236778115931489, 1.072712424728938, 0.9842611622781098, 0.9598905795910903, 0.9530242780421845, 0.937317229001148, 0.9312666706602164]}, "NODE_540": {"DENSITY": [0.5326663179785427, 0.45482342166096673, 0.4279486527583538, 0.4165197509402996, 0.42000941608249437, 0.4106042142256187, 0.4120526375755606], "MOMENTUM_X": [0.3739400470948889, 0.41194288656628786, 0.39902778049606824, 0.39610405045588165, 0.4038933259610929, 0.3962223906143406, 0.3989983391435987], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1546007346724214, 1.004156821470357, 0.942020259882601, 0.925603494104355, 0.9235077530678164, 0.9142976396217188, 0.9128261096946553]}, "NODE_541": {"DENSITY": [0.6956043789773817, 0.501125363860139, 0.4601720708767936, 0.4403515877912238, 0.4307558689684862, 0.42533106945190013, 0.42097314269651004], "MOMENTUM_X": [0.2845661855438777, 0.38534032495555587, 0.39782710920605735, 0.3986216165914976, 0.3991335288392628, 0.3995866248530194, 0.39906976445283493], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.5609751552915905, 1.0863778747328723, 0.9995742427855843, 0.9639383776678584, 0.9457488317033395, 0.9353873885001551, 0.9283310196162422]}, "NODE_542": {"DENSITY": [0.5397334539887535, 0.4491524140590252, 0.4249839516841096, 0.41318668202590686, 0.4136907886107425, 0.40950870457999894, 0.4085029990085606], "MOMENTUM_X": [0.3992919361005057, 0.4090963549551367, 0.3988882651359464, 0.39408891363677695, 0.3984008262058557, 0.395968916969343, 0.39608107862876474], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1778149549234038, 0.9865272962312229, 0.9347763467160966, 0.9169657536023047, 0.9133425715924981, 0.9078103946065872, 0.9054568568261008]}, "NODE_543": {"DENSITY": [0.5368789229570123, 0.44823713438961177, 0.4258717247709891, 0.414555949193291, 0.41637377473357384, 0.4114859218452025, 0.409226170310194], "MOMENTUM_X": [0.3939913145966229, 0.40871212353421016, 0.398172604594553, 0.3943667413569022, 0.3996052212696341, 0.3965634066586857, 0.39559261435987925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1679068490609752, 0.9905023373294584, 0.9354699278306158, 0.9214947731307075, 0.9171542476891756, 0.9112252414442142, 0.9081315337538713]}, "NODE_544": {"DENSITY": [0.5359580839731439, 0.44957613787973727, 0.4264447112485051, 0.4151107442328791, 0.4169973299164557, 0.4110119485893232, 0.41085216265767005], "MOMENTUM_X": [0.3928693508221508, 0.410881556327708, 0.3982656166974589, 0.3946552646763638, 0.399774139266523, 0.39555547424570797, 0.3966215185833748], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1647891848331346, 0.9930208307003445, 0.9352675849619212, 0.9227422292868006, 0.9186245070834326, 0.9121743722879683, 0.9103067776410756]}, "NODE_545": {"DENSITY": [0.5360574768678976, 0.44916403391111637, 0.4259102976682901, 0.415249570253296, 0.4167782538595513, 0.41084396007834917, 0.4113879455859994], "MOMENTUM_X": [0.39311386372559726, 0.4100631033213812, 0.3982196536066562, 0.39471448255368663, 0.39956813091021204, 0.3954325157662581, 0.39713334447516185], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1652077329550004, 0.9917500910402854, 0.9360207542278712, 0.9217894644015597, 0.9181954250952072, 0.9119326928212325, 0.9105267638209479]}, "NODE_546": {"DENSITY": [0.5361263654946874, 0.4488906206361887, 0.42600935389984246, 0.4162525688729308, 0.4168078675579248, 0.4111896919634463, 0.4118094893679287], "MOMENTUM_X": [0.39303976834254284, 0.40894108877104723, 0.3986998697022739, 0.39546018055128984, 0.39930286312388497, 0.3955724339757826, 0.39730669035671135], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.165153628374314, 0.9899112733597712, 0.9381674764273086, 0.9224247870047575, 0.9183126749860931, 0.9125211373949855, 0.9110731167326772]}, "NODE_547": {"DENSITY": [0.5379290922210208, 0.44874754430871167, 0.4257517900091556, 0.41785708738694366, 0.4170957254323727, 0.4125340650213869, 0.413138561911054], "MOMENTUM_X": [0.3941793702645711, 0.40596727713199554, 0.3973181353553545, 0.39596358112544605, 0.39844402047689664, 0.39588478523420656, 0.3976508294661315], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1700916287713958, 0.9855166878791563, 0.940231646720574, 0.9253115782544239, 0.9201172573974379, 0.9150331681039641, 0.9133447457719774]}, "NODE_548": {"DENSITY": [0.5408070284593901, 0.4499883645206562, 0.4262345862257607, 0.420565919794789, 0.4171438083703906, 0.41394487651458345, 0.4137296176844598], "MOMENTUM_X": [0.40263399409434175, 0.4053455256365353, 0.3967330647184057, 0.39760853448759936, 0.39744868775196934, 0.3963985729259959, 0.39749059228226524], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.184779967221546, 0.9823331855870706, 0.942345468968293, 0.9288149696139685, 0.9220038640992594, 0.9174492793045275, 0.9150122580494632]}, "NODE_549": {"DENSITY": [0.5287303084428168, 0.4449163704381526, 0.42287860857392257, 0.41941507826890206, 0.41368731759562954, 0.4122331158525031, 0.4107609252112728], "MOMENTUM_X": [0.41106911333552054, 0.40569226355913734, 0.3963560985019625, 0.3979993437887969, 0.395170243747988, 0.3956719030698236, 0.39546713963068686], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.1687281521392645, 0.9703225708693316, 0.9354404487075866, 0.9229912373097406, 0.9153235462266759, 0.9117930105715192, 0.9090470521462449]}, "NODE_550": {"DENSITY": [0.44184553118695785, 0.3789542914321107, 0.3994693555828178, 0.39454859294133243, 0.3854312194727793, 0.40178226861838484, 0.3879921063526745], "MOMENTUM_X": [0.45328529821723573, 0.380160617053072, 0.3943167360538763, 0.392967547708851, 0.3831191043418923, 0.3995226801144583, 0.3859881921667978], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9624291825659026, 0.8869524571322887, 0.8720628082791472, 0.8816891581961881, 0.8734286207838344, 0.8811472475288883, 0.875747304434246]}, "NODE_551": {"DENSITY": [0.505715670255632, 0.42009138618263503, 0.4068775220951489, 0.40650899474646596, 0.4030272126746271, 0.4044205494683557, 0.4035316309953539], "MOMENTUM_X": [0.3837400784626678, 0.4024305486588928, 0.4007571121730925, 0.4027212577394763, 0.39990633665721287, 0.40128297196719503, 0.4001340015050886], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.0722251988192215, 0.9148322709965515, 0.8988252322718604, 0.8951316998191315, 0.8932787998931782, 0.8944145120100423, 0.8945812862671655]}, "NODE_552": {"DENSITY": [0.362486750289913, 0.3497051414088652, 0.375170437638104, 0.36836823894575976, 0.37646027494870493, 0.382163159960306, 0.3765604345207607], "MOMENTUM_X": [0.4166721119130232, 0.39151127036556016, 0.4039221889017861, 0.39437751495491097, 0.39880280787702416, 0.4019423917458891, 0.39425834013964445], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.7886165536721459, 0.8236876415787624, 0.8254914830879925, 0.8390141653384727, 0.8458602856155765, 0.8514074573888409, 0.8519466858954098]}, "NODE_553": {"DENSITY": [0.3543893270068282, 0.3481807944727681, 0.36614044348279273, 0.36535531634114987, 0.36924976824263334, 0.37394700587665264, 0.37393135379842607], "MOMENTUM_X": [0.4135718165847606, 0.3892311534743572, 0.3971914049323316, 0.39294429984886753, 0.3935984373574015, 0.39585461057761884, 0.393829428705877], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.7931590223998807, 0.8063991599775765, 0.8132750510504677, 0.8261825651943118, 0.8315047173588983, 0.8374939114572141, 0.8408365206084968]}, "NODE_554": {"DENSITY": [0.3636032343122317, 0.34975818415616683, 0.36692812820559767, 0.36822513551191927, 0.36834541331582416, 0.37697478400043666, 0.3741231343414951], "MOMENTUM_X": [0.4255503566911012, 0.3893372684465028, 0.39717849579989967, 0.3958278602467606, 0.39247569675235666, 0.39890237016825686, 0.39390237680067575], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8165926555528606, 0.809915120904715, 0.8174561703990711, 0.830986315007973, 0.8329941702927781, 0.8409973852357682, 0.8420866351441075]}, "NODE_555": {"DENSITY": [0.3630240492085148, 0.35006471476409007, 0.36860583633953525, 0.3687788025816641, 0.3700287383630597, 0.37767975457150027, 0.373861886417188], "MOMENTUM_X": [0.42358833063582996, 0.38987498718057245, 0.39773018689609646, 0.3955051478439051, 0.39340199333476333, 0.3988073449478018, 0.39283062267698154], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8135797612825321, 0.8139621785283522, 0.8180877416621285, 0.8323670193019709, 0.8354353373191297, 0.8430150895645094, 0.8434313492994056]}, "NODE_556": {"DENSITY": [0.3626031652567779, 0.3502318561547661, 0.36868974309547764, 0.36764083817338433, 0.37132243827758254, 0.3765864249154519, 0.37466964580233175], "MOMENTUM_X": [0.422915217089566, 0.3901044962828687, 0.3981238631766759, 0.394018791071679, 0.39472857864682304, 0.3975773855923163, 0.39360731871695], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8121607085586638, 0.813235092403971, 0.8191082683177203, 0.8306105065897694, 0.8361215409297073, 0.8423475163735386, 0.8439595128467624]}, "NODE_557": {"DENSITY": [0.3626850457268361, 0.3491249620130554, 0.36837397599419963, 0.3667049668304538, 0.37244755002255503, 0.3758466604871534, 0.3757124191198508], "MOMENTUM_X": [0.42322870484287745, 0.3884855255496667, 0.3986609111255904, 0.3932005099875256, 0.3960611672596792, 0.396871144297201, 0.39464213309118906], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8127923692527725, 0.8087597041278952, 0.820756339476335, 0.8292377251090911, 0.8366345669782256, 0.8419926040987201, 0.8447207428626258]}, "NODE_558": {"DENSITY": [0.3634052642055106, 0.3504009821698878, 0.3696049415104872, 0.3665311184004733, 0.3742259263541425, 0.375723091981302, 0.37762488188590787], "MOMENTUM_X": [0.424705716418952, 0.38786032050884844, 0.39935577183962223, 0.39219306274297017, 0.39704838520777425, 0.39592109459012254, 0.3957124203940142], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8163692591729586, 0.806929671345152, 0.8239473374875617, 0.8307691199149541, 0.8395565428872426, 0.8439063319141282, 0.8476591714321805]}, "NODE_559": {"DENSITY": [0.36677467016947335, 0.35753757393811714, 0.37275555239429, 0.36852823339012875, 0.37681586159860353, 0.3757266807368802, 0.3794348304392514], "MOMENTUM_X": [0.42755722166937127, 0.3928212342222472, 0.40115156945479347, 0.3929289026179229, 0.3988310985358107, 0.3952197994461262, 0.39691016144161456], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8301901112481211, 0.8180658495443487, 0.830435024516713, 0.8342758569815208, 0.8429432032589481, 0.8453982997317707, 0.8499827412170844]}, "NODE_560": {"DENSITY": [0.3545691817220816, 0.3552354986739312, 0.36346125290179404, 0.3632822752247811, 0.37170316086554317, 0.37147720445044796, 0.3771838535484909], "MOMENTUM_X": [0.40799699290946967, 0.39423261591200814, 0.3958847248397438, 0.39080246050481804, 0.39591909715197027, 0.39222561259562644, 0.3952030703848665], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8085108749550894, 0.8120726782547186, 0.8168877406592088, 0.8213250971420392, 0.8316283598062348, 0.8359009940946106, 0.8430460060416408]}, "NODE_561": {"DENSITY": [0.2813442343723966, 0.32972615147559553, 0.34124250620876023, 0.35289662091988877, 0.36150780107682684, 0.36616278951721354, 0.3726885031974494], "MOMENTUM_X": [0.37321595774742744, 0.3972831497954694, 0.394675884648342, 0.39659197363124016, 0.3981786997007031, 0.39713619975835845, 0.39921878186117554], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6511076477147606, 0.7495505310697187, 0.7770719570462433, 0.7967844376655491, 0.8131211904432138, 0.8238875512605093, 0.8341386484404295]}, "NODE_562": {"DENSITY": [0.42408235873321887, 0.42596538538353423, 0.38042934282932794, 0.4268233237785512, 0.39456633941940916, 0.4047574046039474, 0.4117346954711586], "MOMENTUM_X": [0.43454478251660655, 0.40420336054901385, 0.3608075972807266, 0.41001970654257824, 0.37786150529462864, 0.3887153450258982, 0.3960972771386797], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.0458334947212362, 0.9096671815110904, 0.8843178036727131, 0.9155065430340962, 0.8924836273326794, 0.8995842277782361, 0.9025264049224787]}, "NODE_563": {"DENSITY": [0.41266914284171946, 0.38640222720627204, 0.3737661661291603, 0.400357868950321, 0.37670703921820853, 0.3943616460771098, 0.38966626734353577], "MOMENTUM_X": [0.4374055531126922, 0.4013036629917077, 0.3839501689245812, 0.41375584417576067, 0.387564272861168, 0.40418110254492823, 0.3985817443990666], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9497456814350991, 0.8675819262101896, 0.8480940782360802, 0.8741538213354546, 0.860000632468474, 0.8705119132959279, 0.8705044295951984]}, "NODE_564": {"DENSITY": [0.393793710702276, 0.3720681989634309, 0.36577660668354184, 0.38102926376841284, 0.37109927749110094, 0.37838608425383663, 0.3781818942376617], "MOMENTUM_X": [0.4204632922605134, 0.3932935530868571, 0.3838289356177159, 0.40030907467192756, 0.38833012871649986, 0.3948468446144916, 0.3934686573445352], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9026090354181452, 0.8352619698088208, 0.8233991602330857, 0.8412327885942716, 0.8374358538495732, 0.8430769257089523, 0.8462660848695519]}, "NODE_565": {"DENSITY": [0.3939112627315666, 0.3758034277081747, 0.36384778087165254, 0.3820945463142013, 0.3708409854613807, 0.37481713607416955, 0.37915210486089845], "MOMENTUM_X": [0.4235533238852684, 0.3953669116443491, 0.3834548365880705, 0.4028225082270987, 0.3904045396094161, 0.3936183021866694, 0.3974891127745442], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.91209715789776, 0.8325457489577162, 0.8273364428632022, 0.8430975154535172, 0.8373176778403867, 0.8403120374019275, 0.8447249122073496]}, "NODE_566": {"DENSITY": [0.395555467709696, 0.3761570097425638, 0.363621309273571, 0.38482043092771656, 0.3701206174702283, 0.37735600568913946, 0.37836004208178164], "MOMENTUM_X": [0.42586375465575654, 0.39558997519202116, 0.38224397595000703, 0.4053757342959672, 0.38900831065676694, 0.39569335632487057, 0.396254040928573], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9164448075690421, 0.8348890151535509, 0.828658536095223, 0.8462910195710722, 0.8375441825432999, 0.8432120179103516, 0.8451088135483638]}, "NODE_567": {"DENSITY": [0.39548296616081846, 0.37590052142578945, 0.3649493215794637, 0.3835402187904639, 0.3703917759780938, 0.37901748225587145, 0.3770283360080809], "MOMENTUM_X": [0.4256646206513051, 0.3954749250898511, 0.383614785047212, 0.4038602188529893, 0.3888603595992045, 0.3970629570170424, 0.39434279655043725], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9160769908495581, 0.8352605252519694, 0.8296714060092631, 0.845073713099646, 0.8377773759453927, 0.8446061939218307, 0.8449106656770408]}, "NODE_568": {"DENSITY": [0.395616286750677, 0.37512314307898625, 0.3660216439130364, 0.38154222582385383, 0.37147042411794257, 0.37977829390391105, 0.3770764856205546], "MOMENTUM_X": [0.425948789888687, 0.39375489991036594, 0.3851293129368565, 0.40176303424231063, 0.3900805201584303, 0.39771391495893804, 0.3940672856103463], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9167015848616019, 0.8316649176191165, 0.8315495308656109, 0.8440864883718192, 0.8393216906793193, 0.8456770783016692, 0.8459731372095062]}, "NODE_569": {"DENSITY": [0.39606041650054946, 0.3748357138063145, 0.36937417941984574, 0.3809549991540339, 0.3732175239295109, 0.38088645142109473, 0.37785559817194503], "MOMENTUM_X": [0.42735221170598764, 0.3928657831521952, 0.38770985762528143, 0.400217197636004, 0.39096153316042126, 0.39776331745544713, 0.39363574904608356], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9189298555770092, 0.831223881540189, 0.8341740950251654, 0.8454881677542835, 0.842987363731574, 0.8489112004805446, 0.8490248480229451]}, "NODE_570": {"DENSITY": [0.3959794409611027, 0.3750051851370258, 0.3752855833232295, 0.3799506189851489, 0.3760729268082338, 0.38115819678761725, 0.37776031626631873], "MOMENTUM_X": [0.4257482527945323, 0.3941153475171258, 0.3928615629280145, 0.39793627694424155, 0.39316140343249095, 0.39774288141743486, 0.393603728948386], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9166037116011696, 0.8404331039328934, 0.8393326899522187, 0.84567627559921, 0.8452673118664251, 0.8491373093705641, 0.848392161891336]}, "NODE_571": {"DENSITY": [0.3856855804770801, 0.36041287040896625, 0.36820461942178506, 0.36377849684027364, 0.36641940655607375, 0.3676026125220949, 0.36715222644517104], "MOMENTUM_X": [0.40857364874451113, 0.3832249539310148, 0.39161714422679494, 0.3880007855098036, 0.3910179571405887, 0.39197033336119474, 0.3909390018901799], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8696379967321138, 0.8216158911180604, 0.8199336755654275, 0.8192079976387433, 0.82219236374849, 0.8243971788621195, 0.8257400072548168]}, "NODE_572": {"DENSITY": [0.3535655421738098, 0.3265950111054131, 0.3434251591589676, 0.33794087340110596, 0.3479299596838592, 0.34772182365994986, 0.35304424809293145], "MOMENTUM_X": [0.4164144671388821, 0.3864395355941925, 0.4015065874743174, 0.3919220915248864, 0.3992482910568457, 0.3953115152596576, 0.39742634747672395], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.766240906605468, 0.7503798462897051, 0.7683804634772854, 0.7737560239329023, 0.7861425681812213, 0.7915061464714472, 0.7990738904515574]}, "NODE_573": {"DENSITY": [0.34172941006763186, 0.4637367030838021, 0.4059636419009976, 0.41411707353112737, 0.43696081766831096, 0.40511734000478217, 0.42898486987103274], "MOMENTUM_X": [0.346761243911935, 0.41985382017468226, 0.37586369267455455, 0.3823202561595759, 0.4018443415138837, 0.37351465664939876, 0.3957703382722237], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [1.0184841607811959, 0.9197811847955273, 0.9288620279159492, 0.9323439885824516, 0.9343132727414345, 0.9249446649123095, 0.9341966313099571]}, "NODE_574": {"DENSITY": [0.3569298401884362, 0.4538275784380305, 0.3910340277002893, 0.4218660081456403, 0.4164189700556012, 0.4024000313833621, 0.4199993730007644], "MOMENTUM_X": [0.3647254636613937, 0.4283541607526995, 0.37619051960554906, 0.4086604593715275, 0.40312520391061357, 0.39080401566367956, 0.40800756651181375], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9956632002039824, 0.9224976318535796, 0.9083039689745946, 0.9260806856580781, 0.9142622660549077, 0.9101520658995627, 0.9161971655411245]}, "NODE_575": {"DENSITY": [0.35298750765235326, 0.4369546543895357, 0.38908744837311576, 0.40760554205075533, 0.40186685077857026, 0.39672160615410007, 0.4019860808810514], "MOMENTUM_X": [0.3539822051964191, 0.42014194742209837, 0.37860533277924197, 0.40049401071780333, 0.39508428993420636, 0.39110295670758016, 0.3967297757620564], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9576199006318069, 0.9105682452172776, 0.8872395917056096, 0.8961213243470691, 0.8875178176858567, 0.8861429229379508, 0.8875491506894286]}, "NODE_576": {"DENSITY": [0.3505159877420575, 0.43514984654684385, 0.3935115436951869, 0.4005882766699716, 0.40521227406948546, 0.39315145778636185, 0.3992705621600919], "MOMENTUM_X": [0.35231081799742714, 0.41702677168331836, 0.38561544083565047, 0.3942125325944325, 0.4003214865896138, 0.38989549808908497, 0.39646617352882935], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9525979861312718, 0.9014544012930489, 0.8925463333620766, 0.8890924671870716, 0.8891008282138197, 0.8819964648828431, 0.8839067398365598]}, "NODE_577": {"DENSITY": [0.350841387628603, 0.43633671901604254, 0.3927593136784398, 0.4022559064491956, 0.40767560315953233, 0.39284889195795397, 0.4025890101254547], "MOMENTUM_X": [0.3533145966841299, 0.41640124389424615, 0.38526993518300856, 0.3947824262002041, 0.4020436830671918, 0.38871626553499955, 0.39915402351661866], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9550439781686003, 0.8986800351306292, 0.8966357310214764, 0.8925164695264994, 0.8922526741112863, 0.8836500156245474, 0.8876136244839188]}, "NODE_578": {"DENSITY": [0.35103186806709913, 0.4361924988582815, 0.39238420318614864, 0.40441296170253743, 0.40540750678036, 0.395051742192012, 0.4032870382936805], "MOMENTUM_X": [0.3535617205910999, 0.41644239260232097, 0.3844908152408176, 0.39718838645252585, 0.3992921052982149, 0.39031520955267707, 0.3992801639699269], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9555400978131907, 0.8992902145320556, 0.8958280206799502, 0.8953554624544243, 0.890601547785967, 0.885534568107323, 0.8888012386390831]}, "NODE_579": {"DENSITY": [0.35102517730008964, 0.4359806604786981, 0.39302430511841896, 0.4046088583168928, 0.40318259102657866, 0.3972921186300143, 0.4025180821784646], "MOMENTUM_X": [0.35357972740874033, 0.4159574228561994, 0.38459245453102936, 0.3977275560596359, 0.3972122786951098, 0.39248296871820587, 0.3983713858886003], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.955491291712845, 0.8989388218046781, 0.894557440738846, 0.8964145196162173, 0.8904045282267976, 0.887234843891913, 0.8890533050602811]}, "NODE_580": {"DENSITY": [0.35060450723328096, 0.4362572819121955, 0.3938526825289409, 0.40664642286084746, 0.40182696584648797, 0.39891506690123774, 0.4013596214090828], "MOMENTUM_X": [0.3531442909549536, 0.41765340855775906, 0.38464151435117644, 0.39952762745909465, 0.396021063141951, 0.3939739690298683, 0.39704974341340443], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9537148834934229, 0.9034410346913769, 0.8930009471153184, 0.8978224538566919, 0.8912835772327353, 0.8888276732487683, 0.8892620846579942]}, "NODE_581": {"DENSITY": [0.34843565895718465, 0.4350313469810946, 0.39381901326688107, 0.40821900893412655, 0.3987693494326836, 0.40013413232900935, 0.3989264195331332], "MOMENTUM_X": [0.3477056608759541, 0.42071038298856206, 0.3850605162998193, 0.4018969741862881, 0.39395065455800693, 0.39628156106417944, 0.3958833186834345], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.941899427457322, 0.9148305452567939, 0.891826736418831, 0.8963596616593803, 0.8875512821756477, 0.8865693163503137, 0.8847071200179824]}, "NODE_582": {"DENSITY": [0.34694196288094353, 0.4220068221857305, 0.3858501947119491, 0.3975498376823314, 0.3848845877470432, 0.38991982027733785, 0.38508892950756696], "MOMENTUM_X": [0.33543969810160357, 0.409321919446905, 0.37917225476837224, 0.3955630490222496, 0.3855150618794244, 0.39264163555849024, 0.389316275845192], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.9122864682719012, 0.9004551073819482, 0.8722089700580379, 0.8729786144778122, 0.8622339731345329, 0.8625473143248629, 0.8588022182054383]}, "NODE_583": {"DENSITY": [0.3599912481356255, 0.39146964069421347, 0.3735000761186773, 0.3764396747472551, 0.36687515668752735, 0.3707747217103158, 0.365248416068389], "MOMENTUM_X": [0.3673699210452312, 0.40879637873454056, 0.3970384104384352, 0.40524269910814553, 0.3972248404612715, 0.40232515844186, 0.3967796488680354], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.884257720664996, 0.8477765878418486, 0.8325791793796791, 0.8329628793243058, 0.8259452208000588, 0.8271822258442038, 0.8240511371212602]}, "NODE_584": {"DENSITY": [0.27102068770330695, 0.4204891379467222, 0.46554491246020085, 0.3872610459645028, 0.4379271548779229, 0.42655215634182997, 0.41277048834209923], "MOMENTUM_X": [0.25147797776390307, 0.37488771931914366, 0.4348575177705023, 0.3542726097276299, 0.40136442070144723, 0.39068956622220014, 0.376983995840781], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8553985061441356, 0.8873671750077295, 0.9728085086088405, 0.9154912122434317, 0.9416191669676213, 0.9392967942716003, 0.9332094447874582]}, "NODE_585": {"DENSITY": [0.285044236432118, 0.43863518914990696, 0.4439644138544837, 0.40131729625730383, 0.44415865300190543, 0.41881090634595103, 0.4239294454866984], "MOMENTUM_X": [0.27471613159817665, 0.3977171552934142, 0.41963022947298373, 0.3759572084725635, 0.4157765668535083, 0.393140122185807, 0.39745134435705043], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8919459924938913, 0.9028157828982276, 0.961928414024314, 0.9316893235457853, 0.9483838289061252, 0.9400458278465381, 0.9408181860129314]}, "NODE_586": {"DENSITY": [0.286514606919267, 0.436689671471735, 0.43370163927073146, 0.40897077864573933, 0.43113260306671514, 0.4166334807990093, 0.42030311414216615], "MOMENTUM_X": [0.2699321289642256, 0.3997424475673013, 0.4071027833257816, 0.3825629154825285, 0.4039500901307187, 0.3913193488329877, 0.39530351038590145], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8784959281224989, 0.9170650403514846, 0.9448057273617837, 0.9274637572895943, 0.9334810308489603, 0.9281903124775153, 0.9284410350242374]}, "NODE_587": {"DENSITY": [0.28560338127475005, 0.4338207092973619, 0.43943640700712217, 0.4069573894766186, 0.4270309897303953, 0.4207187448108805, 0.41498557503428146], "MOMENTUM_X": [0.26778743522187853, 0.3982733682864901, 0.4130485227419283, 0.38066322791990953, 0.4012203473031309, 0.3962549598307129, 0.3915547790938557], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8716598159143942, 0.9181845853523596, 0.9474507928175852, 0.9226132033222523, 0.9315664184042904, 0.9281247907575814, 0.9239972072016831]}, "NODE_588": {"DENSITY": [0.2856481817694923, 0.43307784242417197, 0.44279537863986895, 0.40348189494440967, 0.43072159724602954, 0.42132062734018433, 0.4158551482346208], "MOMENTUM_X": [0.26822851361459477, 0.39534522112347936, 0.41776371078450136, 0.37646687526889716, 0.4041125062596226, 0.39604134179629563, 0.3914614344655982], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8724999353863312, 0.9116320213554638, 0.9549018414749764, 0.9208407554196522, 0.9360897436702958, 0.9298376111461545, 0.9266083947835437]}, "NODE_589": {"DENSITY": [0.28573796096803916, 0.43307419894463706, 0.4414828602494022, 0.40511321469972467, 0.43157877434764597, 0.4195371824445199, 0.4195049565315974], "MOMENTUM_X": [0.26835109409670993, 0.3948367905293039, 0.41628316840494106, 0.3782835517377505, 0.40438866356169223, 0.39381111668905744, 0.394372855834933], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8729484511523741, 0.9104861345044539, 0.953768163618462, 0.9240174151435612, 0.9364755051256627, 0.9297670053033218, 0.9297852933246524]}, "NODE_590": {"DENSITY": [0.28563672300731463, 0.43382845592649594, 0.4399224114572975, 0.4079520500984998, 0.42942974639238757, 0.4185281298804034, 0.42149296100381856], "MOMENTUM_X": [0.26814241467006467, 0.3964419718255362, 0.41314816788431746, 0.38170298105806355, 0.40235416188474193, 0.3929519937351143, 0.3963434637016208], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8724434420847051, 0.9137752328865829, 0.9479618909675637, 0.9277539367947416, 0.9353290858135574, 0.9299371528294728, 0.9310972942720115]}, "NODE_591": {"DENSITY": [0.28493900246047005, 0.43596857913163295, 0.4379144846467652, 0.41130732784692947, 0.42904969336013116, 0.41827274854728774, 0.4220399673923752], "MOMENTUM_X": [0.26702558272705723, 0.40162296851595064, 0.4103265511382614, 0.3850989286666881, 0.4022207990870634, 0.3929492315146306, 0.39718994515392336], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8693774883251192, 0.9236399693947022, 0.9435085777045873, 0.93001301774306, 0.93581294409422, 0.9301387156993302, 0.9311464795664366]}, "NODE_592": {"DENSITY": [0.2828441162240092, 0.43846093725772883, 0.43299794859438034, 0.4151644083952744, 0.42765266127602014, 0.41729134955993125, 0.42208819116269314], "MOMENTUM_X": [0.2623534402620728, 0.40790374909587857, 0.4061118957355576, 0.3894066477921686, 0.4016166955581514, 0.3929498386549695, 0.3984804506573271], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8592172994415148, 0.9382294784272587, 0.94196870100041, 0.932033712464669, 0.9339536897294126, 0.9276912183372021, 0.9281460785973735]}, "NODE_593": {"DENSITY": [0.28289436087367015, 0.4392517975319237, 0.42200444580803087, 0.41577969885250804, 0.41807618928015716, 0.4102664675279395, 0.413578643412415], "MOMENTUM_X": [0.25732749961412615, 0.4048915734241146, 0.3922186286321816, 0.3886381353418187, 0.3926427723266651, 0.3876964276793045, 0.3930024367395214], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8512522740218976, 0.9364046877496952, 0.9293813403580935, 0.9240359580171734, 0.9186884166641954, 0.9121187476769129, 0.9103526398074272]}, "NODE_594": {"DENSITY": [0.29805164482840824, 0.4425826188329559, 0.40977972409401475, 0.41624534072627534, 0.405794968267434, 0.40267263304436224, 0.3998333304032952], "MOMENTUM_X": [0.28290048615327296, 0.4212737198359532, 0.39820253666563443, 0.4105676459578847, 0.4040584692912398, 0.4039721201007166, 0.40338995803785427], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.8747577917995113, 0.9254419044204387, 0.9098416751864021, 0.9101685997170437, 0.8979229911434689, 0.8915804772087323, 0.8859072205993435]}, "NODE_595": {"DENSITY": [0.21051314299810486, 0.3534788699240722, 0.4854761792562872, 0.41437682353329125, 0.4017952218891121, 0.4465658645269272, 0.40982845762248127], "MOMENTUM_X": [0.14907152820351968, 0.31683989657476913, 0.45439765703821683, 0.3778027713188548, 0.3705849392268605, 0.41023985030434973, 0.37603197415100387], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.5961554664524837, 0.8713586454349315, 0.9857784413494981, 0.9194400541149298, 0.9304390268562821, 0.9449363747285611, 0.9293103633824495]}, "NODE_596": {"DENSITY": [0.2255538138549247, 0.3732433622025324, 0.4810444261030571, 0.4048759006056537, 0.42292330885362656, 0.4429797971832246, 0.4138923962374158], "MOMENTUM_X": [0.17818025870205484, 0.33520676676527755, 0.4547663727393289, 0.37552988770475443, 0.39542108921094127, 0.4136505405932345, 0.3863111479249529], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6677309194598555, 0.86992799198051, 0.9873107027018521, 0.9264562647524659, 0.9448955229707918, 0.95233129201563, 0.9390854841013382]}, "NODE_597": {"DENSITY": [0.2294032976562853, 0.3795071950870357, 0.46524237825160564, 0.41061764717089777, 0.42596180595201266, 0.43287723043905385, 0.4204798922554468], "MOMENTUM_X": [0.1799370916008839, 0.34298787824383364, 0.4364685284657, 0.3793788061921387, 0.3951202365102469, 0.4012273895796202, 0.38936871234847203], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.679485286591617, 0.8863025291965606, 0.971875601626856, 0.9283679512027322, 0.9409962916772298, 0.9437730696165764, 0.9383339317637414]}, "NODE_598": {"DENSITY": [0.22903468656695683, 0.380457919471067, 0.46238155238333495, 0.4180824401503179, 0.4199314026542344, 0.4336554767793884, 0.4232698552343396], "MOMENTUM_X": [0.17819811716386555, 0.34778451426776136, 0.4321439925470999, 0.3866537516813908, 0.38971540093560886, 0.4021547961170146, 0.3922965335027125], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6755618733959853, 0.8992852440470795, 0.964606948187038, 0.9317957425180338, 0.9378878141443976, 0.9434989957679285, 0.9390419402964638]}, "NODE_599": {"DENSITY": [0.2288592364522286, 0.37955361125015813, 0.4658206735079798, 0.41696297773401925, 0.4174733638351627, 0.43722452025812447, 0.42146817121647845], "MOMENTUM_X": [0.17817569168131678, 0.34643427990006803, 0.4361265935963024, 0.3856543066814411, 0.38785471478978273, 0.4055506542555047, 0.39064210499226865], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6747247256590974, 0.8964958680531333, 0.9685557970363343, 0.9310471745091589, 0.9383552494710303, 0.94542427120921, 0.9387299453654211]}, "NODE_600": {"DENSITY": [0.22886787283280188, 0.37913185973206975, 0.4660155490168029, 0.41557336263859646, 0.41965460971429397, 0.4360939442026077, 0.42093508792235756], "MOMENTUM_X": [0.1782756863368348, 0.34527536697713274, 0.43649892718840144, 0.38455640710199146, 0.3899177536600053, 0.40436523187134166, 0.39012007901542245], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6748548996284035, 0.8938972645788931, 0.9691368326484456, 0.9312187691376075, 0.9396449896441671, 0.9449898860668087, 0.9392377750841383]}, "NODE_601": {"DENSITY": [0.22879921865426833, 0.38018477498289727, 0.4639303449733757, 0.4171562053074663, 0.4212003209825756, 0.4325110308108014, 0.42207864079761964], "MOMENTUM_X": [0.17814532648805353, 0.34745637258493367, 0.4329323500299403, 0.38659694303317965, 0.39121569897098046, 0.40130430633767, 0.3914462288620239], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6745431821715616, 0.8982239616979498, 0.9627824057545729, 0.9338544222809043, 0.9395480216095338, 0.9439671624410999, 0.940201295351751]}, "NODE_602": {"DENSITY": [0.2284584539861524, 0.38262901464196303, 0.4617457021706395, 0.4183099229595054, 0.4235690747394008, 0.4305875723258782, 0.4235423398104072], "MOMENTUM_X": [0.17757745091807844, 0.35292472337202496, 0.43052252712025, 0.3883473774689842, 0.3935438332227349, 0.3999638034644676, 0.3931781111817199], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.673075003384974, 0.9087334800947869, 0.9588438823441129, 0.9353904503109198, 0.9399163082309698, 0.9434820972717348, 0.9409104519232737]}, "NODE_603": {"DENSITY": [0.22795305713312713, 0.3850797707480294, 0.4577720126662471, 0.4172881461044314, 0.4268755288382552, 0.4282446140978547, 0.4252181326743174], "MOMENTUM_X": [0.1764141674637394, 0.3575290088368328, 0.4278574818030583, 0.3881499650939962, 0.3966853940681316, 0.39771713295113903, 0.3946144305777314], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6709569737325088, 0.9185414187287596, 0.9596961614026421, 0.9364246957502022, 0.94092396718751, 0.9421351820507722, 0.9414287167127856]}, "NODE_604": {"DENSITY": [0.23129273174053205, 0.3889379692026716, 0.45016883847715344, 0.4154484662401621, 0.428739333467178, 0.42288256473720237, 0.4245502834550668], "MOMENTUM_X": [0.18028985899950406, 0.3564711450025313, 0.41615733938928806, 0.3824830667777007, 0.39402353743035595, 0.38862494235426953, 0.3903545817836437], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.6858752394083575, 0.9144169210194961, 0.9518238087832107, 0.933487288663861, 0.9380148010576547, 0.9361055836425859, 0.9371071820364903]}, "NODE_605": {"DENSITY": [0.24462364724519547, 0.4093544221388931, 0.4452892694580187, 0.42263192171569613, 0.43507739564991493, 0.4237612122332732, 0.42719689041378794], "MOMENTUM_X": [0.20793041748945573, 0.37980449533216454, 0.41836332504459733, 0.3988065211510732, 0.411261147326578, 0.4020579821646756, 0.4064480138587472], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.7462116022113564, 0.9179077241213824, 0.94849098194497, 0.9410898813061107, 0.9440321629928096, 0.9380694584971173, 0.9373413878257438]}, "NODE_606": {"DENSITY": [0.16027017914940214, 0.31465112994315964, 0.44057888097570874, 0.4667211729605115, 0.3911850849823514, 0.42828043519449144, 0.4365313120163094], "MOMENTUM_X": [0.058631796094248664, 0.29827980855951886, 0.4092294759676206, 0.42700710851548035, 0.36170149433662785, 0.39253062265310296, 0.4008794673090837], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.3743033932012668, 0.9224488315896234, 0.9575564034328345, 0.9467825796386246, 0.9305115198820016, 0.9353461255491338, 0.9420435435926284]}, "NODE_607": {"DENSITY": [0.17355729356649585, 0.32104837016335996, 0.4582834001715971, 0.4476497193583358, 0.3983534090081132, 0.44334139823462315, 0.42842268718844995], "MOMENTUM_X": [0.08398452826076101, 0.2970023058055112, 0.43074393928174703, 0.4137660712923665, 0.37324128378526256, 0.41284140433560373, 0.3995086716969057], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.43145504698776005, 0.8855439924016499, 0.97188762901924, 0.9431790347094113, 0.9391802363858269, 0.9508457148293892, 0.9459540657990011]}, "NODE_608": {"DENSITY": [0.17841971736371148, 0.3263088515519187, 0.4515895975927728, 0.43820922174011906, 0.4094897297461835, 0.4370999942910297, 0.42488985281520025], "MOMENTUM_X": [0.08920844583274715, 0.30004162677697077, 0.42293275930233876, 0.4037674780014682, 0.3802433871302121, 0.40465195120612774, 0.3932669373488379], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4508858687008911, 0.8877535498129469, 0.9667047105532915, 0.9384670858627363, 0.9372093998720789, 0.9455057493813845, 0.9406042833161724]}, "NODE_609": {"DENSITY": [0.17856983242225988, 0.3298705567738712, 0.4444169012312313, 0.44421726220730073, 0.41214457588101905, 0.42975890425944785, 0.4302124184374239], "MOMENTUM_X": [0.08829627027660206, 0.3076350500273858, 0.4141404517341853, 0.41044262959153754, 0.3820642320912661, 0.3979847197767827, 0.39839045462481315], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.45081658207875985, 0.904982706150393, 0.9557853130420125, 0.9444070322066912, 0.9355883951595554, 0.9420761737635831, 0.9424289480875859]}, "NODE_610": {"DENSITY": [0.1783218307550558, 0.33059179898449487, 0.4438909618096359, 0.4483449348257824, 0.408174465030435, 0.42984295876396333, 0.43262274656858685], "MOMENTUM_X": [0.0879588415365459, 0.3097044847800416, 0.41256865806582693, 0.4153712019095342, 0.37881781401191017, 0.39838689338603206, 0.4009307046691861], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4497312060661591, 0.9095142696960522, 0.9519100645122944, 0.9492253781392322, 0.9346478302181903, 0.9423592001670452, 0.9435747119554656]}, "NODE_611": {"DENSITY": [0.17830044431864145, 0.33031305796421373, 0.44461289274356897, 0.44710703984825334, 0.4077780774591961, 0.43211935994928924, 0.4299328038769434], "MOMENTUM_X": [0.08799722792871179, 0.3090012846426392, 0.4132319374698798, 0.4140806746814153, 0.37889086734273225, 0.4004402063828793, 0.3984574424588991], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4496755612222923, 0.9080006603782624, 0.9523516762436726, 0.9482766203125144, 0.9359833768339996, 0.9432475229574575, 0.9426997445462438]}, "NODE_612": {"DENSITY": [0.1783047918685979, 0.3308752949510224, 0.44405152494470057, 0.44610738576704245, 0.41049811932271113, 0.4318267826389579, 0.42671400090221256], "MOMENTUM_X": [0.0880062715164718, 0.31024758797915536, 0.412194371805065, 0.4127660500225087, 0.3814220648423034, 0.4003774466903955, 0.39569519877728504], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4496987505277301, 0.91061041379605, 0.9499344694118558, 0.9466684671409581, 0.937144027611407, 0.9437001328304061, 0.9418144883799755]}, "NODE_613": {"DENSITY": [0.1783342695414519, 0.3318847832336178, 0.4438596858024608, 0.4447835968644272, 0.4132377648488539, 0.431938116324839, 0.4256101829783876], "MOMENTUM_X": [0.08816294849104056, 0.3128753431261952, 0.4128365555938721, 0.4121011724893821, 0.38403124927478693, 0.40112239222738905, 0.39520543926406854], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4499064300877688, 0.9158145085933707, 0.9504468059508066, 0.9461995715797648, 0.9370786180167194, 0.94430943661985, 0.9414093021402897]}, "NODE_614": {"DENSITY": [0.17897659727387522, 0.3315662665258993, 0.4436623412755077, 0.4395789596002952, 0.41540837878273273, 0.4318829274903559, 0.42397036734229093], "MOMENTUM_X": [0.0896740059791213, 0.3119082812789439, 0.41429262477739287, 0.40812230241359193, 0.38621950322912924, 0.4013942541947516, 0.39397324804838946], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4530159713507991, 0.9140869152777282, 0.9552349607655437, 0.9452417759482077, 0.9367529894645298, 0.943581269419859, 0.940052936155736]}, "NODE_615": {"DENSITY": [0.18382305223106227, 0.331763311555761, 0.4433246658911157, 0.4309560068774725, 0.41839931704057365, 0.4295659532232864, 0.42094086161948885], "MOMENTUM_X": [0.09815526149876981, 0.30586017712045854, 0.4105962387818975, 0.39684000532104585, 0.38523129652723914, 0.395369746871259, 0.38727635143187794], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.4745397260826766, 0.8985795564405962, 0.951622603430101, 0.9386401835573819, 0.9339533309532048, 0.9389085050581089, 0.935600434233918]}, "NODE_616": {"DENSITY": [0.19823246457926752, 0.34682762833666475, 0.45187825674332865, 0.4289308456745883, 0.4318078822322233, 0.4347262122282355, 0.42882022539918146], "MOMENTUM_X": [0.1268514084090552, 0.3206536440976368, 0.422739403323855, 0.4013390793978144, 0.40456270234939024, 0.4077635880457613, 0.4024749005139688], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.5430024791833775, 0.8920738699854462, 0.9547647700539846, 0.944873221029372, 0.947436818167839, 0.9494871263400733, 0.9467451285075842]}, "NODE_617": {"DENSITY": [0.13297596821958108, 0.30779162902206547, 0.36785969238188987, 0.4831258561831298, 0.42795927222778707, 0.3922244544109674, 0.44883494099105853], "MOMENTUM_X": [0.010781771758410849, 0.31723163058968007, 0.3347055340550885, 0.44561037026432226, 0.39454263299671016, 0.3589490492219402, 0.41261845438409744], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2739521827828246, 1.0252776427842571, 0.9015858553889654, 0.9663793060107293, 0.9427735220405743, 0.9193834415485416, 0.9491664815026977]}, "NODE_618": {"DENSITY": [0.13944893133490177, 0.30260647349236847, 0.3928308376025272, 0.4779799639427973, 0.41385675356992474, 0.41264911911423224, 0.44906967151382365], "MOMENTUM_X": [0.021538668497666398, 0.3015448589393192, 0.3638124532893223, 0.443501350123216, 0.38700786471479787, 0.3833991668035371, 0.4184825080013091], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.29562927700124914, 0.9638515124939183, 0.9242126245001382, 0.9636113244588732, 0.9455666000000252, 0.9361312024178696, 0.9558680094871507]}, "NODE_619": {"DENSITY": [0.14277106521076907, 0.302102985280231, 0.3974192933624554, 0.46276734676174985, 0.4151421305094676, 0.42157306573331277, 0.43735434569156467], "MOMENTUM_X": [0.02596846547243742, 0.29361808673496714, 0.3684706024093384, 0.4275816681306846, 0.38552359222693267, 0.38989256427560437, 0.4048598977889116], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.30705744384336275, 0.9413715878023203, 0.9307253478001581, 0.953700664191111, 0.9405939555257653, 0.9383585919705825, 0.9467344251568666]}, "NODE_620": {"DENSITY": [0.14311592835694031, 0.3046097892112511, 0.39339920574036796, 0.4606713182591506, 0.42308501767969037, 0.41786212261294364, 0.43394439495670983], "MOMENTUM_X": [0.026052708645217162, 0.29794168274344596, 0.36365695429235434, 0.42636580410337666, 0.39164062110439307, 0.386638370252481, 0.40160680495860424], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.30818518535726824, 0.9506747254134087, 0.9244314475236876, 0.9552217343504165, 0.939640210262016, 0.9371440098409881, 0.9445120729330664]}, "NODE_621": {"DENSITY": [0.14290131052010058, 0.30626926393134585, 0.39051993746034014, 0.46522771221648834, 0.42395418122354755, 0.41278629639247516, 0.4372732290002287], "MOMENTUM_X": [0.025752568312224933, 0.30185730208077116, 0.3588860885802396, 0.4322555621562237, 0.3925391329576072, 0.3823357257361596, 0.40501473326488746], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.30744406157768395, 0.9593743712647871, 0.9156955111045553, 0.9623364747989852, 0.9396559720060227, 0.935540030370589, 0.9461686724291591]}, "NODE_622": {"DENSITY": [0.1428448987155048, 0.3064361645544191, 0.3903394221323806, 0.4658225582466911, 0.42216234365709715, 0.4138300786992231, 0.43810701611672764], "MOMENTUM_X": [0.0257190183483422, 0.30221452366137724, 0.3581650237050811, 0.43278153308345635, 0.39147679321067635, 0.38322443616823876, 0.40578202815338], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.30726105415956306, 0.9602277616348516, 0.9140222484771636, 0.9625027892306642, 0.9409324614409389, 0.9357290748730637, 0.9466266455652677]}, "NODE_623": {"DENSITY": [0.14285763553000788, 0.30635928842237703, 0.3912335805674552, 0.46387893558365345, 0.4229581533525721, 0.4172028503528545, 0.43489403710047775], "MOMENTUM_X": [0.025748196823947758, 0.30219750772760784, 0.3597729361480553, 0.42972691650547024, 0.3926444356445958, 0.3863871079162216, 0.4029639390783264], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.30730861314122704, 0.9600262271173652, 0.9164769179808662, 0.9573989435017515, 0.9427346776501739, 0.9372610543240852, 0.9456193346665279]}, "NODE_624": {"DENSITY": [0.14293795390361916, 0.30563924975581924, 0.3931224894388549, 0.46178656300480103, 0.42350322619458364, 0.4205707437414046, 0.43255451353784413], "MOMENTUM_X": [0.02593305515780857, 0.3012426089416528, 0.3638690522270654, 0.4278668330640315, 0.39355303264082947, 0.39013867283817216, 0.4013342695510198], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.30761277101451867, 0.9573019415882272, 0.9233312416763683, 0.9547636964896566, 0.9426631733424733, 0.9392385789430436, 0.9447041128370397]}, "NODE_625": {"DENSITY": [0.14351798605250607, 0.3026434578078207, 0.39553082525879985, 0.45717791862790114, 0.4208529995823646, 0.4236918432045695, 0.4299944071436821], "MOMENTUM_X": [0.027207804234228108, 0.2948756053846531, 0.36834740410676015, 0.42421724682760886, 0.3912322187033076, 0.3933979536950235, 0.3992053239345536], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.30978855052583615, 0.9429684934222167, 0.9322214697807427, 0.9537560545405132, 0.9404898053573759, 0.940131278491586, 0.9427526535063762]}, "NODE_626": {"DENSITY": [0.14682037115999055, 0.29873148888467466, 0.3999254820616241, 0.44976959929625515, 0.4173059996903362, 0.4269421010190611, 0.4255354934440402], "MOMENTUM_X": [0.033332506819800684, 0.28297930956140044, 0.3701965265202676, 0.41432717689183773, 0.38476872695504044, 0.39315555548345643, 0.39170854757862067], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.3219640609562162, 0.9149398619009997, 0.9327285188834215, 0.946940504094807, 0.9350310778104676, 0.937953467347281, 0.9374290540240744]}, "NODE_627": {"DENSITY": [0.15765841990066815, 0.302415860698388, 0.41786771390119876, 0.4471770659559312, 0.423167236323379, 0.4380481851286035, 0.43046813492592456], "MOMENTUM_X": [0.05337355590746312, 0.28364469675180914, 0.3902482409828847, 0.4168780851308446, 0.39603745281056324, 0.4100373878534376, 0.4031844680146884], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.3643202103778926, 0.8904980743286599, 0.9392852930824133, 0.9503285820543422, 0.9448338012096692, 0.951452921336697, 0.9485046410469209]}, "NODE_628": {"DENSITY": [0.12585819168261192, 0.3024184724771695, 0.30577812901567625, 0.4478776750359088, 0.4727303976863234, 0.3909113724087511, 0.4223953413449658], "MOMENTUM_X": [0.000869941965971917, 0.3194429795124337, 0.26678048896116824, 0.4165952397683307, 0.43354065577159545, 0.3589549848248528, 0.38841728328666103], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2524220340317411, 1.0542086872331962, 0.8330487774659324, 0.9636844103582888, 0.9538157003100098, 0.9227992758237679, 0.9382828673214039]}, "NODE_629": {"DENSITY": [0.12727450440309182, 0.29808701515519936, 0.32566128149244006, 0.4610183366463397, 0.4555195911703256, 0.39325552821390175, 0.43977636952422144], "MOMENTUM_X": [0.0023994366628154193, 0.3118185817981314, 0.2921457945901944, 0.43053520278348845, 0.42314491093018913, 0.36548072523806546, 0.40974156069216716], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2564922632334088, 1.0219470306475613, 0.859789927968824, 0.9664611752081705, 0.956038337996269, 0.9290289751637876, 0.9523836979204539]}, "NODE_630": {"DENSITY": [0.128356718686923, 0.2943451766398504, 0.3352591491446777, 0.4530808549659471, 0.4434007688096288, 0.4055251158911184, 0.43718992573852855], "MOMENTUM_X": [0.0035859054815934916, 0.2986514934247326, 0.30362472380315203, 0.42109825513335697, 0.4106835751741139, 0.3750471331809626, 0.4049142159198034], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2596611534886482, 0.9889808518671312, 0.8773920025973578, 0.9583838073801462, 0.9494866279152121, 0.9317636515672305, 0.94743549078851]}, "NODE_631": {"DENSITY": [0.12858021322565244, 0.29404140160888714, 0.3361296565879501, 0.4466498958428707, 0.44653121357766035, 0.4124719463856171, 0.42834959348556284], "MOMENTUM_X": [0.003875444446636461, 0.29682839190597504, 0.3052091985020396, 0.414836522570552, 0.4127305912632629, 0.3815528215735195, 0.39636112914036953], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.260326035309596, 0.9834770675266025, 0.8802650532018463, 0.9548207536402564, 0.9482272077583251, 0.9351119798315667, 0.9424052537114844]}, "NODE_632": {"DENSITY": [0.1285077956054749, 0.29517242446358855, 0.33387537775452913, 0.44776448744480146, 0.45106743999924837, 0.40950471330317867, 0.4256348875824064], "MOMENTUM_X": [0.003842105973826839, 0.299621127272, 0.3012890956286809, 0.4169358034659595, 0.41693904341161125, 0.37940284444129074, 0.3941420779709567], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.26011664745697416, 0.9894212195705931, 0.8721355340412963, 0.9588708191819746, 0.9496832981589531, 0.9351962533318507, 0.9414663482535441]}, "NODE_633": {"DENSITY": [0.12847212247911896, 0.29558017851981566, 0.333055096209358, 0.4489148256395943, 0.45077656388451787, 0.40714218776871813, 0.42841936697644656], "MOMENTUM_X": [0.0038164420843418458, 0.3005926983765413, 0.29961212912796786, 0.418119745326152, 0.4169820047454524, 0.37721228325552064, 0.3967406377287295], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2600128156632892, 0.9917131430459384, 0.8688051141146901, 0.9598303444842616, 0.9506733446283272, 0.9341841285886379, 0.9428371963094662]}, "NODE_634": {"DENSITY": [0.12847363430806594, 0.2951753419790478, 0.3345402305397912, 0.44760598793273426, 0.4500220977802326, 0.4095602200041004, 0.43009635766640464], "MOMENTUM_X": [0.0038173329412127892, 0.2998441759499337, 0.30262495135828715, 0.4155206153952577, 0.41677189085768723, 0.3792468099493812, 0.398435652856536], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.26001732878355227, 0.9897495158740454, 0.8748380713179025, 0.9541920532465401, 0.9519893053393562, 0.9345153137115526, 0.9439522129864195]}, "NODE_635": {"DENSITY": [0.12849393449320146, 0.29355859896682585, 0.3374990858846162, 0.4462165230889686, 0.4486684332859321, 0.41288104323532776, 0.4307222993374395], "MOMENTUM_X": [0.0038452128910658493, 0.296775253343781, 0.3089229197966294, 0.4139641843919812, 0.4164154893604918, 0.3827190652723288, 0.3995667083535802], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.26007857689157515, 0.9819023387816328, 0.8873822521296204, 0.9506415472889314, 0.9526115023047812, 0.9356625428068785, 0.9443549353353131]}, "NODE_636": {"DENSITY": [0.12863346210630436, 0.28989315563970247, 0.34064580484378454, 0.44442908262007624, 0.442986324567529, 0.41461041885751027, 0.4310344880028228], "MOMENTUM_X": [0.004064803632036486, 0.28884160686285876, 0.3146682872160448, 0.41265038387780206, 0.4114957878834958, 0.38452417547817025, 0.3999396069483501], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2605010762120311, 0.963239413807412, 0.8998122532393336, 0.9504449873342135, 0.9502823855794102, 0.9357745444188417, 0.943399095389637]}, "NODE_637": {"DENSITY": [0.12957648594168739, 0.28562129650367807, 0.34548106853656396, 0.44305487954076817, 0.43422391835019525, 0.417240867370585, 0.4307960590671921], "MOMENTUM_X": [0.005422855150671221, 0.27753036992993885, 0.31813024674538826, 0.40865648173700864, 0.40078141591245414, 0.3842036859517075, 0.39666180155145364], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.26335008364224555, 0.9373222669275212, 0.9035878520670041, 0.9460121383519426, 0.9434487501590775, 0.9337522828775745, 0.9398501232211844]}, "NODE_638": {"DENSITY": [0.1338923294597936, 0.28354298134272676, 0.36287880758261, 0.4498836520189709, 0.430872261612626, 0.4290021228207509, 0.43714448970325503], "MOMENTUM_X": [0.011620970731619771, 0.27319990839147335, 0.33746858914256034, 0.4185850470702738, 0.40286228837331106, 0.40104009855329203, 0.40893136622245296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.27681226584015967, 0.9117598781726335, 0.9109700242401412, 0.9503445904406138, 0.9486539759862048, 0.9471799806884927, 0.9513643186876649]}, "NODE_639": {"DENSITY": [0.12501753053060638, 0.2721943132453984, 0.2714697472752008, 0.3893039038346933, 0.4816326500704899, 0.433063909472839, 0.3889040482506226], "MOMENTUM_X": [3.016703199310091e-05, 0.26428835301386955, 0.22964063847091298, 0.36576774937976436, 0.4408703657364703, 0.400050197813731, 0.35705923313564925], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500491123722177, 0.9084231254626762, 0.7932864633152532, 0.951148281395042, 0.9541037422812645, 0.9475141287123723, 0.9215879026507232]}, "NODE_640": {"DENSITY": [0.1251764159684756, 0.27777082214101123, 0.2808680631999422, 0.40920969006759494, 0.47859036963306834, 0.4156701971635098, 0.40701198415996664], "MOMENTUM_X": [0.0001481164480620674, 0.2779006886182963, 0.24219769581631673, 0.38520011716967567, 0.4422682665484061, 0.3875106558330172, 0.3789562386646561], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2504947516598142, 0.9400809717097904, 0.8052844674565188, 0.9543038563610304, 0.9588028169447544, 0.9433229033945897, 0.9372472245246731]}, "NODE_641": {"DENSITY": [0.12536999903419146, 0.2764798083681023, 0.2900520496565176, 0.4107887380742865, 0.46423460990998505, 0.4146370854727811, 0.41854891829361685], "MOMENTUM_X": [0.00029724098867061407, 0.2704377722543416, 0.2547640591985727, 0.38453424395933966, 0.4285902059064222, 0.38419028058517063, 0.3877967805795124], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.251039069248008, 0.925660589249404, 0.8293950515557044, 0.9497381806911628, 0.9536380635704449, 0.9377927841859197, 0.9395724747519266]}, "NODE_642": {"DENSITY": [0.12544399223337604, 0.2746983252123771, 0.29422444272574017, 0.4060035639096035, 0.4601426517467393, 0.4241679107089312, 0.4170989306810546], "MOMENTUM_X": [0.0003685787704293296, 0.2656289274876007, 0.26189948325883955, 0.37902386592253234, 0.42489401257943105, 0.3924145257452887, 0.3859444035319424], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25124759380779593, 0.9132806435344355, 0.843988080288687, 0.9441888941087432, 0.952702573835862, 0.9403089202619048, 0.9375661686320794]}, "NODE_643": {"DENSITY": [0.12543713799742148, 0.2746762736194279, 0.2938803971471747, 0.40433339898842485, 0.46364057553273064, 0.427696053557615, 0.41075452879886754], "MOMENTUM_X": [0.00037470397180718317, 0.2661101647260332, 0.2612291800738347, 0.3773451976347132, 0.428633454766497, 0.3963786054728903, 0.38028282363208604], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2512283977397742, 0.9131943206084707, 0.8417402832934635, 0.9431973765402374, 0.9555246896529371, 0.943595836360663, 0.9348739059728195]}, "NODE_644": {"DENSITY": [0.12542644137798967, 0.27493027170797013, 0.293150426645247, 0.4045723096800658, 0.46494188056032293, 0.42541455311815685, 0.4103826652694566], "MOMENTUM_X": [0.00036813593396421815, 0.2668473085199752, 0.2597073574544077, 0.3774485168971744, 0.42984077732142206, 0.39458401565104784, 0.37996760292681325], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2511983026939029, 0.9147708108151912, 0.8384154105303002, 0.9430957284406506, 0.9561706102092776, 0.9437090146133791, 0.9349094687651585]}, "NODE_645": {"DENSITY": [0.12542532452030947, 0.27454158453242905, 0.2944843777437608, 0.4040519545972083, 0.46413564168715865, 0.42477261157522356, 0.41482399564462324], "MOMENTUM_X": [0.00036613438373997914, 0.2660328479531595, 0.26267318314971794, 0.37601023127536126, 0.4290723989629064, 0.3937837527583917, 0.38425836635595517], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2511951521989049, 0.912766840063509, 0.8450917137794905, 0.9388153375044863, 0.9556886513798143, 0.9427212625914068, 0.937401371054004]}, "NODE_646": {"DENSITY": [0.12542666275493258, 0.273126034807766, 0.2971976985059614, 0.4036780123811945, 0.462637150313519, 0.42492596701247015, 0.4190564128586837], "MOMENTUM_X": [0.00036662434304747337, 0.2631056810903169, 0.26880884102341623, 0.3754498621096723, 0.42866156137489086, 0.39406312128446036, 0.3888120306974575], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2511989350346642, 0.9054766345151766, 0.8587790765593937, 0.9358466677763304, 0.9564965636101521, 0.9416109141356859, 0.9396891541273732]}, "NODE_647": {"DENSITY": [0.1254341200588933, 0.27088588797953866, 0.29953731376216175, 0.4039548176061845, 0.45789990680503645, 0.4219297204138557, 0.4219479535863388], "MOMENTUM_X": [0.0003759735353978917, 0.25793650034882565, 0.27339872058268544, 0.375758424229646, 0.424836100356041, 0.39112950860838736, 0.3914696210062739], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2512201425537832, 0.8936605058574286, 0.8702230239060047, 0.9360105944798451, 0.955685301791575, 0.938885713357754, 0.9398126604778578]}, "NODE_648": {"DENSITY": [0.12554338928216105, 0.2703008506721959, 0.30235965762263517, 0.4070233831461223, 0.4507338534591159, 0.4180240131507386, 0.425876787191789], "MOMENTUM_X": [0.0004910479204330412, 0.2544596811743361, 0.27523292249791403, 0.37615429163963654, 0.41614107087033547, 0.38509666888897864, 0.39237659645649714], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2515292541599525, 0.8886111489868777, 0.8731716371801903, 0.93325259405275, 0.9503976100168807, 0.9341406971956213, 0.9380947430329862]}, "NODE_649": {"DENSITY": [0.12643085831511333, 0.2716265274943528, 0.3133622192709424, 0.42203115642878053, 0.44782137031419017, 0.4217696995252003, 0.4366641304067998], "MOMENTUM_X": [0.0012357185749061158, 0.25960905257840977, 0.2883356401568944, 0.3925253648025721, 0.41792883368818995, 0.39381792362504636, 0.40813067201305686], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25404877458817493, 0.8947982688716516, 0.8782073628541498, 0.9384812304829709, 0.9546459944438507, 0.9433577926057547, 0.9508574835945779]}, "NODE_650": {"DENSITY": [0.12499316075799706, 0.22012046001252172, 0.269479276732073, 0.3371885765273678, 0.4475003342990098, 0.4782282882857312, 0.3912608591043466], "MOMENTUM_X": [-4.200139766405089e-06, 0.16709613192856154, 0.24143039612721445, 0.3193562760096039, 0.4100215794692212, 0.44264581567509204, 0.35852707504507525], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24998085028837222, 0.6444596849273514, 0.8459181387825631, 0.9371480283335234, 0.9409107787023181, 0.9687094349151707, 0.9191645713824873]}, "NODE_651": {"DENSITY": [0.1249973878116474, 0.23370356846461285, 0.26619044583538587, 0.35359450901482337, 0.46036805340777426, 0.4596839661764285, 0.39147303817612883], "MOMENTUM_X": [1.9126931546457473e-06, 0.19466614037367042, 0.23315938002819583, 0.33576798965176596, 0.4249002425114073, 0.4292315481236819, 0.36370387789546127], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999268506058048, 0.7155574920501688, 0.8148011099226224, 0.9393621597203576, 0.9490316807083766, 0.9651823033127982, 0.9277290941220584]}, "NODE_652": {"DENSITY": [0.1250138595225071, 0.23687288733083917, 0.2710807392828992, 0.35921490818506097, 0.4537850179659171, 0.4450038871561556, 0.4033987596658615], "MOMENTUM_X": [1.889918365589083e-05, 0.19606587328850905, 0.23927241879869465, 0.33864073940837247, 0.4184025371693969, 0.41326967076940024, 0.37364312814056744], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500388185701513, 0.7271735779009811, 0.8279217975768514, 0.9353461431126767, 0.946933314212135, 0.9533949075548492, 0.9320890295776494]}, "NODE_653": {"DENSITY": [0.12502623250583014, 0.23562571376123154, 0.27627542694708274, 0.3575749811415245, 0.4473828190731268, 0.4466794309788944, 0.4124757231106096], "MOMENTUM_X": [3.1532268212292046e-05, 0.19216497604132254, 0.24891582883807073, 0.3354546107018589, 0.4130214109798321, 0.41339752096121507, 0.3816654744163588], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25007348304654137, 0.7188998702858562, 0.8499948556621942, 0.9287370536554926, 0.946690264689782, 0.9501067049647925, 0.935300609245314]}, "NODE_654": {"DENSITY": [0.12502785063317529, 0.2349440558763234, 0.27783224751868346, 0.35527722022101815, 0.4479495864445434, 0.4527163681536225, 0.4106009092443738], "MOMENTUM_X": [3.3712131894438525e-05, 0.19125296259444086, 0.2521534081330448, 0.33206996040826636, 0.4145650235882099, 0.4193735241126663, 0.3801419299868075], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.250078016997812, 0.715522467035085, 0.8567430359711238, 0.9233113320528052, 0.9502275366312861, 0.9535503495326253, 0.9346003825224651]}, "NODE_655": {"DENSITY": [0.12502635858738909, 0.2349378288802179, 0.2776249993447381, 0.35461399533854265, 0.4492926366846915, 0.4533857444124261, 0.407085679269503], "MOMENTUM_X": [3.214418242288941e-05, 0.19152078050247734, 0.2516640053328927, 0.3309108764709071, 0.4158298019974995, 0.4205651106026309, 0.3768287169041323], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500738369383371, 0.715729512221561, 0.8554661350758429, 0.9213741347623045, 0.950979172508361, 0.9557879188386208, 0.9329790843160664]}, "NODE_656": {"DENSITY": [0.12502590789809664, 0.23475651957152607, 0.2782779422223666, 0.35460680652724197, 0.44895518791482913, 0.45178206112752145, 0.4092744947471314], "MOMENTUM_X": [3.1378990446285205e-05, 0.19109895019200818, 0.2532847441566038, 0.3306753922461599, 0.41495834739974435, 0.41919821451546574, 0.3789635467636588], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.250072574221869, 0.7147922533689675, 0.859291260111997, 0.9196404656728705, 0.9487784380705594, 0.9554728725357982, 0.9343215836476306]}, "NODE_657": {"DENSITY": [0.12502586631387072, 0.23419381517350724, 0.2794956834417109, 0.35503849380346525, 0.448296583807175, 0.4494167253881796, 0.41327298086257314], "MOMENTUM_X": [3.11549927978868e-05, 0.18981945920358717, 0.25644955485591275, 0.3314426182403077, 0.4149622966613499, 0.4172261837736998, 0.38336599635740054], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500724575957831, 0.7118676191569359, 0.8667739627985129, 0.9191689707591122, 0.9489065532290551, 0.9536075525814666, 0.9368527896791818]}, "NODE_658": {"DENSITY": [0.12502425082030144, 0.23420060617995658, 0.2795515180710569, 0.35602263485098684, 0.44643299523204844, 0.44313363085453217, 0.4148108841950228], "MOMENTUM_X": [2.9940870243376657e-05, 0.1893440431928421, 0.25655881839408057, 0.3323563724501332, 0.4137922110024555, 0.4109963662568832, 0.38475990437120633], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25006793319780046, 0.7116608433749098, 0.8682276426297927, 0.9198380546757597, 0.9497198009265387, 0.9490563019490416, 0.9367390126274141]}, "NODE_659": {"DENSITY": [0.12502298856453964, 0.23819659049878183, 0.27885605655666856, 0.35986101277008703, 0.44492010936057047, 0.43433880327725305, 0.4169380834027307], "MOMENTUM_X": [3.4345807839212995e-05, 0.19521725019701258, 0.2528813607065765, 0.33364647472029996, 0.4107223924131354, 0.40065379948931706, 0.38442479501810867], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500644118018748, 0.7303534357100285, 0.8600233828694622, 0.9170078632173382, 0.9473428386527445, 0.9421322265900468, 0.9347029564765477]}, "NODE_660": {"DENSITY": [0.1251273889893112, 0.24717938769845005, 0.2819868020521328, 0.37557780702521165, 0.45045691289486606, 0.43014153038281994, 0.42675388961219757], "MOMENTUM_X": [0.00010240516160192636, 0.21467040215409255, 0.25623313224156696, 0.34968971335019583, 0.4194264546025307, 0.40124649343270347, 0.39864975778563844], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25035711689866946, 0.7785272427627119, 0.8528980660789209, 0.9200070663147939, 0.9532823359304603, 0.946578913339574, 0.9464415521931795]}, "NODE_661": {"DENSITY": [0.1249993303303975, 0.16832957880744134, 0.2897060179792892, 0.2989826331248324, 0.39214457540796, 0.48731041055210916, 0.4320617984681827], "MOMENTUM_X": [-9.229306904770961e-07, 0.07243114711538907, 0.2922474410383327, 0.27914607895132604, 0.3597327982092379, 0.45004254534344457, 0.3965917247388667], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999812493721404, 0.4065436165019307, 0.986099498208185, 0.9018886226523525, 0.9194091499622016, 0.9686994596093855, 0.9373540943501588]}, "NODE_662": {"DENSITY": [0.12499835080384446, 0.1822622964334377, 0.27731676157126717, 0.31064831340001164, 0.41197349240227266, 0.483485808358979, 0.4148285548649751], "MOMENTUM_X": [-1.5079880842537003e-06, 0.09889580478229434, 0.2674507955018522, 0.2941162124570608, 0.38048597420204844, 0.4504803649926604, 0.3847813656966692], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499953822858494, 0.4684464120404852, 0.9147361040702329, 0.9144562108287693, 0.9290696645847778, 0.9725876838351364, 0.9359026302922564]}, "NODE_663": {"DENSITY": [0.12499837528982459, 0.18746255938275522, 0.2758045044862697, 0.3162561301881241, 0.4144770941768567, 0.46758442840129505, 0.41337003036803566], "MOMENTUM_X": [-7.080828834485146e-07, 0.10464364041027369, 0.260828160779819, 0.2977731880808127, 0.3824009739261873, 0.434336566191273, 0.3826213743270409], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999545081915556, 0.48964882956411426, 0.8987682039524935, 0.9135569409525984, 0.9307139345881354, 0.9629485147250837, 0.9349042593192518]}, "NODE_664": {"DENSITY": [0.12499926374906768, 0.1872090948011896, 0.2792882439177651, 0.3162444218139071, 0.4106050572922902, 0.4608535556724793, 0.4235377113867048], "MOMENTUM_X": [6.242863743460647e-07, 0.10257760221891045, 0.2673857693986476, 0.295754202930862, 0.37932319362929956, 0.42665917145696647, 0.39185041333484893], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999793855366942, 0.48744888821623844, 0.9146581234403979, 0.9061195857545526, 0.9315281995483774, 0.9561214650563091, 0.9394606132157272]}, "NODE_665": {"DENSITY": [0.12499957645366779, 0.1864558256595029, 0.2817662066515907, 0.3142154679177762, 0.4094742870361002, 0.4638525800105912, 0.42862479874550824], "MOMENTUM_X": [1.057765838286969e-06, 0.10135909101203351, 0.2729558313239218, 0.29175833175628274, 0.3793042984217404, 0.42943165932544936, 0.39702298636660494], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999881416077174, 0.48409073531476127, 0.9274659757983659, 0.8970826852671431, 0.9346784130877295, 0.9571105168422125, 0.9426513455313225]}, "NODE_666": {"DENSITY": [0.12499938220851677, 0.18630673724475155, 0.2821717286774494, 0.31330412431628946, 0.4099322262110853, 0.4662649903554011, 0.4262225759587601], "MOMENTUM_X": [8.523121353611987e-07, 0.1013584789330024, 0.2738815300723877, 0.2900590813981699, 0.3798593178792589, 0.4320962904414243, 0.3947311667287743], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999827025856416, 0.4835806623450709, 0.9294896585623851, 0.8937766806073223, 0.9354930038957078, 0.9596486951234366, 0.9414370619452688]}, "NODE_667": {"DENSITY": [0.12499925634540972, 0.18632172657496196, 0.28201518545275356, 0.31392913233644654, 0.4097862475892369, 0.4658194145835473, 0.42490275214018147], "MOMENTUM_X": [7.001291364068161e-07, 0.10140454979591998, 0.27371366544825704, 0.29143991183872003, 0.378996523601039, 0.4320274261784868, 0.3933808420499965], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999791783553865, 0.4836520457345641, 0.9289538682215093, 0.8962647217322479, 0.9325555013272605, 0.9605439193368761, 0.9404678275889057]}, "NODE_668": {"DENSITY": [0.12499923847749303, 0.18649995378022577, 0.28123929336920045, 0.3153125056941602, 0.40984584882514974, 0.46359825369399693, 0.42532530160638876], "MOMENTUM_X": [6.703047746410182e-07, 0.101746881402037, 0.27248432731119876, 0.29441698838219155, 0.37926683889809343, 0.43055237196267543, 0.3943172644337049], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999786780297054, 0.48442292849947344, 0.9258015140734341, 0.9015908102240023, 0.93183751849863, 0.9600528781411266, 0.9410544582055592]}, "NODE_669": {"DENSITY": [0.12499903423939851, 0.188033024209183, 0.27854214406204664, 0.31673775255295467, 0.4102711444220396, 0.4578993737135511, 0.4226448604892011], "MOMENTUM_X": [4.0527694375744753e-07, 0.10469901925610581, 0.2666131270192635, 0.29650514417318474, 0.3800518026191678, 0.42499234886551696, 0.39175053336919274], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999729591978373, 0.4913220602926392, 0.9122838872314385, 0.9057419504906424, 0.9335054680347048, 0.9565332540257965, 0.9393306604416338]}, "NODE_670": {"DENSITY": [0.12499734092108863, 0.1943074351487763, 0.2741689897878858, 0.31961572855450177, 0.4134471550475747, 0.45030745877485967, 0.41870104621275905], "MOMENTUM_X": [-4.1401310305827446e-07, 0.1155440430315523, 0.2557336874083571, 0.2975302506665614, 0.38162708185092353, 0.4160629855999458, 0.38628014486978846], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499925546200749, 0.5192253216064009, 0.8867872448701936, 0.9040825651078711, 0.93349498267911, 0.9504928006458256, 0.9355099140896485]}, "NODE_671": {"DENSITY": [0.12500197122897672, 0.20797156395033456, 0.2700971154308132, 0.33083876178428406, 0.42690252743741225, 0.44649237673403946, 0.420957320877915], "MOMENTUM_X": [4.987078368751922e-06, 0.14176054992113446, 0.24778879311306706, 0.308907999248059, 0.3967778285761022, 0.4162505441567895, 0.39299945389830937], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500055208392487, 0.5845635554086073, 0.8576743525411883, 0.9038493132696931, 0.940860232186712, 0.953550567214039, 0.9436491645215477]}, "NODE_672": {"DENSITY": [0.12499997291559267, 0.13659798490835356, 0.30466054377402735, 0.2690499211818158, 0.3415243490680351, 0.45549632003645646, 0.4765826385963065], "MOMENTUM_X": [-5.796613580223535e-08, 0.01637598487223093, 0.32818863794583064, 0.23623974520528548, 0.314862511368411, 0.41952376899206034, 0.4395093675818204], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999992416371689, 0.2856187040858178, 1.0844665298510872, 0.8258853694492033, 0.9042994560324611, 0.9511644621116703, 0.9620350845022223]}, "NODE_673": {"DENSITY": [0.12499985431368593, 0.14449653922885816, 0.2940496378309264, 0.27881824636634545, 0.3585245853992344, 0.46734655180570217, 0.4576600616557283], "MOMENTUM_X": [-2.0805060147715245e-07, 0.029900459395481853, 0.3092676814002678, 0.25415198771759717, 0.3319819353932377, 0.433911303429959, 0.42508257464357796], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999959207897204, 0.31317592694133306, 1.0273845634077472, 0.8576562823965667, 0.909322531375976, 0.9604038426669382, 0.9564359835288542]}, "NODE_674": {"DENSITY": [0.12499973709090927, 0.14853765414909753, 0.2885456752247512, 0.2848029133672467, 0.3655040323049271, 0.4600545649338483, 0.44319427757606117], "MOMENTUM_X": [-3.5729270083813205e-07, 0.035291270236631186, 0.2937742862672158, 0.26138481107729405, 0.3380869894507179, 0.42661605704701827, 0.41044254929382745], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999926385604485, 0.32750638083119166, 0.9900169986014976, 0.8706124057720022, 0.9128773738067516, 0.9568875867443846, 0.94786196768618]}, "NODE_675": {"DENSITY": [0.12499975007433207, 0.14884015098628137, 0.28860843396497804, 0.28583930458485446, 0.3652850079985161, 0.45152796392936595, 0.44496033186824446], "MOMENTUM_X": [-3.9572277952121846e-07, 0.03495801988523697, 0.2929567527547578, 0.26133832042254035, 0.3383254887242742, 0.41800431174069236, 0.411640005988604], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999930020907926, 0.3283728159274175, 0.9879703378996131, 0.8679777552142192, 0.9150574667005028, 0.9516015185196884, 0.9481057233985253]}, "NODE_676": {"DENSITY": [0.1249997780314575, 0.14833184788299486, 0.29042280590799574, 0.28418930850756957, 0.3641974794429524, 0.4505764506083016, 0.45207537382785], "MOMENTUM_X": [-3.968546543134117e-07, 0.03412511515105121, 0.29737253347450665, 0.2574435407536233, 0.3379562895714607, 0.41713205231440564, 0.4189423958829874], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499993784886005, 0.32651000691656606, 0.9981770323250239, 0.8577464114299609, 0.9171174002222919, 0.9510710337061692, 0.9531057385306881]}, "NODE_677": {"DENSITY": [0.12499974790353333, 0.14815725927744278, 0.29112555730049716, 0.2833592079273521, 0.36385151872573335, 0.4522969273433711, 0.4531800011676222], "MOMENTUM_X": [-4.2081856433903855e-07, 0.03398159411104396, 0.29913530140043526, 0.25566682585392897, 0.33761550153725667, 0.4188349900618109, 0.4201565891858057], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999929413061173, 0.32591829661411054, 1.0022879835344212, 0.8536819226556215, 0.9171562740106286, 0.9522941696338314, 0.9542233084329929]}, "NODE_678": {"DENSITY": [0.1249997162061844, 0.14820907468675848, 0.29049088081013896, 0.28473776727398364, 0.36349706884780475, 0.45288889847686625, 0.45089738685469344], "MOMENTUM_X": [-4.4019466845278873e-07, 0.034115210807751074, 0.29786022729160705, 0.25881038013205726, 0.3365567660646483, 0.41956342931104307, 0.41778237269959767], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499992053783665, 0.3261207057857286, 0.9989363405592969, 0.8609530361604661, 0.913799893665512, 0.9530331235279591, 0.9523481163532962]}, "NODE_679": {"DENSITY": [0.12499970965921968, 0.14851086953468123, 0.28840826405143505, 0.28733173413270907, 0.36365600567627687, 0.4522247279572534, 0.44816254196757366], "MOMENTUM_X": [-4.4181202260246975e-07, 0.03472601192762777, 0.29354595902087444, 0.2646676127493312, 0.3366050328945645, 0.4197264723070374, 0.4154648533381315], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999918704695218, 0.3272545936859831, 0.9879396917176788, 0.8743728351638811, 0.912096876522826, 0.9540006437209786, 0.9505569511056154]}, "NODE_680": {"DENSITY": [0.12499970551332593, 0.1499191301634515, 0.2843943503776427, 0.28967426391092466, 0.3648330871947055, 0.4495296640996827, 0.44211911380721614], "MOMENTUM_X": [-4.5693965070144e-07, 0.03750963869971873, 0.28458959427775177, 0.2692233325864374, 0.337794853792323, 0.4172705854875603, 0.4095442323889341], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999917543854086, 0.332577112989372, 0.9661447408549998, 0.8857672020779259, 0.9133988208533026, 0.953064239457204, 0.9468883415434842]}, "NODE_681": {"DENSITY": [0.12499957154397454, 0.15495330539760618, 0.2790646875338879, 0.29206050226402, 0.369518255327531, 0.4472067655450368, 0.43383751167480605], "MOMENTUM_X": [-6.471333639357434e-07, 0.04651186672247034, 0.27162963005118657, 0.271296098480634, 0.34095472286219325, 0.413630716307461, 0.4004007924315368], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999880032620198, 0.351676475176677, 0.9353110364726982, 0.8894778791750146, 0.9141491871250226, 0.9500814330067927, 0.9417074724525518]}, "NODE_682": {"DENSITY": [0.12499927294402884, 0.16709479865164484, 0.271928850978993, 0.2984998672314222, 0.385172047095333, 0.4509285170873371, 0.42933218349928476], "MOMENTUM_X": [-8.464199138353523e-07, 0.06823859703205762, 0.2591123039280161, 0.2788854884224512, 0.35748316979493894, 0.42012740042047136, 0.400371246206618], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999796425132084, 0.4005349232396444, 0.8965732937324277, 0.890085346654562, 0.9210380714766097, 0.9550025046152985, 0.946353233345398]}, "NODE_683": {"DENSITY": [0.12500000209535195, 0.12659016070867515, 0.28853249649634743, 0.2488411261627593, 0.30970872487311807, 0.4027986003866134, 0.4899740012598141], "MOMENTUM_X": [1.3167721183255721e-09, 0.0017142674156842479, 0.2982936012503588, 0.2018512618412391, 0.2909854015538507, 0.3704128426031562, 0.45340458444276627], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000586698534, 0.25451208565845634, 1.0022732224928947, 0.7520316068442268, 0.9122638111008288, 0.9270743407487536, 0.9725294220260758]}, "NODE_684": {"DENSITY": [0.12499999282523377, 0.12871911676920894, 0.28936173845354357, 0.25532478696126537, 0.31893645731430936, 0.4219657070809732, 0.4838694169005236], "MOMENTUM_X": [-8.283072385709163e-09, 0.0042693871698601515, 0.3032764904050547, 0.2161646206687965, 0.2987796514043202, 0.3908616417517499, 0.4504795014759576], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999997991065664, 0.2607294073258475, 1.011086699107759, 0.7816086674433734, 0.905437243325549, 0.9375511281826029, 0.9714072033471617]}, "NODE_685": {"DENSITY": [0.12499997365836998, 0.13030608669225086, 0.2857692903568903, 0.2626030504627759, 0.32503293461433164, 0.42402748220925257, 0.4673139898551157], "MOMENTUM_X": [-3.1318743562823296e-08, 0.006164113226399871, 0.29148711835978186, 0.22868056026121159, 0.3031356178184957, 0.3924458452806401, 0.4335309110943482], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999992624345796, 0.26547607799426454, 0.9849078246513773, 0.8114077401717621, 0.9049696534602003, 0.9385571842624663, 0.9603361150457203]}, "NODE_686": {"DENSITY": [0.12499996071252896, 0.13063138905968763, 0.2835007409535007, 0.2657646101171021, 0.3266610028501117, 0.41900089809036134, 0.4601307543497634], "MOMENTUM_X": [-4.9875747373190645e-08, 0.006535729901407834, 0.28556160375615103, 0.23387448198543936, 0.30472855271491694, 0.3877300181395653, 0.42582813934664554], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999988999512404, 0.2664581675269649, 0.9699053173671254, 0.8230456552539791, 0.9066390449306627, 0.9368682725354129, 0.9547803317494483]}, "NODE_687": {"DENSITY": [0.12499995707180951, 0.1304675184007821, 0.2837187504703475, 0.26516012155596264, 0.32621603444635877, 0.41660851535788274, 0.4636352682294202], "MOMENTUM_X": [-5.720383541335716e-08, 0.006368209323507799, 0.286630182076062, 0.2322007087638981, 0.304419354225112, 0.38583317737604833, 0.4296350127229024], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499998798011143, 0.2659661052664786, 0.9714463685141564, 0.8179398979327084, 0.9071154326449296, 0.9369230923913877, 0.9579036473573105]}, "NODE_688": {"DENSITY": [0.12499995266122393, 0.13036854564310124, 0.2841827919894935, 0.26449547297095777, 0.32551318520478234, 0.4168921001417989, 0.46673357280404915], "MOMENTUM_X": [-6.152769797279216e-08, 0.0062741360072457245, 0.287975356622827, 0.2306674821272286, 0.3033685883621944, 0.3860755979336901, 0.43299912712199545], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.249999867451482, 0.26567094380697925, 0.9744685937630819, 0.8140800250332815, 0.9056416902294416, 0.937141633739831, 0.9608826785594328]}, "NODE_689": {"DENSITY": [0.12499994812462538, 0.13037681637223994, 0.2835310070723647, 0.26612511498462565, 0.3248164895877775, 0.41750218701677444, 0.4659076060081418], "MOMENTUM_X": [-6.525338456494796e-08, 0.006290284801534523, 0.286558736451282, 0.2343903689176457, 0.3019361123674911, 0.38651991573936, 0.4321610125738467], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999985474901545, 0.2656972685414951, 0.9709044090439023, 0.823113500926267, 0.9016175000509826, 0.9367654717682443, 0.960169469965979]}, "NODE_690": {"DENSITY": [0.1249999470377567, 0.13048088260191992, 0.2814817331505347, 0.269271027926869, 0.3245586773522401, 0.41799283259054054, 0.46276864717423166], "MOMENTUM_X": [-6.652280848686617e-08, 0.006446647748255355, 0.28204512368680856, 0.2416048448656341, 0.30125825284144253, 0.3876267044789364, 0.4293219565380155], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499998517057862, 0.26601708481892583, 0.9595649063642424, 0.8407413343508989, 0.8984196160972419, 0.9379677455550323, 0.9577806955470365]}, "NODE_691": {"DENSITY": [0.12499994882837126, 0.1309580335025073, 0.2785213140632331, 0.2721114122031361, 0.32522345100416555, 0.41807587565926413, 0.4565375604588484], "MOMENTUM_X": [-6.567157124719427e-08, 0.0071984922415624045, 0.2751038679964886, 0.24758787831775672, 0.3014265846309503, 0.3879429262506001, 0.42297859031796065], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999985671950506, 0.26749084684175534, 0.9428634610066703, 0.8565839213533842, 0.8976121645838523, 0.939037048650716, 0.953369387782219]}, "NODE_692": {"DENSITY": [0.1249999426295544, 0.13291371171996014, 0.27638205318902526, 0.27429109551201997, 0.3288030073171569, 0.42067770245461056, 0.44897399810411376], "MOMENTUM_X": [-7.893540243854715e-08, 0.01016864063004726, 0.26856131312084736, 0.2506454884915824, 0.30336363230089625, 0.38922901303961105, 0.41461896109908414], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499998393628486, 0.27358893563481373, 0.9290644405531898, 0.8648328411516183, 0.8966640544118264, 0.9388489845225604, 0.9483439062102041]}, "NODE_693": {"DENSITY": [0.12499986594939108, 0.13912127878825917, 0.2733974247247785, 0.2776861331314397, 0.34140566851040993, 0.43224524090286515, 0.44470460480603224], "MOMENTUM_X": [-1.6565087879150002e-07, 0.019636411441214096, 0.2653469030041395, 0.256546769516504, 0.31641603336975355, 0.40237397298876715, 0.4141685849776913], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999962465868747, 0.29380716491942005, 0.9156680082536677, 0.8690752336881056, 0.900509571637803, 0.9458304099395877, 0.9517339272766526]}, "NODE_694": {"DENSITY": [0.12500000071476783, 0.12508796317815762, 0.2414495958387161, 0.2499311842089257, 0.2949972575943296, 0.35062600693506285, 0.4640224355448406], "MOMENTUM_X": [4.470613096147917e-10, 0.00010279356312367362, 0.20849566151854773, 0.20766456707579545, 0.28470385877252474, 0.3213248398783549, 0.4295202682346173], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000200135, 0.2502465623632186, 0.7544358846096569, 0.7711703123976175, 0.9364256698409219, 0.9013250811291557, 0.9617258892623767]}, "NODE_695": {"DENSITY": [0.12500000093096822, 0.12539388761665599, 0.25322160217535256, 0.24739345310962324, 0.2977173237487394, 0.36906886797086946, 0.47348615180111203], "MOMENTUM_X": [3.723037087163861e-10, 0.000354293661669014, 0.2335579259012038, 0.20420188253313007, 0.28557649041567185, 0.34115613362168906, 0.4410941824014829], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.250000002606711, 0.25110615997472696, 0.8197579138264881, 0.7585769837199441, 0.922055556782966, 0.9122155467176826, 0.9679374373903183]}, "NODE_696": {"DENSITY": [0.12499999960035202, 0.12573542304899782, 0.2547909181579128, 0.2532079308982873, 0.3002278660543675, 0.37615914274991213, 0.464649420814217], "MOMENTUM_X": [-1.1281854976498351e-09, 0.0006487388115084755, 0.231768782122454, 0.21462129611541614, 0.28467827871218454, 0.3475231743631385, 0.4315897176069292], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999888098567, 0.25206982758307384, 0.8227154172060402, 0.7853362874847272, 0.9123912202379243, 0.9157904236629759, 0.9608411975555818]}, "NODE_697": {"DENSITY": [0.12499999721060417, 0.12586763710908908, 0.25265505052262693, 0.258515825850652, 0.30118036780197766, 0.3754812547714891, 0.45476320299543066], "MOMENTUM_X": [-3.136050972217917e-09, 0.0007846384305740709, 0.22590816459551005, 0.22503077292878867, 0.2843021102519563, 0.3471315308993321, 0.42112923517374584], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999218969204, 0.25244418047502587, 0.8090655585336464, 0.8111211162903225, 0.9085802549648168, 0.9169607080678329, 0.9531690943463391]}, "NODE_698": {"DENSITY": [0.1249999956630232, 0.12585135534604505, 0.2517369877145989, 0.25985048985605236, 0.3007979940013175, 0.3738703106219331, 0.4534987462718799], "MOMENTUM_X": [-4.301182565716157e-09, 0.0007896483111924034, 0.22461221784577928, 0.2278129193811635, 0.2832153423719224, 0.3461890647452286, 0.42010184940339423], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999998785646543, 0.25239834264996164, 0.8044436751760345, 0.8172081215018028, 0.9057766092713392, 0.9183213261312241, 0.9530041212831083]}, "NODE_699": {"DENSITY": [0.12499999492787138, 0.12582225190376273, 0.2517584198082816, 0.25961431253513084, 0.30007855168141484, 0.37342127439089645, 0.4558634883647524], "MOMENTUM_X": [-4.97631556555549e-09, 0.0007687462132368626, 0.22509555609605808, 0.22727670607014508, 0.2818356476580415, 0.34584619795094945, 0.4228037577253664], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999857980406, 0.25231610125144815, 0.8050213158576616, 0.8156220375096739, 0.9029926244425796, 0.9185857258582844, 0.9557604547450704]}, "NODE_700": {"DENSITY": [0.12499999445584813, 0.1258173612823769, 0.2513849420552363, 0.2606289294279396, 0.29940212521398424, 0.3736114168737019, 0.45663774386546224], "MOMENTUM_X": [-5.608800893742551e-09, 0.0007626112655289372, 0.22421193665213315, 0.2296643569511009, 0.2806402833633517, 0.3458090820105167, 0.4237318091134603], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999998447637561, 0.252302286933881, 0.8029719800810907, 0.8214800745546627, 0.8995998022552262, 0.9175478814544553, 0.9565930150087734]}, "NODE_701": {"DENSITY": [0.12499999433839509, 0.1258297993303104, 0.25035826097857244, 0.26268627306275616, 0.29888338729686836, 0.3744031002351015, 0.45515740592626236], "MOMENTUM_X": [-5.974744630541649e-09, 0.0007742309469427137, 0.22173085278327598, 0.23454030583263352, 0.27970556639434235, 0.34700661555102763, 0.4225946167459942], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999998414750724, 0.2523376303974789, 0.7971576863446073, 0.833669369373089, 0.8961829877551561, 0.9184089744611053, 0.9555552032556357]}, "NODE_702": {"DENSITY": [0.12499999475029243, 0.12589227739799416, 0.24987918998141398, 0.2641004764981517, 0.2987094639841702, 0.37582834835435586, 0.45139545879487186], "MOMENTUM_X": [-5.813316697582147e-09, 0.0008457184014498031, 0.21998195358615988, 0.23756570551403006, 0.27855982724853984, 0.34862410035043917, 0.41855389154256417], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999998530081965, 0.2525154282360244, 0.7938347078639232, 0.8423869008909189, 0.8929477809643875, 0.9204331723915988, 0.9523323659760168]}, "NODE_703": {"DENSITY": [0.12499999562866577, 0.12624088298269867, 0.25286345998595855, 0.26444227941167786, 0.3001696624517253, 0.38064637065821966, 0.4482971962980914], "MOMENTUM_X": [-6.022600614447354e-09, 0.0012336077452857518, 0.2237327328284668, 0.23728609831094266, 0.2779149670899003, 0.3522324449175389, 0.41440214381179774], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999998776026502, 0.2535085497601089, 0.8071645324299751, 0.8431952280498699, 0.888264501569853, 0.9216744271147427, 0.948999182260495]}, "NODE_704": {"DENSITY": [0.12499998482558816, 0.1279214697073367, 0.2587001944759299, 0.26474096571099004, 0.30745389900796316, 0.39548048058649937, 0.45047562521408957], "MOMENTUM_X": [-1.4406664540868104e-08, 0.002934275284080156, 0.2372547391498162, 0.23913364272758347, 0.2850510078087929, 0.3678504080486852, 0.4191959698754478], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999575116531, 0.2583448665417595, 0.8403919680725784, 0.8416464183062194, 0.8863437906917849, 0.9288047643706441, 0.953383918159155]}, "NODE_705": {"DENSITY": [0.12500000003594083, 0.12499273137965423, 0.18566970187495532, 0.2741427967781794, 0.28460095620498504, 0.31051155181151113, 0.4147755765091753], "MOMENTUM_X": [3.660712409257073e-11, -1.793219198192678e-06, 0.10482710225939007, 0.2612461722621184, 0.27489335818257926, 0.2820840622543447, 0.383415386649053], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000001006343, 0.24997964732391836, 0.48316327547445703, 0.9105555881015692, 0.9315866655835368, 0.8752359877137933, 0.9386205915341591]}, "NODE_706": {"DENSITY": [0.12500000016216573, 0.12501343971508722, 0.20069399570723262, 0.2614630202593791, 0.2864889860098149, 0.324254817521148, 0.43285576264219067], "MOMENTUM_X": [9.416712414008918e-11, 1.86085489683887e-05, 0.13400119518160675, 0.23694743475243654, 0.2785645792939951, 0.2980792451056688, 0.4027697563712326], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.250000000454064, 0.2500376381357611, 0.5551938946862528, 0.8438524069576425, 0.9312183753603454, 0.8867549729852087, 0.9484756399100571]}, "NODE_707": {"DENSITY": [0.12500000026278016, 0.12505561843568336, 0.20562413724246392, 0.2617286310514908, 0.2867251252689124, 0.3323021198020424, 0.4337378865335042], "MOMENTUM_X": [6.946624096719768e-11, 5.791430425165173e-05, 0.13880106230145364, 0.23552435401989882, 0.2751786631151039, 0.3060209976357763, 0.4028128199930896], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000073578443, 0.25015581751322424, 0.5755528331750175, 0.841948399213779, 0.9191351311044762, 0.893407300970225, 0.9471971659074664]}, "NODE_708": {"DENSITY": [0.12500000021477628, 0.12508504621378694, 0.20469276153001775, 0.2666014947402421, 0.2858771316874562, 0.3344200446210107, 0.4270753303259744], "MOMENTUM_X": [-1.2065973363400568e-10, 8.626718000311882e-05, 0.1351725062433468, 0.24534676102657016, 0.27139530913738874, 0.30857131206832583, 0.3956784446814171], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000006013736, 0.2502383129931395, 0.5694635799318555, 0.867093983696915, 0.9076236921092882, 0.8971126324669416, 0.9417936389099023]}, "NODE_709": {"DENSITY": [0.1250000001332963, 0.12508969817736337, 0.20353348777595742, 0.26950832936820346, 0.2846560534056955, 0.33415925808457386, 0.4236479041409499], "MOMENTUM_X": [-3.486882620931405e-10, 9.249256632959685e-05, 0.13323412616660596, 0.2518890149100199, 0.26822880653598646, 0.30891862946056436, 0.39239723191273446], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000003732295, 0.25025135603357307, 0.5639607169087368, 0.8828477002911116, 0.8990422271996548, 0.8993434584930662, 0.9399013929665185]}, "NODE_710": {"DENSITY": [0.12500000010505097, 0.1250853232612947, 0.20330046067625307, 0.2699548342055866, 0.28399884757256144, 0.3337039027060239, 0.42414330314159354], "MOMENTUM_X": [-4.962626206336113e-10, 8.899901583555657e-05, 0.13320803195292358, 0.25298342860881945, 0.2667503330317979, 0.308620039119783, 0.393119434428642], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000002941427, 0.25023909118368126, 0.5631429802942376, 0.885259127514357, 0.8954896322472237, 0.8998259049869369, 0.9410658594934418]}, "NODE_711": {"DENSITY": [0.12500000007651568, 0.1250830309511882, 0.2032563950432696, 0.26994020028767673, 0.28407851838215264, 0.3335785507025764, 0.425289321375211], "MOMENTUM_X": [-5.703604732555264e-10, 8.650928322764023e-05, 0.13310052824026763, 0.25309754799037615, 0.2672251899217619, 0.30837389846179053, 0.3944577213300885], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000021424384, 0.2502326653453661, 0.5628959227835133, 0.8854288361250773, 0.8962736496783603, 0.8987918971152699, 0.9422292409276332]}, "NODE_712": {"DENSITY": [0.1250000000444164, 0.12508290552435175, 0.20333946027526578, 0.2697136132853404, 0.28431590515735383, 0.3342053476483822, 0.4255441748838349], "MOMENTUM_X": [-5.957554767772119e-10, 8.609097765139193e-05, 0.1330719725404102, 0.2529168189428741, 0.26813893872277267, 0.30936932622056323, 0.3951517968483924], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000001243659, 0.2502323153102917, 0.563039979161348, 0.8849723076408564, 0.8978432226634233, 0.8995544101168144, 0.9428164650158303]}, "NODE_713": {"DENSITY": [0.1250000000483127, 0.12508365733107318, 0.20498680480261636, 0.26809351877106286, 0.28422204761172176, 0.33582174063884945, 0.4247930182994733], "MOMENTUM_X": [-5.692109098349059e-10, 8.779671941886721e-05, 0.1359809047712221, 0.2493035979783334, 0.2675861317206961, 0.3112467750015228, 0.3941584359756502], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000001352754, 0.2502344370760105, 0.5705035762020108, 0.8767800275630248, 0.8967112543165721, 0.9021767250609086, 0.9417864465309578]}, "NODE_714": {"DENSITY": [0.12500000025390462, 0.12510955868970566, 0.211484351916257, 0.2647843096479647, 0.2842932854671214, 0.3404991541294361, 0.426536774972599], "MOMENTUM_X": [-4.417406304812123e-10, 0.00012019769111685301, 0.14696920702628638, 0.24118955408365053, 0.2655282891936939, 0.3150202812270732, 0.3946785021297669], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000071093287, 0.2503071371467679, 0.6003368618144633, 0.8579390950122213, 0.8906427731285327, 0.9041319007706619, 0.9407613004777214]}, "NODE_715": {"DENSITY": [0.12499999992320981, 0.12538676009614197, 0.22429159544948996, 0.26025789654875425, 0.2868716005208587, 0.3538701650127724, 0.43619188856446245], "MOMENTUM_X": [-1.2848493672716778e-09, 0.00032195651089265455, 0.17203254220192374, 0.23380046683327607, 0.2674406678197504, 0.32894957983169454, 0.40578665311612133], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999978498746, 0.2510856910386138, 0.6644321172008745, 0.8345746419153081, 0.8831996228005087, 0.9099390760814854, 0.9468920533568096]}, "NODE_716": {"DENSITY": [0.12499999999875441, 0.1249983842489792, 0.1448977613005536, 0.3009333368853398, 0.266959099485648, 0.2863319009019423, 0.3638217499004549], "MOMENTUM_X": [-4.259393311974972e-13, -1.7234759229974582e-06, 0.03057484487162244, 0.3212382980093232, 0.24337432157455513, 0.25895793542233636, 0.33629522622524965], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999651235, 0.24999547593505314, 0.31458785298556957, 1.0679250181598583, 0.8580030751000326, 0.8607895674747603, 0.9166205651859209]}, "NODE_717": {"DENSITY": [0.12500000000605277, 0.12499797662185282, 0.155478777599112, 0.2863718586206393, 0.2728773972019699, 0.29393717875760605, 0.3819496299417911], "MOMENTUM_X": [7.2632789373974634e-12, -1.4315010393757638e-06, 0.0499131308482125, 0.2937447257792604, 0.25765683447895893, 0.2683926134261904, 0.3550695358216729], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000169478, 0.24999433454234535, 0.3551422693430652, 0.9898826166302208, 0.8892562165717552, 0.866923595981314, 0.9248551716480803]}, "NODE_718": {"DENSITY": [0.12500000002251235, 0.12500043474621012, 0.1602742213667424, 0.2811027843948599, 0.27482149574289555, 0.3005930419781401, 0.3885357107992313], "MOMENTUM_X": [2.2071493261293912e-11, 2.2843383907750657e-06, 0.05603625896316359, 0.27929202834338845, 0.2591707577673824, 0.27570960844332754, 0.3605560179014223], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000006303463, 0.25000121740431475, 0.3732812481159472, 0.9554816794585681, 0.8929807343258975, 0.8757754760143283, 0.9265661389095072]}, "NODE_719": {"DENSITY": [0.12500000003368852, 0.125004104877663, 0.16025851373665195, 0.28265116282997016, 0.27358088496416255, 0.3038392841194572, 0.3867234133145898], "MOMENTUM_X": [2.7066759759844925e-11, 6.643051545238232e-06, 0.05465950316162515, 0.2818102029353607, 0.2550007542982107, 0.279959917975988, 0.3584125342851305], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000943279, 0.2500114947212791, 0.372640903806062, 0.9625423651229497, 0.8818722872810275, 0.8826058614079935, 0.9247593612623916]}, "NODE_720": {"DENSITY": [0.12500000003310718, 0.1250056863336818, 0.15938470163805835, 0.2853876016345378, 0.2714447284032895, 0.3045279592449659, 0.38397717606954535], "MOMENTUM_X": [1.928562147276224e-11, 8.402601651173586e-06, 0.05314235220397895, 0.28832181862157513, 0.2499439085253809, 0.2812215922570087, 0.35581819928345776], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000927002, 0.25001592334593886, 0.3691404639411306, 0.9783816373137166, 0.86851837134174, 0.8854758682303815, 0.9233606406943231]}, "NODE_721": {"DENSITY": [0.1250000000300086, 0.12500539062347674, 0.15910077866230538, 0.2863217875772699, 0.27071985704080254, 0.30419778668615205, 0.38325079817678315], "MOMENTUM_X": [1.3339700371764318e-11, 8.073127518708385e-06, 0.05291065321948986, 0.2907145459516706, 0.24828816786939, 0.28083202510723665, 0.35515655518232353], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000008402407, 0.2500150952195362, 0.3681185497932131, 0.9840367635238279, 0.8642151799305507, 0.8852457797336387, 0.9231591453270795]}, "NODE_722": {"DENSITY": [0.1250000000255237, 0.12500489503889967, 0.15918763617385925, 0.2855798800846878, 0.27198913844364925, 0.303781542867075, 0.3838361084144232], "MOMENTUM_X": [1.4335442064215283e-11, 7.52480672729046e-06, 0.053146049406043894, 0.2891882344737556, 0.2513013333503064, 0.28019853634370856, 0.3558013333398787], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000714662, 0.2500137074277609, 0.3684821155754041, 0.9800004214455136, 0.8715041514088886, 0.8835017042583516, 0.923440594275911]}, "NODE_723": {"DENSITY": [0.12500000001918898, 0.12500464708451275, 0.15967712081234972, 0.2834212763805499, 0.2740428152030277, 0.3039834687484416, 0.3847748347032004], "MOMENTUM_X": [1.7913794809533456e-11, 7.25254670736685e-06, 0.05412048350508946, 0.28457288964441596, 0.256186922973409, 0.2806407700842852, 0.3571473082360087], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000537291, 0.2500130130871267, 0.37042440637792834, 0.9681965466716915, 0.8835197983738019, 0.8835675106274434, 0.92454804577939]}, "NODE_724": {"DENSITY": [0.12500000001493675, 0.12500382677545047, 0.16173852845672926, 0.2794684782052149, 0.2754965211665394, 0.3051702969960322, 0.38589357630125365], "MOMENTUM_X": [1.9886297131008904e-11, 6.5693319941697265e-06, 0.058176157894365074, 0.27566815811293227, 0.2591979489831901, 0.2820973255304487, 0.35812493243146376], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000418229, 0.25001071607959807, 0.3787526068518891, 0.9461767254103796, 0.8918628058602974, 0.8861006674720737, 0.9251813990537587]}, "NODE_725": {"DENSITY": [0.12500000002154732, 0.1250021935527889, 0.16816173663189218, 0.2737738845053683, 0.2760147223626051, 0.3086173336621706, 0.39041650568733527], "MOMENTUM_X": [3.829557208159047e-11, 7.483371061828817e-06, 0.06966583004711127, 0.2620858125145319, 0.2590290106159449, 0.28500241152601274, 0.36145760724891485], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000603326, 0.2500061434398502, 0.4048482121355792, 0.9132694417140513, 0.8919310213836015, 0.88840489283059, 0.9258289954624367]}, "NODE_726": {"DENSITY": [0.1250000000516242, 0.1250298590597875, 0.18184787404333416, 0.26542159296243045, 0.27640264995588615, 0.3182141991237799, 0.4041918798130428], "MOMENTUM_X": [5.509935999448445e-11, 3.13201097689941e-05, 0.09455440045988545, 0.24706464908794434, 0.25951566421895744, 0.29538568340313126, 0.37595088312076874], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000001445477, 0.25008363072729733, 0.4639423389701585, 0.8702077910864676, 0.8856570790606693, 0.8927624835415783, 0.9327656972261217]}, "NODE_727": {"DENSITY": [0.12499999999965553, 0.1249998407735473, 0.12842732192592346, 0.30091406197820475, 0.2453208981430598, 0.2784580672635285, 0.32391807064369743], "MOMENTUM_X": [-3.1538163885990093e-13, -2.2296589264175588e-07, 0.004031727711763376, 0.3240295787066934, 0.19922865690899483, 0.2574162662681055, 0.29985301100797057], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999999990355, 0.24999955416661837, 0.25987990446830384, 1.0739277768376463, 0.7496711236303796, 0.8798293835675642, 0.9012091133817755]}, "NODE_728": {"DENSITY": [0.12499999999968811, 0.12499962408291636, 0.13210950821177544, 0.2959935944781719, 0.2534039063235978, 0.27946159703433815, 0.33748329990021314], "MOMENTUM_X": [-2.6514894886863143e-13, -4.6856141035488895e-07, 0.009178029579816352, 0.3175122549380786, 0.219084476335232, 0.25741466454898204, 0.3140533191686165], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999999991267, 0.2499989474348928, 0.27111233534482315, 1.0510311920895195, 0.7958956880766341, 0.8697517379694004, 0.9063949304215614]}, "NODE_729": {"DENSITY": [0.1250000000007893, 0.12499959007164171, 0.13451804450710114, 0.29041265879157746, 0.2595789912669087, 0.2830546527464275, 0.34492476803539396], "MOMENTUM_X": [1.0755113685445594e-12, -4.857202565509865e-07, 0.01231236051252467, 0.3016279129226899, 0.23054825625150183, 0.2607855228201016, 0.3200851813266221], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000221, 0.24999885220215373, 0.2786935263481418, 1.0134266678212043, 0.8258875877148857, 0.8731688625039711, 0.9075769459372656]}, "NODE_730": {"DENSITY": [0.12500000000256295, 0.12499988990180032, 0.13484418729512376, 0.28848237257796844, 0.2608284390851722, 0.28596983216178945, 0.3462693697015172], "MOMENTUM_X": [3.1985157758580217e-12, -2.0926830982469889e-07, 0.012547214633741161, 0.2963313169990395, 0.23196980156976266, 0.2648684243148447, 0.32106889912595976], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000071763, 0.24999969172482794, 0.2797009856360487, 1.0002220665996129, 0.8300896988081312, 0.8806016792582129, 0.9077656327094867]}, "NODE_731": {"DENSITY": [0.12500000000348804, 0.12500014547305344, 0.13448445618471952, 0.28944413413687486, 0.2590924961958211, 0.2869712539267318, 0.34524317739530574], "MOMENTUM_X": [4.738547947567809e-12, 2.291299982600772e-08, 0.012055333793735155, 0.2990757349953268, 0.22792982658956412, 0.2664492695979487, 0.32023900906337993], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000097665, 0.25000040732697526, 0.2785509274796973, 1.0062518602243977, 0.8196142770493225, 0.8837220645735817, 0.9077553974319991]}, "NODE_732": {"DENSITY": [0.12500000000383404, 0.12500014998306178, 0.13430098547349809, 0.2902268383457078, 0.2582732602844209, 0.2866020572313778, 0.3443978326527854], "MOMENTUM_X": [5.517376835757159e-12, 3.409096934635425e-08, 0.011862294220798984, 0.30125477368161624, 0.22612218632517186, 0.2656669166632207, 0.3194081404652823], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000001073536, 0.2500004199547871, 0.277977779155634, 1.0113640153926742, 0.8149003366412328, 0.8820065330263959, 0.9072985368140146]}, "NODE_733": {"DENSITY": [0.1250000000044861, 0.12500006324878182, 0.13433393102575736, 0.2893421079891324, 0.2602305882487093, 0.2857545933084905, 0.34436864624526775], "MOMENTUM_X": [5.726441796500307e-12, -3.9329079441498576e-08, 0.011935329431199161, 0.2993190628559283, 0.2305811562871588, 0.2641564185775842, 0.31931465625158134], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000001256106, 0.2500001770978229, 0.27808789243918386, 1.0064031046859836, 0.8259251552640332, 0.8780683773658039, 0.9066343498515287]}, "NODE_734": {"DENSITY": [0.12500000000518477, 0.12500001241752465, 0.13458470964441208, 0.28672429164826096, 0.2638057195830236, 0.28522289319773575, 0.345121171377622], "MOMENTUM_X": [5.393626858041081e-12, -9.088749444266853e-08, 0.012355824506140948, 0.29342922462073934, 0.23872140603032305, 0.2632911278535018, 0.32033883705137867], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000145174, 0.2500000347698935, 0.2789011569447386, 0.9914363028654736, 0.846394108904777, 0.8753763978589084, 0.907275442049757]}, "NODE_735": {"DENSITY": [0.1250000000058513, 0.12499989817749654, 0.1355653430380741, 0.28294183115726135, 0.2670180929292547, 0.2854878724979216, 0.3466750281336337], "MOMENTUM_X": [4.537917664481327e-12, -2.3495724218305555e-07, 0.014042015628656286, 0.2846157868948736, 0.24562698565550042, 0.26329875299541133, 0.3217801833075805], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000163836, 0.24999971489669776, 0.28211129304839755, 0.9695743263561885, 0.8648104453383627, 0.8752863794228903, 0.9083875691542609]}, "NODE_736": {"DENSITY": [0.12500000000817837, 0.12499940407176484, 0.1388841249529559, 0.27904629851053, 0.26896721949599384, 0.2872864378382995, 0.3515235971785364], "MOMENTUM_X": [2.554639937373139e-12, -6.39231560868709e-07, 0.019529597834800023, 0.2744735273108444, 0.24898388844436412, 0.264414398893042, 0.325548607568802], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000002289957, 0.24999833140089284, 0.2931525090771076, 0.9457699854585296, 0.8745596842791554, 0.8758062029776225, 0.9094077725445856]}, "NODE_737": {"DENSITY": [0.12500000001585454, 0.12500093218511987, 0.14765793412279918, 0.27279611110018404, 0.269563228542311, 0.29281759266742885, 0.3650137007124635], "MOMENTUM_X": [9.095010288070999e-12, 9.437306577776771e-07, 0.03404008933643467, 0.26438496662965133, 0.25172755940035224, 0.2708436297383239, 0.33941927529909394], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000443927, 0.25000261020870634, 0.323999525363757, 0.9148130091402307, 0.8766247810237145, 0.8779349348027922, 0.9153880498566056]}, "NODE_738": {"DENSITY": [0.12499999999996587, 0.12499999044630011, 0.1252814798744715, 0.2640224870338548, 0.23795923250682224, 0.2819933146232709, 0.2965410992608894], "MOMENTUM_X": [-1.3674868249002142e-14, -1.3178813374488521e-08, 0.00028875232435011223, 0.25285653709762534, 0.1846794559802258, 0.2726422018459674, 0.27334472309348273], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999990452, 0.24999997324964413, 0.25079024010204554, 0.8754822673105751, 0.7147512091412933, 0.9301601688772919, 0.884946492648549]}, "NODE_739": {"DENSITY": [0.1249999999998885, 0.12499995693253971, 0.12592384965117498, 0.27213199988091374, 0.23985047043916422, 0.2782984357370168, 0.305513453801292], "MOMENTUM_X": [-4.182099911330992e-14, -4.819410850779159e-08, 0.0008672489018397393, 0.27159036929087704, 0.19081471898348112, 0.2654311135732404, 0.28419493385655714], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999968775, 0.2499998794111545, 0.2526046235274206, 0.9236503954277532, 0.7279206897231104, 0.9052688813456589, 0.8916755880972485]}, "NODE_740": {"DENSITY": [0.12499999999985512, 0.12499991908385662, 0.12654632313954517, 0.2712850973390334, 0.24755003387035768, 0.2778921704573442, 0.31147738510840667], "MOMENTUM_X": [-1.9186731535945435e-14, -9.279759419199964e-08, 0.0014592091020812223, 0.26487111114968453, 0.2058385890329952, 0.2618675086716321, 0.2890092681103008], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999999995943, 0.24999977343492671, 0.25437769067051585, 0.9127744574003449, 0.7667707095660502, 0.8943229829145088, 0.8927220150297267]}, "NODE_741": {"DENSITY": [0.1249999999999811, 0.12499991841251801, 0.12673768334386995, 0.268380313900902, 0.2525185614310793, 0.2788964761140143, 0.31379442175654615], "MOMENTUM_X": [1.2615600778387597e-13, -1.0594647867495294e-07, 0.001674419873452001, 0.25735207239777186, 0.21566331605007527, 0.26253234962544647, 0.2908983882175718], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999994704, 0.24999977155515865, 0.25492613235708506, 0.8942443755912235, 0.7919823638851442, 0.8945990940568901, 0.8933315679580494]}, "NODE_742": {"DENSITY": [0.1250000000002023, 0.1249999399394745, 0.1266770780872147, 0.2675727166424047, 0.25296121756901346, 0.27937800812612823, 0.31403316945757814], "MOMENTUM_X": [2.860955067865132e-13, -9.31206854206867e-08, 0.0016454598738430272, 0.25639585851352625, 0.21666566274959684, 0.2630770753399257, 0.2913045540538223], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000005664, 0.24999983183057853, 0.25475324720424336, 0.8902812874673143, 0.7940096169056501, 0.8952309222763828, 0.8941871455725244]}, "NODE_743": {"DENSITY": [0.12500000000044376, 0.12499994419522092, 0.12661590269528994, 0.2677675915474837, 0.2524386621254836, 0.27890701370080034, 0.3136593136816068], "MOMENTUM_X": [3.1761234686051e-13, -8.882928514096228e-08, 0.001594771415990085, 0.2573752274669275, 0.21564047685257942, 0.26196210386773006, 0.29101839108458116], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000012425, 0.2499998437466571, 0.2545785997889258, 0.8920548535665824, 0.7911772743134591, 0.8923737267609225, 0.894363158250206]}, "NODE_744": {"DENSITY": [0.12500000000074182, 0.12499993249874863, 0.1266112860382648, 0.2671556036289879, 0.2539555841059278, 0.27784524533070126, 0.31346101900408324], "MOMENTUM_X": [2.011021336082844e-13, -9.753458449965729e-08, 0.0015884894842124438, 0.2559325920931473, 0.21907152657394177, 0.2599713076956918, 0.29084489830355176], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000020771, 0.24999981099655158, 0.25456555333643854, 0.8885894593832814, 0.7997336352926213, 0.8870962685625854, 0.8938355367955061]}, "NODE_745": {"DENSITY": [0.12500000000106012, 0.12499992447796965, 0.1266564204314991, 0.26546596649150556, 0.25713166618599653, 0.27666926002536474, 0.31387931696588617], "MOMENTUM_X": [-4.5183959328558715e-15, -1.0527041206913737e-07, 0.0016390571885585236, 0.2518597877359956, 0.22622084863092287, 0.25783257878899574, 0.29153633732503187], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000296835, 0.24999978853839094, 0.2546954639167461, 0.8786992240218809, 0.81781996028003, 0.8814013496686838, 0.8943558854381627]}, "NODE_746": {"DENSITY": [0.1250000000012089, 0.12499991483099436, 0.12684370983193488, 0.26400183112281367, 0.26006406019365313, 0.2757986054752888, 0.3151290709479688], "MOMENTUM_X": [-1.358913555932062e-13, -1.1933489899863282e-07, 0.0018717811903935357, 0.24785994536814665, 0.23248144819456518, 0.2557057545051549, 0.2927389595735583], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000338496, 0.24999976152689285, 0.2552360748629497, 0.8695284802146548, 0.8345841021123079, 0.876515832378982, 0.8955905498420929]}, "NODE_747": {"DENSITY": [0.12500000000125125, 0.1249998524571162, 0.1276324501090055, 0.2651550396426165, 0.26179582914660926, 0.27573072359666434, 0.31887459463648155], "MOMENTUM_X": [-1.6646486237972783e-13, -1.9497668929962602e-07, 0.0028461615340975278, 0.24782453351126824, 0.23549846280085782, 0.2539574234594313, 0.29554948866403025], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000350353, 0.24999958688027155, 0.25752484486241345, 0.8728957671881583, 0.8436827590266286, 0.8716950470319387, 0.8962283216116977]}, "NODE_748": {"DENSITY": [0.12500000000332573, 0.12499982773437825, 0.13063313516449004, 0.26721707623056756, 0.2622398921087047, 0.2775580639319789, 0.32922263802334195], "MOMENTUM_X": [-1.145102724407528e-12, -2.564807118616699e-07, 0.006455843398287904, 0.2541515522988628, 0.2387079518659605, 0.2559584934413488, 0.3061692773176043], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000931205, 0.24999951765672987, 0.26642065500985507, 0.8866766979310814, 0.8480986705857558, 0.8683439399700015, 0.8999183539700784]}, "NODE_749": {"DENSITY": [0.12500000000000416, 0.125000000898313, 0.12499597532770969, 0.20766662766316749, 0.25686435214992626, 0.2847439069565339, 0.2778386989503876], "MOMENTUM_X": [-2.937822352608761e-15, 1.754526066439917e-10, 6.724023625093188e-06, 0.14641476498849698, 0.22520095336027846, 0.2820560292101198, 0.2515228289753804], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000001166, 0.2500000025152764, 0.24998872954201626, 0.5877291849909672, 0.8191175707933527, 0.9602367182797457, 0.8586514883829978]}, "NODE_750": {"DENSITY": [0.12499999999999815, 0.12499999808166534, 0.12505542441307432, 0.22258265532319915, 0.24729242303182106, 0.2817075793050801, 0.2840213698668645], "MOMENTUM_X": [-6.552534011512738e-15, -2.7297984491885744e-09, 5.684294445496299e-05, 0.17623945512171618, 0.20762066581733624, 0.2780722478446741, 0.2615569864221152], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999999999949, 0.2499999946286632, 0.2501552713568002, 0.664529412774229, 0.7711842248036247, 0.9448148173575924, 0.8715147023223335]}, "NODE_751": {"DENSITY": [0.12499999999998102, 0.12499999150443082, 0.12515022782039253, 0.22637693733810857, 0.25073919779986203, 0.27886122364078303, 0.28881151260342874], "MOMENTUM_X": [-9.410100338910112e-15, -9.336962906294414e-09, 0.00013711130347700046, 0.17853144210454186, 0.21337913828767696, 0.27010797673392245, 0.2666525066905957], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999994682, 0.24999997621240808, 0.25042114669091214, 0.6792403715406989, 0.7873720311773225, 0.9242606908181576, 0.877367052454363]}, "NODE_752": {"DENSITY": [0.12499999999996071, 0.12499998564283768, 0.12520494031415466, 0.22449094111100898, 0.2569987613968349, 0.2771583072156936, 0.29122589872767507], "MOMENTUM_X": [3.913716597064067e-15, -1.4564239732272886e-08, 0.00018836485404008732, 0.1728913378069668, 0.22612128021259376, 0.26529969336295955, 0.2691187242176035], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999989, 0.24999995979994957, 0.2505747356472097, 0.6674912265094785, 0.8201133153048663, 0.9116749410597882, 0.8799742581649123]}, "NODE_753": {"DENSITY": [0.12499999999994214, 0.12499998408038655, 0.12520788581302586, 0.222992134757928, 0.2598826954423735, 0.27621061287904486, 0.2919797500532837], "MOMENTUM_X": [4.1098924782051484e-14, -1.5465846122460855e-08, 0.00019657543210852596, 0.1703935591367396, 0.232627146290856, 0.2628992744659504, 0.2700156840676173], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999983802, 0.2499999554250866, 0.25058301011321044, 0.6600477743753139, 0.8359067505730309, 0.9051186945536965, 0.8812196483624422]}, "NODE_754": {"DENSITY": [0.12499999999991547, 0.12499998389309488, 0.12519664591167964, 0.22273772934000485, 0.2601456255594146, 0.27565299921532516, 0.292010306713237], "MOMENTUM_X": [9.309951511256976e-14, -1.5270523093378118e-08, 0.0001884321908502248, 0.17044949445142316, 0.23340308200480797, 0.2616108612591318, 0.270153847047554], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999976336, 0.2499999549006698, 0.25055145881017155, 0.6592420434232104, 0.8375093533512451, 0.9017240455133775, 0.8818212038710286]}, "NODE_755": {"DENSITY": [0.12499999999987857, 0.12499998258771361, 0.12519212355488016, 0.22254533811975288, 0.26048896485169365, 0.27519526345114353, 0.2919628098938417], "MOMENTUM_X": [1.520951456793604e-13, -1.639126966003943e-08, 0.0001836491361569423, 0.16996566966716653, 0.23425358334932436, 0.26092161354903887, 0.27035989805737326], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999965997, 0.24999995124560273, 0.2505387668614234, 0.6581610128937678, 0.839598463639169, 0.8996690407535213, 0.8822419209419851]}, "NODE_756": {"DENSITY": [0.1249999999998406, 0.12499998149015731, 0.12519447271924575, 0.2222418218636593, 0.26133753389858405, 0.27444902527346204, 0.2923216675624423], "MOMENTUM_X": [2.0776383567670398e-13, -1.7549114586530956e-08, 0.00018511175317696742, 0.16892558681612274, 0.23627168582558083, 0.2597589076681273, 0.27126314706083193], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999955372, 0.24999994817244592, 0.2505453733981615, 0.6560626721132575, 0.844766517122012, 0.8964798200188971, 0.8838432902857627]}, "NODE_757": {"DENSITY": [0.12499999999980209, 0.12499998143779402, 0.12520774560794817, 0.2234184011565821, 0.2613972754571562, 0.27327854777206734, 0.29331300908285995], "MOMENTUM_X": [2.516779152305481e-13, -1.8169751138848943e-08, 0.00019909717465703357, 0.1706231713278489, 0.23624478520211314, 0.25711636232777535, 0.27252971958296573], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999944578, 0.24999994802582906, 0.25058270970519914, 0.661078710586727, 0.8454857904880668, 0.8904782676700841, 0.8862336501739707]}, "NODE_758": {"DENSITY": [0.12499999999966926, 0.12499997553189351, 0.12529866893913777, 0.2292330473091329, 0.2599548952417061, 0.27190551523578355, 0.29582118629532006], "MOMENTUM_X": [3.68022375565133e-13, -2.567464730579582e-08, 0.0002948530651546217, 0.1800542384937186, 0.23230311477520627, 0.2531090165904049, 0.274456122712711], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999999990739, 0.24999993148931335, 0.25083846209647703, 0.6881844672455237, 0.8369834903695984, 0.8809171620751349, 0.8873105710682895]}, "NODE_759": {"DENSITY": [0.12499999999950122, 0.12499994680806126, 0.12589489155771455, 0.24004796752265845, 0.2571288844763924, 0.2707865449431448, 0.302417907731799], "MOMENTUM_X": [6.814774224960366e-13, -4.8932805667922755e-08, 0.0007628440782750032, 0.20195181977311982, 0.2287080370331626, 0.2508994661515754, 0.2814689665502419], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999860342, 0.24999985106261352, 0.25251974067717853, 0.7447209385507445, 0.8244744967581661, 0.8701286094636653, 0.8890505966090881]}, "NODE_760": {"DENSITY": [0.12500000000000053, 0.12500000021008237, 0.12499677212098663, 0.15812851619500076, 0.28946249544712627, 0.27432864371824284, 0.2663726290266346], "MOMENTUM_X": [-3.827067541236122e-17, 1.8484622509490845e-10, -2.710384885248737e-06, 0.05464119828826794, 0.2966883098457184, 0.2623423654038952, 0.2362728406906509], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000155, 0.25000000058823074, 0.24999096203166477, 0.36553143759843926, 1.0043420458358483, 0.9100883338191554, 0.8342281176006403]}, "NODE_761": {"DENSITY": [0.12500000000000158, 0.1250000002432478, 0.12499780667757202, 0.1712738940170252, 0.273268207234866, 0.277453270473845, 0.2700273294501031], "MOMENTUM_X": [-1.1623518128306275e-15, 9.506483196846513e-11, -1.7385668285378044e-07, 0.07963178496950493, 0.2652746576512304, 0.2717125095909763, 0.2439939113991618], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000044, 0.25000000068109374, 0.24999385853540562, 0.42141891449531454, 0.9178421224340344, 0.931019367700543, 0.8467393199290931]}, "NODE_762": {"DENSITY": [0.12500000000000255, 0.12499999980697613, 0.1250052893778498, 0.17636400472021305, 0.2699541731885957, 0.27638599056225865, 0.2743836554470579], "MOMENTUM_X": [-3.752087391819737e-15, -5.688125638868037e-10, 9.303423894937979e-06, 0.08540996753304696, 0.2555878500775209, 0.26775453047490405, 0.2504528030942958], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000716, 0.2499999994595331, 0.2500148119863411, 0.44168418087938993, 0.8955315345918452, 0.9220683507501117, 0.8594936974626551]}, "NODE_763": {"DENSITY": [0.12500000000000291, 0.12499999899528702, 0.12501367278434866, 0.17571438314889767, 0.27367711156759233, 0.27339456519347316, 0.2771637242723631], "MOMENTUM_X": [-6.9128583208516025e-15, -1.561953790829932e-09, 1.8640325050009198e-05, 0.08240903602191062, 0.26293821446399945, 0.2602619128805886, 0.2545766714754259], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000081, 0.2499999971868036, 0.2500382912569725, 0.43777305690358936, 0.9149431089436671, 0.9033505485308195, 0.86765864484901]}, "NODE_764": {"DENSITY": [0.12500000000000255, 0.12499999846803612, 0.12501664604182577, 0.1743896135062287, 0.2773102664137059, 0.270843276835179, 0.2781542538457444], "MOMENTUM_X": [-8.159243778738284e-15, -2.259546119203432e-09, 2.1883023549363977e-05, 0.08009532242185033, 0.27141522547152114, 0.25450278770216894, 0.25596878421062186], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000716, 0.24999999571050133, 0.2500466187419295, 0.4320111080166543, 0.9358073545623069, 0.8884294691669682, 0.8702219283987987]}, "NODE_765": {"DENSITY": [0.12500000000000042, 0.12499999833714366, 0.1250157792650062, 0.17399819803499914, 0.27833467013567426, 0.27012076493167736, 0.27819594897422684], "MOMENTUM_X": [-5.672433298464e-15, -2.5594428669704106e-09, 2.094640319234076e-05, 0.07980013104884123, 0.274050236328415, 0.2529459475607604, 0.25591359177414597], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000117, 0.24999999534400244, 0.25004419083597207, 0.4305294817324559, 0.9420242308558661, 0.8842850820286017, 0.8700662267286551]}, "NODE_766": {"DENSITY": [0.12499999999999505, 0.12499999821802946, 0.1250146799080708, 0.17407359861334104, 0.27764818768995514, 0.27105024670911826, 0.2781037429019829], "MOMENTUM_X": [8.987474199342563e-16, -2.7649588622140753e-09, 1.9727168143239298e-05, 0.08001819473091248, 0.27261226493396706, 0.255229704468278, 0.2560054432133581], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999998612, 0.24999999501048256, 0.25004111179929184, 0.4308569831946703, 0.9382450105879071, 0.8898745970365707, 0.8701453419600674]}, "NODE_767": {"DENSITY": [0.12499999999998754, 0.12499999806726463, 0.1250141882264715, 0.17459591001348704, 0.2759093707737376, 0.27227127271158236, 0.2784205195916543], "MOMENTUM_X": [1.0402694804650117e-14, -2.9204470077770703e-09, 1.921377248182053e-05, 0.08098277608921325, 0.26881916351476387, 0.25828654803136086, 0.25702679756601216], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999996508, 0.249999994588341, 0.2500397348489333, 0.4329833004698261, 0.9286077447485969, 0.8975811295667575, 0.872380498107623]}, "NODE_768": {"DENSITY": [0.12499999999998326, 0.12499999815540423, 0.1250131257004095, 0.1769826492132222, 0.2726874788639328, 0.2726158077775951, 0.2793287319114904], "MOMENTUM_X": [1.6332240749279278e-14, -2.865161619375107e-09, 1.866942677416658e-05, 0.08557420380575592, 0.26146723120941484, 0.25896645822760006, 0.25860787642291205], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999995307, 0.2499999948351319, 0.2500367598411545, 0.44321125559557145, 0.910493397839954, 0.9001394313268853, 0.876345011609398]}, "NODE_769": {"DENSITY": [0.12499999999998392, 0.12499999819597128, 0.12501464170688045, 0.18422196694154724, 0.26761802127267575, 0.2717258626050614, 0.2810922816651515], "MOMENTUM_X": [1.0916269997372688e-14, -3.299439672441945e-09, 2.5077724568952327e-05, 0.09835081302572271, 0.24933355745568095, 0.2562323070954966, 0.260355970724343], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999995498, 0.24999999494871974, 0.2500410110365701, 0.4744571108441912, 0.8811450986440943, 0.8942790316986833, 0.8791674575908525]}, "NODE_770": {"DENSITY": [0.12499999999993279, 0.12499999370577232, 0.12508898451357783, 0.19858566623300283, 0.26002667676825636, 0.269493019560656, 0.2848351970385524], "MOMENTUM_X": [7.286134668464251e-14, -7.563728602502731e-09, 8.288956602460132e-05, 0.1250017136785968, 0.23574211035834328, 0.25282895954809703, 0.26502015006695795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999981184, 0.2499999823761635, 0.25024932894937163, 0.5406432178559009, 0.8426591520858251, 0.881858025877273, 0.880895094869477]}, "NODE_771": {"DENSITY": [0.12499999999999993, 0.12500000001861092, 0.12499963022920516, 0.13234089951931108, 0.30566620326835786, 0.2510065309273595, 0.2650190947189022], "MOMENTUM_X": [8.855396766437273e-17, 2.4769487260956526e-11, -5.033467699675665e-07, 0.00969116390855921, 0.333582570645587, 0.21367197604904722, 0.23787675565103525], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999999999998, 0.25000000005211054, 0.24999896464490237, 0.27187863777485266, 1.1014584300674937, 0.7860059141522037, 0.8447669184200511]}, "NODE_772": {"DENSITY": [0.12499999999999994, 0.12500000004575074, 0.12499927315692812, 0.13846069354158885, 0.29486530012426754, 0.26013857827192743, 0.26435259056829624], "MOMENTUM_X": [1.5133266564934965e-16, 5.012005406184787e-11, -8.393023035992004e-07, 0.01957628405552711, 0.3147459607222589, 0.23624117622196528, 0.23789336789452792], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999986, 0.25000000012810203, 0.24999796484736572, 0.2920427191716688, 1.0451888933666047, 0.840135785868821, 0.8405735113789601]}, "NODE_773": {"DENSITY": [0.12500000000000014, 0.12500000004694542, 0.12499945230919594, 0.14183220142089684, 0.2882762200862021, 0.26459355721289823, 0.26730313448583065], "MOMENTUM_X": [2.1043104244592727e-17, 3.717080875317598e-11, -4.6563237667834846e-07, 0.024111102773512402, 0.29683470739923806, 0.2439860325433917, 0.24266942713617293], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000003, 0.2500000001314469, 0.24999846646521878, 0.30345307885160633, 1.0019611199385845, 0.8620523898213025, 0.8513652877975703]}, "NODE_774": {"DENSITY": [0.12500000000000053, 0.12499999998424002, 0.12500028182372644, 0.14195298556718017, 0.28770328665443157, 0.26366018873412683, 0.2703097475810156], "MOMENTUM_X": [-5.687693977883607e-16, -4.833838608319792e-11, 4.5858693441524517e-07, 0.02366663471276354, 0.294488166174437, 0.2406652345594558, 0.24803069228276867], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000144, 0.24999999995587202, 0.25000078912107326, 0.30370760503121336, 0.9965706055565924, 0.8550295342319045, 0.8639652221409099]}, "NODE_775": {"DENSITY": [0.1250000000000014, 0.12499999990565368, 0.1250008810644367, 0.14124789734147894, 0.28987319857539356, 0.2607839639784242, 0.2715409675185942], "MOMENTUM_X": [-1.7697829593079883e-15, -1.5806309655874988e-10, 1.0675236311971457e-06, 0.02255257297603317, 0.29990816513180185, 0.23421043048256077, 0.25019355326964426], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000383, 0.24999999973583026, 0.2500024670254582, 0.3012551530107817, 1.0096493510692903, 0.8387100492794883, 0.8688320292051545]}, "NODE_776": {"DENSITY": [0.1250000000000028, 0.1249999998683043, 0.12500090539669434, 0.14094689977231922, 0.29103671164694456, 0.25981724521239674, 0.2713160738684714], "MOMENTUM_X": [-3.5467779435498536e-15, -2.272538416106242e-10, 1.0924051760451183e-06, 0.022227991851025343, 0.303000941072322, 0.23221415748245985, 0.2495545033178978], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000079, 0.24999999963125202, 0.2500025351538057, 0.30025348617056247, 1.0170776494997296, 0.8334335146070825, 0.8671208612673182]}, "NODE_777": {"DENSITY": [0.1250000000000048, 0.12499999985304869, 0.1250007254754283, 0.14101544846882483, 0.2899905325584392, 0.26192819000977025, 0.270674517649944], "MOMENTUM_X": [-5.768279768206664e-15, -2.604592553996615e-10, 9.175552006644409e-07, 0.022401066141279652, 0.3007198578003064, 0.23704657426184425, 0.24844053169566022], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000001343, 0.2499999995885363, 0.2500020313642228, 0.3005017951899214, 1.0111457591896855, 0.8454641110880229, 0.8641029854693358]}, "NODE_778": {"DENSITY": [0.12500000000000686, 0.12499999983515296, 0.12500059085504284, 0.14144952457481227, 0.28703763187482423, 0.2655008751360827, 0.27041254365510087], "MOMENTUM_X": [-8.055552827007336e-15, -2.8036562758683044e-10, 7.79131009372974e-07, 0.023198219787150913, 0.29404946746825333, 0.24512274400897613, 0.24829017382864413], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000192, 0.24999999953842833, 0.25000165442141575, 0.3020165378878191, 0.9940705044837462, 0.8660036176604609, 0.8635501840211551]}, "NODE_779": {"DENSITY": [0.1250000000000089, 0.12499999984237245, 0.1250002878259307, 0.14305153334799217, 0.2827196842157771, 0.26842949964148904, 0.2708435798706291], "MOMENTUM_X": [-9.957452300940119e-15, -2.689173087517302e-10, 4.590655148614846e-07, 0.02616938881544395, 0.28408443298404396, 0.25138382381994034, 0.24911472636932794], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2500000000000249, 0.24999999955864288, 0.2500008059293141, 0.30768753351980116, 0.9690020521017083, 0.8828508333073157, 0.8660696246207376]}, "NODE_780": {"DENSITY": [0.1250000000000137, 0.12499999990372003, 0.12499938115969475, 0.14793727338757848, 0.2774974277255052, 0.2696804536147576, 0.2719544180598665], "MOMENTUM_X": [-1.4484141360083503e-14, -2.3438942003604176e-10, 8.578073678403814e-08, 0.03473139843777023, 0.27123702945775385, 0.2533311874591373, 0.25033760364040425], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000003836, 0.24999999973041612, 0.24999826725887325, 0.32529639551765094, 0.937793258586191, 0.8892438744889933, 0.8689990872553902]}, "NODE_781": {"DENSITY": [0.12500000000002406, 0.1249999995232124, 0.12500508801342242, 0.15927198481766586, 0.2691935021582346, 0.26868099644714594, 0.27385735628004143], "MOMENTUM_X": [-2.9321306930915986e-14, -7.194479948874895e-10, 5.791819195887635e-06, 0.0544754978081763, 0.25654353461908286, 0.2532472894173047, 0.2536115082180312], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000006734, 0.24999999866499467, 0.2500142474705589, 0.36869733085810025, 0.8953549465405605, 0.8858601207841084, 0.8712122997428026]}, "NODE_782": {"DENSITY": [0.125, 0.12500000000089906, 0.12499996774072789, 0.1258113731780732, 0.28403962981862774, 0.23315973653958802, 0.2741136310751381], "MOMENTUM_X": [-6.0058360801768536e-18, 1.2046604331079455e-12, -4.150807912167117e-08, 0.0008272152712727183, 0.292221219289165, 0.1757261231518148, 0.2598401471890611], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000251726, 0.24999990967406832, 0.25228782001168704, 0.9850757782725196, 0.6925875840240849, 0.9040667491868637]}, "NODE_783": {"DENSITY": [0.12499999999999999, 0.12500000000482078, 0.12499990227702558, 0.127154723806658, 0.286655367104167, 0.23994134208592247, 0.2687201108057848], "MOMENTUM_X": [1.1085430155193249e-17, 5.338188111073377e-12, -1.1657116946446034e-07, 0.002245855299272156, 0.30066817128825335, 0.1923613019521587, 0.2504741780714506], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999994, 0.25000000001349826, 0.2499997263758818, 0.2561365912673451, 1.004300121307076, 0.7320691237504111, 0.8767055981578908]}, "NODE_784": {"DENSITY": [0.12499999999999996, 0.12500000000952124, 0.12499985218106517, 0.12825725997628756, 0.2830498468467954, 0.24877497154645598, 0.2682538423577517], "MOMENTUM_X": [5.928500832001375e-17, 1.0988555022362778e-11, -1.8368637767023344e-07, 0.003449614332423643, 0.2883861865107948, 0.2099604704540188, 0.24833741987369765], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999999999999, 0.25000000002665945, 0.24999958610736664, 0.2593490029883545, 0.9774895923799528, 0.7774578316698864, 0.8712588438036212]}, "NODE_785": {"DENSITY": [0.1249999999999999, 0.12500000000797565, 0.12499989485670253, 0.12848238567405967, 0.279906526441228, 0.25251538810366053, 0.26995697006796365], "MOMENTUM_X": [1.2496283024641088e-16, 1.1359474835908021e-11, -1.7008636590257232e-07, 0.003713372990898246, 0.28033278470067474, 0.21698663042615543, 0.25127518657232906], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999972, 0.2500000000223319, 0.24999970559886595, 0.26001005791555604, 0.9571871614929086, 0.7962074496282793, 0.8786194430544503]}, "NODE_786": {"DENSITY": [0.12499999999999986, 0.12499999999914607, 0.12499996963536988, 0.12830754881587664, 0.2797302380759313, 0.25160289594959906, 0.27097619382790367], "MOMENTUM_X": [1.7813311825378882e-16, 5.410305008827948e-12, -1.1418882469565385e-07, 0.0035520552184465145, 0.28074823667974347, 0.21499661892722138, 0.2532512470630827], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999958, 0.24999999999760897, 0.24999991497898144, 0.2594977525724174, 0.9568495514230778, 0.7910731641070886, 0.8833167031046337]}, "NODE_787": {"DENSITY": [0.12499999999999985, 0.12499999999087744, 0.12499998980694968, 0.12818710500912348, 0.2802885137674546, 0.2507020390715007, 0.2705360342194679], "MOMENTUM_X": [1.717471378697892e-16, -1.0336426828282907e-15, -9.304930280211538e-08, 0.003435093974205599, 0.2825902653050215, 0.21321386365027295, 0.2522541600428455], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999956, 0.2499999999744568, 0.2499999714593935, 0.25914621200815097, 0.960885926988087, 0.7863684457766197, 0.8806390814362692]}, "NODE_788": {"DENSITY": [0.12499999999999989, 0.12499999998700716, 0.12499996716413456, 0.12818977496632206, 0.2794408856289389, 0.25273602552506447, 0.26928475870277874], "MOMENTUM_X": [6.674100007884132e-17, -2.1539976416879106e-12, -1.0849491934261328e-07, 0.0034398423149984963, 0.2806262414988588, 0.21775661026159812, 0.2498189715518891], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999975, 0.24999999996362013, 0.24999990805949968, 0.25915474112655373, 0.9560223796378228, 0.7977386438323945, 0.8741918596642198]}, "NODE_789": {"DENSITY": [0.12500000000000008, 0.1249999999848241, 0.1249999452397368, 0.1283039409589322, 0.27702772354914745, 0.2569098725001931, 0.2680309505721623], "MOMENTUM_X": [-1.3713567308569773e-16, -3.6876085476777484e-12, -1.2952918032953172e-07, 0.003589405208299828, 0.27490305597471776, 0.2269881952830283, 0.2475084913572664], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000017, 0.2499999999575073, 0.24999984667121022, 0.2594922847060955, 0.941744987359123, 0.8211368969208254, 0.8681998061487951]}, "NODE_790": {"DENSITY": [0.12500000000000017, 0.12499999998515418, 0.124999907737818, 0.12873439740013576, 0.2743813031620221, 0.2609599015252762, 0.26727617984723356], "MOMENTUM_X": [-2.798494520120218e-16, -3.17788679047275e-12, -1.7810277382728502e-07, 0.004193478735820344, 0.2683218688075651, 0.23566622221896882, 0.2458449984938345], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000044, 0.24999999995843167, 0.24999974166590253, 0.2607724493730394, 0.9256830253520764, 0.8438934364834264, 0.8646047654633338]}, "NODE_791": {"DENSITY": [0.12500000000000006, 0.12499999999431842, 0.12499976235167504, 0.13029571428659947, 0.2733263175256015, 0.26355210702916726, 0.26710451959676573], "MOMENTUM_X": [-5.998584712700149e-17, 6.205719895629091e-12, -3.4275529132738797e-07, 0.006379658797267181, 0.26381582828895966, 0.2405970531607476, 0.24470395546508844], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000017, 0.24999999998409161, 0.2499993345852339, 0.2654697390143365, 0.9169383675865976, 0.857777798522873, 0.8623074534678077]}, "NODE_792": {"DENSITY": [0.1250000000000014, 0.12499999996777116, 0.12499998837566985, 0.13527314194218804, 0.27142590343946227, 0.2641617184620419, 0.2672658515701493], "MOMENTUM_X": [-1.78514334026737e-15, -8.525813212229967e-12, -1.9169665506900679e-07, 0.013379994575619501, 0.26240542278085344, 0.24429564331663034, 0.24567388768408363], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000383, 0.24999999990975919, 0.249999967453243, 0.28101222299311185, 0.9095655794030392, 0.8642256558923458, 0.8609726925340018]}, "NODE_793": {"DENSITY": [0.125, 0.12499999999989711, 0.12499999993912149, 0.125022372095415, 0.23236211406031904, 0.24135367008541536, 0.28455787641307323], "MOMENTUM_X": [-1.5091537936017274e-18, -8.331324945003967e-14, -1.4296120399421854e-09, 3.756797139217967e-05, 0.19330493785248443, 0.19323577043464898, 0.2838576217081068], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2499999999997118, 0.24999999982953994, 0.25006267206399163, 0.7118444664137832, 0.7378758206519453, 0.9679211509470175]}, "NODE_794": {"DENSITY": [0.125, 0.12500000000021944, 0.12499999199194017, 0.12518285566276238, 0.24537864259413467, 0.23684329897223677, 0.2785322102267134], "MOMENTUM_X": [-5.343345645871718e-18, 1.909708308185547e-13, -9.036580499758727e-09, 0.00016379867434397204, 0.22046423704665147, 0.18619041934984393, 0.2738702844769238], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000006145, 0.24999997757743425, 0.2505127534413684, 0.7832119038182958, 0.7176230591506828, 0.9383340581549218]}, "NODE_795": {"DENSITY": [0.125, 0.1250000000010652, 0.12499997850853116, 0.12538893038880147, 0.24712567326751597, 0.24368345606410824, 0.2747462631082798], "MOMENTUM_X": [-5.623844263306112e-18, 1.020990027873451e-12, -2.2459227082707214e-08, 0.00033288857920836295, 0.2185709429250256, 0.1991470198544404, 0.2644469588816139], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000298267, 0.2499999398238969, 0.25109207647173226, 0.7867706405767595, 0.7516908658909043, 0.9148926084588911]}, "NODE_796": {"DENSITY": [0.125, 0.12500000000188802, 0.12499997071778206, 0.125479170221375, 0.24421652805922095, 0.25073205093533335, 0.2734605294755292], "MOMENTUM_X": [-1.1316477076650346e-18, 1.8313696430078426e-12, -2.995387317468498e-08, 0.0004206375909072609, 0.21085758276518327, 0.21333995111632942, 0.2608885453452101], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000052864, 0.24999991800980428, 0.25134625032952307, 0.7687818830257994, 0.7881886183292754, 0.906238683764927]}, "NODE_797": {"DENSITY": [0.12499999999999999, 0.12500000000189238, 0.12499997272124506, 0.12546615799237787, 0.2426178442674642, 0.25300672669717916, 0.2731590673088208], "MOMENTUM_X": [1.4454608030002848e-17, 1.929689665079456e-12, -2.7557689578060577e-08, 0.000422852092971449, 0.20830969529326432, 0.2184246894292573, 0.26011310012795497], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999994, 0.25000000000529865, 0.24999992361949647, 0.25130963701617065, 0.760691471218045, 0.8005390367886372, 0.9041440889637269]}, "NODE_798": {"DENSITY": [0.12499999999999996, 0.1250000000013704, 0.12499997532302985, 0.12543859328616044, 0.2424812665196296, 0.2528723246696052, 0.27265431200357504], "MOMENTUM_X": [5.369596969134264e-17, 1.5681629380063728e-12, -2.4312424050171028e-08, 0.0004026179494453666, 0.20871949191436917, 0.21840154644545912, 0.2590822708645424], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.2499999999999999, 0.25000000000383715, 0.24999993090449113, 0.251232038633286, 0.7606865703985857, 0.8001064100736905, 0.9013551487936811]}, "NODE_799": {"DENSITY": [0.1249999999999999, 0.12500000000109715, 0.12499997351119944, 0.12543152833683738, 0.24207510726397086, 0.2537152067008256, 0.27163773205118225], "MOMENTUM_X": [1.1038116245424296e-16, 1.3225664191143596e-12, -2.554601112717637e-08, 0.00039467924427829556, 0.20770974893472682, 0.22032420028001032, 0.25717741175275594], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999975, 0.2500000000030721, 0.24999992583136701, 0.2512121603480356, 0.7583668941448563, 0.8048948954986889, 0.896189192959302]}, "NODE_800": {"DENSITY": [0.12499999999999983, 0.1250000000010524, 0.12499997086581917, 0.12544287426681636, 0.24112657371106444, 0.2559187693581719, 0.2701612287161527], "MOMENTUM_X": [1.7434076354389665e-16, 1.1725371508730016e-12, -2.8303170545112262e-08, 0.0004041596722194951, 0.20512775989446516, 0.22517074031618148, 0.254353944735445], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999953, 0.25000000000294675, 0.2499999184243046, 0.25124417276209676, 0.7525000381082656, 0.8172305700877905, 0.8888406998760257]}, "NODE_801": {"DENSITY": [0.12499999999999978, 0.1250000000010321, 0.12499996781681821, 0.1254916198921894, 0.24134134780800437, 0.2578794523316781, 0.2684545979414497], "MOMENTUM_X": [2.3897025676321503e-16, 1.0996558114864858e-12, -3.261769263989614e-08, 0.00045488540220673296, 0.20464621909751288, 0.2292052453821559, 0.2505994185705824], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999933, 0.2500000000028897, 0.24999990988710588, 0.2513818346309858, 0.7522700231499974, 0.8281348548753937, 0.8799379570783916]}, "NODE_802": {"DENSITY": [0.12499999999999963, 0.12500000000226175, 0.12499994864066849, 0.12573098811078343, 0.24566118621088645, 0.258487421675706, 0.26671129929604415], "MOMENTUM_X": [3.762114891719244e-16, 2.1166858916437067e-12, -5.446016543606086e-08, 0.0007060352824925809, 0.21096684549468625, 0.229739895884206, 0.246154887759225], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999895, 0.25000000000633293, 0.24999985619391407, 0.25205872146451863, 0.7720004102597777, 0.8308246471473473, 0.8695723513056687]}, "NODE_803": {"DENSITY": [0.12499999999999926, 0.1250000000035201, 0.12499991581087036, 0.12692135682870534, 0.25335540272695345, 0.2576571269907881, 0.26475429283782215], "MOMENTUM_X": [8.527892613178925e-16, 3.434452745842023e-12, -8.71209175669346e-08, 0.001779304286148882, 0.2274332861034375, 0.23037778035558684, 0.24328571381954484], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999792, 0.2500000000098562, 0.24999976427053253, 0.2554469335142306, 0.8140653216449766, 0.829494281327935, 0.8595009564602575]}, "NODE_804": {"DENSITY": [0.125, 0.12499999999997757, 0.12500000038660722, 0.12499396065315514, 0.1766531702973604, 0.2729828535295965, 0.2822364272990479], "MOMENTUM_X": [9.079709737402417e-22, -2.3573590639311304e-14, 2.414188056227174e-10, -3.4020896971791773e-06, 0.0891476921953153, 0.26093752981151064, 0.28029202639027606], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999993716, 0.2500000010825002, 0.24998308987651582, 0.44417733523477704, 0.9121957720676934, 0.9588106746304134]}, "NODE_805": {"DENSITY": [0.125, 0.12499999999997169, 0.1250000000819361, 0.12500110245447585, 0.19143021719364658, 0.25794442196162515, 0.2819507166745741], "MOMENTUM_X": [-3.8031439469400453e-19, -2.4181470355547727e-14, -2.8184630934878735e-10, 5.57969065470795e-06, 0.11780055869367978, 0.23198199511320897, 0.28272277486320385], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2499999999999207, 0.250000000229421, 0.2500030867129363, 0.5132524703075418, 0.8336731337575747, 0.9619247075198457]}, "NODE_806": {"DENSITY": [0.125, 0.12500000000002767, 0.12499999867207054, 0.12502204911783682, 0.1960940275340691, 0.2578441634750535, 0.2786060859296948], "MOMENTUM_X": [-1.1056864064144414e-18, 4.197011651970313e-14, -2.0131540202530225e-09, 2.7574556574029246e-05, 0.12196119509544662, 0.2297283228084305, 0.2740902272344766], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000775, 0.24999999628179756, 0.250061755085187, 0.5320399851112692, 0.8299641527811897, 0.9408756730213931]}, "NODE_807": {"DENSITY": [0.125, 0.12500000000016087, 0.124999996821073, 0.12503979970354573, 0.19453163242731958, 0.2638187409062933, 0.27486746236450216], "MOMENTUM_X": [-2.3824371354640457e-18, 1.7156544065624857e-13, -3.967420411334495e-09, 4.5665559862518464e-05, 0.11695692544732647, 0.24180434278647567, 0.26506644206079033], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000004504, 0.24999999109900467, 0.2501114870771144, 0.523049997850873, 0.8613855574746853, 0.9184056570698835]}, "NODE_808": {"DENSITY": [0.125, 0.12500000000028016, 0.12499999598120891, 0.12504363303842775, 0.1927670431666694, 0.26797164995416245, 0.2724859640063255], "MOMENTUM_X": [-5.786234809788454e-18, 2.753046780820665e-13, -4.850121864679242e-09, 5.02006307884457e-05, 0.11393473459203302, 0.2512523669283004, 0.2597780270231614], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000007846, 0.24999998874738538, 0.2501222270179832, 0.5148643737005241, 0.8847278897007602, 0.904815375313255]}, "NODE_809": {"DENSITY": [0.125, 0.12500000000032305, 0.12499999601936278, 0.125040532292478, 0.19231629457792615, 0.26886454246782693, 0.2718320930665309], "MOMENTUM_X": [-7.591960113374996e-18, 2.9969702667148057e-13, -4.921353128981338e-09, 4.7351389812006284e-05, 0.11366819240198991, 0.2535738226380362, 0.25849101582742273], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000009045, 0.249999988854216, 0.25011353840136863, 0.5131404631820033, 0.8901243468035905, 0.9013362200691113]}, "NODE_810": {"DENSITY": [0.125, 0.12500000000033903, 0.12499999592733037, 0.1250382306282814, 0.1923042031195174, 0.268419413784469, 0.27217344631082097], "MOMENTUM_X": [-7.675916570969777e-18, 2.9487961014223524e-13, -5.0861188672348266e-09, 4.4881282275815446e-05, 0.11366028973690366, 0.25265181912040047, 0.2595159920925046], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000006, 0.25000000000094935, 0.24999998859652547, 0.25010708986697494, 0.5130341457651029, 0.8876843370142065, 0.9037230307051766]}, "NODE_811": {"DENSITY": [0.125, 0.12500000000036252, 0.12499999564121192, 0.12503783374741453, 0.19260164594651027, 0.26760065716888354, 0.2723050559639441], "MOMENTUM_X": [-7.146864389564282e-18, 2.993047773606867e-13, -5.387935319961312e-09, 4.437122128370915e-05, 0.11400105816053349, 0.25084662819183157, 0.2601456498346059], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000006, 0.2500000000010151, 0.24999998779539376, 0.250105978780116, 0.514039158783867, 0.8831311862577442, 0.9052325306237368]}, "NODE_812": {"DENSITY": [0.125, 0.12500000000035497, 0.12499999560827345, 0.12503813330322974, 0.19482938495955338, 0.2657649651174682, 0.27145132968483504], "MOMENTUM_X": [-8.087338196575597e-18, 2.9486144805931427e-13, -5.566962094886621e-09, 4.554544946103413e-05, 0.11805867745339296, 0.24656498811181138, 0.2582221402526034], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000006, 0.250000000000994, 0.24999998770316617, 0.2501068231287598, 0.5238995533276379, 0.8727594846726622, 0.9009572514894824]}, "NODE_813": {"DENSITY": [0.125, 0.12500000000039468, 0.1249999943594253, 0.12505222276372466, 0.2021178124682431, 0.2621927736739848, 0.26945496722049356], "MOMENTUM_X": [-1.866132537900194e-17, 4.0357889277285297e-13, -7.640783843503568e-09, 6.628853381545191e-05, 0.13062081114462898, 0.2378595461278804, 0.2532123318959729], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000006, 0.25000000000110517, 0.24999998420639172, 0.25014632964602324, 0.5567801292686327, 0.8519505246015557, 0.8892584963512823]}, "NODE_814": {"DENSITY": [0.125, 0.12500000000102793, 0.12499998459169362, 0.12523010984734306, 0.21596485503435628, 0.25655645466393767, 0.26611081018273913], "MOMENTUM_X": [1.1860327082520886e-17, 7.919610820414444e-13, -1.5712699294534872e-08, 0.00019591411072049673, 0.15698340265396588, 0.22828909587073512, 0.24777565535564156], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.24999999999999997, 0.250000000002878, 0.24999995685674611, 0.2506453086244051, 0.6242040223331247, 0.8242673688622328, 0.8728358440072193]}, "NODE_815": {"DENSITY": [0.125, 0.1249999999999986, 0.12500000005036158, 0.12499913751571798, 0.13990295015753126, 0.301704836768185, 0.2618012852193477], "MOMENTUM_X": [9.398902513590319e-21, -2.522788050808216e-15, 5.862069639583683e-11, -1.0664422647630696e-06, 0.022089798099607386, 0.32442077192988433, 0.23852834194692507], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999603, 0.2500000001410124, 0.2499975850580052, 0.2970138452835511, 1.078068840292725, 0.8486473184581682]}, "NODE_816": {"DENSITY": [0.125, 0.12499999999999517, 0.12500000008264456, 0.1249985777708048, 0.1490999838068034, 0.28649807506357855, 0.2697276221789611], "MOMENTUM_X": [2.1493577068878314e-20, -6.0218799575690115e-15, 7.549382092751617e-11, -1.3274192949839485e-06, 0.038570784802516064, 0.29585940055951027, 0.2581424973166734], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999998648, 0.25000000023140484, 0.24999601777650762, 0.3307119130386951, 0.9968848673648943, 0.8969191636657405]}, "NODE_817": {"DENSITY": [0.125, 0.12499999999999396, 0.12500000001947822, 0.12499946298621287, 0.15326695253214367, 0.28048721133077587, 0.2715955268282555], "MOMENTUM_X": [2.8373720340847318e-21, -6.274444106784388e-15, -4.108100155624998e-11, 2.7311820100019893e-07, 0.04386020239415563, 0.27948514382795775, 0.2599790627191333], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999998312, 0.25000000005453904, 0.2499984963615369, 0.3459300458317713, 0.957683260082498, 0.9043970794701401]}, "NODE_818": {"DENSITY": [0.125, 0.12500000000000225, 0.12499999982361554, 0.125001472201692, 0.15288232348393008, 0.28207105277738653, 0.2686767129048728], "MOMENTUM_X": [-8.727973968196054e-20, 3.985057431894668e-15, -3.0717649398016005e-10, 2.681099058782113e-06, 0.04198637243581936, 0.2818987049236308, 0.25232282169556036], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000063, 0.2499999995061235, 0.25000412236403247, 0.34398822718654376, 0.964705481437841, 0.8862387840876222]}, "NODE_819": {"DENSITY": [0.125, 0.125000000000017, 0.12499999964893961, 0.12500261286008232, 0.15169872729010575, 0.28552797878415564, 0.2650577181426731], "MOMENTUM_X": [-4.601906856219929e-19, 2.2410753957332365e-14, -5.652450309006592e-10, 3.886564996088581e-06, 0.039997154715191365, 0.29017359010909904, 0.24433990794332774], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000475, 0.2499999990170309, 0.25000731638083207, 0.33946623022426614, 0.9851041518934597, 0.8658663647136883]}, "NODE_820": {"DENSITY": [0.125, 0.12500000000002673, 0.12499999959994129, 0.12500252984567597, 0.15126760693783597, 0.28695434499092953, 0.2640581335858843], "MOMENTUM_X": [-6.203477499747702e-19, 3.864682329675612e-14, -6.934649131550333e-10, 3.7477999316971617e-06, 0.0395588723362887, 0.293898653662804, 0.24241952938165012], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000749, 0.24999999887983565, 0.250007083899789, 0.3379323740291385, 0.9940417604878871, 0.8606065333710196]}, "NODE_821": {"DENSITY": [0.125, 0.12500000000002942, 0.12499999959211301, 0.12500213673737767, 0.15136004456739985, 0.2858647515716416, 0.26600319654982857], "MOMENTUM_X": [-1.4918850412683871e-18, 5.003587706587604e-14, -7.432411390660623e-10, 3.314754663826649e-06, 0.03982329991744264, 0.29152014021213585, 0.24691522941336566], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000823, 0.2499999988579164, 0.25000598313367145, 0.3382998728094446, 0.9878272678180492, 0.8718338391301559]}, "NODE_822": {"DENSITY": [0.125, 0.1250000000000309, 0.12499999956290139, 0.12500186860156298, 0.15193115420780967, 0.28300261107962227, 0.2689350411711596], "MOMENTUM_X": [-2.87458202022055e-18, 5.957608166491935e-14, -7.755467960702607e-10, 3.040390542376984e-06, 0.04092170125346917, 0.2850357511364366, 0.25349799117799887], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000865, 0.24999999877612394, 0.2500052323231672, 0.3404493162229392, 0.9712368993160514, 0.8887363883950232]}, "NODE_823": {"DENSITY": [0.125, 0.1250000000000306, 0.12499999957761475, 0.12500127120399188, 0.15409464504301307, 0.27876807429312844, 0.27084869550679946], "MOMENTUM_X": [-4.332636605804415e-18, 6.35493060329284e-14, -7.587416770013262e-10, 2.5249301154973585e-06, 0.045106165198956744, 0.2753163511344361, 0.2574849616912942], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000008565, 0.24999999881732138, 0.25000355956580655, 0.3487809890800895, 0.9467258436289718, 0.8997408056625215]}, "NODE_824": {"DENSITY": [0.125, 0.12500000000002476, 0.1249999996120449, 0.12499997363164905, 0.16039661870921948, 0.2731040829003479, 0.27083269077149413], "MOMENTUM_X": [-9.727709724919766e-18, 6.726459919575344e-14, -8.373848872177655e-10, 2.875043604476882e-06, 0.056397700835906596, 0.2617210754087343, 0.2567133641602213], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000694, 0.2499999989137258, 0.24999992643355964, 0.3734169421867335, 0.9133569825353363, 0.899045647327063]}, "NODE_825": {"DENSITY": [0.12500000000000003, 0.12500000000008632, 0.12499999844726961, 0.12501636339170707, 0.17373009378578969, 0.2642510300905257, 0.2683565617829544], "MOMENTUM_X": [-2.636488020275697e-17, 1.5860307801582815e-13, -2.185001413634268e-09, 1.800487151574537e-05, 0.08028986089012194, 0.24562281558994375, 0.2535144435606037], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25000000000000006, 0.2500000000002417, 0.24999999565235492, 0.2500458254892646, 0.42883291525627, 0.8678849863502331, 0.8881717431102573]}, "NODE_826": {"DENSITY": [0.125, 0.12500000000000003, 0.12500000000460698, 0.12499991912442013, 0.12718876059143744, 0.2980061998697534, 0.23650460974108356], "MOMENTUM_X": [4.232265206622679e-22, -6.403741816830414e-17, 5.7102450112553866e-12, -1.1064688113967096e-07, 0.002427986253496814, 0.3194485376806474, 0.18387290596337372], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000001289946, 0.24999977354855898, 0.2562456079675621, 1.0617809501029887, 0.7123233019079631]}, "NODE_827": {"DENSITY": [0.125, 0.12499999999999965, 0.1250000000124292, 0.12499979082921826, 0.1298961717586773, 0.29413972371062264, 0.24675588964349068], "MOMENTUM_X": [3.026026141039584e-21, -5.346819372714857e-16, 1.4383092696619468e-11, -2.660251812761065e-07, 0.0059041433031534266, 0.3151139095776544, 0.20872105702427182], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999903, 0.2500000000348018, 0.2499994143227476, 0.2642847083122295, 1.0451322404077419, 0.7716866303729645]}, "NODE_828": {"DENSITY": [0.125, 0.1249999999999991, 0.12500000001587866, 0.12499973476904748, 0.13173409035957204, 0.2882479152713494, 0.2549836819465295], "MOMENTUM_X": [8.011995423680949e-21, -1.4055743769578456e-15, 1.871129383368692e-11, -3.4292886982988406e-07, 0.008173088867782908, 0.2981920302851867, 0.22463084806788783], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999745, 0.25000000004446027, 0.24999925735431988, 0.269892076393739, 1.0051690177240158, 0.8138872785037699]}, "NODE_829": {"DENSITY": [0.125, 0.12499999999999915, 0.12500000000057457, 0.1249998851610854, 0.13189578477753125, 0.285719465299095, 0.2565673717595929], "MOMENTUM_X": [1.4651369341214905e-20, -1.780637432286625e-15, 5.019994800910915e-12, -2.3503983276473133e-07, 0.008266125650386091, 0.2914654182349174, 0.2264615401013403], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999764, 0.25000000000160877, 0.24999967845075338, 0.2703733874800574, 0.9882644615611512, 0.820447545331623]}, "NODE_830": {"DENSITY": [0.125, 0.1250000000000005, 0.12499999997255573, 0.12500006014137244, 0.13148398651417167, 0.28666626864823513, 0.25411209133739915], "MOMENTUM_X": [2.6802991491021977e-20, -9.455447064001582e-16, -2.112127330112355e-11, -8.818326355547203e-08, 0.007754213312959408, 0.2943778789473164, 0.22098719213885115], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000014, 0.2499999999231561, 0.2500001683957706, 0.2691039236823007, 0.9945186284308959, 0.806754039125141]}, "NODE_831": {"DENSITY": [0.125, 0.12500000000000233, 0.12499999995280242, 0.12500009341762383, 0.13126513153988753, 0.2877061504194067, 0.25290544361713485], "MOMENTUM_X": [3.453917338977638e-20, 4.744864419662152e-16, -3.961324796545236e-11, -5.095173764624974e-08, 0.007516167159069589, 0.2973422309802912, 0.21859831448754244], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000655, 0.2499999998678468, 0.2500002615693417, 0.2684382952002312, 1.0014870136772542, 0.8004484362533589]}, "NODE_832": {"DENSITY": [0.125, 0.12500000000000364, 0.12499999994550755, 0.12500004138118562, 0.13128507695789918, 0.28666562055614875, 0.25536334767708607], "MOMENTUM_X": [-9.542360919078336e-21, 1.6260158566446475e-15, -4.6308022660324164e-11, -9.00899390147978e-08, 0.007557967047365098, 0.2949728614469527, 0.22410742855544602], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000001016, 0.24999999984742105, 0.250000115867044, 0.2685020186060566, 0.9954868267387234, 0.8142186389891071]}, "NODE_833": {"DENSITY": [0.125, 0.12500000000000452, 0.12499999994154447, 0.12499999249312926, 0.1315151627060473, 0.2836590829166141, 0.26004475637449936], "MOMENTUM_X": [-1.12364341949634e-19, 2.4931220121212862e-15, -4.960318758524185e-11, -1.3788134360351014e-07, 0.007907664957911828, 0.28793999463040365, 0.23441587879981313], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000001266, 0.24999999983632445, 0.24999997898038123, 0.26921604767548263, 0.9776684434487161, 0.840416166382042]}, "NODE_834": {"DENSITY": [0.125, 0.1250000000000052, 0.12499999994417307, 0.12499990128264202, 0.13235170559437798, 0.2799908321905297, 0.26436468763208165], "MOMENTUM_X": [-2.0804220754384057e-19, 2.8612459407258416e-15, -4.628618152297772e-11, -2.512447618948556e-07, 0.009242741850060722, 0.2791783358168404, 0.2436343408902758], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000001454, 0.24999999984368465, 0.2499997235908949, 0.27183923088403134, 0.9557456568025879, 0.8645831323723578]}, "NODE_835": {"DENSITY": [0.125, 0.12500000000000547, 0.12499999995904174, 0.12499959355593726, 0.13510403151298256, 0.27689396893193063, 0.2668329788937338], "MOMENTUM_X": [2.713493083320581e-19, 1.5630350085016634e-15, -3.367346024803091e-11, -5.442881575082123e-07, 0.013573958813652792, 0.27057720000822844, 0.24823747449554337], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000001527, 0.24999999988531676, 0.249998861956858, 0.28062826879112035, 0.9358318742210491, 0.8776729965290029]}, "NODE_836": {"DENSITY": [0.125, 0.12500000000001252, 0.12499999984062761, 0.12500051613810576, 0.1426387593325037, 0.271597818861075, 0.2667681948761155], "MOMENTUM_X": [-8.92575868948035e-19, 7.0440817102437954e-15, -1.409702036931045e-10, 3.259386360100567e-07, 0.0255012397304818, 0.26231724320814526, 0.25045174026820577], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.250000000000035, 0.24999999955375726, 0.250001445209639, 0.30597513828160805, 0.9100214799041177, 0.8805969428838694]}, "NODE_837": {"DENSITY": [0.125, 0.125, 0.12500000000013267, 0.12499999652927751, 0.12513766228039666, 0.2566880212686472, 0.23127152657183656], "MOMENTUM_X": [-2.1061850398941857e-23, 1.36156574443171e-17, 2.047416667944588e-13, -5.659545164448834e-09, 0.00014738938698035257, 0.23969018458996322, 0.17277235886214048], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000006, 0.25000000000037154, 0.24999999028197775, 0.25038604192872893, 0.8388113673941906, 0.6859877939296817]}, "NODE_838": {"DENSITY": [0.125, 0.125, 0.1250000000012367, 0.1249999781493762, 0.1255489420590116, 0.26586209615659295, 0.23280872403212838], "MOMENTUM_X": [5.2349519054899937e-23, -3.9149719424468725e-18, 1.2084282475730021e-12, -2.3755123716244158e-08, 0.0004895973194307694, 0.26025134377779235, 0.17797869282675116], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000346273, 0.24999993881826446, 0.25154342644226085, 0.8924635311859243, 0.6973568203276449]}, "NODE_839": {"DENSITY": [0.125, 0.12499999999999992, 0.12500000000294573, 0.12499995342473111, 0.12597541874443718, 0.2649107221127347, 0.2422468289746632], "MOMENTUM_X": [3.1008744662776264e-22, -9.976567454885052e-17, 2.940514232366033e-12, -5.058853637002045e-08, 0.0008638537853284922, 0.2529098279337884, 0.19650079472393892], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999978, 0.25000000000824796, 0.2499998695892897, 0.2527501629728861, 0.880726933790876, 0.7450562270466199]}, "NODE_840": {"DENSITY": [0.125, 0.12499999999999982, 0.1250000000033424, 0.12499994732781773, 0.12610241737096345, 0.2612442274538481, 0.24879492400161732], "MOMENTUM_X": [1.1738509342457371e-21, -2.439066476699838e-16, 3.574290975935747e-12, -6.073397803375367e-08, 0.0010017923064213681, 0.2437076275890344, 0.20951372299707444], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2499999999999995, 0.25000000000935874, 0.24999985251793502, 0.2531109270429575, 0.8579789518402962, 0.7786237110989943]}, "NODE_841": {"DENSITY": [0.125, 0.12499999999999983, 0.12500000000122405, 0.12499995971211947, 0.12603908027623717, 0.2599753926739606, 0.24969730757013806], "MOMENTUM_X": [4.606470939552577e-21, -3.2900897914552434e-16, 2.0730940293442705e-12, -5.0951578192398964e-08, 0.000968684727044184, 0.2420190670256765, 0.21166686763321296], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999953, 0.2500000000034273, 0.24999988719395538, 0.2529313140521876, 0.8517612220590334, 0.7835716488700768]}, "NODE_842": {"DENSITY": [0.125, 0.125, 0.12499999999841101, 0.124999967186568, 0.12597799167389942, 0.2601590710937394, 0.24901605653402123], "MOMENTUM_X": [1.1495753666960958e-20, -3.2542733080313345e-16, 3.02703152262208e-14, -4.258230085163905e-08, 0.0009185038950135296, 0.24320346156901007, 0.21051464506948983], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999555084, 0.24999990812240216, 0.2527581441770112, 0.8537517259888071, 0.7802747133372405]}, "NODE_843": {"DENSITY": [0.125, 0.12500000000000022, 0.12499999999695222, 0.12499996309791975, 0.12596940818776003, 0.25952411191235975, 0.25049724793232736], "MOMENTUM_X": [1.9698420190050982e-20, -3.1917768723199473e-16, -1.0340329424899617e-12, -4.474068505822368e-08, 0.0009071762038867057, 0.2416503709064438, 0.21375280525499604], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000006, 0.24999999999146616, 0.2499998966741892, 0.25273385322464464, 0.8500874495591833, 0.7884561992890995]}, "NODE_844": {"DENSITY": [0.125, 0.12500000000000042, 0.12499999999648478, 0.12499995696298648, 0.12600389123008973, 0.257795057922395, 0.2541217712391044], "MOMENTUM_X": [2.743844443016446e-20, -3.369991522847323e-16, -1.5163498472090777e-12, -5.0796571652766954e-08, 0.0009412870642571418, 0.23727873603579613, 0.22156851343473502], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000117, 0.24999999999015743, 0.249999879496384, 0.2528319810110124, 0.8396140195593391, 0.8083635040583393]}, "NODE_845": {"DENSITY": [0.125, 0.12500000000000056, 0.12499999999677369, 0.12499994721509895, 0.12613789201768819, 0.25676965621713244, 0.25778928276972196], "MOMENTUM_X": [3.7862399457298377e-20, -3.5560481716012556e-16, -1.2973899841623836e-12, -6.343339020870613e-08, 0.0010936718754033638, 0.23408435637047814, 0.22926755118522427], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25000000000000155, 0.24999999999096634, 0.24999985220231674, 0.25321416969370314, 0.8324373581531401, 0.8285076649084142]}, "NODE_846": {"DENSITY": [0.125, 0.12500000000000053, 0.1249999999999575, 0.12499990352080761, 0.12669343085709564, 0.2590509748200938, 0.26001417650696357], "MOMENTUM_X": [1.1854618930266416e-19, -4.806784760431422e-16, 1.307542414099746e-12, -1.1440809392606927e-07, 0.0017313572413479264, 0.2362610770010727, 0.23333559613439256], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2500000000000015, 0.24999999999988107, 0.2499997298584049, 0.25480512790385534, 0.8414845595796695, 0.8400706276453629]}, "NODE_847": {"DENSITY": [0.125, 0.12500000000000142, 0.12499999999235648, 0.12499988905438751, 0.12894042043164575, 0.2629189203990866, 0.26047499780522404], "MOMENTUM_X": [2.776924256766098e-19, -8.907157600102437e-16, -2.6515715189491595e-12, -1.497849109661559e-07, 0.004169781737087536, 0.2457491559162214, 0.23677511690783773], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.250000000000004, 0.24999999997859818, 0.24999968935245875, 0.26133880219080236, 0.86433828777432, 0.8459784010090229]}, "NODE_848": {"DENSITY": [0.125, 0.125, 0.1249999999999611, 0.12500000063446629, 0.1249919113866464, 0.19921055008986552, 0.25554630074272683], "MOMENTUM_X": [-2.2255125863092123e-24, 9.632497523667025e-19, -3.026502919234358e-14, 2.0783778317733475e-10, -6.376299238147049e-07, 0.13123459812100718, 0.22360964026956248], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999989111, 0.2500000017765056, 0.24997735069636595, 0.5480781315980653, 0.8164162984586575]}, "NODE_849": {"DENSITY": [0.125, 0.125, 0.12500000000002767, 0.12499999941142026, 0.1250221626399689, 0.21410503737811226, 0.24419574272952665], "MOMENTUM_X": [-8.259297468520112e-24, 1.4470477958248284e-18, 3.726922413033201e-14, -1.2715446681660834e-09, 2.690383747862558e-05, 0.16073959360455314, 0.20251433947618108], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000775, 0.2499999983519769, 0.2500620719875848, 0.6233223425518258, 0.7594120558087221]}, "NODE_850": {"DENSITY": [0.125, 0.125, 0.12500000000025693, 0.12499999589545713, 0.12507887953625324, 0.21750260480000763, 0.24791310168278335], "MOMENTUM_X": [-1.2503737878970578e-23, -2.160683195934682e-18, 2.7080406783723173e-13, -5.0283911571046975e-09, 7.700002071835012e-05, 0.16198654604741214, 0.20863725117810483], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000007195, 0.2499999885072805, 0.2502210246154765, 0.6358271473926889, 0.7765899199110365]}, "NODE_851": {"DENSITY": [0.125, 0.12499999999999999, 0.12500000000055303, 0.1249999922302371, 0.12511416987773194, 0.21487904074490827, 0.25552952081317126], "MOMENTUM_X": [-3.578266801550764e-24, -1.4547773038038067e-17, 5.370440314984507e-13, -8.389078947606028e-09, 0.00011064319035007939, 0.1548422219367741, 0.22410206790668563], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999997, 0.25000000000154854, 0.2499999782446652, 0.2503199888138885, 0.6206088387207156, 0.816365642697043]}, "NODE_852": {"DENSITY": [0.125, 0.12499999999999997, 0.12500000000065198, 0.12499999120009207, 0.12511508704274144, 0.2128339420206095, 0.25948542742986225], "MOMENTUM_X": [8.88297769674698e-23, -3.275104999354485e-17, 5.856143197450456e-13, -9.030786519724626e-09, 0.0001149113103197529, 0.15145793411334832, 0.23302113068216285], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999992, 0.2500000000018255, 0.2499999753602592, 0.2503225583286445, 0.6107227430370266, 0.8382540021562012]}, "NODE_853": {"DENSITY": [0.125, 0.12499999999999996, 0.12500000000052433, 0.12499999172366313, 0.1251054084945012, 0.2124417175820894, 0.2599659911376443], "MOMENTUM_X": [5.781996004375882e-22, -3.981562679269825e-17, 4.0621212480474767e-13, -8.374741706623747e-09, 0.0001071657529462079, 0.15143569513485405, 0.23442932536555894], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2499999999999999, 0.2500000000014681, 0.24999997682625788, 0.2502954155741536, 0.6093938724869772, 0.8413193739251716]}, "NODE_854": {"DENSITY": [0.125, 0.12499999999999997, 0.1250000000004071, 0.12499999165888927, 0.12510087551482968, 0.21227447431963659, 0.25993379917092924], "MOMENTUM_X": [1.885439399190408e-21, -3.6738617258089896e-17, 2.24666169268502e-13, -8.443492131986592e-09, 0.00010242439045729198, 0.1510192376382477, 0.23438232203468223], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2499999999999999, 0.25000000000113987, 0.24999997664489101, 0.2502827059729348, 0.6084463986129443, 0.8411507324001736]}, "NODE_855": {"DENSITY": [0.125, 0.12499999999999996, 0.12500000000038455, 0.1249999911093661, 0.1251019617907141, 0.212077909841149, 0.26045522019683437], "MOMENTUM_X": [3.766486189690954e-21, -2.985353990806865e-17, 1.383601152467829e-13, -9.072128099937418e-09, 0.00010293368107358235, 0.15013395769751758, 0.23543926512142924], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2499999999999999, 0.25000000000107675, 0.2499999751062264, 0.250285756958953, 0.6067768557300448, 0.843924553685945]}, "NODE_856": {"DENSITY": [0.125, 0.12499999999999996, 0.1250000000003875, 0.12499999063272893, 0.12510925332751088, 0.21366103576747186, 0.2605127331997086], "MOMENTUM_X": [6.017788949875319e-21, -2.2998312031272495e-17, 1.349152502712291e-13, -9.928602055347467e-09, 0.00011089492659714328, 0.15265362599286228, 0.23525453898038273], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.2499999999999999, 0.25000000000108497, 0.24999997377164257, 0.2503062323470906, 0.6135903132524276, 0.843983652607324]}, "NODE_857": {"DENSITY": [0.125, 0.12499999999999993, 0.1250000000007354, 0.12499998624987224, 0.12516247906276898, 0.2202194436712165, 0.2590287636568474], "MOMENTUM_X": [1.1817888039710416e-20, -2.4576899253368952e-17, 5.148023417490046e-13, -1.5478693969124254e-08, 0.0001695911219596466, 0.16356218308937856, 0.2311440898012682], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999983, 0.2500000000020592, 0.24999996149964618, 0.25045568143250135, 0.6438884731566781, 0.8348070549104922]}, "NODE_858": {"DENSITY": [0.125, 0.1249999999999999, 0.12500000000132105, 0.12499996851111433, 0.1255646539535589, 0.2323154794254806, 0.25582619106915266], "MOMENTUM_X": [3.938378277034198e-20, -2.5551478431550743e-17, 6.624112199072602e-13, -2.9192565694884865e-08, 0.0004677016390193257, 0.18736533441136058, 0.22667269745932517], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999975, 0.25000000000369893, 0.24999991183113493, 0.25158664384695106, 0.7055510386347793, 0.8204622321216957]}, "NODE_859": {"DENSITY": [0.125, 0.125, 0.12499999999999375, 0.1250000001107265, 0.12499788195285048, 0.1522880788125885, 0.290564654654316], "MOMENTUM_X": [-5.080130256510582e-25, -9.552163723973411e-20, -7.723986725163875e-15, 1.1008893828311769e-10, -2.0946664377338437e-06, 0.04414420713051733, 0.2997092594880436], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999998257, 0.2500000003100342, 0.24999406952676534, 0.34267352898617903, 1.0133106769875067]}, "NODE_860": {"DENSITY": [0.125, 0.125, 0.1249999999999914, 0.12500000014218907, 0.12499754053192912, 0.16436675485773705, 0.2734306542111771], "MOMENTUM_X": [-1.7503658179922775e-24, -1.658997600538358e-19, -9.182794033144045e-15, 7.966714234385982e-11, -1.3700443341824385e-06, 0.06695706910071778, 0.26669041622083645], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999759, 0.2500000003981295, 0.24999311346449174, 0.39221131009054433, 0.9221062466070894]}, "NODE_861": {"DENSITY": [0.125, 0.125, 0.12500000000000477, 0.1249999999307347, 0.1250010946954312, 0.1687976833462353, 0.26959510206626364], "MOMENTUM_X": [-3.8872966805688345e-24, 8.109869338360541e-21, 8.572004151446437e-15, -2.7504174669959387e-10, 3.837301385616273e-06, 0.07167649950402522, 0.2555413758342027], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000133, 0.2499999998060572, 0.2500030654206991, 0.40927281361735773, 0.8962976256185061]}, "NODE_862": {"DENSITY": [0.125, 0.125, 0.12500000000004186, 0.12499999947688895, 0.12500601474685533, 0.16761909445035353, 0.27375101325990187], "MOMENTUM_X": [-5.6917015152417225e-24, -3.501605699781201e-19, 5.009798108127544e-14, -8.798717807410607e-10, 9.576987431291106e-06, 0.06782018175513047, 0.2636367668154726], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000011724, 0.24999999853528912, 0.2500168433134385, 0.4033788838525987, 0.9178129805023932]}, "NODE_863": {"DENSITY": [0.125, 0.125, 0.12500000000007844, 0.12499999916090282, 0.12500793360239165, 0.16592205748483818, 0.2782560704533317], "MOMENTUM_X": [-1.7672898171809627e-23, -1.968194254400446e-18, 9.162338890531123e-14, -1.3515504180094167e-09, 1.1600805132835718e-05, 0.06494680581191559, 0.2741240564710753], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000021955, 0.24999999765052788, 0.25002221688821163, 0.39631606445756, 0.9438349531489028]}, "NODE_864": {"DENSITY": [0.125, 0.125, 0.1250000000000869, 0.1249999991343048, 0.1250072771930614, 0.16539724971476433, 0.2797063869783075], "MOMENTUM_X": [-3.8242677414901574e-23, -4.218989790811665e-18, 1.0801288001470529e-13, -1.5203364817250163e-09, 1.076544963086433e-05, 0.0644956766864803, 0.27786087685446137], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000002433, 0.24999999757605346, 0.2500203785002827, 0.3943589853243107, 0.9527581571843995]}, "NODE_865": {"DENSITY": [0.125, 0.125, 0.12500000000007727, 0.12499999915897968, 0.12500637063022066, 0.16547399313295375, 0.2786814760956156], "MOMENTUM_X": [-3.8864486716607875e-23, -6.897332857596974e-18, 1.0856421174665716e-13, -1.5659636369016599e-09, 9.727529868573533e-06, 0.06474407799961521, 0.2756341507757498], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999997, 0.2500000000002163, 0.24999999764514305, 0.2500178397510334, 0.3946866737443978, 0.946922692008731]}, "NODE_866": {"DENSITY": [0.125, 0.125, 0.12500000000007125, 0.12499999911637864, 0.12500591697782848, 0.1660261834040983, 0.27636310484486887], "MOMENTUM_X": [6.766939022018266e-24, -7.912023639844232e-18, 1.1128068069738733e-13, -1.6096637766788035e-09, 9.26957806342576e-06, 0.06576644167789406, 0.2703814949651689], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999997, 0.2500000000001995, 0.24999999752586025, 0.2500165694052928, 0.3968530028615117, 0.9335111300686137]}, "NODE_867": {"DENSITY": [0.125, 0.125, 0.12500000000006725, 0.12499999913405098, 0.1250050054170162, 0.1684647724007762, 0.27290202790754137], "MOMENTUM_X": [5.2320115274845654e-23, -7.593625811437691e-18, 1.1355392249511742e-13, -1.6048229694851955e-09, 8.716363824572041e-06, 0.07048384297780796, 0.2624221656714809], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999997, 0.2500000000001882, 0.24999999757534266, 0.2500140169755659, 0.40693827049387443, 0.9135458237846004]}, "NODE_868": {"DENSITY": [0.125, 0.125, 0.1250000000000811, 0.12499999903282653, 0.12500454483423126, 0.17566632427917922, 0.2678165922081543], "MOMENTUM_X": [-1.3035905634309124e-22, -8.788126849584105e-18, 1.5136457231684747e-13, -1.999515446926459e-09, 1.1975521145406475e-05, 0.08329764075194757, 0.25022195763561544], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000022715, 0.24999999729191444, 0.2500127288513656, 0.43709726598545895, 0.883751509628421]}, "NODE_869": {"DENSITY": [0.125, 0.12499999999999999, 0.125000000000233, 0.12499999634561647, 0.12504923239166194, 0.19002859671410327, 0.259886699435125], "MOMENTUM_X": [8.892310800558475e-22, -1.449139336629871e-17, 3.1377706165125996e-13, -4.804638305828882e-09, 4.868575269935067e-05, 0.10954823632026756, 0.23587340124311448], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.24999999999999994, 0.2500000000006525, 0.24999998976772644, 0.25013790887409804, 0.5011553565257361, 0.8434159472527307]}, "NODE_870": {"DENSITY": [0.125, 0.125, 0.12499999999999946, 0.12500000001122863, 0.12499979377851637, 0.1303608486341827, 0.30398372229282794], "MOMENTUM_X": [9.822398870061349e-27, -3.854168887191677e-22, -7.980647656560316e-16, 1.430324765903806e-11, -2.963612695712181e-07, 0.00673905485958856, 0.33034394150377067], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999985, 0.25000000003144013, 0.24999942258097457, 0.2657261656142889, 1.0932124924104232]}, "NODE_871": {"DENSITY": [0.125, 0.125, 0.12499999999999853, 0.1250000000248684, 0.12499952661186292, 0.13531763512844033, 0.29389135305230885], "MOMENTUM_X": [-6.27505755970007e-26, -1.3185367413093878e-20, -1.9695667305843775e-15, 2.917973052997011e-11, -5.875495325470885e-07, 0.014336299318785613, 0.3132745612930354], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999959, 0.2500000000696316, 0.24999867451735938, 0.28150286213388404, 1.0415560258669025]}, "NODE_872": {"DENSITY": [0.125, 0.125, 0.1249999999999984, 0.12500000002326903, 0.1249995216864233, 0.13804108103078785, 0.2868952253427812], "MOMENTUM_X": [-3.2582971172162066e-25, -1.0395019851185566e-20, -2.3938063147320433e-15, 2.4466411084124142e-11, -5.324266458406352e-07, 0.017874860703577803, 0.29421683233828216], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999553, 0.25000000006515316, 0.24999866072348598, 0.29040702021106374, 0.9956248456153911]}, "NODE_873": {"DENSITY": [0.125, 0.125, 0.1250000000000014, 0.12499999998159526, 0.12499996426290866, 0.13792278691971577, 0.28597085826222396], "MOMENTUM_X": [-1.075478026927854e-24, 3.620273163116813e-20, 2.7483607307866296e-16, -2.322901430311545e-11, -8.716654300807135e-08, 0.017232681096312853, 0.2909669550249737], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000039, 0.2499999999484667, 0.2499998999365653, 0.28990446465015024, 0.9879976361443846]}, "NODE_874": {"DENSITY": [0.125, 0.125, 0.125000000000007, 0.1249999999241412, 0.12500033952160766, 0.13711693373952014, 0.28838910739396484], "MOMENTUM_X": [-2.7743752942130366e-24, 5.716350655097137e-20, 5.8474936263284055e-15, -8.975784677244321e-11, 2.6415236089717436e-07, 0.016053080109531437, 0.2970860801395513], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000001954, 0.24999999978759527, 0.2500009506675659, 0.2872250620780004, 1.00276323278357]}, "NODE_875": {"DENSITY": [0.125, 0.125, 0.12500000000001132, 0.12499999989368477, 0.12500036131958495, 0.1367673575650235, 0.2898923763687288], "MOMENTUM_X": [-7.363380177199225e-24, -2.3293430989149066e-20, 1.0875824027005292e-14, -1.2998998096616797e-10, 2.839568495504589e-07, 0.015660794061326803, 0.3011103965363003], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000317, 0.24999999970231732, 0.2500010117010226, 0.2860972319202266, 1.0124690569247208]}, "NODE_876": {"DENSITY": [0.125, 0.125, 0.12500000000001257, 0.12499999988762249, 0.1250002317883758, 0.13681335903427913, 0.28870896496616066], "MOMENTUM_X": [-1.7562877719158087e-23, -3.232790813242559e-19, 1.3613725143470278e-14, -1.413515425954232e-10, 1.6399767457621525e-07, 0.015778580733138772, 0.29846807715332324], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000003514, 0.2499999996853429, 0.25000064901068075, 0.28625628746132387, 1.0056566279539967]}, "NODE_877": {"DENSITY": [0.125, 0.125, 0.12500000000001274, 0.1249999998838419, 0.12500012835321372, 0.1371859420942384, 0.28538890739893763], "MOMENTUM_X": [-3.168003258055425e-23, -6.641170758657665e-19, 1.5290370151816114e-14, -1.4453291547773276e-10, 5.892027357244804e-08, 0.016422164487024028, 0.290786970967541], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000357, 0.24999999967475728, 0.2500003593908102, 0.2874964630235306, 0.9860505111327014]}, "NODE_878": {"DENSITY": [0.125, 0.125, 0.1250000000000128, 0.12499999989053387, 0.12499992585690362, 0.13855606235861817, 0.2811286785845074], "MOMENTUM_X": [-4.504428019491802e-23, -9.13747033214834e-19, 1.582558691543261e-14, -1.3563509151996754e-10, -1.710650035143297e-07, 0.018857369847492925, 0.28084578603654003], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000358, 0.24999999969349487, 0.24999979239893452, 0.2921286905308103, 0.9609052336891463]}, "NODE_879": {"DENSITY": [0.125, 0.125, 0.12500000000001416, 0.12499999990991822, 0.12499928806188902, 0.14279060947093408, 0.2765683325190889], "MOMENTUM_X": [-1.0957719583047823e-22, -1.042950854022575e-18, 1.6337489320228688e-14, -1.2946842481774056e-10, -5.683809818905826e-07, 0.0260893948966278, 0.26940515264426795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000397, 0.24999999974777107, 0.24999800657243715, 0.3067473893229424, 0.9331819751530155]}, "NODE_880": {"DENSITY": [0.125, 0.125, 0.12500000000003647, 0.12499999962455607, 0.12500233964182325, 0.1530057976891785, 0.269039132549853], "MOMENTUM_X": [-3.2708299064418958e-22, -2.9043547852443545e-18, 4.162453065039304e-14, -4.4009994049146057e-10, 2.5396440095851144e-06, 0.04346575622800721, 0.2564028238284464], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000001021, 0.2499999989487569, 0.2500065512669997, 0.3441894187762158, 0.8951173452890733]}, "NODE_881": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.1250000000007339, 0.1249999852300781, 0.12551336765020263, 0.2775455294758023], "MOMENTUM_X": [5.415496605210865e-27, 8.596853025885065e-22, -2.949133944070728e-17, 8.802531882903527e-13, -1.9502048111843584e-08, 0.0005127140461276731, 0.2794958640003459], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999994, 0.2500000000020549, 0.2499999586442259, 0.25144406012016746, 0.9499118209666161]}, "NODE_882": {"DENSITY": [0.125, 0.125, 0.12499999999999986, 0.1250000000030587, 0.12499994390904992, 0.1264820423060691, 0.28131636088517814], "MOMENTUM_X": [1.439330250764693e-26, 2.125137870767112e-21, -1.6938345607114807e-16, 3.176361618074681e-12, -6.503638389161256e-08, 0.001456416218918357, 0.2900680867640538], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999958, 0.25000000000856426, 0.24999984294541233, 0.2541977274020835, 0.9754384273890089]}, "NODE_883": {"DENSITY": [0.125, 0.125, 0.12499999999999965, 0.12500000000564557, 0.12499990191583514, 0.12729782196582648, 0.27756563243401455], "MOMENTUM_X": [2.1818894452862768e-26, 1.6941536106688326e-21, -4.2343416409905034e-16, 6.124373540548219e-12, -1.1822877924059083e-07, 0.002280568750180794, 0.27715400147543795], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999903, 0.25000000001580763, 0.24999972536452572, 0.2565451015178822, 0.9476931621761542]}, "NODE_884": {"DENSITY": [0.125, 0.125, 0.12499999999999968, 0.12500000000416583, 0.12499991315615992, 0.12743105146052375, 0.2737606633578027], "MOMENTUM_X": [1.442723150872013e-27, 2.1555187777465096e-21, -5.176090515958501e-16, 5.692943443633748e-12, -1.2516112721705466e-07, 0.0024404341801787196, 0.26772716175051103], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999914, 0.2500000000116643, 0.24999975683735945, 0.25693064742144994, 0.923834441946614]}, "NODE_885": {"DENSITY": [0.125, 0.125, 0.12500000000000022, 0.12499999999746764, 0.12499995389209233, 0.12724931423695338, 0.27333069038913965], "MOMENTUM_X": [-5.726159270585933e-26, 1.2625306149818824e-20, -2.2294763923136237e-16, 8.663542096759902e-13, -9.54760635651188e-08, 0.0022843004662711866, 0.26790010783598206], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000006, 0.24999999999290942, 0.24999987089786901, 0.2564056149230232, 0.9224550997330409]}, "NODE_886": {"DENSITY": [0.125, 0.125, 0.12500000000000105, 0.12499999999069118, 0.12499996833448056, 0.1271281242319759, 0.2740119783800365], "MOMENTUM_X": [-2.854677396499137e-25, 3.4527210694123074e-20, 2.5586742584773204e-16, -3.877466512532062e-12, -7.890408328123772e-08, 0.002168283352287256, 0.27021737420900144], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000294, 0.2499999999739352, 0.24999991133653682, 0.25605646582636493, 0.9274739215527646]}, "NODE_887": {"DENSITY": [0.125, 0.125, 0.12500000000000172, 0.12499999998769186, 0.12499995530693944, 0.12712209498022228, 0.2731697687575549], "MOMENTUM_X": [-1.0827487546528532e-24, 6.384372374037457e-20, 5.476241467395156e-16, -5.735698517602481e-12, -8.603708544221079e-08, 0.002157996945419654, 0.2682028656646329], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000048, 0.24999999996553726, 0.24999987485942915, 0.25603927516046177, 0.922602242193541]}, "NODE_888": {"DENSITY": [0.125, 0.125, 0.12500000000000214, 0.12499999998698628, 0.12499994042037299, 0.12720473623123027, 0.2706792116022238], "MOMENTUM_X": [-2.800018067094287e-24, 9.171531675207197e-20, 6.448294481176921e-16, -6.234957605124136e-12, -1.0000263677402175e-07, 0.002255545377871421, 0.26214298501354794], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000594, 0.24999999996356156, 0.24999983317707003, 0.256279065226889, 0.9076446225641448]}, "NODE_889": {"DENSITY": [0.125, 0.125, 0.12500000000000233, 0.12499999998820674, 0.1249999157445143, 0.12751367753089612, 0.2683952949906131], "MOMENTUM_X": [-5.283837301611901e-24, 1.0230287743457584e-19, 6.164715878375523e-16, -5.143563937291395e-12, -1.319660422273359e-07, 0.002658024819398333, 0.256262342141305], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000655, 0.24999999996697891, 0.24999976408473004, 0.25717991886697944, 0.8933796321357043]}, "NODE_890": {"DENSITY": [0.125, 0.125, 0.12500000000000241, 0.12499999999374377, 0.12499982132171014, 0.12866551411294508, 0.26846408293959856], "MOMENTUM_X": [-7.928041325849741e-24, 1.3270733558589818e-19, 4.454599359432045e-16, -4.732452640114608e-13, -2.443140035074066e-07, 0.00416547102427055, 0.25403690698019693], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000067, 0.2499999999824825, 0.24999949970123658, 0.26056930694900793, 0.890611273123663]}, "NODE_891": {"DENSITY": [0.125, 0.125, 0.12500000000000605, 0.12499999996679188, 0.12499990317950885, 0.13259231594026422, 0.26840310980374416], "MOMENTUM_X": [-3.121601811368686e-23, 2.5251156689065255e-19, 1.7663896675655768e-15, -1.712373776565957e-11, -2.214147379651183e-07, 0.009271985244147114, 0.2561413262008553], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.250000000000017, 0.24999999990701738, 0.2499997289029279, 0.27246966509878506, 0.8929855051673011]}, "NODE_892": {"DENSITY": [0.125, 0.125, 0.125, 0.1249999999999642, 0.12500000072413636, 0.1250039648401269, 0.2235562010313803], "MOMENTUM_X": [9.141449492654817e-29, -2.5785158357513606e-23, 9.767396002635608e-19, -1.1677819595480504e-14, -2.170811763478833e-10, 1.7455287654028155e-05, 0.17665479381319033], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999989975, 0.2500000020275817, 0.2500111046949733, 0.6671673470255876]}, "NODE_893": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000018308, 0.12499999668426995, 0.12510573649159162, 0.23682883980023006], "MOMENTUM_X": [1.1378159237916414e-27, 7.448393141608746e-23, -7.277354784409949e-18, 1.866233745705961e-13, -4.227669059275579e-09, 9.757527796420897e-05, 0.20389412330449047], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.2500000000005126, 0.24999999071595616, 0.2502963384074727, 0.7385924917118007]}, "NODE_894": {"DENSITY": [0.125, 0.125, 0.12499999999999996, 0.1250000000006961, 0.12499998825891094, 0.1252464625747804, 0.23821993387826074], "MOMENTUM_X": [4.148444417840277e-27, 1.9727737333016216e-22, -3.6734722601823233e-17, 6.784669556175419e-13, -1.2570690699320993e-08, 0.00021169901260224632, 0.20101355117765357], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999999, 0.2500000000019491, 0.24999996712495373, 0.25069139527574297, 0.7402393322793942]}, "NODE_895": {"DENSITY": [0.125, 0.125, 0.12499999999999992, 0.12500000000115064, 0.1249999817482351, 0.12530794597631725, 0.23460575446905899], "MOMENTUM_X": [1.043344673748138e-26, -7.131165630060746e-24, -7.545168304370893e-17, 1.0723507584114797e-12, -1.8289432344164036e-08, 0.0002712152274563171, 0.19193961920667346], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999998, 0.25000000000322187, 0.24999994889506444, 0.2508642141070203, 0.7189718352068717]}, "NODE_896": {"DENSITY": [0.125, 0.125, 0.12499999999999992, 0.12500000000101738, 0.12499998161343069, 0.1252930186275415, 0.23258405237746113], "MOMENTUM_X": [2.1200281707456205e-26, -4.752173483079954e-22, -8.296307575749488e-17, 8.877249101572672e-13, -1.7580832368555106e-08, 0.00026831864718713616, 0.18880426372369108], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2499999999999998, 0.25000000000284883, 0.24999994851761112, 0.25082225705084876, 0.7090641669781486]}, "NODE_897": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.125000000000452, 0.12499998337852167, 0.12526773678899333, 0.23242170099347692], "MOMENTUM_X": [4.4044432521247545e-26, -2.5685403931361706e-22, -4.5325536002453584e-17, 2.9320766736795304e-13, -1.5270937250283963e-08, 0.00024885479738717843, 0.18935636326444497], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999994, 0.2500000000012656, 0.24999995345986437, 0.25075121638857223, 0.7091230183113464]}, "NODE_898": {"DENSITY": [0.125, 0.125, 0.12500000000000006, 0.12500000000006928, 0.12499998296379919, 0.12525999592746415, 0.23206851651314417], "MOMENTUM_X": [9.19945785976109e-26, 2.71956471020357e-21, 3.3801198009471766e-18, -1.697778793140753e-13, -1.5459197456293723e-08, 0.0002403531060212088, 0.18845588062765634], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000017, 0.25000000000019396, 0.24999995229864153, 0.2507294722478039, 0.7071164023169729]}, "NODE_899": {"DENSITY": [0.125, 0.125, 0.12500000000000008, 0.12499999999999357, 0.12499998160182174, 0.12526660202346573, 0.23118861486726805], "MOMENTUM_X": [1.5124361579173552e-25, 8.375008780937575e-21, 3.512708130027031e-17, -3.6264266794119814e-13, -1.7012307937194333e-08, 0.00024525557712513777, 0.18595903666913516], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000003, 0.24999999999998201, 0.24999994848510562, 0.2507480600393012, 0.7015780889479803]}, "NODE_900": {"DENSITY": [0.125, 0.125, 0.1250000000000001, 0.1250000000000941, 0.12499997977661748, 0.12529584018584208, 0.2317711564535556], "MOMENTUM_X": [2.0475950466562623e-25, 1.2677481953828415e-20, 5.0757765598406765e-17, -2.954768139975075e-13, -1.968629821838872e-08, 0.0002749127480100025, 0.18625351379117708], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000033, 0.25000000000026346, 0.24999994337453543, 0.2508303807375207, 0.7031752064462354]}, "NODE_901": {"DENSITY": [0.125, 0.125, 0.12500000000000008, 0.12500000000100203, 0.12499996790977605, 0.12544874041861517, 0.23695231153667717], "MOMENTUM_X": [6.047472128536637e-25, 1.1498557140700554e-20, 3.666708881852553e-17, 4.990910348657606e-13, -3.335127808704571e-08, 0.00043251132656578424, 0.19432711195054037], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.2500000000000002, 0.25000000000280576, 0.24999991014739098, 0.2512612103206989, 0.7270617725685091]}, "NODE_902": {"DENSITY": [0.125, 0.125, 0.12500000000000036, 0.12500000000060474, 0.12499993991012803, 0.12629532959159062, 0.24627691514697456], "MOMENTUM_X": [1.3618200492889315e-24, 3.2153215450107705e-20, 1.8388655297067893e-16, -1.8510145406664604e-13, -5.717309291612011e-08, 0.001133508029981566, 0.21353310503249093], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25000000000000094, 0.25000000000169315, 0.2499998317484085, 0.25365661102234827, 0.7766198331271179]}, "NODE_903": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999998762, 0.12500000025425892, 0.124995264030871, 0.1694040760462186], "MOMENTUM_X": [-3.4666048495389315e-29, -4.189045868789107e-24, 7.179499838943539e-20, -1.2998853481145514e-14, 1.9377599309588423e-10, -3.31308360221866e-06, 0.07566495407703477], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999996533, 0.2500000007119249, 0.24998673941454194, 0.4126219305590427]}, "NODE_904": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999215, 0.12500000021173446, 0.12499813754916238, 0.1833514647462738], "MOMENTUM_X": [-6.947079625738474e-29, -1.9048080359589545e-23, -1.6703558301212877e-19, -5.4119504977388594e-15, -1.4416880700436027e-11, 1.542209618417286e-06, 0.10252947030595887], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.249999999999978, 0.25000000059285654, 0.2499947847500771, 0.47577532058131494]}, "NODE_905": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000359, 0.12499999953565612, 0.12501065978834783, 0.18735405952595574], "MOMENTUM_X": [-1.458420433177613e-29, -2.997000024640795e-23, -1.5435050207920723e-18, 4.7013549411115736e-14, -9.69702841380646e-10, 1.5966475729447937e-05, 0.10544499436372819], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000001005, 0.24999999869983708, 0.25002985296719626, 0.49123864555426133]}, "NODE_906": {"DENSITY": [0.125, 0.125, 0.125, 0.125000000000119, 0.12499999844405728, 0.12502225832079472, 0.18520392782741024], "MOMENTUM_X": [4.520750315238649e-28, -2.4299382588457687e-23, -7.48853209507652e-18, 1.334378215362879e-13, -2.245825776424539e-09, 2.834965084233348e-05, 0.09945315978795267], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.2500000000003332, 0.2499999956433605, 0.25006234129457083, 0.48000611499318063]}, "NODE_907": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.12500000000017616, 0.12499999786328067, 0.12502457369506378, 0.1830852414454548], "MOMENTUM_X": [1.813775327406491e-27, -6.602729580046271e-23, -1.1924308940823246e-17, 1.884805112401315e-13, -2.977050845340889e-09, 3.100900556712558e-05, 0.09594899575400494], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.25000000000049327, 0.249999994017186, 0.2500688264936085, 0.4705895391971754]}, "NODE_908": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.12500000000016243, 0.12499999791615944, 0.12502189151397863, 0.18255903467366416], "MOMENTUM_X": [5.152986666769508e-27, -2.4123154921602405e-22, -1.3193250566115233e-17, 1.7314861231301036e-13, -3.087884861547831e-09, 2.8228647845861055e-05, 0.09566115844309768], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.2500000000004548, 0.24999999416524651, 0.2500613127343117, 0.4686414969066376]}, "NODE_909": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.12500000000012124, 0.12499999798523768, 0.12501984937525246, 0.1825712066401237], "MOMENTUM_X": [1.3228182244594226e-26, -5.193064117434233e-22, -9.351562983302083e-18, 1.3194266370204367e-13, -3.108561595361631e-09, 2.5977889370137444e-05, 0.09573179724439196], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.2500000000003396, 0.2499999943586658, 0.25005559266813515, 0.4686701483044483]}, "NODE_910": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.1250000000001012, 0.12499999789348601, 0.1250193079710967, 0.18288770932756118], "MOMENTUM_X": [2.907076253158562e-26, -9.045921233149685e-22, -5.060468967308163e-18, 1.1234124317050481e-13, -3.2088809295495836e-09, 2.5397314607449055e-05, 0.09613436777770076], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.25000000000028333, 0.24999999410176096, 0.2500540765433506, 0.46974671613772945]}, "NODE_911": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000974, 0.12499999789275704, 0.1250187695064784, 0.18519154408011912], "MOMENTUM_X": [5.17521316305746e-26, -1.3022090545782226e-21, -1.632578985842244e-18, 1.1623602886087977e-13, -3.283280926304858e-09, 2.5607444144682025e-05, 0.1004226538594594], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000027267, 0.24999999409971976, 0.25005257021743166, 0.47970057676214156]}, "NODE_912": {"DENSITY": [0.125, 0.125, 0.12499999999999999, 0.12500000000015976, 0.12499999727891696, 0.1250247055213456, 0.1926064775921636], "MOMENTUM_X": [9.118370446052596e-26, -2.1718409806496176e-21, -7.010871267748177e-18, 2.2293828908213855e-13, -4.5001810526287605e-09, 3.759566352235224e-05, 0.11334641371152629], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.25000000000044736, 0.24999999238096776, 0.2500692088205625, 0.512372333949831]}, "NODE_913": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000039477, 0.1249999911792213, 0.12513901598102062, 0.2068703257297145], "MOMENTUM_X": [2.946424952794081e-25, -5.64290043367627e-21, 1.3284022307549192e-18, 3.912505441467473e-13, -9.93664534069513e-09, 0.0001226782953308045, 0.14001853219445387], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.24999999999999997, 0.25000000000110534, 0.24999997530182116, 0.25038963522193286, 0.5797885711682602]}, "NODE_914": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999856, 0.12500000002707468, 0.12499944320254562, 0.13659120751519901], "MOMENTUM_X": [-1.594848458170262e-30, 4.337619666301373e-25, -1.161585402152952e-20, -2.0432332628048076e-15, 3.4051429517436996e-11, -7.452722746346727e-07, 0.01649576173995179], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999595, 0.2500000000758091, 0.2499984409739229, 0.28571917379849054]}, "NODE_915": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999732, 0.12500000005335177, 0.1249989312776817, 0.14444915655853877], "MOMENTUM_X": [-9.530851317128898e-30, 5.115839981162351e-25, 5.500698983123084e-21, -3.617624935775025e-15, 5.56122072245489e-11, -1.1201783603327702e-06, 0.03013282829956032], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2499999999999925, 0.25000000014938506, 0.24999700759218813, 0.313340306210588]}, "NODE_916": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999908, 0.12500000003480344, 0.12499930038860797, 0.14789932247072218], "MOMENTUM_X": [-2.980464624750459e-29, -1.325401435184338e-25, 8.083452702191491e-20, -1.6709860686521955e-15, 1.1767619313083823e-11, -3.277571929048814e-07, 0.03435164703292097], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999745, 0.25000000009744966, 0.24999804108635262, 0.3254769049499775]}, "NODE_917": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000758, 0.12499999993150379, 0.1250005466962585, 0.14721214915262526], "MOMENTUM_X": [-6.235939003643433e-29, -2.0853197199202962e-25, -3.030325777179016e-19, 7.410677319409389e-15, -1.2957206314869748e-10, 1.1260217005723095e-06, 0.032223855429419024], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000002126, 0.2499999998082106, 0.2500015308016242, 0.32261939788660643]}, "NODE_918": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000189, 0.12499999982085717, 0.12500129928228787, 0.14590001972660846], "MOMENTUM_X": [-8.653379097856348e-29, 5.154322740923874e-24, -6.592642979986811e-19, 2.030686809714899e-14, -2.8728348292371414e-10, 1.8722028067653532e-06, 0.030148181843786308], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000529, 0.24999999949840007, 0.2500036381002956, 0.3178558007117171]}, "NODE_919": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000002387, 0.12499999978401306, 0.1250012040369353, 0.14542814071638985], "MOMENTUM_X": [-6.242616984278032e-29, 1.5652185078173013e-23, -1.062981895260331e-18, 2.8706996154744214e-14, -3.676733943050217e-10, 1.719707420815999e-06, 0.02965644690539713], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000669, 0.24999999939523662, 0.2500033713909118, 0.31623600859230017]}, "NODE_920": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000002134, 0.12499999978735989, 0.1250008846571909, 0.14550043985504885], "MOMENTUM_X": [7.19512765256133e-29, 8.985653069174156e-24, -1.428818528742345e-18, 3.107391870114809e-14, -3.8500214813996045e-10, 1.3716742404042777e-06, 0.02986659831140914], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000597, 0.24999999940460757, 0.2500024771014579, 0.31651146965851945]}, "NODE_921": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001776, 0.12499999978297593, 0.1250006771477833, 0.14598102730880474], "MOMENTUM_X": [5.350598300448736e-28, -2.9216144452767667e-23, -1.5416137019055343e-18, 3.204597950943893e-14, -3.870127863186152e-10, 1.1557376390649702e-06, 0.030760532533438134], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000498, 0.2499999993923327, 0.25000189606422374, 0.31823709253460075]}, "NODE_922": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001626, 0.12499999979656973, 0.125000257283553, 0.14787143787879853], "MOMENTUM_X": [1.5168889001456653e-27, -6.960971868576769e-23, -1.639960822977577e-18, 3.256201218483336e-14, -3.6783116109286897e-10, 7.524446231274697e-07, 0.03434967970895341], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000455, 0.24999999943039522, 0.25000072042868393, 0.3251901893395121]}, "NODE_923": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000208, 0.12499999982183095, 0.12499912844148224, 0.15354755200591608], "MOMENTUM_X": [1.6990143323947734e-27, -4.127830673099913e-23, -2.4685163409123045e-18, 3.882139935446036e-14, -3.989275016278257e-10, 5.979160815011026e-07, 0.04443386948617816], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000583, 0.24999999950112678, 0.2499975596766602, 0.34645896974868257]}, "NODE_924": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000586, 0.12499999915492346, 0.1250085607554156, 0.16599440689391992], "MOMENTUM_X": [8.7473294526791e-27, -3.317819025737834e-22, -6.584645844189887e-18, 9.13427812601688e-14, -1.1893471069085578e-09, 9.75121904770757e-06, 0.06640445006258847], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000016404, 0.24999999763378564, 0.2500239726738816, 0.3960462331087067]}, "NODE_925": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999989, 0.12500000000221898, 0.12499995215588625, 0.12652415415342005], "MOMENTUM_X": [1.7689209286143257e-31, 6.355307786866355e-27, -2.3469718319474335e-22, -1.5245897433488505e-16, 2.7099433847539373e-12, -6.512228181162825e-08, 0.0016221373448131618], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2499999999999997, 0.25000000000621314, 0.24999986603655083, 0.2543239210468916]}, "NODE_926": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999961, 0.1250000000069863, 0.12499986041565503, 0.1285817241432568], "MOMENTUM_X": [1.9087938023119527e-31, 1.1500921949807855e-25, -6.609335138149129e-22, -4.753474407630277e-16, 7.963846940250399e-12, -1.7634578315555995e-07, 0.004074753023609981], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999892, 0.2500000000195616, 0.2499996091642778, 0.2603302760251094]}, "NODE_927": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999942, 0.1250000000105768, 0.1249998006275268, 0.1299870930593829], "MOMENTUM_X": [-7.644193701752033e-31, 3.0564103879790037e-25, 8.558507234278392e-21, -8.184855539292967e-16, 1.266875874184543e-11, -2.601925344651111e-07, 0.005702158592321511], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999836, 0.250000000029615, 0.24999944175775052, 0.2645223722446475]}, "NODE_928": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000369585, 0.12499987991449776, 0.13002963114429436], "MOMENTUM_X": [-5.194977232753157e-30, 4.810048080986041e-25, 3.227362792306658e-20, -5.438886881460421e-16, 7.934605914709546e-12, -2.2058739047708008e-07, 0.005696501868492782], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999994, 0.25000000001034833, 0.24999966376061183, 0.26464117432158807]}, "NODE_929": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000158, 0.12499999998712952, 0.12499998994575151, 0.1296195430143487], "MOMENTUM_X": [-1.7412720584742796e-29, 7.6632263901455815e-25, 8.646762765729649e-20, 6.014764527671716e-16, -5.545071080065094e-12, -1.342099805495062e-07, 0.005231326442371852], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000044, 0.24999999996396263, 0.24999997184793216, 0.263410766299715]}, "NODE_930": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000033, 0.12499999997366935, 0.12500000953462892, 0.12940616672496894], "MOMENTUM_X": [-4.3817356877552256e-29, 1.7565802188968204e-24, 1.4656379369127194e-19, 1.825221177095282e-15, -1.6021745141004935e-11, -1.0924594457038209e-07, 0.005002245254222763], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000092, 0.24999999992627422, 0.2500000266967775, 0.26277626670285986]}, "NODE_931": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000427, 0.12499999996904718, 0.12499997024740765, 0.12941096552659323], "MOMENTUM_X": [-9.645653895310819e-29, 4.2541847834872094e-24, 1.7051156831383582e-19, 2.3411099831392955e-15, -1.8927776350194236e-11, -1.359187326282578e-07, 0.005010389358666192], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000119, 0.24999999991333194, 0.24999991669253308, 0.26279149824675824]}, "NODE_932": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000455, 0.12499999996837381, 0.12499993528250349, 0.1295740631815146], "MOMENTUM_X": [-1.915069189191139e-28, 8.942482658738457e-24, 1.600790196802142e-19, 2.331798151889438e-15, -1.9000828934413618e-11, -1.691306504450851e-07, 0.0052371956803566], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000128, 0.2499999999114467, 0.24999981879085878, 0.26328275146839114]}, "NODE_933": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000464, 0.12499999997151592, 0.12499987693075695, 0.1301851646468102], "MOMENTUM_X": [-3.338393803464856e-28, 1.635771457937731e-23, 1.4422984683142897e-19, 2.117744771130456e-15, -1.576514342365855e-11, -2.4423531863953087e-07, 0.006150973123173841], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000001305, 0.24999999992024466, 0.24999965540610802, 0.2651400893912421]}, "NODE_934": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000525, 0.12499999998103024, 0.12499967038784572, 0.13230091359887358], "MOMENTUM_X": [-6.766946418982891e-28, 3.645488788697473e-23, 1.807208416644196e-19, 1.9997250682759433e-15, -7.385841925115674e-12, -4.670593133242804e-07, 0.009294915353778771], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000001465, 0.24999999994688463, 0.24999907708687275, 0.2716704010055853]}, "NODE_935": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000001274, 0.12499999991250457, 0.12500011532386354, 0.1385050864858741], "MOMENTUM_X": [-1.7767995369811278e-27, 1.0736086591613752e-22, 4.4055253493569037e-20, 6.205533795457982e-15, -6.02681035046666e-11, -9.636640842318232e-08, 0.018583220839995362], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000356, 0.24999999975501272, 0.2500003229113124, 0.2917067040774521]}, "NODE_936": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000001418, 0.12499999922930688, 0.12507616214557948], "MOMENTUM_X": [1.033054378099401e-32, -4.91908355103793e-27, 1.252371487740342e-22, -2.6377671903666717e-18, 5.5918511090363745e-14, -2.4177585663254683e-09, 8.883635065832937e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000003975, 0.2499999978420595, 0.2502134647376417]}, "NODE_937": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999997, 0.12500000000059378, 0.12499998752614606, 0.12536148160423172], "MOMENTUM_X": [5.356025011060499e-32, -1.1268672138241211e-26, 1.517204691606749e-22, -3.1810129159065216e-17, 5.66812121475816e-13, -1.3638283236725261e-08, 0.00031709375346358065], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999992, 0.25000000000166256, 0.2499999650732128, 0.2510149674162746]}, "NODE_938": {"DENSITY": [0.125, 0.125, 0.125, 0.1249999999999999, 0.12500000000166053, 0.12499996920787615, 0.12566948962089772], "MOMENTUM_X": [1.5077294833163536e-31, -1.3075496490841437e-26, -8.154187974779753e-22, -1.0015384453381755e-16, 1.6102253526125375e-12, -3.26049231407523e-08, 0.0005748270957805817], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999975, 0.25000000000464956, 0.2499999137820729, 0.2518835021215173]}, "NODE_939": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999986, 0.12500000000220407, 0.12499996110953396, 0.12575504951273908], "MOMENTUM_X": [2.564664647130318e-31, -1.1850529649353157e-26, -7.957595530538991e-22, -1.4801420779512346e-16, 2.189371957690554e-12, -4.175714521100784e-08, 0.000667348168140308], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999964, 0.2500000000061715, 0.24999989110672102, 0.2521253960932406]}, "NODE_940": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999997, 0.12500000000125527, 0.12499996671665334, 0.12569449818279826], "MOMENTUM_X": [1.0065429044876099e-31, -3.419228187427929e-26, 1.816668148868727e-21, -9.377040260919792e-17, 1.4528732938533175e-12, -3.6474936067872777e-08, 0.0006339363113767624], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2499999999999999, 0.2500000000035148, 0.24999990680664463, 0.25195434288869956]}, "NODE_941": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000017, 0.12499999999962347, 0.12499997133600448, 0.12563920550672913], "MOMENTUM_X": [-1.1042195776118193e-30, -1.0163344453984198e-25, 7.597444176623681e-21, 4.436481617249289e-17, 1.2142077291052942e-13, -3.0702168428603654e-08, 0.0005883899341704747], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000005, 0.24999999999894576, 0.24999991974082264, 0.25179824447874766]}, "NODE_942": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000036, 0.12499999999872821, 0.12499996893272146, 0.1256286409602016], "MOMENTUM_X": [-4.949443020384315e-30, -1.468161602343659e-25, 1.648960178014343e-20, 1.5164334537327902e-16, -6.880262000495313e-13, -3.183943248548964e-08, 0.0005748411281813204], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000105, 0.24999999999643902, 0.24999991301163163, 0.25176843233425833]}, "NODE_943": {"DENSITY": [0.125, 0.125, 0.125, 0.1250000000000005, 0.12499999999861376, 0.12499996511157023, 0.125649346858276], "MOMENTUM_X": [-1.4035885516080638e-29, -5.630837816661553e-26, 2.6995678090744975e-20, 1.8860669162053209e-16, -9.43336120238701e-13, -3.575298819278092e-08, 0.0005932328670545114], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000014, 0.2499999999961185, 0.24999990231241265, 0.251827019313025]}, "NODE_944": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000053, 0.12499999999900135, 0.12499995948842535, 0.1257323507732056], "MOMENTUM_X": [-3.054648065192502e-29, 6.628964387248587e-26, 3.490914408773217e-20, 1.6842644390071726e-16, -6.610303178043149e-13, -4.3287579481697326e-08, 0.0006830014939043025], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000144, 0.24999999999720376, 0.24999988656761607, 0.25206226442412394]}, "NODE_945": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000047, 0.12500000000103326, 0.12499993098164665, 0.12610295562128346], "MOMENTUM_X": [-5.416134545578215e-29, -2.545098212454786e-25, 4.527297680036858e-20, 1.5291606927230756e-16, 9.66321372952912e-13, -7.625881297372087e-08, 0.0010859087011927961], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000133, 0.2500000000028931, 0.24999980674868882, 0.2531152291332563]}, "NODE_946": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000142, 0.12499999999750254, 0.12499990075203203, 0.1277488895014662], "MOMENTUM_X": [-1.8440570430150038e-28, 4.453364382575877e-24, 1.142332728305271e-19, 5.155501381207932e-16, -1.2532009600818832e-12, -1.1338564776232215e-07, 0.0027055052015717103], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000394, 0.24999999999300707, 0.24999972210582738, 0.2578393249084603]}, "NODE_947": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999997616, 0.12500000053655327, 0.12499222022793967], "MOMENTUM_X": [-5.681148330031721e-34, 1.08860550591455e-28, -7.056115336517817e-24, 4.534022728542064e-19, -2.044315025190326e-14, 2.7484538530384107e-10, -2.53738294849596e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999993325, 0.2500000015023491, 0.24997821617790872]}, "NODE_948": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000216, 0.1250000000086179, 0.12500980110806942], "MOMENTUM_X": [1.5864630084805606e-34, -7.490147949130312e-28, 3.76794368373437e-24, -7.428249311781708e-19, 9.943061093867491e-15, -5.24050869061169e-10, 1.5145098182099805e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000061, 0.25000000002413014, 0.25002744709174146]}, "NODE_949": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000012, 0.12499999789114644, 0.12504735390186794], "MOMENTUM_X": [6.92386584480801e-33, -3.152195694126942e-27, -3.3609460773861966e-23, -8.580410551005296e-18, 1.364188059717813e-13, -2.9552187296074685e-09, 5.031980981135718e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999997, 0.250000000000336, 0.24999999409521012, 0.2501326571960502]}, "NODE_950": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999999, 0.1250000000002982, 0.12499999532406988, 0.12507159455130798], "MOMENTUM_X": [3.1253619117444603e-32, -6.685150049967418e-27, -2.641772452721938e-22, -1.926320872945325e-17, 3.019610384104047e-13, -5.445690188805342e-09, 7.426551878597783e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999994, 0.2500000000008349, 0.2499999869073961, 0.250200600615288]}, "NODE_951": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999997, 0.12500000000037956, 0.12499999439868972, 0.12507121586631623], "MOMENTUM_X": [9.330436055889712e-32, -1.1611788722344153e-26, -9.364428308069162e-22, -2.7494957217363207e-17, 3.5272683723602033e-13, -6.2246829636604545e-09, 7.604621902929626e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999994, 0.25000000000106276, 0.24999998431633186, 0.25019953620291835]}, "NODE_952": {"DENSITY": [0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000030645, 0.1249999947284273, 0.12506297778529268], "MOMENTUM_X": [2.2979966770121704e-31, -2.2342232446944452e-26, -1.893993542710011e-21, -1.7042498375738448e-17, 2.456502196959723e-13, -5.926998703776684e-09, 6.879672693134296e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.24999999999999994, 0.25000000000085804, 0.24999998523959696, 0.25017644515732856]}, "NODE_953": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000002103, 0.12499999481672615, 0.12505884867322073], "MOMENTUM_X": [5.006774637849225e-31, -4.60738695278982e-26, -2.731116836685388e-21, 4.736724412167362e-18, 1.138992588621835e-13, -5.922910564985869e-09, 6.441685640945942e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000058886, 0.24999998548683372, 0.25016487352915767]}, "NODE_954": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000018066, 0.12499999455665983, 0.1250588984335097], "MOMENTUM_X": [9.552653942138417e-31, -8.978791726981834e-26, -3.1815142014816435e-21, 2.2694022393602634e-17, 5.456504200372615e-14, -6.252570563889386e-09, 6.417497933733215e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000050576, 0.2499999847586481, 0.2501650150196425]}, "NODE_955": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000003, 0.12500000000019282, 0.12499999439916028, 0.12506167141844235], "MOMENTUM_X": [1.6173341168584037e-30, -1.7259242970009042e-25, -3.308319677725376e-21, 2.8685015329441264e-17, 7.107233202986705e-14, -6.656148247131877e-09, 6.787116762150114e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000053985, 0.24999998431764944, 0.2501727982148649]}, "NODE_956": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000038503, 0.12499999205301314, 0.12509036010758284], "MOMENTUM_X": [3.484689420944157e-30, -4.652911678144205e-25, -4.06699969283172e-21, 2.29449944934333e-17, 3.1792935524296846e-13, -9.990684282620542e-09, 0.00010313945942815369], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000107814, 0.2499999777484384, 0.25025327759628346]}, "NODE_957": {"DENSITY": [0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000075925, 0.12499997916132324, 0.1253589218699832], "MOMENTUM_X": [6.2151176746440255e-30, -1.3927677798016782e-24, -4.395826326592675e-21, 8.686710097471378e-17, 4.204172827112461e-13, -2.011916886269574e-08, 0.0002978879494909969], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.2500000000000001, 0.2500000000021258, 0.24999994165171216, 0.2510073094741543]}, "NODE_958": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999677, 0.12500000007059725, 0.12499851606411602], "MOMENTUM_X": [-5.510990014155168e-35, 4.1175129537165053e-29, -8.054259398519663e-25, 8.323159005896127e-21, -4.372976888241626e-15, 7.781381541883472e-11, -1.620960264491619e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999095, 0.25000000019767227, 0.24999584501382538]}, "NODE_959": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1249999999999951, 0.12500000011593165, 0.12499792767043584], "MOMENTUM_X": [-2.275487615034832e-34, 1.226774166483977e-28, -3.1030172138913965e-24, 5.377254091627737e-20, -5.946358553580059e-15, 8.719831757465516e-11, -1.502755810037039e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999998632, 0.2500000003246086, 0.2499941974896782]}, "NODE_960": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000136, 0.1250000000225767, 0.12499997441092922], "MOMENTUM_X": [-4.87450027240824e-34, 1.810114959055638e-28, 3.6215116504571475e-24, -3.611095079449998e-19, 2.39188259929976e-15, -1.006439614475832e-10, 1.7703863081904337e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000037, 0.25000000006321466, 0.2499999284125035]}, "NODE_961": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000002137, 0.12499999975030314, 0.1250032630862475], "MOMENTUM_X": [-1.3994348945980825e-34, 1.1075960306367204e-28, 1.972778441192831e-23, -1.3458914191751746e-18, 2.5367111942052243e-14, -4.850312798232319e-10, 5.6398063344009135e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000005984, 0.2499999993008487, 0.2500091373980715]}, "NODE_962": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000004274, 0.12499999953304304, 0.12500455879067437], "MOMENTUM_X": [2.841449344424406e-33, 5.370635519007409e-30, 2.1098982759951632e-23, -3.74442707257517e-18, 5.106124159767141e-14, -8.229113582191853e-10, 6.930191854259391e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000001197, 0.24999999869252051, 0.2500127656731661]}, "NODE_963": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000004655, 0.12499999950683614, 0.1250039785213666], "MOMENTUM_X": [1.232878892404094e-32, 1.7474668174339444e-28, -2.0578934399137782e-23, -5.9473473764830066e-18, 6.203768289046023e-14, -9.547166384092708e-10, 6.15480719510379e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000001303, 0.24999999861914116, 0.2500111406743795]}, "NODE_964": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000003542, 0.1249999995341156, 0.12500322330830524], "MOMENTUM_X": [3.639575066072616e-32, 6.795245102810454e-28, -1.2178126872605249e-22, -3.856853208238842e-18, 6.047250460472804e-14, -9.73425872861583e-10, 5.2844785663812406e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000992, 0.2499999986955238, 0.2500090258954551]}, "NODE_965": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000256, 0.12499999952130184, 0.12500284816383736], "MOMENTUM_X": [9.27679246759039e-32, 1.0117408354261434e-27, -2.878289045720933e-22, -1.9799041359712616e-18, 5.920557877521391e-14, -9.778911959328094e-10, 4.895437396511578e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000718, 0.24999999865964526, 0.25000797543184183]}, "NODE_966": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000002218, 0.1249999995453007, 0.12500210493572206], "MOMENTUM_X": [2.056510856562392e-31, 1.4340605990013272e-27, -4.681076761825849e-22, -1.7649623521526714e-18, 6.051070100301975e-14, -9.487805183659882e-10, 4.339472088852442e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000622, 0.249999998726842, 0.25000589433425113]}, "NODE_967": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000003253, 0.12499999954115035, 0.12500091307573202], "MOMENTUM_X": [4.259813784944794e-31, 2.2272481925893118e-27, -5.965435670553708e-22, -4.066698716336987e-18, 8.202380221144953e-14, -1.1315869303511748e-09, 5.711008236658369e-06], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000009104, 0.24999999871522094, 0.2500025574720561]}, "NODE_968": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000010517, 0.12499999789802438, 0.12502792529731224], "MOMENTUM_X": [1.5238137876625898e-30, -7.152018115469858e-26, -1.6032782337152809e-21, -6.247514396884771e-18, 1.795041455876089e-13, -2.9753927663701294e-09, 2.9252991788629322e-05], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000002944, 0.2499999941144683, 0.25007821169446925]}, "NODE_969": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1249999999999997, 0.12500000000628483, 0.12499986255443886], "MOMENTUM_X": [1.2591685151403373e-36, -9.235192525167187e-31, 1.183916624530037e-25, -4.9204102114003256e-21, -4.2892105319320273e-16, 8.185707195599094e-12, -1.9809058341091606e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999917, 0.25000000001759753, 0.2499996151529608]}, "NODE_970": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999921, 0.1250000000163662, 0.12499966237997026], "MOMENTUM_X": [-5.4814933424646985e-36, 4.67065340339949e-30, 1.231372451541351e-25, -1.8682979278153556e-21, -1.0886796291765622e-15, 1.9656847424945372e-11, -4.3103096791865724e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2499999999999978, 0.25000000004582534, 0.2499990546662195]}, "NODE_971": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999914, 0.12500000001977452, 0.12499962062723267], "MOMENTUM_X": [-4.603983083679297e-35, 2.614412699598522e-29, 9.013837866198337e-26, 3.2776985303593405e-20, -1.4590049784126834e-15, 2.3218314600991726e-11, -4.6502501372594587e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999759, 0.25000000005536854, 0.24999893775772458]}, "NODE_972": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000086, 0.12499999999738771, 0.12499990538769783], "MOMENTUM_X": [-1.7082449145828141e-34, 6.52070412703813e-29, 1.2770972145873667e-24, 5.96048270232744e-20, -1.8059317396125312e-16, 2.409454267607439e-13, -2.1339509642164688e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000024, 0.24999999999268552, 0.2499997350849932]}, "NODE_973": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000427, 0.1249999999598596, 0.12500016227436672], "MOMENTUM_X": [-4.004289811207662e-34, 1.1193195433599724e-28, 6.731100327840225e-24, -1.9853896743381576e-20, 2.837965856385631e-15, -3.8661188217407874e-11, 1.1137573133392432e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.250000000000012, 0.24999999988760685, 0.25000045436945123]}, "NODE_974": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000713, 0.12499999993691474, 0.125000167151634], "MOMENTUM_X": [-6.273881052954125e-34, 1.7445735432187742e-28, 1.8971856981630518e-23, -4.785566644061368e-19, 5.52064643942812e-15, -6.323686118191033e-11, 1.9022957692003472e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000001993, 0.24999999982336124, 0.25000046802530157]}, "NODE_975": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000078, 0.12499999993227316, 0.12500006247142473], "MOMENTUM_X": [-6.61123983219177e-34, 2.972049570818099e-28, 3.5655197604550825e-23, -2.6849042964454352e-19, 6.445158880808554e-15, -6.818968781503582e-11, -7.139988125090684e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000002187, 0.2499999998103648, 0.25000017491975224]}, "NODE_976": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1250000000000074, 0.12499999993186131, 0.12499998616794886], "MOMENTUM_X": [-5.060576756007454e-34, 5.623832014154967e-28, 5.067334870502978e-23, -2.2636353057207814e-19, 6.380179521138365e-15, -6.707292012623961e-11, -1.480176802080182e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000002076, 0.2499999998092116, 0.24999996126976787]}, "NODE_977": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000713, 0.12499999993839685, 0.12499985413041613], "MOMENTUM_X": [-7.939100645863299e-34, 1.2772549501201447e-27, 6.11277288891972e-23, -4.1406722399445635e-19, 6.001046258605685e-15, -5.88354678109548e-11, -3.0890131896300344e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000001993, 0.24999999982751112, 0.2499995915643467]}, "NODE_978": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000858, 0.12499999995518553, 0.12499941012544269], "MOMENTUM_X": [-6.362622237692902e-33, 4.422973314362758e-27, 7.981299287738514e-23, -4.782949979346855e-19, 6.129138616181259e-15, -4.694914945212315e-11, -6.679346256864539e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000002404, 0.24999999987451949, 0.24999834835147963]}, "NODE_979": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000002154, 0.12499999978820316, 0.12500106875699393], "MOMENTUM_X": [-5.4002861971090105e-33, 1.4253173517523177e-26, 1.318149111588006e-22, -1.3058198979265437e-18, 1.7667227054642968e-14, -2.1338080238438054e-10, 9.885747004522168e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000006023, 0.2499999994069687, 0.2500029925947133]}, "NODE_980": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000027428, 0.12499999187714933], "MOMENTUM_X": [2.2704739738545653e-37, -2.443923648169154e-31, 2.1617027994202944e-27, 1.8229816792575892e-22, -1.9391024017948945e-17, 3.489679281576636e-13, -1.127041498629506e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.250000000000768, 0.24999997725602077]}, "NODE_981": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999992, 0.12500000000173603, 0.12499996240607064], "MOMENTUM_X": [8.198255560097507e-37, -7.0562271575428675e-31, 2.781133104274891e-26, -6.465708213138786e-22, -9.36067246371064e-17, 1.7342086260199387e-12, -4.228076458201725e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999975, 0.2500000000048609, 0.249999894737031]}, "NODE_982": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.1249999999999998, 0.12500000000379857, 0.12499992830364137], "MOMENTUM_X": [1.339977626852636e-36, -1.006740067545474e-30, 2.5055637436529157e-26, -3.7231850451203166e-23, -2.2836239479767186e-16, 3.988750300847737e-12, -8.278802759442394e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999944, 0.25000000001063594, 0.24999979925029814]}, "NODE_983": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999983, 0.12500000000374473, 0.12499992938940364], "MOMENTUM_X": [-2.9803286094651225e-36, 9.498270632433331e-32, -1.339704537764703e-25, 7.840036344301631e-21, -2.762170998280634e-16, 4.551061495524113e-12, -9.223606992965656e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2499999999999995, 0.25000000001048517, 0.2499998022904108]}, "NODE_984": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000014, 0.12500000000015193, 0.12499995440088875], "MOMENTUM_X": [-2.8207942065204787e-35, 3.0193677188454578e-30, -4.1304415699569096e-25, 2.9026923094705055e-20, -9.211420351406328e-17, 2.1582183861073743e-12, -7.300014135733213e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000004, 0.25000000000042544, 0.24999987232251342]}, "NODE_985": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000067, 0.12499999999593589, 0.12499996368770291], "MOMENTUM_X": [-1.0491713064402485e-34, 4.681320024205622e-30, -5.512011572763465e-25, 5.686759840764639e-20, 2.0307207720012637e-16, -7.183304727556753e-13, -6.097254094783652e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000183, 0.24999999998862044, 0.24999989832557992]}, "NODE_986": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000108, 0.12499999999406508, 0.12499995409998327], "MOMENTUM_X": [-2.7150713294383433e-34, -1.851378268757422e-30, -1.6954245260711954e-25, 7.251355164727125e-20, 3.5241074991156884e-16, -1.9273905718351915e-12, -6.598283417547391e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000305, 0.24999999998338224, 0.24999987147997305]}, "NODE_987": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000128, 0.12499999999394341, 0.124999943801379], "MOMENTUM_X": [-5.695226920098934e-34, -2.4473423348257273e-29, 1.2637884279355757e-24, 6.74148599420239e-20, 3.134843011995296e-16, -2.108754034854484e-12, -7.562752445097262e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000355, 0.2499999999830415, 0.24999984264390013]}, "NODE_988": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000133, 0.12499999999503696, 0.12499992869283542], "MOMENTUM_X": [-1.0689085886757717e-33, -7.4353258841983e-29, 3.647564461965156e-24, 5.710772584099836e-20, 2.007584530240456e-16, -1.2544248118569502e-12, -9.535206549450264e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000366, 0.24999999998610348, 0.24999980034001662]}, "NODE_989": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000133, 0.12499999999921152, 0.12499986520513993], "MOMENTUM_X": [-2.1198933524780452e-33, -1.180952250133923e-28, 5.4781830822186874e-24, 7.703028536008622e-20, 1.4097635276437105e-16, 2.1767725084175907e-12, -1.7103971807816477e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000037, 0.24999999999779235, 0.24999962257467753]}, "NODE_990": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000347, 0.12499999998603538, 0.12499987731366158], "MOMENTUM_X": [-6.474612032133487e-33, 5.404471533357352e-28, 1.8148623414502606e-23, 1.5979998274320866e-19, 7.484539381581185e-16, -4.871868883588253e-12, -1.9671208246460512e-07], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000097, 0.24999999996089908, 0.24999965647849334]}, "NODE_991": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999995881, 0.12500000081127946], "MOMENTUM_X": [-2.8474078048477396e-39, -8.294321659644932e-33, -1.343703010698099e-27, 5.421915018824359e-23, 3.296799665672854e-19, -2.7752422683203073e-14, 1.1813731861006476e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999988465, 0.2500000022715824]}, "NODE_992": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006395, 0.12499999838592499], "MOMENTUM_X": [2.8101135605312613e-38, -4.963456823117739e-32, -2.5159282253677413e-27, 1.2227353518365803e-22, -5.11863424529634e-18, 7.09598463168949e-14, -2.438302534954224e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.250000000000179, 0.24999999548059001]}, "NODE_993": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000037867, 0.12499999254767521], "MOMENTUM_X": [1.9669522657432636e-37, -1.6784381058760923e-31, -2.586111948578454e-27, -1.5636999478508053e-22, -2.248243205423089e-17, 3.7791473681746635e-13, -8.307825986233544e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999994, 0.25000000000106026, 0.24999997913349203]}, "NODE_994": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999997, 0.12500000000073977, 0.12499998741920346], "MOMENTUM_X": [7.288459722811891e-37, -3.325574718096465e-31, -7.871511656335813e-27, -8.751943075021143e-22, -4.2934619611939016e-17, 6.896819403868065e-13, -1.2746714544524328e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2499999999999999, 0.2500000000020713, 0.24999996477377273]}, "NODE_995": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12499999999999996, 0.12500000000077954, 0.12499998681261287], "MOMENTUM_X": [1.7925428536252873e-36, -3.4551687553687134e-31, -4.417067622844051e-26, -5.650248688615293e-22, -4.130250431607476e-17, 6.643296374920308e-13, -1.2644701973371148e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2499999999999999, 0.2500000000021827, 0.24999996307531888]}, "NODE_996": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000005, 0.12499998802371168], "MOMENTUM_X": [2.476569145595896e-36, 1.482801710476519e-32, -1.520423828513603e-25, 1.4518255757551763e-21, -7.532534878038008e-18, 3.2437558990243265e-13, -1.112818600324614e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000139994, 0.2499999664663948]}, "NODE_997": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000027706, 0.1249999878983275], "MOMENTUM_X": [-9.977307445054941e-37, 6.435492478493367e-31, -3.477248274886506e-25, 2.5882394072373237e-21, 3.693053814394795e-17, 1.7629536551071803e-14, -1.1241760279079749e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000077577, 0.24999996611531916]}, "NODE_998": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000024705, 0.12499998708334359], "MOMENTUM_X": [-1.5188794751098651e-35, 8.557703870253174e-31, -5.921821833523486e-25, 2.622943293568369e-21, 5.937111940924667e-17, -1.0209399609255388e-13, -1.2261940295425648e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000017, 0.25000000000069167, 0.24999996383336465]}, "NODE_999": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000032296, 0.1249999862279623], "MOMENTUM_X": [-4.205751745434222e-35, -2.2748539073966514e-30, -8.212419817353134e-25, 4.241396994100201e-21, 6.082633921551604e-17, -4.1167585667801063e-14, -1.3723046210936821e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25000000000000017, 0.25000000000090433, 0.24999996143829775]}, "NODE_1000": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000087402, 0.12499997909284942], "MOMENTUM_X": [-7.527696620800563e-35, -2.706057678352382e-29, -1.2160217566606285e-24, 5.6938080470047456e-21, 5.233654755911148e-17, 5.05791136793022e-13, -2.2277829702352534e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000001, 0.25000000000244715, 0.24999994145998666]}, "NODE_1001": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.12500000000000017, 0.1250000000012214, 0.12499995594329216], "MOMENTUM_X": [-2.860691066546329e-34, -1.1444053924447683e-28, -2.4208457757349716e-24, 1.7805767713722913e-20, 1.865848873409415e-16, 3.8609336992640103e-13, -4.053435415664246e-08], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.2500000000000005, 0.25000000000342, 0.24999987664124632]}, "NODE_1002": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999219, 0.12500000018189628], "MOMENTUM_X": [-5.8663738979134556e-40, 8.360235513848248e-34, 2.6720116290845223e-29, -3.778179143496748e-24, 1.1852672949686444e-19, -9.176740723241156e-15, 1.5704322961051536e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999997816, 0.25000000050930965]}, "NODE_1003": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999108, 0.12500000020706464], "MOMENTUM_X": [-2.363733331790703e-39, -3.8301384511912078e-34, -1.9877483519582479e-28, 2.535197964250767e-24, 2.1174317916383916e-19, -8.307361722539321e-15, 6.309736483039618e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999997502, 0.25000000057978106]}, "NODE_1004": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001193, 0.12499999981467032], "MOMENTUM_X": [-3.1370702458146174e-39, -8.428424381218715e-33, -5.007991528575049e-28, 2.4869455860179706e-23, -8.723438464445454e-19, 1.894118099221992e-14, -5.521294535737987e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000335, 0.24999999948107696]}, "NODE_1005": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006212, 0.12499999908539343], "MOMENTUM_X": [1.6571010944449604e-38, -3.2108763276395436e-32, 3.6823582694568696e-28, 2.3382531205114513e-24, -5.289036727417041e-18, 7.393095782198895e-14, -1.466369193850518e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.250000000000174, 0.24999999743910165]}, "NODE_1006": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000010472, 0.12499999866665552], "MOMENTUM_X": [1.1926563487741686e-37, -6.642739201501479e-32, 3.701147677159272e-27, -1.8509488909054574e-22, -8.219737601891842e-18, 1.1953799145013996e-13, -2.0548778693632828e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.2500000000002932, 0.24999999626663552]}, "NODE_1007": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000010275, 0.12499999870706231], "MOMENTUM_X": [4.474262384717512e-37, -6.049842063091517e-32, 8.251847828747377e-27, -5.797029243342194e-22, -7.958884804696179e-18, 1.2264061246601635e-13, -2.1755059379713807e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.25000000000028766, 0.24999999637977452]}, "NODE_1008": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000754, 0.12499999877943932], "MOMENTUM_X": [1.2602007047658771e-36, 1.091681164315066e-31, 9.087334187618486e-27, -1.0807774607047173e-21, -2.7090660635064253e-18, 1.0312734137229763e-13, -2.1771632544447733e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000021105, 0.24999999658243005]}, "NODE_1009": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000005815, 0.12499999873289394], "MOMENTUM_X": [2.867220038433684e-36, 6.455437862774703e-31, -2.012707179820129e-27, -1.2932475664845048e-21, 7.877815693644348e-19, 9.366734810131896e-14, -2.214420941404518e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001628, 0.2499999964521031]}, "NODE_1010": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000005418, 0.12499999876234734], "MOMENTUM_X": [5.42860872277109e-36, 1.8715417503926828e-30, -2.8488966195953146e-26, -1.1498456660192487e-21, 1.5879547464863302e-18, 9.773615952552218e-14, -2.2107075098754092e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001517, 0.24999999653457255]}, "NODE_1011": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000008468, 0.12499999852204798], "MOMENTUM_X": [1.099732408074891e-35, 3.8346587219369634e-30, -4.921403948309358e-26, -1.2263886328478374e-21, -2.685914508810913e-18, 1.607380829898821e-13, -2.879304652783756e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000023703, 0.2499999958617343]}, "NODE_1012": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000025183, 0.12499999452101347], "MOMENTUM_X": [2.43680669784678e-35, 2.0437712698649594e-30, -2.265678836296559e-25, -2.5490578823210916e-21, 3.1492795579566973e-18, 3.189893895673491e-13, -6.751694968811944e-09], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000007052, 0.24999998465883855]}, "NODE_1013": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999925, 0.12500000001758038], "MOMENTUM_X": [3.678570961184408e-42, 2.695080640322504e-34, 1.1117603956473849e-29, -3.3487147596530963e-25, -6.897363918746058e-21, -1.1539597571989247e-15, 2.296695688619458e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999999979, 0.250000000049225]}, "NODE_1014": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999829, 0.12500000003871414], "MOMENTUM_X": [-7.015606874519618e-41, 6.081136631762872e-34, 3.141448411095007e-29, -1.3370584353656357e-24, 2.2115642695996237e-20, -2.441167840781427e-15, 4.324767768712534e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999523, 0.2500000001083996]}, "NODE_1015": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999871, 0.1250000000337116], "MOMENTUM_X": [-5.790097325624403e-40, 7.227013825732003e-34, 4.1157529456256704e-29, -6.094142940667513e-25, 1.419858286217035e-19, -2.2286046709183216e-15, 2.5818451839610457e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999642, 0.25000000009439244]}, "NODE_1016": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000325, 0.12499999996804168], "MOMENTUM_X": [-2.4567364189830887e-39, -1.1313503185231945e-33, 5.29034928510822e-29, 8.08442175224802e-24, -2.438534807823631e-19, 2.305511110325434e-15, -5.994007934221099e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000091, 0.2499999999105167]}, "NODE_1017": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000105, 0.12499999988871073], "MOMENTUM_X": [-6.092448811344686e-39, -8.854164226842655e-33, 2.461321345183109e-28, 2.203930294750425e-23, -5.594142079454905e-19, 1.0134063114385739e-14, -1.6456189755376707e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000293, 0.24999999968838993]}, "NODE_1018": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001454, 0.12499999985795368], "MOMENTUM_X": [-6.521727627963257e-39, -2.6242964754463567e-32, 1.0835234402009185e-27, 1.8609301255727855e-23, -8.443211765452888e-19, 1.5995970029280076e-14, -2.1808854183290012e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000407, 0.24999999960227032]}, "NODE_1019": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001343, 0.12499999985957701], "MOMENTUM_X": [1.4629095601104145e-38, -5.098567836536721e-32, 3.1283657511301757e-27, 2.4360487411719654e-24, -6.579192408664309e-19, 1.7744131271111513e-14, -2.2522711002789176e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000003764, 0.2499999996068156]}, "NODE_1020": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125000000000011, 0.12499999985869858], "MOMENTUM_X": [9.508928393148146e-38, -7.173363488879764e-32, 6.470511383594222e-27, -4.815116797194909e-24, -7.722605002927431e-19, 1.790712937138297e-14, -2.2131648790597645e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000308, 0.2499999996043561]}, "NODE_1021": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000988, 0.12499999987043955], "MOMENTUM_X": [2.727056566285281e-37, -6.139596796907326e-32, 1.0379130466980328e-26, -1.447669207145781e-23, -1.053750312159793e-18, 1.7634158291268997e-14, -2.0316914198861693e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000002764, 0.24999999963723074]}, "NODE_1022": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001268, 0.1249999998977388], "MOMENTUM_X": [5.686718317527397e-37, 1.4086044147033754e-31, 1.7260736764390492e-26, -2.3228884091140624e-23, -1.4480225594098835e-18, 1.9687401049711414e-14, -2.023411817683557e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000355, 0.2499999997136687]}, "NODE_1023": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000003672, 0.12499999948505895], "MOMENTUM_X": [2.529322832921303e-36, 1.20506024670508e-30, 4.065734757015197e-26, -1.6580120763626373e-22, -2.9185929389778484e-18, 5.1066371912548685e-14, -6.808860524345839e-10], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000001029, 0.24999999855816518]}, "NODE_1024": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999996, 0.12500000000123182], "MOMENTUM_X": [1.0275388226218605e-42, 5.6957433119744866e-36, -6.649586388645268e-31, 4.304691118497918e-26, -9.729059756115834e-22, -6.64994710878372e-17, 1.501613193530039e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999986, 0.25000000000344913]}, "NODE_1025": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999978, 0.1250000000046705], "MOMENTUM_X": [4.4373967461928836e-42, 7.336058559308562e-35, 4.725856530184589e-31, 2.0210181094211272e-26, -2.766623359348454e-21, -2.5682540236638665e-16, 5.166015246821737e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999942, 0.2500000000130774]}, "NODE_1026": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999963, 0.12500000000806125], "MOMENTUM_X": [9.225015394586587e-42, 2.668943365775545e-34, 4.415666067624093e-30, -2.217958886595883e-25, 3.319642551674473e-21, -5.319216344310786e-16, 9.42396834031022e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999892, 0.25000000002257144]}, "NODE_1027": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999985, 0.12500000000473188], "MOMENTUM_X": [-2.345736299723149e-41, 6.126364413145129e-34, 2.9071419210229274e-30, -4.3883703301482635e-25, 2.7003193413800636e-20, -5.165480673465749e-16, 7.91472125506156e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999956, 0.25000000001324924]}, "NODE_1028": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000075, 0.12499999999400821], "MOMENTUM_X": [-3.067094416844368e-40, 8.010339120057589e-34, -2.5318210497557005e-29, 2.872800998958993e-25, 6.074474817383913e-20, 2.898376743529697e-17, -3.5566213741375e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000021, 0.2499999999832229]}, "NODE_1029": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000192, 0.12499999998455939], "MOMENTUM_X": [-1.5137483425493037e-39, -2.7315019451492025e-34, -9.327574133560717e-29, 3.7337053459616106e-24, 8.423467369841118e-20, 7.096020808118892e-16, -6.6569124698101606e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000053, 0.24999999995676628]}, "NODE_1030": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000258, 0.12499999998139458], "MOMENTUM_X": [-5.066455849762211e-39, -4.733169046044506e-33, -1.6769611614367702e-28, 1.0401272605327965e-23, 8.500298986680979e-20, 9.674825840329619e-16, -8.342820423920007e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000727, 0.24999999994790478]}, "NODE_1031": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000028, 0.12499999998143285], "MOMENTUM_X": [-1.2935186869759698e-38, -1.5766451450213005e-32, -1.428069288995619e-28, 1.6822513566618234e-23, 5.88953609272172e-20, 8.251647524518115e-16, -8.08883383463969e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000794, 0.2499999999480121]}, "NODE_1032": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000283, 0.12499999998401283], "MOMENTUM_X": [-2.6199831370324365e-38, -3.949191944614962e-32, 6.722231427083481e-29, 1.9012836109947566e-23, 3.7967353001621045e-20, 5.526829871148702e-16, -5.762035268283752e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000794, 0.24999999995523597]}, "NODE_1033": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000305, 0.12499999999181624], "MOMENTUM_X": [-5.366550570125637e-38, -8.807007711408638e-32, 1.8244122334744746e-28, 1.976407198200375e-23, 8.009688896881712e-20, 3.5293943721411397e-16, 1.1204609578878128e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000855, 0.24999999997708544]}, "NODE_1034": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000763, 0.1249999999524439], "MOMENTUM_X": [-1.3607502655358108e-37, -1.5089884319322692e-31, 2.2576443470397215e-27, 4.1224589626445955e-23, 1.2146967318269525e-19, 2.0508549668008906e-15, -2.4860384673201317e-11], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000214, 0.24999999986684296]}, "NODE_1035": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999996388], "MOMENTUM_X": [-6.75338332700348e-45, -3.877850623889544e-36, -5.812531861463275e-32, 1.9121243751323216e-27, 9.155906497263339e-23, -5.603288226046435e-19, -6.871517034534552e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999989886]}, "NODE_1036": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.1250000000003206], "MOMENTUM_X": [9.388721120848675e-44, -6.59435142511952e-36, -2.7705695803540948e-31, 1.2736908107022576e-26, -3.191719129703701e-23, -1.5127120125790536e-17, 3.0380506766781494e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.25000000000089767]}, "NODE_1037": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999996, 0.1250000000010906], "MOMENTUM_X": [8.866321267025285e-43, 2.2080834955076764e-36, -5.544375143791129e-31, 1.8472372696678465e-26, -1.2290912895714047e-21, -5.580856380392412e-17, 1.0448157030469779e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999983, 0.25000000000305356]}, "NODE_1038": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999992, 0.1250000000016606], "MOMENTUM_X": [4.584525294275367e-42, 5.63494522718212e-35, -6.805749255063399e-31, -4.1111991768384544e-26, -1.67598014861942e-21, -9.210201230960068e-17, 1.580635707713927e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999978, 0.2500000000046496]}, "NODE_1039": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999996, 0.12500000000126385], "MOMENTUM_X": [1.6101839432039434e-41, 2.155298340797479e-34, -1.307518741419594e-30, -1.905040736282765e-25, 4.931943662455941e-22, -7.410870830991271e-17, 1.2268937698274512e-12], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999986, 0.25000000000353867]}, "NODE_1040": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006, 0.12500000000030223], "MOMENTUM_X": [3.812964847732089e-41, 5.227255850725909e-34, -6.0093744321894736e-30, -3.354652223017718e-25, 4.326429572714947e-21, 1.1533116796237772e-18, 3.5294937052370355e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000017, 0.25000000000084627]}, "NODE_1041": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002, 0.12499999999976355], "MOMENTUM_X": [4.988371754145648e-41, 9.027182944355567e-34, -2.2681373718238048e-29, -4.281726353468058e-25, 7.415902315732603e-21, 7.145488869468675e-17, -2.3091412061670256e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000005, 0.24999999999933786]}, "NODE_1042": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000025, 0.12499999999975166], "MOMENTUM_X": [-3.56651993361314e-41, 1.1171781104155758e-33, -5.950219528018746e-29, -5.373367543238547e-25, 1.0534315500229804e-20, 9.634395780012628e-17, -4.056625342615816e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000067, 0.24999999999930464]}, "NODE_1043": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000025, 0.12500000000002562], "MOMENTUM_X": [-4.0246710284267644e-40, 7.52372922864638e-34, -1.1368972282357345e-28, -6.358581736201972e-25, 1.5315022193191473e-20, 7.849363792212214e-17, -2.1106789880343844e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000067, 0.2500000000000717]}, "NODE_1044": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002, 0.1250000000014216], "MOMENTUM_X": [-1.06139092351531e-39, -2.2453620574902422e-33, -2.1412185653381626e-28, -8.828893157460421e-25, 2.1690047728075066e-20, 5.843390632284005e-17, 9.662909055962792e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000056, 0.25000000000398054]}, "NODE_1045": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000064, 0.12500000000048372], "MOMENTUM_X": [-7.243940471106084e-39, -2.074567537089832e-32, -5.885183285562197e-28, -3.037311762155891e-25, 5.80163868609256e-20, 2.5608058932164727e-16, 1.442745148295954e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000018, 0.25000000000135436]}, "NODE_1046": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1249999999999816], "MOMENTUM_X": [-6.7081086009163774e-46, -1.3937858369009559e-37, 7.212912345794961e-33, -4.726417002498954e-28, 4.486701202815312e-24, 2.5214577293935478e-19, -1.7688879900130346e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999994849]}, "NODE_1047": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999054], "MOMENTUM_X": [-4.160723607848136e-45, -1.1401399261883554e-36, 7.96199390067729e-33, -5.952308909151365e-28, 2.788328660191581e-23, -3.047315629090481e-19, -4.201050613252204e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999997352]}, "NODE_1048": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000006084], "MOMENTUM_X": [-1.4117561945152957e-44, -3.789643378261003e-36, -1.675138583362921e-32, 1.4768029975462393e-27, 2.0824531614921886e-24, -5.150176914659568e-18, 7.574692297773986e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000017036]}, "NODE_1049": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000018627], "MOMENTUM_X": [-8.821648602265109e-45, -7.657330475757524e-36, -4.14451467712703e-32, 6.1140682681750225e-27, -1.953545412352956e-22, -1.0887626709525771e-17, 1.9777337716171178e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.2500000000005216]}, "NODE_1050": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.12500000000026218], "MOMENTUM_X": [2.3515006964288257e-43, -6.491874512968944e-36, 1.0698014520899274e-31, 5.301225569834902e-27, -7.149908786821359e-22, -1.4676329071619374e-17, 2.582435762711257e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.25000000000073413]}, "NODE_1051": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999, 0.1250000000002301], "MOMENTUM_X": [1.7822100481625104e-42, 1.8022272019294603e-35, 7.235734482113943e-31, -1.9553876552524086e-26, -1.3391977929947491e-21, -9.352095570112723e-18, 2.0959021329482953e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997, 0.2500000000006442]}, "NODE_1052": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000016775], "MOMENTUM_X": [7.859777014560873e-42, 9.691205556336722e-35, 1.907479161484858e-30, -8.306703266543331e-26, -1.6854407705595008e-21, 9.389910882068149e-19, 1.3280787233175874e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000004697]}, "NODE_1053": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000014508], "MOMENTUM_X": [2.5171464365313813e-41, 2.7139170580057765e-34, 2.97436014768022e-30, -1.7127628676181688e-25, -1.559830944436263e-21, 9.513794807484602e-18, 1.0086707563839313e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000004062]}, "NODE_1054": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000014883], "MOMENTUM_X": [6.273175368684431e-41, 6.320744591291472e-34, 2.8687583917371328e-30, -2.4019849480604164e-25, -1.2138493358150893e-21, 1.2700890972806391e-17, 1.1461094910688525e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000041667]}, "NODE_1055": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000002538], "MOMENTUM_X": [1.374325345214627e-40, 1.4271835344422369e-33, 4.5747562869477764e-30, -2.7518088001222816e-25, -1.5800471901194835e-21, 6.294183391722486e-18, 2.784154518112256e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000007107]}, "NODE_1056": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000060238], "MOMENTUM_X": [4.773271876793618e-40, 2.6742973983004425e-33, -1.2839762648222348e-29, -6.278707441372757e-25, -2.7431828027084645e-21, 3.625913769353516e-17, 4.716809989336066e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006, 0.25000000000168665]}, "NODE_1057": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999796], "MOMENTUM_X": [-3.481496226280543e-48, 3.8754991500213935e-38, 9.174184455774252e-35, -4.839152020294854e-30, -1.0114494876946829e-24, -8.949012573163065e-21, -2.979437775655456e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999428]}, "NODE_1058": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999618], "MOMENTUM_X": [-5.169816918080614e-47, 5.856178299721236e-38, 1.692039578007508e-33, -1.1029952022010206e-28, -1.2313874018807589e-24, 6.817791241887453e-20, -4.953099663923778e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999999893]}, "NODE_1059": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999888], "MOMENTUM_X": [-4.461479578821608e-46, -8.583980534251102e-38, 5.100229108007526e-33, -2.7290691376560847e-28, 6.828983301867156e-24, 8.797757373246457e-20, -1.2430358670168311e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2499999999999968]}, "NODE_1060": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000113], "MOMENTUM_X": [-2.721705358905698e-45, -8.43225509572078e-37, 8.559659483210148e-33, -6.626116422373814e-30, 1.7738556126505798e-23, -3.029696059225564e-19, 1.3012795840942191e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000316]}, "NODE_1061": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002662], "MOMENTUM_X": [-1.3111448340291142e-44, -2.945371159502855e-36, 1.2162051305975333e-32, 1.4453054394555722e-27, 1.5242562852577975e-23, -9.106412144624963e-19, 3.1607305683059546e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000007455]}, "NODE_1062": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000003125], "MOMENTUM_X": [-5.108894276567009e-44, -6.709254866447334e-36, 3.417950427643935e-32, 4.179262451639994e-27, -3.943934466089783e-24, -1.3482501557881914e-18, 4.1900255215783833e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000008743]}, "NODE_1063": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000247], "MOMENTUM_X": [-1.577724311912848e-43, -1.0553527308933994e-35, 1.3798644675288355e-31, 7.590601558103443e-27, -3.101024223689021e-23, -1.3107146904598633e-18, 4.2986881911711635e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000006917]}, "NODE_1064": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125000000000018], "MOMENTUM_X": [-3.722965493429349e-43, -1.0293370160583125e-35, 4.269273666696365e-31, 1.123264474560787e-26, -6.797119066127769e-23, -1.5130531111875806e-18, 4.28966061722956e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000005035]}, "NODE_1065": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001552], "MOMENTUM_X": [-6.203099986521379e-43, 1.861554752831045e-36, 9.304570971214409e-31, 1.4542017361662383e-26, -1.2607802618129672e-22, -1.8313172092856273e-18, 4.3331786079849066e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000435]}, "NODE_1066": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000002137], "MOMENTUM_X": [-8.868466837616986e-43, 6.156633235922567e-35, 2.0378741976045144e-30, 2.137349450538755e-26, -1.9652398718645156e-22, -2.979197952871729e-18, 5.377569675604907e-14], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000599]}, "NODE_1067": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000007305], "MOMENTUM_X": [1.7646585964240732e-42, 3.734589051696126e-34, 6.770314373152148e-30, 3.0901027369928123e-26, -6.498835107531359e-22, -5.853041311930218e-18, 1.2641960787592253e-13], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000002046]}, "NODE_1068": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999985], "MOMENTUM_X": [-2.4632561271244185e-51, 1.565791116246271e-39, -5.256607423280995e-35, 4.113838602168076e-30, 3.31394666885538e-27, -3.2645282510046344e-21, -2.368296867633874e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999956]}, "NODE_1069": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999947], "MOMENTUM_X": [-1.1266218601979074e-49, 1.1494681233783102e-38, -1.3199516232403398e-34, 8.510358544171498e-30, -2.003600831720512e-25, -4.12069200955937e-21, -7.135229711393862e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999856]}, "NODE_1070": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999928], "MOMENTUM_X": [-1.815353350478282e-48, 3.7718470624738615e-38, -9.827953881255641e-35, -4.761447654758012e-30, -4.090000019254742e-25, 2.8775738344028436e-20, -1.1770331452078904e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999795]}, "NODE_1071": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.1250000000000002], "MOMENTUM_X": [-1.6982488360506904e-47, 7.17502752255596e-38, 7.247195198508663e-35, -6.030977001376051e-29, 5.090999083124375e-25, 8.944538307014025e-20, -6.703229824951675e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000005]}, "NODE_1072": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000241], "MOMENTUM_X": [-1.1033805920552448e-46, 3.094798963722936e-38, -7.328554553350781e-34, -1.2806539947891994e-28, 4.6914351538027155e-24, 1.5322815866888515e-19, 1.0997619047204521e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000068]}, "NODE_1073": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000464], "MOMENTUM_X": [-5.564165633616462e-46, -3.1836384012901808e-37, -5.66363178911727e-33, -5.789576963073548e-29, 1.2591271609127182e-23, 1.804152020130243e-19, 2.8552553244692897e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001293]}, "NODE_1074": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000544], "MOMENTUM_X": [-2.3375063378779696e-45, -1.3514360350167911e-36, -1.8296230132321312e-32, 3.7715894179993136e-28, 2.1027087452067676e-23, 1.3210135012460057e-19, 3.4522779438271707e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000152]}, "NODE_1075": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000538], "MOMENTUM_X": [-8.473412639174238e-45, -3.523316252385573e-36, -3.6042888741005867e-32, 1.2627565649076244e-27, 2.549197713763401e-23, 7.72062172515428e-21, 3.261361242498705e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000151]}, "NODE_1076": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000525], "MOMENTUM_X": [-2.6789593332265524e-44, -7.889791378438111e-36, -5.117738208848078e-32, 2.2777336634915917e-27, 2.467712127988256e-23, -1.0193031026284648e-19, 2.822397956610283e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000001465]}, "NODE_1077": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125000000000006], "MOMENTUM_X": [-7.398677819110212e-44, -1.7292865984585632e-35, -1.0311313627063152e-31, 2.858258965894856e-27, 2.8393240529696795e-23, -8.356865774170979e-20, 2.5153523103827345e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000169]}, "NODE_1078": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000001524], "MOMENTUM_X": [-3.580380641226525e-43, -2.803701384787411e-35, -1.494673575913823e-32, 7.808939403677958e-27, 5.346587320577077e-23, -4.371962221251478e-19, 8.728036217290184e-15], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000427]}, "NODE_1079": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, -2.870511274724608e-40, 2.3550982972042464e-36, -5.157561341487006e-32, 9.603342413132597e-27, 1.4498338451213757e-22, -6.7225441813836696e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1080": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999996], "MOMENTUM_X": [0.0, -3.99206034159304e-40, -4.706362455104214e-36, 6.947677630721133e-31, 2.1008615899934316e-26, -4.7425602295819935e-22, -4.903470997700084e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999986]}, "NODE_1081": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999988], "MOMENTUM_X": [0.0, 1.0897028082779242e-39, -3.1410123822147874e-35, 2.6613429470784057e-30, -1.477510229470526e-26, -1.4260418760427955e-21, -1.4732566528349175e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999964]}, "NODE_1082": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999985], "MOMENTUM_X": [0.0, 8.643651492354546e-39, -7.23578774389108e-35, 2.868574611734463e-30, -1.5307870882318698e-25, -6.6155861412997335e-22, -2.1482113477217125e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999956]}, "NODE_1083": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "MOMENTUM_X": [0.0, 2.934189040801083e-38, -1.010421440433451e-34, -7.64934602811843e-30, -3.8407560205370894e-25, 5.471991713379848e-21, -1.3218530609911267e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "NODE_1084": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000036], "MOMENTUM_X": [0.0, 6.409188298284725e-38, -1.7410978401736457e-34, -3.846010761638237e-29, -6.5325452189634375e-25, 1.685155672577123e-20, 4.832076033269897e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000094]}, "NODE_1085": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000064], "MOMENTUM_X": [0.0, 8.925883798811758e-38, -7.348397956853545e-34, -9.275347101088541e-29, -8.632013118798366e-25, 2.666204173625268e-20, 1.5619705093445814e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000017]}, "NODE_1086": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000078], "MOMENTUM_X": [0.0, 4.535691073316122e-38, -2.8084190939884215e-33, -1.6675168289345961e-28, -8.062921889001487e-25, 3.1403904106602763e-20, 1.3698330683150167e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000021]}, "NODE_1087": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000075], "MOMENTUM_X": [0.0, -1.9957439295337405e-37, -6.92854090415082e-33, -2.4573775579374224e-28, -3.0730718250737686e-25, 3.6342310202537057e-20, 5.973937309574085e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000216]}, "NODE_1088": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000072], "MOMENTUM_X": [0.0, -1.2104300413047049e-36, -1.7006793614135833e-32, -3.8099203035920306e-28, 4.0788563621218985e-25, 5.4045200059420266e-20, 1.2355851906580549e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000194]}, "NODE_1089": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000197], "MOMENTUM_X": [0.0, -5.544195914741121e-36, -6.947050739303337e-32, -7.708861939362153e-28, 5.211673167370335e-24, 1.2786486477464856e-19, 3.3840611906222525e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.2500000000000055]}, "NODE_1090": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, -1.2026784519981667e-41, 1.923554663789504e-37, -3.1105912912370916e-32, -4.504909047929468e-28, 3.123320257130882e-23, 6.521690475768796e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1091": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, -8.435697941217189e-41, 1.2168568341565561e-36, -8.162028719761496e-32, 1.1212766179131706e-27, 6.255367396759409e-23, -1.2932466088028174e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1092": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999], "MOMENTUM_X": [0.0, -2.825449143845007e-40, 2.6659004591182514e-36, -2.8307951055934616e-32, 5.331649508943007e-27, -9.387115913450706e-23, -1.1096926064928699e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997]}, "NODE_1093": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999997], "MOMENTUM_X": [0.0, -5.105056156476667e-40, 3.627273595061873e-36, 4.483446007601266e-31, 5.788294553727604e-27, -7.678189978550989e-22, -2.7301288834225446e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999992]}, "NODE_1094": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999997], "MOMENTUM_X": [0.0, 7.188764136131845e-41, 9.882318122127284e-36, 1.5462615223310856e-30, -1.574272125244532e-26, -1.8578088125444397e-21, -3.3610177861253574e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999992]}, "NODE_1095": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 3.836997951756284e-39, 4.896362656747755e-35, 2.508296175919175e-30, -7.969018232175345e-26, -2.7763237699717718e-21, -1.4558567004198396e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999994]}, "NODE_1096": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 1.4515507862801806e-38, 1.7231349355792474e-34, 1.1287600272331274e-30, -1.8547690603689937e-25, -3.1031875196731843e-21, 1.4455916158695945e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "NODE_1097": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "MOMENTUM_X": [0.0, 3.646442425249327e-38, 3.996396972127375e-34, -4.945582745781576e-30, -2.985940259015523e-25, -2.388163992436719e-21, 3.125332265966364e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "NODE_1098": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000003], "MOMENTUM_X": [0.0, 7.935968187006306e-38, 7.073434842111859e-34, -1.4498121644432787e-29, -3.6921296771942623e-25, -8.714251371982444e-22, 3.4651878359567963e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "NODE_1099": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 1.58920217755578e-37, 1.6140270746770636e-33, -1.80656973479405e-29, -4.584691572829654e-25, -4.294279579067919e-22, 2.4766829538304275e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1100": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12500000000000006], "MOMENTUM_X": [0.0, 1.5559131353562378e-37, 2.1768071465413663e-33, -7.220796368928926e-29, -9.582666358618006e-25, 3.6205855244784074e-21, 1.0064725905811316e-16], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000017]}, "NODE_1101": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 5.3274262560517565e-42, -1.184873456215161e-37, 5.563233474451239e-33, -1.9216409761093658e-28, -8.800682050654304e-24, 6.534184059059355e-20], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1102": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 5.869244288172888e-42, -1.7055733853504958e-37, -4.7747395757483744e-33, -5.657997144984493e-28, 2.228434390989342e-24, 3.2904432374461e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1103": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, -1.1406881179002436e-41, -8.802723685460623e-38, -4.214596390823964e-32, -6.972098869792822e-28, 3.182660279775763e-23, -2.7054628736895553e-19], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1104": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, -1.2323421473965623e-40, 3.386432151407818e-37, -9.855162673106766e-32, 1.5028619523985469e-27, 6.822897127550202e-23, -3.233764466858344e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1105": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, -4.707603291557262e-40, 5.021768283136818e-37, -5.386771182785619e-32, 8.79635436921843e-27, 1.9733196456790133e-23, -1.1305670224950892e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997]}, "NODE_1106": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.12499999999999999], "MOMENTUM_X": [0.0, -1.110527225549401e-39, -9.379629956079085e-37, 3.556912334252675e-31, 2.2802962043772543e-26, -2.0237614623484213e-22, -1.5870666573236572e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.24999999999999997]}, "NODE_1107": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, -1.63981236287649e-39, -1.372686811996724e-36, 1.4828327506930385e-30, 4.186522965128527e-26, -5.309234822022263e-22, -9.178551780455729e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1108": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, -8.529050428906981e-40, 1.3235584616221044e-35, 3.587628027215808e-30, 5.92080781305198e-26, -7.698528462605424e-22, -6.47259455575093e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1109": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 4.759891436093784e-39, 4.7786818790173173e-35, 6.324947430508773e-30, 6.636575655544862e-26, -8.977885534201516e-22, -6.819754428444487e-18], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1110": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 3.0048243333627013e-38, 1.5044309544246618e-34, 1.0496956975582873e-29, 7.076776365349023e-26, -1.2449819215406661e-21, -1.3485485500373256e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25]}, "NODE_1111": {"DENSITY": [0.125, 0.125, 0.125, 0.125, 0.125, 0.125, 0.125], "MOMENTUM_X": [0.0, 9.531155761457844e-38, 8.429703471569236e-34, 2.0597616006565367e-29, 1.2424279062966744e-26, -2.617318164372591e-21, -1.423960457543583e-17], "MOMENTUM_Y": [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0], "TOTAL_ENERGY": [0.25, 0.25, 0.25, 0.25, 0.25, 0.25, 0.25000000000000006]}, "ELEMENT_1": {}, "ELEMENT_2": {}, "ELEMENT_3": {}, "ELEMENT_4": {}, "ELEMENT_5": {}, "ELEMENT_6": {}, "ELEMENT_7": {}, "ELEMENT_8": {}, "ELEMENT_9": {}, "ELEMENT_10": {}, "ELEMENT_11": {}, "ELEMENT_12": {}, "ELEMENT_13": {}, "ELEMENT_14": {}, "ELEMENT_15": {}, "ELEMENT_16": {}, "ELEMENT_17": {}, "ELEMENT_18": {}, "ELEMENT_19": {}, "ELEMENT_20": {}, "ELEMENT_21": {}, "ELEMENT_22": {}, "ELEMENT_23": {}, "ELEMENT_24": {}, "ELEMENT_25": {}, "ELEMENT_26": {}, "ELEMENT_27": {}, "ELEMENT_28": {}, "ELEMENT_29": {}, "ELEMENT_30": {}, "ELEMENT_31": {}, "ELEMENT_32": {}, "ELEMENT_33": {}, "ELEMENT_34": {}, "ELEMENT_35": {}, "ELEMENT_36": {}, "ELEMENT_37": {}, "ELEMENT_38": {}, "ELEMENT_39": {}, "ELEMENT_40": {}, "ELEMENT_41": {}, "ELEMENT_42": {}, "ELEMENT_43": {}, "ELEMENT_44": {}, "ELEMENT_45": {}, "ELEMENT_46": {}, "ELEMENT_47": {}, "ELEMENT_48": {}, "ELEMENT_49": {}, "ELEMENT_50": {}, "ELEMENT_51": {}, "ELEMENT_52": {}, "ELEMENT_53": {}, "ELEMENT_54": {}, "ELEMENT_55": {}, "ELEMENT_56": {}, "ELEMENT_57": {}, "ELEMENT_58": {}, "ELEMENT_59": {}, "ELEMENT_60": {}, "ELEMENT_61": {}, "ELEMENT_62": {}, "ELEMENT_63": {}, "ELEMENT_64": {}, "ELEMENT_65": {}, "ELEMENT_66": {}, "ELEMENT_67": {}, "ELEMENT_68": {}, "ELEMENT_69": {}, "ELEMENT_70": {}, "ELEMENT_71": {}, "ELEMENT_72": {}, "ELEMENT_73": {}, "ELEMENT_74": {}, "ELEMENT_75": {}, "ELEMENT_76": {}, "ELEMENT_77": {}, "ELEMENT_78": {}, "ELEMENT_79": {}, "ELEMENT_80": {}, "ELEMENT_81": {}, "ELEMENT_82": {}, "ELEMENT_83": {}, "ELEMENT_84": {}, "ELEMENT_85": {}, "ELEMENT_86": {}, "ELEMENT_87": {}, "ELEMENT_88": {}, "ELEMENT_89": {}, "ELEMENT_90": {}, "ELEMENT_91": {}, "ELEMENT_92": {}, "ELEMENT_93": {}, "ELEMENT_94": {}, "ELEMENT_95": {}, "ELEMENT_96": {}, "ELEMENT_97": {}, "ELEMENT_98": {}, "ELEMENT_99": {}, "ELEMENT_100": {}, "ELEMENT_101": {}, "ELEMENT_102": {}, "ELEMENT_103": {}, "ELEMENT_104": {}, "ELEMENT_105": {}, "ELEMENT_106": {}, "ELEMENT_107": {}, "ELEMENT_108": {}, "ELEMENT_109": {}, "ELEMENT_110": {}, "ELEMENT_111": {}, "ELEMENT_112": {}, "ELEMENT_113": {}, "ELEMENT_114": {}, "ELEMENT_115": {}, "ELEMENT_116": {}, "ELEMENT_117": {}, "ELEMENT_118": {}, "ELEMENT_119": {}, "ELEMENT_120": {}, "ELEMENT_121": {}, "ELEMENT_122": {}, "ELEMENT_123": {}, "ELEMENT_124": {}, "ELEMENT_125": {}, "ELEMENT_126": {}, "ELEMENT_127": {}, "ELEMENT_128": {}, "ELEMENT_129": {}, "ELEMENT_130": {}, "ELEMENT_131": {}, "ELEMENT_132": {}, "ELEMENT_133": {}, "ELEMENT_134": {}, "ELEMENT_135": {}, "ELEMENT_136": {}, "ELEMENT_137": {}, "ELEMENT_138": {}, "ELEMENT_139": {}, "ELEMENT_140": {}, "ELEMENT_141": {}, "ELEMENT_142": {}, "ELEMENT_143": {}, "ELEMENT_144": {}, "ELEMENT_145": {}, "ELEMENT_146": {}, "ELEMENT_147": {}, "ELEMENT_148": {}, "ELEMENT_149": {}, "ELEMENT_150": {}, "ELEMENT_151": {}, "ELEMENT_152": {}, "ELEMENT_153": {}, "ELEMENT_154": {}, "ELEMENT_155": {}, "ELEMENT_156": {}, "ELEMENT_157": {}, "ELEMENT_158": {}, "ELEMENT_159": {}, "ELEMENT_160": {}, "ELEMENT_161": {}, "ELEMENT_162": {}, "ELEMENT_163": {}, "ELEMENT_164": {}, "ELEMENT_165": {}, "ELEMENT_166": {}, "ELEMENT_167": {}, "ELEMENT_168": {}, "ELEMENT_169": {}, "ELEMENT_170": {}, "ELEMENT_171": {}, "ELEMENT_172": {}, "ELEMENT_173": {}, "ELEMENT_174": {}, "ELEMENT_175": {}, "ELEMENT_176": {}, "ELEMENT_177": {}, "ELEMENT_178": {}, "ELEMENT_179": {}, "ELEMENT_180": {}, "ELEMENT_181": {}, "ELEMENT_182": {}, "ELEMENT_183": {}, "ELEMENT_184": {}, "ELEMENT_185": {}, "ELEMENT_186": {}, "ELEMENT_187": {}, "ELEMENT_188": {}, "ELEMENT_189": {}, "ELEMENT_190": {}, "ELEMENT_191": {}, "ELEMENT_192": {}, "ELEMENT_193": {}, "ELEMENT_194": {}, "ELEMENT_195": {}, "ELEMENT_196": {}, "ELEMENT_197": {}, "ELEMENT_198": {}, "ELEMENT_199": {}, "ELEMENT_200": {}, "ELEMENT_201": {}, "ELEMENT_202": {}, "ELEMENT_203": {}, "ELEMENT_204": {}, "ELEMENT_205": {}, "ELEMENT_206": {}, "ELEMENT_207": {}, "ELEMENT_208": {}, "ELEMENT_209": {}, "ELEMENT_210": {}, "ELEMENT_211": {}, "ELEMENT_212": {}, "ELEMENT_213": {}, "ELEMENT_214": {}, "ELEMENT_215": {}, "ELEMENT_216": {}, "ELEMENT_217": {}, "ELEMENT_218": {}, "ELEMENT_219": {}, "ELEMENT_220": {}, "ELEMENT_221": {}, "ELEMENT_222": {}, "ELEMENT_223": {}, "ELEMENT_224": {}, "ELEMENT_225": {}, "ELEMENT_226": {}, "ELEMENT_227": {}, "ELEMENT_228": {}, "ELEMENT_229": {}, "ELEMENT_230": {}, "ELEMENT_231": {}, "ELEMENT_232": {}, "ELEMENT_233": {}, "ELEMENT_234": {}, "ELEMENT_235": {}, "ELEMENT_236": {}, "ELEMENT_237": {}, "ELEMENT_238": {}, "ELEMENT_239": {}, "ELEMENT_240": {}, "ELEMENT_241": {}, "ELEMENT_242": {}, "ELEMENT_243": {}, "ELEMENT_244": {}, "ELEMENT_245": {}, "ELEMENT_246": {}, "ELEMENT_247": {}, "ELEMENT_248": {}, "ELEMENT_249": {}, "ELEMENT_250": {}, "ELEMENT_251": {}, "ELEMENT_252": {}, "ELEMENT_253": {}, "ELEMENT_254": {}, "ELEMENT_255": {}, "ELEMENT_256": {}, "ELEMENT_257": {}, "ELEMENT_258": {}, "ELEMENT_259": {}, "ELEMENT_260": {}, "ELEMENT_261": {}, "ELEMENT_262": {}, "ELEMENT_263": {}, "ELEMENT_264": {}, "ELEMENT_265": {}, "ELEMENT_266": {}, "ELEMENT_267": {}, "ELEMENT_268": {}, "ELEMENT_269": {}, "ELEMENT_270": {}, "ELEMENT_271": {}, "ELEMENT_272": {}, "ELEMENT_273": {}, "ELEMENT_274": {}, "ELEMENT_275": {}, "ELEMENT_276": {}, "ELEMENT_277": {}, "ELEMENT_278": {}, "ELEMENT_279": {}, "ELEMENT_280": {}, "ELEMENT_281": {}, "ELEMENT_282": {}, "ELEMENT_283": {}, "ELEMENT_284": {}, "ELEMENT_285": {}, "ELEMENT_286": {}, "ELEMENT_287": {}, "ELEMENT_288": {}, "ELEMENT_289": {}, "ELEMENT_290": {}, "ELEMENT_291": {}, "ELEMENT_292": {}, "ELEMENT_293": {}, "ELEMENT_294": {}, "ELEMENT_295": {}, "ELEMENT_296": {}, "ELEMENT_297": {}, "ELEMENT_298": {}, "ELEMENT_299": {}, "ELEMENT_300": {}, "ELEMENT_301": {}, "ELEMENT_302": {}, "ELEMENT_303": {}, "ELEMENT_304": {}, "ELEMENT_305": {}, "ELEMENT_306": {}, "ELEMENT_307": {}, "ELEMENT_308": {}, "ELEMENT_309": {}, "ELEMENT_310": {}, "ELEMENT_311": {}, "ELEMENT_312": {}, "ELEMENT_313": {}, "ELEMENT_314": {}, "ELEMENT_315": {}, "ELEMENT_316": {}, "ELEMENT_317": {}, "ELEMENT_318": {}, "ELEMENT_319": {}, "ELEMENT_320": {}, "ELEMENT_321": {}, "ELEMENT_322": {}, "ELEMENT_323": {}, "ELEMENT_324": {}, "ELEMENT_325": {}, "ELEMENT_326": {}, "ELEMENT_327": {}, "ELEMENT_328": {}, "ELEMENT_329": {}, "ELEMENT_330": {}, "ELEMENT_331": {}, "ELEMENT_332": {}, "ELEMENT_333": {}, "ELEMENT_334": {}, "ELEMENT_335": {}, "ELEMENT_336": {}, "ELEMENT_337": {}, "ELEMENT_338": {}, "ELEMENT_339": {}, "ELEMENT_340": {}, "ELEMENT_341": {}, "ELEMENT_342": {}, "ELEMENT_343": {}, "ELEMENT_344": {}, "ELEMENT_345": {}, "ELEMENT_346": {}, "ELEMENT_347": {}, "ELEMENT_348": {}, "ELEMENT_349": {}, "ELEMENT_350": {}, "ELEMENT_351": {}, "ELEMENT_352": {}, "ELEMENT_353": {}, "ELEMENT_354": {}, "ELEMENT_355": {}, "ELEMENT_356": {}, "ELEMENT_357": {}, "ELEMENT_358": {}, "ELEMENT_359": {}, "ELEMENT_360": {}, "ELEMENT_361": {}, "ELEMENT_362": {}, "ELEMENT_363": {}, "ELEMENT_364": {}, "ELEMENT_365": {}, "ELEMENT_366": {}, "ELEMENT_367": {}, "ELEMENT_368": {}, "ELEMENT_369": {}, "ELEMENT_370": {}, "ELEMENT_371": {}, "ELEMENT_372": {}, "ELEMENT_373": {}, "ELEMENT_374": {}, "ELEMENT_375": {}, "ELEMENT_376": {}, "ELEMENT_377": {}, "ELEMENT_378": {}, "ELEMENT_379": {}, "ELEMENT_380": {}, "ELEMENT_381": {}, "ELEMENT_382": {}, "ELEMENT_383": {}, "ELEMENT_384": {}, "ELEMENT_385": {}, "ELEMENT_386": {}, "ELEMENT_387": {}, "ELEMENT_388": {}, "ELEMENT_389": {}, "ELEMENT_390": {}, "ELEMENT_391": {}, "ELEMENT_392": {}, "ELEMENT_393": {}, "ELEMENT_394": {}, "ELEMENT_395": {}, "ELEMENT_396": {}, "ELEMENT_397": {}, "ELEMENT_398": {}, "ELEMENT_399": {}, "ELEMENT_400": {}, "ELEMENT_401": {}, "ELEMENT_402": {}, "ELEMENT_403": {}, "ELEMENT_404": {}, "ELEMENT_405": {}, "ELEMENT_406": {}, "ELEMENT_407": {}, "ELEMENT_408": {}, "ELEMENT_409": {}, "ELEMENT_410": {}, "ELEMENT_411": {}, "ELEMENT_412": {}, "ELEMENT_413": {}, "ELEMENT_414": {}, "ELEMENT_415": {}, "ELEMENT_416": {}, "ELEMENT_417": {}, "ELEMENT_418": {}, "ELEMENT_419": {}, "ELEMENT_420": {}, "ELEMENT_421": {}, "ELEMENT_422": {}, "ELEMENT_423": {}, "ELEMENT_424": {}, "ELEMENT_425": {}, "ELEMENT_426": {}, "ELEMENT_427": {}, "ELEMENT_428": {}, "ELEMENT_429": {}, "ELEMENT_430": {}, "ELEMENT_431": {}, "ELEMENT_432": {}, "ELEMENT_433": {}, "ELEMENT_434": {}, "ELEMENT_435": {}, "ELEMENT_436": {}, "ELEMENT_437": {}, "ELEMENT_438": {}, "ELEMENT_439": {}, "ELEMENT_440": {}, "ELEMENT_441": {}, "ELEMENT_442": {}, "ELEMENT_443": {}, "ELEMENT_444": {}, "ELEMENT_445": {}, "ELEMENT_446": {}, "ELEMENT_447": {}, "ELEMENT_448": {}, "ELEMENT_449": {}, "ELEMENT_450": {}, "ELEMENT_451": {}, "ELEMENT_452": {}, "ELEMENT_453": {}, "ELEMENT_454": {}, "ELEMENT_455": {}, "ELEMENT_456": {}, "ELEMENT_457": {}, "ELEMENT_458": {}, "ELEMENT_459": {}, "ELEMENT_460": {}, "ELEMENT_461": {}, "ELEMENT_462": {}, "ELEMENT_463": {}, "ELEMENT_464": {}, "ELEMENT_465": {}, "ELEMENT_466": {}, "ELEMENT_467": {}, "ELEMENT_468": {}, "ELEMENT_469": {}, "ELEMENT_470": {}, "ELEMENT_471": {}, "ELEMENT_472": {}, "ELEMENT_473": {}, "ELEMENT_474": {}, "ELEMENT_475": {}, "ELEMENT_476": {}, "ELEMENT_477": {}, "ELEMENT_478": {}, "ELEMENT_479": {}, "ELEMENT_480": {}, "ELEMENT_481": {}, "ELEMENT_482": {}, "ELEMENT_483": {}, "ELEMENT_484": {}, "ELEMENT_485": {}, "ELEMENT_486": {}, "ELEMENT_487": {}, "ELEMENT_488": {}, "ELEMENT_489": {}, "ELEMENT_490": {}, "ELEMENT_491": {}, "ELEMENT_492": {}, "ELEMENT_493": {}, "ELEMENT_494": {}, "ELEMENT_495": {}, "ELEMENT_496": {}, "ELEMENT_497": {}, "ELEMENT_498": {}, "ELEMENT_499": {}, "ELEMENT_500": {}, "ELEMENT_501": {}, "ELEMENT_502": {}, "ELEMENT_503": {}, "ELEMENT_504": {}, "ELEMENT_505": {}, "ELEMENT_506": {}, "ELEMENT_507": {}, "ELEMENT_508": {}, "ELEMENT_509": {}, "ELEMENT_510": {}, "ELEMENT_511": {}, "ELEMENT_512": {}, "ELEMENT_513": {}, "ELEMENT_514": {}, "ELEMENT_515": {}, "ELEMENT_516": {}, "ELEMENT_517": {}, "ELEMENT_518": {}, "ELEMENT_519": {}, "ELEMENT_520": {}, "ELEMENT_521": {}, "ELEMENT_522": {}, "ELEMENT_523": {}, "ELEMENT_524": {}, "ELEMENT_525": {}, "ELEMENT_526": {}, "ELEMENT_527": {}, "ELEMENT_528": {}, "ELEMENT_529": {}, "ELEMENT_530": {}, "ELEMENT_531": {}, "ELEMENT_532": {}, "ELEMENT_533": {}, "ELEMENT_534": {}, "ELEMENT_535": {}, "ELEMENT_536": {}, "ELEMENT_537": {}, "ELEMENT_538": {}, "ELEMENT_539": {}, "ELEMENT_540": {}, "ELEMENT_541": {}, "ELEMENT_542": {}, "ELEMENT_543": {}, "ELEMENT_544": {}, "ELEMENT_545": {}, "ELEMENT_546": {}, "ELEMENT_547": {}, "ELEMENT_548": {}, "ELEMENT_549": {}, "ELEMENT_550": {}, "ELEMENT_551": {}, "ELEMENT_552": {}, "ELEMENT_553": {}, "ELEMENT_554": {}, "ELEMENT_555": {}, "ELEMENT_556": {}, "ELEMENT_557": {}, "ELEMENT_558": {}, "ELEMENT_559": {}, "ELEMENT_560": {}, "ELEMENT_561": {}, "ELEMENT_562": {}, "ELEMENT_563": {}, "ELEMENT_564": {}, "ELEMENT_565": {}, "ELEMENT_566": {}, "ELEMENT_567": {}, "ELEMENT_568": {}, "ELEMENT_569": {}, "ELEMENT_570": {}, "ELEMENT_571": {}, "ELEMENT_572": {}, "ELEMENT_573": {}, "ELEMENT_574": {}, "ELEMENT_575": {}, "ELEMENT_576": {}, "ELEMENT_577": {}, "ELEMENT_578": {}, "ELEMENT_579": {}, "ELEMENT_580": {}, "ELEMENT_581": {}, "ELEMENT_582": {}, "ELEMENT_583": {}, "ELEMENT_584": {}, "ELEMENT_585": {}, "ELEMENT_586": {}, "ELEMENT_587": {}, "ELEMENT_588": {}, "ELEMENT_589": {}, "ELEMENT_590": {}, "ELEMENT_591": {}, "ELEMENT_592": {}, "ELEMENT_593": {}, "ELEMENT_594": {}, "ELEMENT_595": {}, "ELEMENT_596": {}, "ELEMENT_597": {}, "ELEMENT_598": {}, "ELEMENT_599": {}, "ELEMENT_600": {}, "ELEMENT_601": {}, "ELEMENT_602": {}, "ELEMENT_603": {}, "ELEMENT_604": {}, "ELEMENT_605": {}, "ELEMENT_606": {}, "ELEMENT_607": {}, "ELEMENT_608": {}, "ELEMENT_609": {}, "ELEMENT_610": {}, "ELEMENT_611": {}, "ELEMENT_612": {}, "ELEMENT_613": {}, "ELEMENT_614": {}, "ELEMENT_615": {}, "ELEMENT_616": {}, "ELEMENT_617": {}, "ELEMENT_618": {}, "ELEMENT_619": {}, "ELEMENT_620": {}, "ELEMENT_621": {}, "ELEMENT_622": {}, "ELEMENT_623": {}, "ELEMENT_624": {}, "ELEMENT_625": {}, "ELEMENT_626": {}, "ELEMENT_627": {}, "ELEMENT_628": {}, "ELEMENT_629": {}, "ELEMENT_630": {}, "ELEMENT_631": {}, "ELEMENT_632": {}, "ELEMENT_633": {}, "ELEMENT_634": {}, "ELEMENT_635": {}, "ELEMENT_636": {}, "ELEMENT_637": {}, "ELEMENT_638": {}, "ELEMENT_639": {}, "ELEMENT_640": {}, "ELEMENT_641": {}, "ELEMENT_642": {}, "ELEMENT_643": {}, "ELEMENT_644": {}, "ELEMENT_645": {}, "ELEMENT_646": {}, "ELEMENT_647": {}, "ELEMENT_648": {}, "ELEMENT_649": {}, "ELEMENT_650": {}, "ELEMENT_651": {}, "ELEMENT_652": {}, "ELEMENT_653": {}, "ELEMENT_654": {}, "ELEMENT_655": {}, "ELEMENT_656": {}, "ELEMENT_657": {}, "ELEMENT_658": {}, "ELEMENT_659": {}, "ELEMENT_660": {}, "ELEMENT_661": {}, "ELEMENT_662": {}, "ELEMENT_663": {}, "ELEMENT_664": {}, "ELEMENT_665": {}, "ELEMENT_666": {}, "ELEMENT_667": {}, "ELEMENT_668": {}, "ELEMENT_669": {}, "ELEMENT_670": {}, "ELEMENT_671": {}, "ELEMENT_672": {}, "ELEMENT_673": {}, "ELEMENT_674": {}, "ELEMENT_675": {}, "ELEMENT_676": {}, "ELEMENT_677": {}, "ELEMENT_678": {}, "ELEMENT_679": {}, "ELEMENT_680": {}, "ELEMENT_681": {}, "ELEMENT_682": {}, "ELEMENT_683": {}, "ELEMENT_684": {}, "ELEMENT_685": {}, "ELEMENT_686": {}, "ELEMENT_687": {}, "ELEMENT_688": {}, "ELEMENT_689": {}, "ELEMENT_690": {}, "ELEMENT_691": {}, "ELEMENT_692": {}, "ELEMENT_693": {}, "ELEMENT_694": {}, "ELEMENT_695": {}, "ELEMENT_696": {}, "ELEMENT_697": {}, "ELEMENT_698": {}, "ELEMENT_699": {}, "ELEMENT_700": {}, "ELEMENT_701": {}, "ELEMENT_702": {}, "ELEMENT_703": {}, "ELEMENT_704": {}, "ELEMENT_705": {}, "ELEMENT_706": {}, "ELEMENT_707": {}, "ELEMENT_708": {}, "ELEMENT_709": {}, "ELEMENT_710": {}, "ELEMENT_711": {}, "ELEMENT_712": {}, "ELEMENT_713": {}, "ELEMENT_714": {}, "ELEMENT_715": {}, "ELEMENT_716": {}, "ELEMENT_717": {}, "ELEMENT_718": {}, "ELEMENT_719": {}, "ELEMENT_720": {}, "ELEMENT_721": {}, "ELEMENT_722": {}, "ELEMENT_723": {}, "ELEMENT_724": {}, "ELEMENT_725": {}, "ELEMENT_726": {}, "ELEMENT_727": {}, "ELEMENT_728": {}, "ELEMENT_729": {}, "ELEMENT_730": {}, "ELEMENT_731": {}, "ELEMENT_732": {}, "ELEMENT_733": {}, "ELEMENT_734": {}, "ELEMENT_735": {}, "ELEMENT_736": {}, "ELEMENT_737": {}, "ELEMENT_738": {}, "ELEMENT_739": {}, "ELEMENT_740": {}, "ELEMENT_741": {}, "ELEMENT_742": {}, "ELEMENT_743": {}, "ELEMENT_744": {}, "ELEMENT_745": {}, "ELEMENT_746": {}, "ELEMENT_747": {}, "ELEMENT_748": {}, "ELEMENT_749": {}, "ELEMENT_750": {}, "ELEMENT_751": {}, "ELEMENT_752": {}, "ELEMENT_753": {}, "ELEMENT_754": {}, "ELEMENT_755": {}, "ELEMENT_756": {}, "ELEMENT_757": {}, "ELEMENT_758": {}, "ELEMENT_759": {}, "ELEMENT_760": {}, "ELEMENT_761": {}, "ELEMENT_762": {}, "ELEMENT_763": {}, "ELEMENT_764": {}, "ELEMENT_765": {}, "ELEMENT_766": {}, "ELEMENT_767": {}, "ELEMENT_768": {}, "ELEMENT_769": {}, "ELEMENT_770": {}, "ELEMENT_771": {}, "ELEMENT_772": {}, "ELEMENT_773": {}, "ELEMENT_774": {}, "ELEMENT_775": {}, "ELEMENT_776": {}, "ELEMENT_777": {}, "ELEMENT_778": {}, "ELEMENT_779": {}, "ELEMENT_780": {}, "ELEMENT_781": {}, "ELEMENT_782": {}, "ELEMENT_783": {}, "ELEMENT_784": {}, "ELEMENT_785": {}, "ELEMENT_786": {}, "ELEMENT_787": {}, "ELEMENT_788": {}, "ELEMENT_789": {}, "ELEMENT_790": {}, "ELEMENT_791": {}, "ELEMENT_792": {}, "ELEMENT_793": {}, "ELEMENT_794": {}, "ELEMENT_795": {}, "ELEMENT_796": {}, "ELEMENT_797": {}, "ELEMENT_798": {}, "ELEMENT_799": {}, "ELEMENT_800": {}, "ELEMENT_801": {}, "ELEMENT_802": {}, "ELEMENT_803": {}, "ELEMENT_804": {}, "ELEMENT_805": {}, "ELEMENT_806": {}, "ELEMENT_807": {}, "ELEMENT_808": {}, "ELEMENT_809": {}, "ELEMENT_810": {}, "ELEMENT_811": {}, "ELEMENT_812": {}, "ELEMENT_813": {}, "ELEMENT_814": {}, "ELEMENT_815": {}, "ELEMENT_816": {}, "ELEMENT_817": {}, "ELEMENT_818": {}, "ELEMENT_819": {}, "ELEMENT_820": {}, "ELEMENT_821": {}, "ELEMENT_822": {}, "ELEMENT_823": {}, "ELEMENT_824": {}, "ELEMENT_825": {}, "ELEMENT_826": {}, "ELEMENT_827": {}, "ELEMENT_828": {}, "ELEMENT_829": {}, "ELEMENT_830": {}, "ELEMENT_831": {}, "ELEMENT_832": {}, "ELEMENT_833": {}, "ELEMENT_834": {}, "ELEMENT_835": {}, "ELEMENT_836": {}, "ELEMENT_837": {}, "ELEMENT_838": {}, "ELEMENT_839": {}, "ELEMENT_840": {}, "ELEMENT_841": {}, "ELEMENT_842": {}, "ELEMENT_843": {}, "ELEMENT_844": {}, "ELEMENT_845": {}, "ELEMENT_846": {}, "ELEMENT_847": {}, "ELEMENT_848": {}, "ELEMENT_849": {}, "ELEMENT_850": {}, "ELEMENT_851": {}, "ELEMENT_852": {}, "ELEMENT_853": {}, "ELEMENT_854": {}, "ELEMENT_855": {}, "ELEMENT_856": {}, "ELEMENT_857": {}, "ELEMENT_858": {}, "ELEMENT_859": {}, "ELEMENT_860": {}, "ELEMENT_861": {}, "ELEMENT_862": {}, "ELEMENT_863": {}, "ELEMENT_864": {}, "ELEMENT_865": {}, "ELEMENT_866": {}, "ELEMENT_867": {}, "ELEMENT_868": {}, "ELEMENT_869": {}, "ELEMENT_870": {}, "ELEMENT_871": {}, "ELEMENT_872": {}, "ELEMENT_873": {}, "ELEMENT_874": {}, "ELEMENT_875": {}, "ELEMENT_876": {}, "ELEMENT_877": {}, "ELEMENT_878": {}, "ELEMENT_879": {}, "ELEMENT_880": {}, "ELEMENT_881": {}, "ELEMENT_882": {}, "ELEMENT_883": {}, "ELEMENT_884": {}, "ELEMENT_885": {}, "ELEMENT_886": {}, "ELEMENT_887": {}, "ELEMENT_888": {}, "ELEMENT_889": {}, "ELEMENT_890": {}, "ELEMENT_891": {}, "ELEMENT_892": {}, "ELEMENT_893": {}, "ELEMENT_894": {}, "ELEMENT_895": {}, "ELEMENT_896": {}, "ELEMENT_897": {}, "ELEMENT_898": {}, "ELEMENT_899": {}, "ELEMENT_900": {}, "ELEMENT_901": {}, "ELEMENT_902": {}, "ELEMENT_903": {}, "ELEMENT_904": {}, "ELEMENT_905": {}, "ELEMENT_906": {}, "ELEMENT_907": {}, "ELEMENT_908": {}, "ELEMENT_909": {}, "ELEMENT_910": {}, "ELEMENT_911": {}, "ELEMENT_912": {}, "ELEMENT_913": {}, "ELEMENT_914": {}, "ELEMENT_915": {}, "ELEMENT_916": {}, "ELEMENT_917": {}, "ELEMENT_918": {}, "ELEMENT_919": {}, "ELEMENT_920": {}, "ELEMENT_921": {}, "ELEMENT_922": {}, "ELEMENT_923": {}, "ELEMENT_924": {}, "ELEMENT_925": {}, "ELEMENT_926": {}, "ELEMENT_927": {}, "ELEMENT_928": {}, "ELEMENT_929": {}, "ELEMENT_930": {}, "ELEMENT_931": {}, "ELEMENT_932": {}, "ELEMENT_933": {}, "ELEMENT_934": {}, "ELEMENT_935": {}, "ELEMENT_936": {}, "ELEMENT_937": {}, "ELEMENT_938": {}, "ELEMENT_939": {}, "ELEMENT_940": {}, "ELEMENT_941": {}, "ELEMENT_942": {}, "ELEMENT_943": {}, "ELEMENT_944": {}, "ELEMENT_945": {}, "ELEMENT_946": {}, "ELEMENT_947": {}, "ELEMENT_948": {}, "ELEMENT_949": {}, "ELEMENT_950": {}, "ELEMENT_951": {}, "ELEMENT_952": {}, "ELEMENT_953": {}, "ELEMENT_954": {}, "ELEMENT_955": {}, "ELEMENT_956": {}, "ELEMENT_957": {}, "ELEMENT_958": {}, "ELEMENT_959": {}, "ELEMENT_960": {}, "ELEMENT_961": {}, "ELEMENT_962": {}, "ELEMENT_963": {}, "ELEMENT_964": {}, "ELEMENT_965": {}, "ELEMENT_966": {}, "ELEMENT_967": {}, "ELEMENT_968": {}, "ELEMENT_969": {}, "ELEMENT_970": {}, "ELEMENT_971": {}, "ELEMENT_972": {}, "ELEMENT_973": {}, "ELEMENT_974": {}, "ELEMENT_975": {}, "ELEMENT_976": {}, "ELEMENT_977": {}, "ELEMENT_978": {}, "ELEMENT_979": {}, "ELEMENT_980": {}, "ELEMENT_981": {}, "ELEMENT_982": {}, "ELEMENT_983": {}, "ELEMENT_984": {}, "ELEMENT_985": {}, "ELEMENT_986": {}, "ELEMENT_987": {}, "ELEMENT_988": {}, "ELEMENT_989": {}, "ELEMENT_990": {}, "ELEMENT_991": {}, "ELEMENT_992": {}, "ELEMENT_993": {}, "ELEMENT_994": {}, "ELEMENT_995": {}, "ELEMENT_996": {}, "ELEMENT_997": {}, "ELEMENT_998": {}, "ELEMENT_999": {}, "ELEMENT_1000": {}, "ELEMENT_1001": {}, "ELEMENT_1002": {}, "ELEMENT_1003": {}, "ELEMENT_1004": {}, "ELEMENT_1005": {}, "ELEMENT_1006": {}, "ELEMENT_1007": {}, "ELEMENT_1008": {}, "ELEMENT_1009": {}, "ELEMENT_1010": {}, "ELEMENT_1011": {}, "ELEMENT_1012": {}, "ELEMENT_1013": {}, "ELEMENT_1014": {}, "ELEMENT_1015": {}, "ELEMENT_1016": {}, "ELEMENT_1017": {}, "ELEMENT_1018": {}, "ELEMENT_1019": {}, "ELEMENT_1020": {}, "ELEMENT_1021": {}, "ELEMENT_1022": {}, "ELEMENT_1023": {}, "ELEMENT_1024": {}, "ELEMENT_1025": {}, "ELEMENT_1026": {}, "ELEMENT_1027": {}, "ELEMENT_1028": {}, "ELEMENT_1029": {}, "ELEMENT_1030": {}, "ELEMENT_1031": {}, "ELEMENT_1032": {}, "ELEMENT_1033": {}, "ELEMENT_1034": {}, "ELEMENT_1035": {}, "ELEMENT_1036": {}, "ELEMENT_1037": {}, "ELEMENT_1038": {}, "ELEMENT_1039": {}, "ELEMENT_1040": {}, "ELEMENT_1041": {}, "ELEMENT_1042": {}, "ELEMENT_1043": {}, "ELEMENT_1044": {}, "ELEMENT_1045": {}, "ELEMENT_1046": {}, "ELEMENT_1047": {}, "ELEMENT_1048": {}, "ELEMENT_1049": {}, "ELEMENT_1050": {}, "ELEMENT_1051": {}, "ELEMENT_1052": {}, "ELEMENT_1053": {}, "ELEMENT_1054": {}, "ELEMENT_1055": {}, "ELEMENT_1056": {}, "ELEMENT_1057": {}, "ELEMENT_1058": {}, "ELEMENT_1059": {}, "ELEMENT_1060": {}, "ELEMENT_1061": {}, "ELEMENT_1062": {}, "ELEMENT_1063": {}, "ELEMENT_1064": {}, "ELEMENT_1065": {}, "ELEMENT_1066": {}, "ELEMENT_1067": {}, "ELEMENT_1068": {}, "ELEMENT_1069": {}, "ELEMENT_1070": {}, "ELEMENT_1071": {}, "ELEMENT_1072": {}, "ELEMENT_1073": {}, "ELEMENT_1074": {}, "ELEMENT_1075": {}, "ELEMENT_1076": {}, "ELEMENT_1077": {}, "ELEMENT_1078": {}, "ELEMENT_1079": {}, "ELEMENT_1080": {}, "ELEMENT_1081": {}, "ELEMENT_1082": {}, "ELEMENT_1083": {}, "ELEMENT_1084": {}, "ELEMENT_1085": {}, "ELEMENT_1086": {}, "ELEMENT_1087": {}, "ELEMENT_1088": {}, "ELEMENT_1089": {}, "ELEMENT_1090": {}, "ELEMENT_1091": {}, "ELEMENT_1092": {}, "ELEMENT_1093": {}, "ELEMENT_1094": {}, "ELEMENT_1095": {}, "ELEMENT_1096": {}, "ELEMENT_1097": {}, "ELEMENT_1098": {}, "ELEMENT_1099": {}, "ELEMENT_1100": {}, "ELEMENT_1101": {}, "ELEMENT_1102": {}, "ELEMENT_1103": {}, "ELEMENT_1104": {}, "ELEMENT_1105": {}, "ELEMENT_1106": {}, "ELEMENT_1107": {}, "ELEMENT_1108": {}, "ELEMENT_1109": {}, "ELEMENT_1110": {}, "ELEMENT_1111": {}, "ELEMENT_1112": {}, "ELEMENT_1113": {}, "ELEMENT_1114": {}, "ELEMENT_1115": {}, "ELEMENT_1116": {}, "ELEMENT_1117": {}, "ELEMENT_1118": {}, "ELEMENT_1119": {}, "ELEMENT_1120": {}, "ELEMENT_1121": {}, "ELEMENT_1122": {}, "ELEMENT_1123": {}, "ELEMENT_1124": {}, "ELEMENT_1125": {}, "ELEMENT_1126": {}, "ELEMENT_1127": {}, "ELEMENT_1128": {}, "ELEMENT_1129": {}, "ELEMENT_1130": {}, "ELEMENT_1131": {}, "ELEMENT_1132": {}, "ELEMENT_1133": {}, "ELEMENT_1134": {}, "ELEMENT_1135": {}, "ELEMENT_1136": {}, "ELEMENT_1137": {}, "ELEMENT_1138": {}, "ELEMENT_1139": {}, "ELEMENT_1140": {}, "ELEMENT_1141": {}, "ELEMENT_1142": {}, "ELEMENT_1143": {}, "ELEMENT_1144": {}, "ELEMENT_1145": {}, "ELEMENT_1146": {}, "ELEMENT_1147": {}, "ELEMENT_1148": {}, "ELEMENT_1149": {}, "ELEMENT_1150": {}, "ELEMENT_1151": {}, "ELEMENT_1152": {}, "ELEMENT_1153": {}, "ELEMENT_1154": {}, "ELEMENT_1155": {}, "ELEMENT_1156": {}, "ELEMENT_1157": {}, "ELEMENT_1158": {}, "ELEMENT_1159": {}, "ELEMENT_1160": {}, "ELEMENT_1161": {}, "ELEMENT_1162": {}, "ELEMENT_1163": {}, "ELEMENT_1164": {}, "ELEMENT_1165": {}, "ELEMENT_1166": {}, "ELEMENT_1167": {}, "ELEMENT_1168": {}, "ELEMENT_1169": {}, "ELEMENT_1170": {}, "ELEMENT_1171": {}, "ELEMENT_1172": {}, "ELEMENT_1173": {}, "ELEMENT_1174": {}, "ELEMENT_1175": {}, "ELEMENT_1176": {}, "ELEMENT_1177": {}, "ELEMENT_1178": {}, "ELEMENT_1179": {}, "ELEMENT_1180": {}, "ELEMENT_1181": {}, "ELEMENT_1182": {}, "ELEMENT_1183": {}, "ELEMENT_1184": {}, "ELEMENT_1185": {}, "ELEMENT_1186": {}, "ELEMENT_1187": {}, "ELEMENT_1188": {}, "ELEMENT_1189": {}, "ELEMENT_1190": {}, "ELEMENT_1191": {}, "ELEMENT_1192": {}, "ELEMENT_1193": {}, "ELEMENT_1194": {}, "ELEMENT_1195": {}, "ELEMENT_1196": {}, "ELEMENT_1197": {}, "ELEMENT_1198": {}, "ELEMENT_1199": {}, "ELEMENT_1200": {}, "ELEMENT_1201": {}, "ELEMENT_1202": {}, "ELEMENT_1203": {}, "ELEMENT_1204": {}, "ELEMENT_1205": {}, "ELEMENT_1206": {}, "ELEMENT_1207": {}, "ELEMENT_1208": {}, "ELEMENT_1209": {}, "ELEMENT_1210": {}, "ELEMENT_1211": {}, "ELEMENT_1212": {}, "ELEMENT_1213": {}, "ELEMENT_1214": {}, "ELEMENT_1215": {}, "ELEMENT_1216": {}, "ELEMENT_1217": {}, "ELEMENT_1218": {}, "ELEMENT_1219": {}, "ELEMENT_1220": {}, "ELEMENT_1221": {}, "ELEMENT_1222": {}, "ELEMENT_1223": {}, "ELEMENT_1224": {}, "ELEMENT_1225": {}, "ELEMENT_1226": {}, "ELEMENT_1227": {}, "ELEMENT_1228": {}, "ELEMENT_1229": {}, "ELEMENT_1230": {}, "ELEMENT_1231": {}, "ELEMENT_1232": {}, "ELEMENT_1233": {}, "ELEMENT_1234": {}, "ELEMENT_1235": {}, "ELEMENT_1236": {}, "ELEMENT_1237": {}, "ELEMENT_1238": {}, "ELEMENT_1239": {}, "ELEMENT_1240": {}, "ELEMENT_1241": {}, "ELEMENT_1242": {}, "ELEMENT_1243": {}, "ELEMENT_1244": {}, "ELEMENT_1245": {}, "ELEMENT_1246": {}, "ELEMENT_1247": {}, "ELEMENT_1248": {}, "ELEMENT_1249": {}, "ELEMENT_1250": {}, "ELEMENT_1251": {}, "ELEMENT_1252": {}, "ELEMENT_1253": {}, "ELEMENT_1254": {}, "ELEMENT_1255": {}, "ELEMENT_1256": {}, "ELEMENT_1257": {}, "ELEMENT_1258": {}, "ELEMENT_1259": {}, "ELEMENT_1260": {}, "ELEMENT_1261": {}, "ELEMENT_1262": {}, "ELEMENT_1263": {}, "ELEMENT_1264": {}, "ELEMENT_1265": {}, "ELEMENT_1266": {}, "ELEMENT_1267": {}, "ELEMENT_1268": {}, "ELEMENT_1269": {}, "ELEMENT_1270": {}, "ELEMENT_1271": {}, "ELEMENT_1272": {}, "ELEMENT_1273": {}, "ELEMENT_1274": {}, "ELEMENT_1275": {}, "ELEMENT_1276": {}, "ELEMENT_1277": {}, "ELEMENT_1278": {}, "ELEMENT_1279": {}, "ELEMENT_1280": {}, "ELEMENT_1281": {}, "ELEMENT_1282": {}, "ELEMENT_1283": {}, "ELEMENT_1284": {}, "ELEMENT_1285": {}, "ELEMENT_1286": {}, "ELEMENT_1287": {}, "ELEMENT_1288": {}, "ELEMENT_1289": {}, "ELEMENT_1290": {}, "ELEMENT_1291": {}, "ELEMENT_1292": {}, "ELEMENT_1293": {}, "ELEMENT_1294": {}, "ELEMENT_1295": {}, "ELEMENT_1296": {}, "ELEMENT_1297": {}, "ELEMENT_1298": {}, "ELEMENT_1299": {}, "ELEMENT_1300": {}, "ELEMENT_1301": {}, "ELEMENT_1302": {}, "ELEMENT_1303": {}, "ELEMENT_1304": {}, "ELEMENT_1305": {}, "ELEMENT_1306": {}, "ELEMENT_1307": {}, "ELEMENT_1308": {}, "ELEMENT_1309": {}, "ELEMENT_1310": {}, "ELEMENT_1311": {}, "ELEMENT_1312": {}, "ELEMENT_1313": {}, "ELEMENT_1314": {}, "ELEMENT_1315": {}, "ELEMENT_1316": {}, "ELEMENT_1317": {}, "ELEMENT_1318": {}, "ELEMENT_1319": {}, "ELEMENT_1320": {}, "ELEMENT_1321": {}, "ELEMENT_1322": {}, "ELEMENT_1323": {}, "ELEMENT_1324": {}, "ELEMENT_1325": {}, "ELEMENT_1326": {}, "ELEMENT_1327": {}, "ELEMENT_1328": {}, "ELEMENT_1329": {}, "ELEMENT_1330": {}, "ELEMENT_1331": {}, "ELEMENT_1332": {}, "ELEMENT_1333": {}, "ELEMENT_1334": {}, "ELEMENT_1335": {}, "ELEMENT_1336": {}, "ELEMENT_1337": {}, "ELEMENT_1338": {}, "ELEMENT_1339": {}, "ELEMENT_1340": {}, "ELEMENT_1341": {}, "ELEMENT_1342": {}, "ELEMENT_1343": {}, "ELEMENT_1344": {}, "ELEMENT_1345": {}, "ELEMENT_1346": {}, "ELEMENT_1347": {}, "ELEMENT_1348": {}, "ELEMENT_1349": {}, "ELEMENT_1350": {}, "ELEMENT_1351": {}, "ELEMENT_1352": {}, "ELEMENT_1353": {}, "ELEMENT_1354": {}, "ELEMENT_1355": {}, "ELEMENT_1356": {}, "ELEMENT_1357": {}, "ELEMENT_1358": {}, "ELEMENT_1359": {}, "ELEMENT_1360": {}, "ELEMENT_1361": {}, "ELEMENT_1362": {}, "ELEMENT_1363": {}, "ELEMENT_1364": {}, "ELEMENT_1365": {}, "ELEMENT_1366": {}, "ELEMENT_1367": {}, "ELEMENT_1368": {}, "ELEMENT_1369": {}, "ELEMENT_1370": {}, "ELEMENT_1371": {}, "ELEMENT_1372": {}, "ELEMENT_1373": {}, "ELEMENT_1374": {}, "ELEMENT_1375": {}, "ELEMENT_1376": {}, "ELEMENT_1377": {}, "ELEMENT_1378": {}, "ELEMENT_1379": {}, "ELEMENT_1380": {}, "ELEMENT_1381": {}, "ELEMENT_1382": {}, "ELEMENT_1383": {}, "ELEMENT_1384": {}, "ELEMENT_1385": {}, "ELEMENT_1386": {}, "ELEMENT_1387": {}, "ELEMENT_1388": {}, "ELEMENT_1389": {}, "ELEMENT_1390": {}, "ELEMENT_1391": {}, "ELEMENT_1392": {}, "ELEMENT_1393": {}, "ELEMENT_1394": {}, "ELEMENT_1395": {}, "ELEMENT_1396": {}, "ELEMENT_1397": {}, "ELEMENT_1398": {}, "ELEMENT_1399": {}, "ELEMENT_1400": {}, "ELEMENT_1401": {}, "ELEMENT_1402": {}, "ELEMENT_1403": {}, "ELEMENT_1404": {}, "ELEMENT_1405": {}, "ELEMENT_1406": {}, "ELEMENT_1407": {}, "ELEMENT_1408": {}, "ELEMENT_1409": {}, "ELEMENT_1410": {}, "ELEMENT_1411": {}, "ELEMENT_1412": {}, "ELEMENT_1413": {}, "ELEMENT_1414": {}, "ELEMENT_1415": {}, "ELEMENT_1416": {}, "ELEMENT_1417": {}, "ELEMENT_1418": {}, "ELEMENT_1419": {}, "ELEMENT_1420": {}, "ELEMENT_1421": {}, "ELEMENT_1422": {}, "ELEMENT_1423": {}, "ELEMENT_1424": {}, "ELEMENT_1425": {}, "ELEMENT_1426": {}, "ELEMENT_1427": {}, "ELEMENT_1428": {}, "ELEMENT_1429": {}, "ELEMENT_1430": {}, "ELEMENT_1431": {}, "ELEMENT_1432": {}, "ELEMENT_1433": {}, "ELEMENT_1434": {}, "ELEMENT_1435": {}, "ELEMENT_1436": {}, "ELEMENT_1437": {}, "ELEMENT_1438": {}, "ELEMENT_1439": {}, "ELEMENT_1440": {}, "ELEMENT_1441": {}, "ELEMENT_1442": {}, "ELEMENT_1443": {}, "ELEMENT_1444": {}, "ELEMENT_1445": {}, "ELEMENT_1446": {}, "ELEMENT_1447": {}, "ELEMENT_1448": {}, "ELEMENT_1449": {}, "ELEMENT_1450": {}, "ELEMENT_1451": {}, "ELEMENT_1452": {}, "ELEMENT_1453": {}, "ELEMENT_1454": {}, "ELEMENT_1455": {}, "ELEMENT_1456": {}, "ELEMENT_1457": {}, "ELEMENT_1458": {}, "ELEMENT_1459": {}, "ELEMENT_1460": {}, "ELEMENT_1461": {}, "ELEMENT_1462": {}, "ELEMENT_1463": {}, "ELEMENT_1464": {}, "ELEMENT_1465": {}, "ELEMENT_1466": {}, "ELEMENT_1467": {}, "ELEMENT_1468": {}, "ELEMENT_1469": {}, "ELEMENT_1470": {}, "ELEMENT_1471": {}, "ELEMENT_1472": {}, "ELEMENT_1473": {}, "ELEMENT_1474": {}, "ELEMENT_1475": {}, "ELEMENT_1476": {}, "ELEMENT_1477": {}, "ELEMENT_1478": {}, "ELEMENT_1479": {}, "ELEMENT_1480": {}, "ELEMENT_1481": {}, "ELEMENT_1482": {}, "ELEMENT_1483": {}, "ELEMENT_1484": {}, "ELEMENT_1485": {}, "ELEMENT_1486": {}, "ELEMENT_1487": {}, "ELEMENT_1488": {}, "ELEMENT_1489": {}, "ELEMENT_1490": {}, "ELEMENT_1491": {}, "ELEMENT_1492": {}, "ELEMENT_1493": {}, "ELEMENT_1494": {}, "ELEMENT_1495": {}, "ELEMENT_1496": {}, "ELEMENT_1497": {}, "ELEMENT_1498": {}, "ELEMENT_1499": {}, "ELEMENT_1500": {}, "ELEMENT_1501": {}, "ELEMENT_1502": {}, "ELEMENT_1503": {}, "ELEMENT_1504": {}, "ELEMENT_1505": {}, "ELEMENT_1506": {}, "ELEMENT_1507": {}, "ELEMENT_1508": {}, "ELEMENT_1509": {}, "ELEMENT_1510": {}, "ELEMENT_1511": {}, "ELEMENT_1512": {}, "ELEMENT_1513": {}, "ELEMENT_1514": {}, "ELEMENT_1515": {}, "ELEMENT_1516": {}, "ELEMENT_1517": {}, "ELEMENT_1518": {}, "ELEMENT_1519": {}, "ELEMENT_1520": {}, "ELEMENT_1521": {}, "ELEMENT_1522": {}, "ELEMENT_1523": {}, "ELEMENT_1524": {}, "ELEMENT_1525": {}, "ELEMENT_1526": {}, "ELEMENT_1527": {}, "ELEMENT_1528": {}, "ELEMENT_1529": {}, "ELEMENT_1530": {}, "ELEMENT_1531": {}, "ELEMENT_1532": {}, "ELEMENT_1533": {}, "ELEMENT_1534": {}, "ELEMENT_1535": {}, "ELEMENT_1536": {}, "ELEMENT_1537": {}, "ELEMENT_1538": {}, "ELEMENT_1539": {}, "ELEMENT_1540": {}, "ELEMENT_1541": {}, "ELEMENT_1542": {}, "ELEMENT_1543": {}, "ELEMENT_1544": {}, "ELEMENT_1545": {}, "ELEMENT_1546": {}, "ELEMENT_1547": {}, "ELEMENT_1548": {}, "ELEMENT_1549": {}, "ELEMENT_1550": {}, "ELEMENT_1551": {}, "ELEMENT_1552": {}, "ELEMENT_1553": {}, "ELEMENT_1554": {}, "ELEMENT_1555": {}, "ELEMENT_1556": {}, "ELEMENT_1557": {}, "ELEMENT_1558": {}, "ELEMENT_1559": {}, "ELEMENT_1560": {}, "ELEMENT_1561": {}, "ELEMENT_1562": {}, "ELEMENT_1563": {}, "ELEMENT_1564": {}, "ELEMENT_1565": {}, "ELEMENT_1566": {}, "ELEMENT_1567": {}, "ELEMENT_1568": {}, "ELEMENT_1569": {}, "ELEMENT_1570": {}, "ELEMENT_1571": {}, "ELEMENT_1572": {}, "ELEMENT_1573": {}, "ELEMENT_1574": {}, "ELEMENT_1575": {}, "ELEMENT_1576": {}, "ELEMENT_1577": {}, "ELEMENT_1578": {}, "ELEMENT_1579": {}, "ELEMENT_1580": {}, "ELEMENT_1581": {}, "ELEMENT_1582": {}, "ELEMENT_1583": {}, "ELEMENT_1584": {}, "ELEMENT_1585": {}, "ELEMENT_1586": {}, "ELEMENT_1587": {}, "ELEMENT_1588": {}, "ELEMENT_1589": {}, "ELEMENT_1590": {}, "ELEMENT_1591": {}, "ELEMENT_1592": {}, "ELEMENT_1593": {}, "ELEMENT_1594": {}, "ELEMENT_1595": {}, "ELEMENT_1596": {}, "ELEMENT_1597": {}, "ELEMENT_1598": {}, "ELEMENT_1599": {}, "ELEMENT_1600": {}, "ELEMENT_1601": {}, "ELEMENT_1602": {}, "ELEMENT_1603": {}, "ELEMENT_1604": {}, "ELEMENT_1605": {}, "ELEMENT_1606": {}, "ELEMENT_1607": {}, "ELEMENT_1608": {}, "ELEMENT_1609": {}, "ELEMENT_1610": {}, "ELEMENT_1611": {}, "ELEMENT_1612": {}, "ELEMENT_1613": {}, "ELEMENT_1614": {}, "ELEMENT_1615": {}, "ELEMENT_1616": {}, "ELEMENT_1617": {}, "ELEMENT_1618": {}, "ELEMENT_1619": {}, "ELEMENT_1620": {}, "ELEMENT_1621": {}, "ELEMENT_1622": {}, "ELEMENT_1623": {}, "ELEMENT_1624": {}, "ELEMENT_1625": {}, "ELEMENT_1626": {}, "ELEMENT_1627": {}, "ELEMENT_1628": {}, "ELEMENT_1629": {}, "ELEMENT_1630": {}, "ELEMENT_1631": {}, "ELEMENT_1632": {}, "ELEMENT_1633": {}, "ELEMENT_1634": {}, "ELEMENT_1635": {}, "ELEMENT_1636": {}, "ELEMENT_1637": {}, "ELEMENT_1638": {}, "ELEMENT_1639": {}, "ELEMENT_1640": {}, "ELEMENT_1641": {}, "ELEMENT_1642": {}, "ELEMENT_1643": {}, "ELEMENT_1644": {}, "ELEMENT_1645": {}, "ELEMENT_1646": {}, "ELEMENT_1647": {}, "ELEMENT_1648": {}, "ELEMENT_1649": {}, "ELEMENT_1650": {}, "ELEMENT_1651": {}, "ELEMENT_1652": {}, "ELEMENT_1653": {}, "ELEMENT_1654": {}, "ELEMENT_1655": {}, "ELEMENT_1656": {}, "ELEMENT_1657": {}, "ELEMENT_1658": {}, "ELEMENT_1659": {}, "ELEMENT_1660": {}, "ELEMENT_1661": {}, "ELEMENT_1662": {}, "ELEMENT_1663": {}, "ELEMENT_1664": {}, "ELEMENT_1665": {}, "ELEMENT_1666": {}, "ELEMENT_1667": {}, "ELEMENT_1668": {}, "ELEMENT_1669": {}, "ELEMENT_1670": {}, "ELEMENT_1671": {}, "ELEMENT_1672": {}, "ELEMENT_1673": {}, "ELEMENT_1674": {}, "ELEMENT_1675": {}, "ELEMENT_1676": {}, "ELEMENT_1677": {}, "ELEMENT_1678": {}, "ELEMENT_1679": {}, "ELEMENT_1680": {}, "ELEMENT_1681": {}, "ELEMENT_1682": {}, "ELEMENT_1683": {}, "ELEMENT_1684": {}, "ELEMENT_1685": {}, "ELEMENT_1686": {}, "ELEMENT_1687": {}, "ELEMENT_1688": {}, "ELEMENT_1689": {}, "ELEMENT_1690": {}, "ELEMENT_1691": {}, "ELEMENT_1692": {}, "ELEMENT_1693": {}, "ELEMENT_1694": {}, "ELEMENT_1695": {}, "ELEMENT_1696": {}, "ELEMENT_1697": {}, "ELEMENT_1698": {}, "ELEMENT_1699": {}, "ELEMENT_1700": {}, "ELEMENT_1701": {}, "ELEMENT_1702": {}, "ELEMENT_1703": {}, "ELEMENT_1704": {}, "ELEMENT_1705": {}, "ELEMENT_1706": {}, "ELEMENT_1707": {}, "ELEMENT_1708": {}, "ELEMENT_1709": {}, "ELEMENT_1710": {}, "ELEMENT_1711": {}, "ELEMENT_1712": {}, "ELEMENT_1713": {}, "ELEMENT_1714": {}, "ELEMENT_1715": {}, "ELEMENT_1716": {}, "ELEMENT_1717": {}, "ELEMENT_1718": {}, "ELEMENT_1719": {}, "ELEMENT_1720": {}, "ELEMENT_1721": {}, "ELEMENT_1722": {}, "ELEMENT_1723": {}, "ELEMENT_1724": {}, "ELEMENT_1725": {}, "ELEMENT_1726": {}, "ELEMENT_1727": {}, "ELEMENT_1728": {}, "ELEMENT_1729": {}, "ELEMENT_1730": {}, "ELEMENT_1731": {}, "ELEMENT_1732": {}, "ELEMENT_1733": {}, "ELEMENT_1734": {}, "ELEMENT_1735": {}, "ELEMENT_1736": {}, "ELEMENT_1737": {}, "ELEMENT_1738": {}, "ELEMENT_1739": {}, "ELEMENT_1740": {}, "ELEMENT_1741": {}, "ELEMENT_1742": {}, "ELEMENT_1743": {}, "ELEMENT_1744": {}, "ELEMENT_1745": {}, "ELEMENT_1746": {}, "ELEMENT_1747": {}, "ELEMENT_1748": {}, "ELEMENT_1749": {}, "ELEMENT_1750": {}, "ELEMENT_1751": {}, "ELEMENT_1752": {}, "ELEMENT_1753": {}, "ELEMENT_1754": {}, "ELEMENT_1755": {}, "ELEMENT_1756": {}, "ELEMENT_1757": {}, "ELEMENT_1758": {}, "ELEMENT_1759": {}, "ELEMENT_1760": {}, "ELEMENT_1761": {}, "ELEMENT_1762": {}, "ELEMENT_1763": {}, "ELEMENT_1764": {}, "ELEMENT_1765": {}, "ELEMENT_1766": {}, "ELEMENT_1767": {}, "ELEMENT_1768": {}, "ELEMENT_1769": {}, "ELEMENT_1770": {}, "ELEMENT_1771": {}, "ELEMENT_1772": {}, "ELEMENT_1773": {}, "ELEMENT_1774": {}, "ELEMENT_1775": {}, "ELEMENT_1776": {}, "ELEMENT_1777": {}, "ELEMENT_1778": {}, "ELEMENT_1779": {}, "ELEMENT_1780": {}, "ELEMENT_1781": {}, "ELEMENT_1782": {}, "ELEMENT_1783": {}, "ELEMENT_1784": {}, "ELEMENT_1785": {}, "ELEMENT_1786": {}, "ELEMENT_1787": {}, "ELEMENT_1788": {}, "ELEMENT_1789": {}, "ELEMENT_1790": {}, "ELEMENT_1791": {}, "ELEMENT_1792": {}, "ELEMENT_1793": {}, "ELEMENT_1794": {}, "ELEMENT_1795": {}, "ELEMENT_1796": {}, "ELEMENT_1797": {}, "ELEMENT_1798": {}, "ELEMENT_1799": {}, "ELEMENT_1800": {}, "ELEMENT_1801": {}, "ELEMENT_1802": {}, "ELEMENT_1803": {}, "ELEMENT_1804": {}, "ELEMENT_1805": {}, "ELEMENT_1806": {}, "ELEMENT_1807": {}, "ELEMENT_1808": {}, "ELEMENT_1809": {}, "ELEMENT_1810": {}, "ELEMENT_1811": {}, "ELEMENT_1812": {}, "ELEMENT_1813": {}, "ELEMENT_1814": {}, "ELEMENT_1815": {}, "ELEMENT_1816": {}, "ELEMENT_1817": {}, "ELEMENT_1818": {}, "ELEMENT_1819": {}, "ELEMENT_1820": {}, "ELEMENT_1821": {}, "ELEMENT_1822": {}, "ELEMENT_1823": {}, "ELEMENT_1824": {}, "ELEMENT_1825": {}, "ELEMENT_1826": {}, "ELEMENT_1827": {}, "ELEMENT_1828": {}, "ELEMENT_1829": {}, "ELEMENT_1830": {}, "ELEMENT_1831": {}, "ELEMENT_1832": {}, "ELEMENT_1833": {}, "ELEMENT_1834": {}, "ELEMENT_1835": {}, "ELEMENT_1836": {}, "ELEMENT_1837": {}, "ELEMENT_1838": {}, "ELEMENT_1839": {}, "ELEMENT_1840": {}, "ELEMENT_1841": {}, "ELEMENT_1842": {}, "ELEMENT_1843": {}, "ELEMENT_1844": {}, "ELEMENT_1845": {}, "ELEMENT_1846": {}, "ELEMENT_1847": {}, "ELEMENT_1848": {}, "ELEMENT_1849": {}, "ELEMENT_1850": {}, "ELEMENT_1851": {}, "ELEMENT_1852": {}, "ELEMENT_1853": {}, "ELEMENT_1854": {}, "ELEMENT_1855": {}, "ELEMENT_1856": {}, "ELEMENT_1857": {}, "ELEMENT_1858": {}, "ELEMENT_1859": {}, "ELEMENT_1860": {}, "ELEMENT_1861": {}, "ELEMENT_1862": {}, "ELEMENT_1863": {}, "ELEMENT_1864": {}, "ELEMENT_1865": {}, "ELEMENT_1866": {}, "ELEMENT_1867": {}, "ELEMENT_1868": {}, "ELEMENT_1869": {}, "ELEMENT_1870": {}, "ELEMENT_1871": {}, "ELEMENT_1872": {}, "ELEMENT_1873": {}, "ELEMENT_1874": {}, "ELEMENT_1875": {}, "ELEMENT_1876": {}, "ELEMENT_1877": {}, "ELEMENT_1878": {}, "ELEMENT_1879": {}, "ELEMENT_1880": {}, "ELEMENT_1881": {}, "ELEMENT_1882": {}, "ELEMENT_1883": {}, "ELEMENT_1884": {}, "ELEMENT_1885": {}, "ELEMENT_1886": {}, "ELEMENT_1887": {}, "ELEMENT_1888": {}, "ELEMENT_1889": {}, "ELEMENT_1890": {}, "ELEMENT_1891": {}, "ELEMENT_1892": {}, "ELEMENT_1893": {}, "ELEMENT_1894": {}, "ELEMENT_1895": {}, "ELEMENT_1896": {}, "ELEMENT_1897": {}, "ELEMENT_1898": {}, "ELEMENT_1899": {}, "ELEMENT_1900": {}, "ELEMENT_1901": {}, "ELEMENT_1902": {}, "ELEMENT_1903": {}, "ELEMENT_1904": {}, "ELEMENT_1905": {}, "ELEMENT_1906": {}, "ELEMENT_1907": {}, "ELEMENT_1908": {}, "ELEMENT_1909": {}, "ELEMENT_1910": {}, "ELEMENT_1911": {}, "ELEMENT_1912": {}, "ELEMENT_1913": {}, "ELEMENT_1914": {}, "ELEMENT_1915": {}, "ELEMENT_1916": {}, "ELEMENT_1917": {}, "ELEMENT_1918": {}, "ELEMENT_1919": {}, "ELEMENT_1920": {}, "ELEMENT_1921": {}, "ELEMENT_1922": {}, "ELEMENT_1923": {}, "ELEMENT_1924": {}, "ELEMENT_1925": {}, "ELEMENT_1926": {}, "ELEMENT_1927": {}, "ELEMENT_1928": {}, "ELEMENT_1929": {}, "ELEMENT_1930": {}, "ELEMENT_1931": {}, "ELEMENT_1932": {}, "ELEMENT_1933": {}, "ELEMENT_1934": {}, "ELEMENT_1935": {}, "ELEMENT_1936": {}, "ELEMENT_1937": {}, "ELEMENT_1938": {}, "ELEMENT_1939": {}, "ELEMENT_1940": {}, "ELEMENT_1941": {}, "ELEMENT_1942": {}, "ELEMENT_1943": {}, "ELEMENT_1944": {}, "ELEMENT_1945": {}, "ELEMENT_1946": {}, "ELEMENT_1947": {}, "ELEMENT_1948": {}, "ELEMENT_1949": {}, "ELEMENT_1950": {}, "ELEMENT_1951": {}, "ELEMENT_1952": {}, "ELEMENT_1953": {}, "ELEMENT_1954": {}, "ELEMENT_1955": {}, "ELEMENT_1956": {}, "ELEMENT_1957": {}, "ELEMENT_1958": {}, "ELEMENT_1959": {}, "ELEMENT_1960": {}, "ELEMENT_1961": {}, "ELEMENT_1962": {}, "ELEMENT_1963": {}, "ELEMENT_1964": {}, "ELEMENT_1965": {}, "ELEMENT_1966": {}, "ELEMENT_1967": {}, "ELEMENT_1968": {}, "ELEMENT_1969": {}, "ELEMENT_1970": {}, "ELEMENT_1971": {}, "ELEMENT_1972": {}, "ELEMENT_1973": {}, "ELEMENT_1974": {}, "ELEMENT_1975": {}, "ELEMENT_1976": {}, "ELEMENT_1977": {}, "ELEMENT_1978": {}, "ELEMENT_1979": {}, "ELEMENT_1980": {}, "ELEMENT_1981": {}, "ELEMENT_1982": {}, "ELEMENT_1983": {}, "ELEMENT_1984": {}, "ELEMENT_1985": {}, "ELEMENT_1986": {}, "ELEMENT_1987": {}, "ELEMENT_1988": {}, "ELEMENT_1989": {}, "ELEMENT_1990": {}, "ELEMENT_1991": {}, "ELEMENT_1992": {}, "ELEMENT_1993": {}, "ELEMENT_1994": {}, "ELEMENT_1995": {}, "ELEMENT_1996": {}, "ELEMENT_1997": {}, "ELEMENT_1998": {}, "ELEMENT_1999": {}, "ELEMENT_2000": {}} \ No newline at end of file diff --git a/applications/FluidDynamicsApplication/tests/test_FluidDynamicsApplication.py b/applications/FluidDynamicsApplication/tests/test_FluidDynamicsApplication.py index 4068363ef748..a8fc5ac45a20 100644 --- a/applications/FluidDynamicsApplication/tests/test_FluidDynamicsApplication.py +++ b/applications/FluidDynamicsApplication/tests/test_FluidDynamicsApplication.py @@ -38,7 +38,6 @@ from adjoint_vms_sensitivity_2d import AdjointVMSSensitivity2D from hdf5_io_test import HDF5IOTest from test_statistics_process import IntegrationPointStatisticsTest -from cfl_output_process_test import CFLOutputProcessTest from test_flows_measuring_utility import FlowsMeasuringUtilityTest from levelset_consistent_nodal_gradient_test import ConsistentLevelsetNodalGradientTest from adjoint_conditions import TestAdjointMonolithicWallCondition @@ -51,7 +50,8 @@ from compressible_slip_wall_process_test import TestCompressibleSlipWallProcess from compute_pressure_coefficient_process_test import ComputePressureCoefficientProcessTest from compute_drag_process_test import ComputeDragProcessTest - +from test_compute_y_plus_process import ComputeYPlusProcessTest +from test_fluid_computation_processes import FluidComputationProcessesTest def AssembleTestSuites(): ''' Populates the test suites to run. @@ -89,6 +89,7 @@ def AssembleTestSuites(): smallSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([TestCompressibleSlipWallProcess])) smallSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([ComputePressureCoefficientProcessTest])) smallSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([ComputeDragProcessTest])) + smallSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([ComputeYPlusProcessTest])) # Create a test suite with the selected tests plus all small tests nightSuite = suites['nightly'] @@ -125,11 +126,11 @@ def AssembleTestSuites(): nightSuite.addTest(FluidAnalysisTest('testSteadyCylinder')) nightSuite.addTest(ConsistentLevelsetNodalGradientTest('testConsistentGradientSquare2D')) nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([IntegrationPointStatisticsTest])) - nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([CFLOutputProcessTest])) nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([FlowsMeasuringUtilityTest])) nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([FluidAuxiliaryUtilitiesTest])) nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([TwoFluidMassConservationTest])) nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([NavierStokesCompressibleExplicitSolverTest])) + nightSuite.addTests(KratosUnittest.TestLoader().loadTestsFromTestCases([FluidComputationProcessesTest])) # For very long tests that should not be in nighly and you can use to validate validationSuite = suites['validation'] @@ -158,4 +159,6 @@ def AssembleTestSuites(): return suites if __name__ == '__main__': + KratosMultiphysics.Logger.GetDefaultOutput().SetSeverity( + KratosMultiphysics.Logger.Severity.WARNING) KratosUnittest.runTests(AssembleTestSuites()) diff --git a/applications/FluidDynamicsApplication/tests/test_compute_y_plus_process.py b/applications/FluidDynamicsApplication/tests/test_compute_y_plus_process.py new file mode 100644 index 000000000000..1a675c492670 --- /dev/null +++ b/applications/FluidDynamicsApplication/tests/test_compute_y_plus_process.py @@ -0,0 +1,88 @@ +import math +import KratosMultiphysics as Kratos +import KratosMultiphysics.FluidDynamicsApplication as KratosCFD +import KratosMultiphysics.KratosUnittest as UnitTest +from KratosMultiphysics.testing.utilities import ReadModelPart + +class ComputeYPlusProcessTest(UnitTest.TestCase): + @classmethod + def setUpClass(cls): + cls.model = Kratos.Model() + cls.model_part = cls.model.CreateModelPart("test") + cls.model_part.ProcessInfo[Kratos.DOMAIN_SIZE] = 2 + cls.model_part.AddNodalSolutionStepVariable(Kratos.NORMAL) + cls.model_part.AddNodalSolutionStepVariable(Kratos.REACTION) + ReadModelPart("AdjointVMSSensitivity2DTest/cylinder_test", cls.model_part) + + cls.density = 2.0 + cls.kinematic_viscosity = 3.0 + + for element in cls.model_part.Elements: + element.Properties[Kratos.DENSITY] = cls.density + element.Properties[Kratos.DYNAMIC_VISCOSITY] = cls.kinematic_viscosity * cls.density + break + + tmoc = Kratos.TetrahedralMeshOrientationCheck + flags = (tmoc.COMPUTE_NODAL_NORMALS).AsFalse() | (tmoc.COMPUTE_CONDITION_NORMALS).AsFalse() | tmoc.ASSIGN_NEIGHBOUR_ELEMENTS_TO_CONDITIONS + Kratos.TetrahedralMeshOrientationCheck(cls.model_part, False, flags).Execute() + + # now populate the reactions + for node in cls.model_part.Nodes: + node.SetSolutionStepValue(Kratos.REACTION, Kratos.Array3([node.Id, node.Id * 2, node.Id * 3])) + + def testComputeYPlusProcess(self): + parameters = Kratos.Parameters("""{ + "model_part_name" : "test", + "output_variable_name" : "Y_PLUS", + "output_to_elements" : true, + "calculate_normals_every_time_step": false, + "echo_level" : 1 + }""") + compute_y_plus_process = KratosCFD.ComputeYPlusProcess(self.model, parameters) + compute_y_plus_process.Check() + compute_y_plus_process.ExecuteInitializeSolutionStep() + compute_y_plus_process.ExecuteFinalizeSolutionStep() + + ref_y_values = { + 1:0.000255058, + 2:0.000277998, + 3:0.000262711, + 4:0.000262711, + 5:0.000277998, + 6:0.000255058, + 7:0.000300881, + 8:0.000300881, + 9:0.000331303, + 10:0.000331303, + } + + # now check the shear stresses + for condition_id, y in ref_y_values.items(): + condition = self.model_part.GetCondition(condition_id) + geometry = condition.GetGeometry() + y_plus = condition.GetValue(KratosCFD.Y_PLUS) + u_tau = y_plus * self.kinematic_viscosity / y + shear_stress = self.density * (u_tau ** 2) + y_plus_based_tangential_reaction_magnitude = shear_stress * geometry.Area() + + reaction = Kratos.Array3([0.0, 0.0, 0.0]) + for node in geometry: + nodal_normal = node.GetSolutionStepValue(Kratos.NORMAL) + nodal_normal_magnitude = math.sqrt(ComputeYPlusProcessTest.__InnerProd(nodal_normal, nodal_normal)) + reaction += node.GetSolutionStepValue(Kratos.REACTION) / nodal_normal_magnitude + reaction *= geometry.Area() / len(geometry) + + condition_unit_normal = condition.GetValue(Kratos.NORMAL) + condition_unit_normal /= math.sqrt(ComputeYPlusProcessTest.__InnerProd(condition_unit_normal, condition_unit_normal)) + perpendicular_reaction = condition_unit_normal * ComputeYPlusProcessTest.__InnerProd(reaction, condition_unit_normal) + analytical_tangential_reaction = reaction - perpendicular_reaction + analytical_tangential_reaction_magnitude = math.sqrt(ComputeYPlusProcessTest.__InnerProd(analytical_tangential_reaction, analytical_tangential_reaction)) + + self.assertAlmostEqual(y_plus_based_tangential_reaction_magnitude/analytical_tangential_reaction_magnitude - 1.0, 0.0, 5) + + @staticmethod + def __InnerProd(v1: Kratos.Array3, v2: Kratos.Array3): + return v1[0] * v2[0] + v1[1] * v2[1] + v1[2] * v2[2] + +if __name__ == '__main__': + UnitTest.main() diff --git a/applications/FluidDynamicsApplication/tests/test_fluid_computation_processes.py b/applications/FluidDynamicsApplication/tests/test_fluid_computation_processes.py new file mode 100644 index 000000000000..223c16a71eb9 --- /dev/null +++ b/applications/FluidDynamicsApplication/tests/test_fluid_computation_processes.py @@ -0,0 +1,83 @@ +import KratosMultiphysics as Kratos +import KratosMultiphysics.KratosUnittest as UnitTest +from KratosMultiphysics.testing.utilities import ReadModelPart +from KratosMultiphysics.process_factory import KratosProcessFactory + +class FluidComputationProcessesTest(UnitTest.TestCase): + @classmethod + def setUpClass(cls): + cls.model = Kratos.Model() + cls.model_part = cls.model.CreateModelPart("test") + cls.model_part.ProcessInfo[Kratos.DOMAIN_SIZE] = 2 + cls.model_part.AddNodalSolutionStepVariable(Kratos.VELOCITY) + cls.model_part.AddNodalSolutionStepVariable(Kratos.NORMAL) + cls.model_part.AddNodalSolutionStepVariable(Kratos.REACTION) + ReadModelPart("AdjointVMSSensitivity2DTest/cylinder_test", cls.model_part) + + cls.density = 2.0 + cls.kinematic_viscosity = 3.0 + + for element in cls.model_part.Elements: + element.Properties[Kratos.DENSITY] = cls.density + element.Properties[Kratos.DYNAMIC_VISCOSITY] = cls.kinematic_viscosity * cls.density + break + + tmoc = Kratos.TetrahedralMeshOrientationCheck + flags = (tmoc.COMPUTE_NODAL_NORMALS).AsFalse() | (tmoc.COMPUTE_CONDITION_NORMALS).AsFalse() | tmoc.ASSIGN_NEIGHBOUR_ELEMENTS_TO_CONDITIONS + Kratos.TetrahedralMeshOrientationCheck(cls.model_part, False, flags).Execute() + + # now populate the velocity + for node in cls.model_part.Nodes: + node.SetSolutionStepValue(Kratos.VELOCITY, Kratos.Array3([node.Id, node.Id * 2, node.Id * 3])) + node.SetSolutionStepValue(Kratos.REACTION, Kratos.Array3([node.Id, node.Id * 2, node.Id * 3])) + + def testComputeCFLProcess(self): + settings = Kratos.Parameters(r''' + [ + { + "kratos_module" : "KratosMultiphysics.FluidDynamicsApplication", + "python_module" : "compute_cfl_process", + "Parameters" : { + "model_part_name" : "test" + } + } + ]''') + + self.__RunTest(settings) + + def testComputeYPlusProcess(self): + settings = Kratos.Parameters(r''' + [ + { + "kratos_module" : "KratosMultiphysics.FluidDynamicsApplication", + "python_module" : "compute_y_plus_process", + "Parameters" : { + "model_part_name" : "test" + } + } + ]''') + + self.__RunTest(settings) + + def __RunTest(self, settings): + factory = KratosProcessFactory(self.model) + process_list = factory.ConstructListOfProcesses(settings) + + for process in process_list: + process.Check() + + time_steps = [1.0, 1.5, 2.0, 2.5] + for step, time_step in enumerate(time_steps, 1): + self.model_part.ProcessInfo[Kratos.TIME] = time_step + self.model_part.ProcessInfo[Kratos.STEP] = step + + for process in process_list: + process.ExecuteInitializeSolutionStep() + process.Execute() + process.ExecuteFinalizeSolutionStep() + + for process in process_list: + process.ExecuteFinalize() + +if __name__ == '__main__': + UnitTest.main() diff --git a/applications/FluidDynamicsApplication/trilinos_extension/custom_processes/trilinos_spalart_allmaras_turbulence_model.h b/applications/FluidDynamicsApplication/trilinos_extension/custom_processes/trilinos_spalart_allmaras_turbulence_model.h index 1ea891b1e813..59e5228e1149 100644 --- a/applications/FluidDynamicsApplication/trilinos_extension/custom_processes/trilinos_spalart_allmaras_turbulence_model.h +++ b/applications/FluidDynamicsApplication/trilinos_extension/custom_processes/trilinos_spalart_allmaras_turbulence_model.h @@ -24,7 +24,7 @@ #include "mpi/includes/mpi_communicator.h" #include "mpi/utilities/parallel_fill_communicator.h" -#include "../FluidDynamicsApplication/custom_processes/spalart_allmaras_turbulence_model.h" +#include "custom_processes/spalart_allmaras_turbulence_model.h" namespace Kratos { @@ -127,7 +127,7 @@ class TrilinosSpalartAllmarasTurbulenceModel : public SpalartAllmarasTurbulenceM // Create a communicator for the new model part and copy the partition information about nodes. Communicator& rReferenceComm = BaseSpAlType::mr_model_part.GetCommunicator(); - typename Communicator::Pointer pSpalartMPIComm = typename Communicator::Pointer( new MPICommunicator( &(BaseSpAlType::mr_model_part.GetNodalSolutionStepVariablesList()) ) ); + typename Communicator::Pointer pSpalartMPIComm = typename Communicator::Pointer( new MPICommunicator(&(BaseSpAlType::mr_model_part.GetNodalSolutionStepVariablesList()), rReferenceComm.GetDataCommunicator())); pSpalartMPIComm->SetNumberOfColors( rReferenceComm.GetNumberOfColors() ) ; pSpalartMPIComm->NeighbourIndices() = rReferenceComm.NeighbourIndices(); pSpalartMPIComm->LocalMesh().SetNodes( rReferenceComm.LocalMesh().pNodes() ); @@ -172,7 +172,7 @@ class TrilinosSpalartAllmarasTurbulenceModel : public SpalartAllmarasTurbulenceM } // Create a communicator for the new model part - ParallelFillCommunicator CommunicatorGeneration(BaseSpAlType::mrSpalartModelPart); + ParallelFillCommunicator CommunicatorGeneration(BaseSpAlType::mrSpalartModelPart, BaseSpAlType::mrSpalartModelPart.GetCommunicator().GetDataCommunicator()); CommunicatorGeneration.Execute(); //CommunicatorGeneration.PrintDebugInfo() diff --git a/applications/FluidDynamicsBiomedicalApplication/custom_utilities/parabolic_profile_utilities.cpp b/applications/FluidDynamicsBiomedicalApplication/custom_utilities/parabolic_profile_utilities.cpp index 3a30b2e618a0..d6974b5654a4 100644 --- a/applications/FluidDynamicsBiomedicalApplication/custom_utilities/parabolic_profile_utilities.cpp +++ b/applications/FluidDynamicsBiomedicalApplication/custom_utilities/parabolic_profile_utilities.cpp @@ -199,7 +199,7 @@ void ParabolicProfileUtilities::ImposeParabolicInlet( const double MaxValueFactor) { // Impose the parabolic inlet profile - ImposeParabolicProfile(rModelPart, MaxParabolaValue, MaxValueFactor); + ImposeParabolicProfile(rModelPart, *MaxParabolaValue, MaxValueFactor); } template @@ -219,28 +219,38 @@ void ParabolicProfileUtilities::ImposeParabolicProfile( }); KRATOS_ERROR_IF(std::abs(max_dist) < 1.0e-12) << "WALL_DISTANCE is close to zero." << std::endl; + // TLS with the Inlet normal and the rMaxParabolaValue (to prevent race conditions if its a function) + struct TLSType{ + array_1d mInlet; + TInputType mParabolaValue; + + TLSType(const TInputType & parabolaValue) : mInlet(array_1d()), mParabolaValue(parabolaValue) {}; + }; + + TLSType tls(rMaxParabolaValue); + // Impose the parabolic profile values - block_for_each(rModelPart.Nodes(), array_1d(), [time, max_dist, MaxValueFactor, &rMaxParabolaValue](NodeType& rNode, array_1d& rTLSValue){ + block_for_each(rModelPart.Nodes(), tls, [time, max_dist, MaxValueFactor](NodeType& rNode, TLSType& rTLSValue){ //Calculate distance for each node const double wall_dist = rNode.GetValue(WALL_DISTANCE) < 0.0 ? 0.0 : rNode.GetValue(WALL_DISTANCE); // Calculate the inlet direction - rTLSValue = rNode.GetValue(INLET_NORMAL); - const double n_norm = norm_2(rTLSValue); + rTLSValue.mInlet = rNode.GetValue(INLET_NORMAL); + const double n_norm = norm_2(rTLSValue.mInlet); if (n_norm > 1.0e-12) { - rTLSValue /= -n_norm; + rTLSValue.mInlet /= -n_norm; } else { KRATOS_WARNING("ImposeParabolicProfile") << "Node " << rNode.Id() << " INLET_NORMAL is close to zero." << std::endl; - rTLSValue /= -1.0; + rTLSValue.mInlet /= -1.0; } // Calculate the inlet value module - const double max_value = MaxValueFactor * GetMaxParabolaValue(time, rNode, rMaxParabolaValue); + const double max_value = MaxValueFactor * GetMaxParabolaValue(time, rNode, rTLSValue.mParabolaValue); const double value_in = max_value * (1.0-(std::pow(max_dist-wall_dist,2)/std::pow(max_dist,2))); - rTLSValue *= value_in; + rTLSValue.mInlet *= value_in; // Set and fix the VELOCITY DOFs - rNode.FastGetSolutionStepValue(VELOCITY) = rTLSValue; + rNode.FastGetSolutionStepValue(VELOCITY) = rTLSValue.mInlet; rNode.Fix(VELOCITY_X); rNode.Fix(VELOCITY_Y); rNode.Fix(VELOCITY_Z); @@ -260,21 +270,21 @@ template<> double ParabolicProfileUtilities::GetMaxParabolaValue( const double Time, const NodeType& rNode, - const double& rMaxParabolaValue) + double& rMaxParabolaValue) { return rMaxParabolaValue; } template<> -double ParabolicProfileUtilities::GetMaxParabolaValue( +double ParabolicProfileUtilities::GetMaxParabolaValue( const double Time, const NodeType& rNode, - const GenericFunctionUtility::Pointer& rMaxParabolaValue) + GenericFunctionUtility& rMaxParabolaValue) { - if(!rMaxParabolaValue->UseLocalSystem()) { - return rMaxParabolaValue->CallFunction(rNode.X(), rNode.Y(), rNode.Z(), Time, rNode.X0(), rNode.Y0(), rNode.Z0()); + if(!rMaxParabolaValue.UseLocalSystem()) { + return rMaxParabolaValue.CallFunction(rNode.X(), rNode.Y(), rNode.Z(), Time, rNode.X0(), rNode.Y0(), rNode.Z0()); } else { - return rMaxParabolaValue->RotateAndCallFunction(rNode.X(), rNode.Y(), rNode.Z(), Time, rNode.X0(), rNode.Y0(), rNode.Z0()); + return rMaxParabolaValue.RotateAndCallFunction(rNode.X(), rNode.Y(), rNode.Z(), Time, rNode.X0(), rNode.Y0(), rNode.Z0()); } } @@ -299,6 +309,6 @@ double ParabolicProfileUtilities::CalculateBoundingBoxCharacteristicLength(const } template KRATOS_API(FLUID_DYNAMICS_BIOMEDICAL_APPLICATION) void ParabolicProfileUtilities::ImposeParabolicProfile(ModelPart&, const double&, const double); -template KRATOS_API(FLUID_DYNAMICS_BIOMEDICAL_APPLICATION) void ParabolicProfileUtilities::ImposeParabolicProfile(ModelPart&, const GenericFunctionUtility::Pointer&, const double); +template KRATOS_API(FLUID_DYNAMICS_BIOMEDICAL_APPLICATION) void ParabolicProfileUtilities::ImposeParabolicProfile(ModelPart&, const GenericFunctionUtility&, const double); } //namespace Kratos diff --git a/applications/FluidDynamicsBiomedicalApplication/custom_utilities/parabolic_profile_utilities.h b/applications/FluidDynamicsBiomedicalApplication/custom_utilities/parabolic_profile_utilities.h index c91c63f677a6..2f05c2d24ae4 100644 --- a/applications/FluidDynamicsBiomedicalApplication/custom_utilities/parabolic_profile_utilities.h +++ b/applications/FluidDynamicsBiomedicalApplication/custom_utilities/parabolic_profile_utilities.h @@ -106,7 +106,7 @@ class KRATOS_API(FLUID_DYNAMICS_BIOMEDICAL_APPLICATION) ParabolicProfileUtilitie static double GetMaxParabolaValue( const double Time, const NodeType& rNode, - const TInputType& rMaxParabolaValue); + TInputType& rMaxParabolaValue); static double CalculateBoundingBoxCharacteristicLength(const ModelPart& rModelPart); diff --git a/applications/FluidDynamicsBiomedicalApplication/tests/test_FluidDynamicsBiomedicalApplication.py b/applications/FluidDynamicsBiomedicalApplication/tests/test_FluidDynamicsBiomedicalApplication.py index df7237f39e7a..1e635a30c8ab 100644 --- a/applications/FluidDynamicsBiomedicalApplication/tests/test_FluidDynamicsBiomedicalApplication.py +++ b/applications/FluidDynamicsBiomedicalApplication/tests/test_FluidDynamicsBiomedicalApplication.py @@ -48,7 +48,7 @@ def AssembleTestSuites(): KratosMultiphysics.Logger.GetDefaultOutput().SetSeverity(KratosMultiphysics.Logger.Severity.WARNING) KratosMultiphysics.Logger.PrintInfo("Unittests", "\nRunning cpp unit tests ...") KratosMultiphysics.Tester.SetVerbosity(KratosMultiphysics.Tester.Verbosity.PROGRESS) # TESTS_OUTPUTS - KratosMultiphysics.Tester.RunTestSuite("FluidDynamicsBiomedicalApplicationFastSuite") + # KratosMultiphysics.Tester.RunTestSuite("FluidDynamicsBiomedicalApplicationFastSuite") KratosMultiphysics.Logger.PrintInfo("Unittests", "Finished running cpp unit tests!") KratosMultiphysics.Logger.PrintInfo("Unittests", "\nRunning python tests ...") diff --git a/applications/FluidTransportApplication/custom_elements/steady_convection_diffusion_FIC_element.cpp b/applications/FluidTransportApplication/custom_elements/steady_convection_diffusion_FIC_element.cpp index fa00353ea4e5..aa1d000dc4b5 100644 --- a/applications/FluidTransportApplication/custom_elements/steady_convection_diffusion_FIC_element.cpp +++ b/applications/FluidTransportApplication/custom_elements/steady_convection_diffusion_FIC_element.cpp @@ -734,12 +734,12 @@ void SteadyConvectionDiffusionFICElement::CalculateDiffusivityVa double Domain = rGeom.DomainSize(); - if (TDim == 2) + if constexpr (TDim == 2) { rVariables.lv = std::sqrt(2.0*Domain); rVariables.lsc = rVariables.lv; - if (TNumNodes == 3) + if constexpr (TNumNodes == 3) { for (unsigned int i = 0; i < TNumNodes; i++) { @@ -1188,7 +1188,7 @@ void SteadyConvectionDiffusionFICElement::CalculatePeclet(Elemen double Domain = rGeom.DomainSize(); - if (TDim == 2) + if constexpr (TDim == 2) { rVariables.lv = std::sqrt(2.0*Domain); } diff --git a/applications/FluidTransportApplication/custom_elements/transient_convection_diffusion_FIC_element.cpp b/applications/FluidTransportApplication/custom_elements/transient_convection_diffusion_FIC_element.cpp index 0e0a03ac233e..72e2700a5c39 100644 --- a/applications/FluidTransportApplication/custom_elements/transient_convection_diffusion_FIC_element.cpp +++ b/applications/FluidTransportApplication/custom_elements/transient_convection_diffusion_FIC_element.cpp @@ -389,12 +389,12 @@ void TransientConvectionDiffusionFICElement::CalculateDiffusivit double Domain = rGeom.DomainSize(); - if (TDim == 2) + if constexpr (TDim == 2) { rVariables.lv = std::sqrt(2.0*Domain); rVariables.lsc = rVariables.lv; - if (TNumNodes == 3) + if constexpr (TNumNodes == 3) { for (unsigned int i = 0; i < TNumNodes; i++) { @@ -1005,7 +1005,7 @@ void TransientConvectionDiffusionFICElement::CalculateOnIntegrat double Domain = Geom.DomainSize(); - if (TDim == 2) + if constexpr (TDim == 2) { Variables.lv = std::sqrt(2.0*Domain); } diff --git a/applications/FluidTransportApplication/custom_elements/transient_convection_diffusion_PFEM2_FIC_element.cpp b/applications/FluidTransportApplication/custom_elements/transient_convection_diffusion_PFEM2_FIC_element.cpp index 5393b97b6df1..07d62a0e8f78 100644 --- a/applications/FluidTransportApplication/custom_elements/transient_convection_diffusion_PFEM2_FIC_element.cpp +++ b/applications/FluidTransportApplication/custom_elements/transient_convection_diffusion_PFEM2_FIC_element.cpp @@ -331,12 +331,12 @@ void TransientConvectionDiffusionPFEM2FICElement::CalculateDiffu double Domain = rGeom.DomainSize(); - if (TDim == 2) + if constexpr (TDim == 2) { rVariables.lv = std::sqrt(2.0*Domain); rVariables.lsc = rVariables.lv; - if (TNumNodes == 3) + if constexpr (TNumNodes == 3) { for (unsigned int i = 0; i < TNumNodes; i++) { diff --git a/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset.h b/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset.h index 956c157bd00b..d9df845cf5bd 100644 --- a/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset.h +++ b/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset.h @@ -219,7 +219,7 @@ namespace Kratos CalculateNormals(mr_model_part.Conditions()); mr_matrix_container.WriteVectorToDatabase(NORMAL, mSlipNormal, mr_model_part.Nodes()); - if (TDim == 3) + if constexpr (TDim == 3) DetectEdges3D(mr_model_part.Conditions()); // allocate memory for variables @@ -376,7 +376,7 @@ namespace Kratos { if (Cs != 0) { - if (TDim == 3) + if constexpr (TDim == 3) ApplySmagorinsky3D(MolecularViscosity, Cs); else ApplySmagorinsky2D(MolecularViscosity, Cs); @@ -1530,12 +1530,12 @@ namespace Kratos // calculate area normals face-by-face array_1d area_normal; // 2D case - if (TDim == 2) + if constexpr (TDim == 2) { for (ModelPart::ConditionsContainerType::iterator cond_it = rConditions.begin(); cond_it != rConditions.end(); cond_it++) CalculateNormal2D(cond_it, area_normal); } // 3D case - else if (TDim == 3) + else if constexpr (TDim == 3) { // help vectors for cross product array_1d v1; @@ -2351,7 +2351,7 @@ namespace Kratos } // take unstructured meshes into account - if (TDim == 2) + if constexpr (TDim == 2) { for (unsigned int i_node = 0; i_node < n_nodes; i_node++) { @@ -2362,7 +2362,7 @@ namespace Kratos h_i = sqrt(2.0 * m_i); } } - else if (TDim == 3) + else if constexpr (TDim == 3) { for (unsigned int i_node = 0; i_node < n_nodes; i_node++) { diff --git a/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset_auxiliary_utils.h b/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset_auxiliary_utils.h index e30a9a20f67c..f84c3427d585 100644 --- a/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset_auxiliary_utils.h +++ b/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset_auxiliary_utils.h @@ -95,9 +95,9 @@ class EdgebasedLevelsetAuxiliaryUtils const double max_distance ) { - if(TDim == 2) + if constexpr (TDim == 2) CalculateDistances2D(r_model_part, rDistanceVar, max_distance); - else if (TDim == 3) + else if constexpr (TDim == 3) CalculateDistances3D(r_model_part, rDistanceVar, max_distance); // r_model_part.GetCommunicator().SynchronizeCurrentDataToMin(rDistanceVar); diff --git a/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset_substep.h b/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset_substep.h index 4d8399db9409..150f50d9e90b 100644 --- a/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset_substep.h +++ b/applications/FreeSurfaceApplication/custom_utilities/edgebased_levelset_substep.h @@ -230,7 +230,7 @@ namespace Kratos // compute slip normals and fill SlipList CalculateNormals(mr_model_part.Conditions()); mr_matrix_container.WriteVectorToDatabase(NORMAL, mSlipNormal, mr_model_part.Nodes()); - if (TDim == 3) + if constexpr (TDim == 3) DetectEdges3D(mr_model_part.Conditions()); // determine number of edges and entries @@ -299,7 +299,7 @@ namespace Kratos KRATOS_ERROR_IF(it->Id() < 1) << "Element found with Id 0 or negative" << std::endl; double elem_vol = 0.0; - if (TDim == 2) + if constexpr (TDim == 2) elem_vol = it->GetGeometry().Area(); else elem_vol = it->GetGeometry().Volume(); @@ -435,7 +435,7 @@ namespace Kratos { if (Cs != 0) { - if (TDim == 3) + if constexpr (TDim == 3) ApplySmagorinsky3D(MolecularViscosity, Cs); else KRATOS_THROW_ERROR(std::logic_error, "smagorinsky not yet implemented in 2D", ""); @@ -1604,12 +1604,12 @@ namespace Kratos // calculate area normals face-by-face array_1d area_normal; // 2D case - if (TDim == 2) + if constexpr (TDim == 2) { for (ModelPart::ConditionsContainerType::iterator cond_it = rConditions.begin(); cond_it != rConditions.end(); cond_it++) CalculateNormal2D(cond_it, area_normal); } // 3D case - else if (TDim == 3) + else if constexpr (TDim == 3) { // help vectors for cross product array_1d v1; @@ -2294,7 +2294,7 @@ namespace Kratos KRATOS_ERROR_IF(aaa[i_node] == 0.0) << "found a 0 hmin on node " << i_node << std::endl; } // take unstructured meshes into account - if (TDim == 2) + if constexpr (TDim == 2) { for (unsigned int i_node = 0; i_node < n_nodes; i_node++) { @@ -2303,7 +2303,7 @@ namespace Kratos h_i = sqrt(2.0 * m_i); } } - else if (TDim == 3) + else if constexpr (TDim == 3) { for (unsigned int i_node = 0; i_node < n_nodes; i_node++) { @@ -2669,12 +2669,12 @@ namespace Kratos // symmetrize and multiply by 2 grad_vx[0] *= 2.0; grad_vy[1] *= 2.0; - if (TDim > 2) + if constexpr (TDim > 2) grad_vz[2] *= 2.0; grad_vx[1] += grad_vy[0]; - if (TDim > 2) + if constexpr (TDim > 2) grad_vx[2] += grad_vz[0]; - if (TDim > 2) + if constexpr (TDim > 2) grad_vy[2] += grad_vz[1]; grad_vy[0] += grad_vx[1]; grad_vz[0] += grad_vx[2]; diff --git a/applications/GeoMechanicsApplication/CMakeLists.txt b/applications/GeoMechanicsApplication/CMakeLists.txt index c42180fd9c4c..94b3edeaf679 100644 --- a/applications/GeoMechanicsApplication/CMakeLists.txt +++ b/applications/GeoMechanicsApplication/CMakeLists.txt @@ -66,6 +66,8 @@ kratos_python_install(${INSTALL_PYTHON_USING_LINKS} ${CMAKE_CURRENT_SOURCE_DIR}/ if(CMAKE_UNITY_BUILD MATCHES ON) set_source_files_properties (${CMAKE_CURRENT_SOURCE_DIR}/custom_elements/U_Pw_small_strain_element.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE) set_source_files_properties (${CMAKE_CURRENT_SOURCE_DIR}/custom_elements/U_Pw_small_strain_FIC_element.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE) + set_source_files_properties (${CMAKE_CURRENT_SOURCE_DIR}/custom_elements/geo_truss_element_base.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE) + set_source_files_properties (${CMAKE_CURRENT_SOURCE_DIR}/custom_elements/geo_cable_element_base.cpp PROPERTIES SKIP_UNITY_BUILD_INCLUSION TRUE) endif(CMAKE_UNITY_BUILD MATCHES ON) # Install python files diff --git a/applications/GeoMechanicsApplication/custom_conditions/U_Pw_condition.cpp b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_condition.cpp index 2c56f57f6f4c..44b6d0012b3f 100644 --- a/applications/GeoMechanicsApplication/custom_conditions/U_Pw_condition.cpp +++ b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_condition.cpp @@ -40,14 +40,14 @@ void UPwCondition:: if (rConditionDofList.size() != conditionSize) rConditionDofList.resize( conditionSize ); - if (TDim == 2) { + if constexpr (TDim == 2) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rConditionDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_X); rConditionDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_Y); rConditionDofList[index++] = rGeom[i].pGetDof(WATER_PRESSURE); } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rConditionDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_X); @@ -138,14 +138,14 @@ void UPwCondition:: if (rResult.size() != conditionSize) rResult.resize( conditionSize ); - if (TDim == 2) { + if constexpr (TDim == 2) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_X).EquationId(); rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_Y).EquationId(); rResult[index++] = rGeom[i].GetDof(WATER_PRESSURE).EquationId(); } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_X).EquationId(); diff --git a/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_lysmer_absorbing_condition.cpp b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_lysmer_absorbing_condition.cpp new file mode 100644 index 000000000000..d1292bd32675 --- /dev/null +++ b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_lysmer_absorbing_condition.cpp @@ -0,0 +1,671 @@ +// KRATOS___ +// // ) ) +// // ___ ___ +// // ____ //___) ) // ) ) +// // / / // // / / +// ((____/ / ((____ ((___/ / MECHANICS +// +// License: geo_mechanics_application/license.txt +// +// +// Main authors: Aron Noordam +// + +// Application includes +#include "custom_conditions/U_Pw_normal_lysmer_absorbing_condition.hpp" + +namespace Kratos +{ + +template< unsigned int TDim, unsigned int TNumNodes > +Condition::Pointer UPwLysmerAbsorbingCondition::Create(IndexType NewId,NodesArrayType const& ThisNodes,PropertiesType::Pointer pProperties) const +{ + return Condition::Pointer(new UPwLysmerAbsorbingCondition(NewId, this->GetGeometry().Create(ThisNodes), pProperties)); +} + +//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +/// +/// Calculates LHS stiffness part of absorbing boundary +/// +/// +/// +/// +template< unsigned int TDim, unsigned int TNumNodes > +void UPwLysmerAbsorbingCondition::CalculateLocalSystem(MatrixType& rLhsMatrix, VectorType& rRightHandSideVector, const ProcessInfo& CurrentProcessInfo) +{ + + //Previous definitions + GeometryType& rGeom = this->GetGeometry(); + + GeometryData::IntegrationMethod rIntegrationMethod = this->mThisIntegrationMethod; + const GeometryType::IntegrationPointsArrayType& IntegrationPoints = rGeom.IntegrationPoints(rIntegrationMethod); + const unsigned int NumGPoints = IntegrationPoints.size(); + const unsigned int LocalDim = rGeom.LocalSpaceDimension(); + + //Containers of variables at all integration points + const Matrix& NContainer = rGeom.ShapeFunctionsValues(rIntegrationMethod); + GeometryType::JacobiansType JContainer(NumGPoints); + for (unsigned int i = 0; i < NumGPoints; ++i) + (JContainer[i]).resize(TDim, LocalDim, false); + rGeom.Jacobian(JContainer, rIntegrationMethod); + + //Condition variables + BoundedMatrix Nu = ZeroMatrix(TDim, N_DOF); + + NormalLysmerAbsorbingVariables rVariables; + + this->GetVariables(rVariables, CurrentProcessInfo); + + + BoundedMatrix AuxAbsKMatrix; + BoundedMatrix rAbsKMatrix = ZeroMatrix(N_DOF, N_DOF); + + //Loop over integration points + for (unsigned int GPoint = 0; GPoint < NumGPoints; ++GPoint) { + + // calculate + rVariables.Ec = 0.0; + rVariables.G = 0.0; + for (unsigned int node = 0; node < rGeom.size(); ++node) + { + rVariables.Ec += NContainer(GPoint, node) * rVariables.EcNodes[node]; + rVariables.G += NContainer(GPoint, node) * rVariables.GNodes[node]; + } + + this->CalculateNodalStiffnessMatrix(rVariables, CurrentProcessInfo, rGeom); + + // calculate displacement shape function matrix + GeoElementUtilities::CalculateNuMatrix(Nu, NContainer, GPoint); + + //Compute weighting coefficient for integration + this->CalculateIntegrationCoefficient(rVariables.IntegrationCoefficient, + JContainer[GPoint], + IntegrationPoints[GPoint].Weight()); + + // set stiffness part of absorbing matrix + AuxAbsKMatrix = prod(rVariables.KAbsMatrix, Nu); + rAbsKMatrix += prod(trans(Nu), AuxAbsKMatrix) * rVariables.IntegrationCoefficient; + + } + rVariables.UMatrix = rAbsKMatrix; + + // assemble left hand side vector + if (rLhsMatrix.size1() != CONDITION_SIZE) + rLhsMatrix.resize(CONDITION_SIZE, CONDITION_SIZE, false); + + noalias(rLhsMatrix) = ZeroMatrix(CONDITION_SIZE, CONDITION_SIZE); + this->CalculateAndAddLHS(rLhsMatrix, rVariables); + + // no righthand side contribution + if (rRightHandSideVector.size() != CONDITION_SIZE) + rRightHandSideVector.resize(CONDITION_SIZE, false); + noalias(rRightHandSideVector) = ZeroVector(CONDITION_SIZE); +} + +/// +/// Calculates LHS Damping part of abosrbing boundary +/// +/// +/// +template< unsigned int TDim, unsigned int TNumNodes > +void UPwLysmerAbsorbingCondition::CalculateDampingMatrix(MatrixType& rDampingMatrix, const ProcessInfo& CurrentProcessInfo) +{ + + //Previous definitions + GeometryType& rGeom = this->GetGeometry(); + + GeometryData::IntegrationMethod rIntegrationMethod = this->mThisIntegrationMethod; + const GeometryType::IntegrationPointsArrayType& IntegrationPoints = rGeom.IntegrationPoints(rIntegrationMethod); + const unsigned int NumGPoints = IntegrationPoints.size(); + const unsigned int LocalDim = rGeom.LocalSpaceDimension(); + + //Containers of variables at all integration points + const Matrix& NContainer = rGeom.ShapeFunctionsValues(rIntegrationMethod); + GeometryType::JacobiansType JContainer(NumGPoints); + for (unsigned int i = 0; i < NumGPoints; ++i) + (JContainer[i]).resize(TDim, LocalDim, false); + rGeom.Jacobian(JContainer, rIntegrationMethod); + + //Condition variables + BoundedMatrix Nu = ZeroMatrix(TDim, N_DOF); + + NormalLysmerAbsorbingVariables rVariables; + this->GetVariables(rVariables, CurrentProcessInfo); + + BoundedMatrix AuxAbsMatrix; + BoundedMatrix rAbsMatrix = ZeroMatrix(N_DOF, N_DOF); + + //Loop over integration points + for (unsigned int GPoint = 0; GPoint < NumGPoints; ++GPoint) { + + // calculate + rVariables.rho = 0.0; + rVariables.Ec = 0.0; + rVariables.G = 0.0; + for (unsigned int node = 0; node < rGeom.size(); ++node) + { + rVariables.rho += NContainer(GPoint, node) * rVariables.rhoNodes[node]; + rVariables.Ec += NContainer(GPoint, node) * rVariables.EcNodes[node]; + rVariables.G += NContainer(GPoint, node) * rVariables.GNodes[node]; + } + rVariables.vp = sqrt(rVariables.Ec / rVariables.rho); + rVariables.vs = sqrt(rVariables.G / rVariables.rho); + + this->CalculateNodalDampingMatrix(rVariables, CurrentProcessInfo, rGeom); + + // calculate displacement shape function matrix + GeoElementUtilities::CalculateNuMatrix(Nu, NContainer, GPoint); + + //Compute weighting coefficient for integration + this->CalculateIntegrationCoefficient(rVariables.IntegrationCoefficient, + JContainer[GPoint], + IntegrationPoints[GPoint].Weight()); + + // set damping part of absorbing matrix + AuxAbsMatrix = prod(rVariables.CAbsMatrix, Nu); + rAbsMatrix += prod(trans(Nu), AuxAbsMatrix) * rVariables.IntegrationCoefficient; + } + rVariables.UMatrix = rAbsMatrix; + + + // assemble left hand side vector + if (rDampingMatrix.size1() != CONDITION_SIZE) + rDampingMatrix.resize(CONDITION_SIZE, CONDITION_SIZE, false); + noalias(rDampingMatrix) = ZeroMatrix(CONDITION_SIZE, CONDITION_SIZE); + + this->CalculateAndAddLHS(rDampingMatrix, rVariables); +} + +//---------------------------------------------------------------------------------------- +//---------------------------------------------------------------------------------------- + +/// +/// Gets the velocity vector of the absorbing boundary +/// +/// +/// +template< unsigned int TDim, unsigned int TNumNodes > +void UPwLysmerAbsorbingCondition::GetFirstDerivativesVector(Vector& rValues, int Step) const +{ + KRATOS_TRY + + const GeometryType& rGeom = this->GetGeometry(); + + if (rValues.size() != CONDITION_SIZE) + rValues.resize(CONDITION_SIZE, false); + + if (TDim == 2) { + unsigned int index = 0; + for (unsigned int i = 0; i < TNumNodes; ++i) { + rValues[index++] = rGeom[i].FastGetSolutionStepValue(VELOCITY_X, Step); + rValues[index++] = rGeom[i].FastGetSolutionStepValue(VELOCITY_Y, Step); + rValues[index++] = 0.0; + } + } + else if (TDim == 3) { + unsigned int index = 0; + for (unsigned int i = 0; i < TNumNodes; ++i) { + rValues[index++] = rGeom[i].FastGetSolutionStepValue(VELOCITY_X, Step); + rValues[index++] = rGeom[i].FastGetSolutionStepValue(VELOCITY_Y, Step); + rValues[index++] = rGeom[i].FastGetSolutionStepValue(VELOCITY_Z, Step); + rValues[index++] = 0.0; + } + } + else { + KRATOS_ERROR << "undefined dimension in GetFirstDerivativesVector... illegal operation!!" << this->Id() << std::endl; + } + + KRATOS_CATCH("") +} + +/// +/// Calculates the damping constant in all directions +/// +/// +/// +/// +template< unsigned int TDim, unsigned int TNumNodes > +void UPwLysmerAbsorbingCondition:: +CalculateNodalDampingMatrix(NormalLysmerAbsorbingVariables& rVariables, const ProcessInfo& CurrentProcessInfo, const Element::GeometryType& Geom) +{ + array_1d dampingConstants; + + // calculate rotation matrix + BoundedMatrix rotationMatrix; + CalculateRotationMatrix(rotationMatrix, Geom); + + const int local_perpendicular_direction = TDim - 1; + + // calculate constant traction vector part + dampingConstants[0] = rVariables.vs * rVariables.rho * rVariables.s_factor; + dampingConstants[1] = rVariables.vp * rVariables.rho * rVariables.p_factor; + + BoundedMatrix localCMatrix = ZeroMatrix(TDim, TDim); + BoundedMatrix auxLocalCMatrix = ZeroMatrix(TDim, TDim); + + rVariables.CAbsMatrix = ZeroMatrix(TDim, TDim); + + for (unsigned int idim = 0; idim < TDim; ++idim) { + localCMatrix(idim, idim) = dampingConstants[0]; + } + localCMatrix(local_perpendicular_direction, local_perpendicular_direction) = dampingConstants[1]; + + auxLocalCMatrix = prod(localCMatrix, rotationMatrix); + rVariables.CAbsMatrix = prod(trans(rotationMatrix), auxLocalCMatrix); + + for (unsigned int idim = 0; idim < TDim; ++idim) { + rVariables.CAbsMatrix(idim, idim) = abs(rVariables.CAbsMatrix(idim, idim)); + } +} + +/// +/// Calculates the stiffness constants in all directions +/// +/// +/// +/// +template< unsigned int TDim, unsigned int TNumNodes > +void UPwLysmerAbsorbingCondition:: +CalculateNodalStiffnessMatrix(NormalLysmerAbsorbingVariables& rVariables, const ProcessInfo& CurrentProcessInfo, const Element::GeometryType& Geom) +{ + array_1d stiffnessConstants; + + // calculate rotation matrix + BoundedMatrix rotationMatrix; + CalculateRotationMatrix(rotationMatrix, Geom); + + const int local_perpendicular_direction = TDim - 1; + + // calculate constant traction vector part + stiffnessConstants[0] = rVariables.G / rVariables.virtual_thickness; + stiffnessConstants[1] = rVariables.Ec / rVariables.virtual_thickness; + + BoundedMatrix localKMatrix = ZeroMatrix(TDim, TDim); + BoundedMatrix auxLocalKMatrix = ZeroMatrix(TDim, TDim); + + rVariables.KAbsMatrix = ZeroMatrix(TDim, TDim); + + for (unsigned int idim = 0; idim < TDim; ++idim) { + localKMatrix(idim, idim) = stiffnessConstants[0]; + } + localKMatrix(local_perpendicular_direction, local_perpendicular_direction) = stiffnessConstants[1]; + + auxLocalKMatrix = prod(localKMatrix, rotationMatrix); + rVariables.KAbsMatrix = prod(trans(rotationMatrix), auxLocalKMatrix); + + for (unsigned int idim = 0; idim < TDim; ++idim) { + rVariables.KAbsMatrix(idim, idim) = abs(rVariables.KAbsMatrix(idim, idim)); + } +} + +/// +/// Calculates the extrapolation matrix for neighbour elements. Values from integration points are extrapolated to the nodes +/// +/// +/// +template< unsigned int TDim, unsigned int TNumNodes > +Matrix UPwLysmerAbsorbingCondition::CalculateExtrapolationMatrixNeighbour(const Element& NeighbourElement) +{ + const GeometryData::IntegrationMethod rIntegrationMethodNeighbour = NeighbourElement.GetIntegrationMethod(); + const GeometryType& rNeighbourGeom = NeighbourElement.GetGeometry(); + const IndexType rNumNodesNeighbour = rNeighbourGeom.size(); + const IndexType NumGPointsNeighbour = rNeighbourGeom.IntegrationPointsNumber(rIntegrationMethodNeighbour); + + Matrix rExtrapolationMatrix = ZeroMatrix(rNumNodesNeighbour, NumGPointsNeighbour); + + // Calculate extrapolation matrix for 2d elements + if (TDim == 2) + { + if (rNumNodesNeighbour == 3) + { + GeoElementUtilities::CalculateExtrapolationMatrixTriangle(rExtrapolationMatrix, rIntegrationMethodNeighbour); + return rExtrapolationMatrix; + } + if (rNumNodesNeighbour == 4) + { + GeoElementUtilities::CalculateExtrapolationMatrixQuad(rExtrapolationMatrix, rIntegrationMethodNeighbour); + return rExtrapolationMatrix; + } + + } + // Calculate extrapolation matrix for 3d elements + if (TDim == 3) + { + if (rNumNodesNeighbour == 4) + { + GeoElementUtilities::CalculateExtrapolationMatrixTetra(rExtrapolationMatrix, rIntegrationMethodNeighbour); + return rExtrapolationMatrix; + } + if (rNumNodesNeighbour == 8) + { + GeoElementUtilities::CalculateExtrapolationMatrixHexa(rExtrapolationMatrix, rIntegrationMethodNeighbour); + return rExtrapolationMatrix; + } + + } + + // if no extrapolation matrix is implemented, take average values at gauss points + double averaging_factor = 1 / NumGPointsNeighbour; + for (unsigned int node = 0; node < rNumNodesNeighbour; ++node) + { + for (unsigned int GPoint = 0; GPoint < NumGPointsNeighbour; ++GPoint) + { + rExtrapolationMatrix(node, GPoint) = averaging_factor; + } + } + return rExtrapolationMatrix; +} + +/// +/// This method gets the average of the variables of all the neighbour elements of the condition. +/// +/// +/// +template< unsigned int TDim, unsigned int TNumNodes > +void UPwLysmerAbsorbingCondition:: +GetNeighbourElementVariables( + NormalLysmerAbsorbingVariables& rVariables, const ProcessInfo& rCurrentProcessInfo) +{ + + // get neighbour elements + auto neighbours = this->GetValue(NEIGHBOUR_ELEMENTS); + GeometryType& rGeom = this->GetGeometry(); + + if (neighbours.size() == 0) + { + KRATOS_ERROR << "Condition: " <Id()<<" does not have neighbour elements" << std::endl; + } + + rVariables.EcNodes.resize(TNumNodes); + rVariables.GNodes.resize(TNumNodes); + rVariables.rhoNodes.resize(TNumNodes); + + // only get values from first neighbour + Element& rNeighbour = neighbours[0]; + auto rPropNeighbour = rNeighbour.GetProperties(); + + const GeometryType& rNeighbourGeom = rNeighbour.GetGeometry(); + const GeometryData::IntegrationMethod rIntegrationMethodNeighbour = rNeighbour.GetIntegrationMethod(); + const IndexType rNumNodesNeighbour = rNeighbourGeom.size(); + const IndexType NumGPointsNeighbour = rNeighbourGeom.IntegrationPointsNumber(rIntegrationMethodNeighbour); + + // get density and porosity from element + std::vector SaturationVector; + vector DensityVector(NumGPointsNeighbour); + vector ConfinedStiffness(NumGPointsNeighbour); + vector ShearStiffness(NumGPointsNeighbour); + + std::vector stdConfinedStiffness(NumGPointsNeighbour); + std::vector stdShearStiffness(NumGPointsNeighbour); + + // get parameters at neighbour element integration points + rNeighbour.CalculateOnIntegrationPoints(DEGREE_OF_SATURATION, SaturationVector, rCurrentProcessInfo); + rNeighbour.CalculateOnIntegrationPoints(CONFINED_STIFFNESS, stdConfinedStiffness, rCurrentProcessInfo); + rNeighbour.CalculateOnIntegrationPoints(SHEAR_STIFFNESS, stdShearStiffness, rCurrentProcessInfo); + + for (unsigned int GPoint = 0; GPoint < NumGPointsNeighbour; ++GPoint) { + + // transform std vectors to boost vectors + ConfinedStiffness[GPoint] = stdConfinedStiffness[GPoint]; + ShearStiffness[GPoint] = stdShearStiffness[GPoint]; + + // calculate density mixture + DensityVector[GPoint] = (SaturationVector[GPoint] * rPropNeighbour[POROSITY] * rPropNeighbour[DENSITY_WATER]) + (1.0 - rPropNeighbour[POROSITY]) * rPropNeighbour[DENSITY_SOLID]; + } + + Matrix rExtrapolationMatrix = CalculateExtrapolationMatrixNeighbour(rNeighbour); + + // project parameters on neighbour nodes + vector EcNodesNeighbour = prod(rExtrapolationMatrix, ConfinedStiffness); + vector GNodesNeighbour = prod(rExtrapolationMatrix, ShearStiffness); + vector rhoNodesNeighbour = prod(rExtrapolationMatrix, DensityVector); + + // add parameters to condition nodes + for (unsigned int k = 0; k < rNumNodesNeighbour; ++k) + { + for (unsigned int node = 0; node < TNumNodes; ++node) + { + // add parameter if neighbour node id and condition node id are the same + if (rNeighbourGeom[k].Id() == rGeom[node].Id()) + { + rVariables.EcNodes[node] = EcNodesNeighbour(k); + rVariables.GNodes[node] = GNodesNeighbour(k); + rVariables.rhoNodes[node] = rhoNodesNeighbour(k); + } + } + } +} + +/// +/// Gets condition variables +/// +/// +/// +template< unsigned int TDim, unsigned int TNumNodes > +void UPwLysmerAbsorbingCondition:: +GetVariables( + NormalLysmerAbsorbingVariables& rVariables, const ProcessInfo& rCurrentProcessInfo) +{ + // gets variables from neighbour elements + this->GetNeighbourElementVariables(rVariables, rCurrentProcessInfo); + + // get condition specific variables + Vector absorbing_factors = this->GetValue(ABSORBING_FACTORS); + rVariables.p_factor = absorbing_factors(0); + rVariables.s_factor = absorbing_factors(1); + rVariables.virtual_thickness = this->GetValue(VIRTUAL_THICKNESS); +} + + +template< unsigned int TDim, unsigned int TNumNodes > +void UPwLysmerAbsorbingCondition:: +CalculateAndAddLHS(MatrixType& rLeftHandSideMatrix, + NormalLysmerAbsorbingVariables& rVariables) +{ + //Adding contribution to left hand side + + GeoElementUtilities:: + AssembleUBlockMatrix< TDim, TNumNodes >(rLeftHandSideMatrix, + rVariables.UMatrix); +} + +template< > +void UPwLysmerAbsorbingCondition<2, 2>::CalculateRotationMatrix( BoundedMatrix& rRotationMatrix, const Element::GeometryType& rGeom) +{ + //Line_2d_2 + //Unitary vector in local x direction + array_1d Vx; + noalias(Vx) = rGeom.GetPoint(1) - rGeom.GetPoint(0); + const double norm_x = norm_2(Vx); + + Vx[0] *= 1.0 / norm_x; + Vx[1] *= 1.0 / norm_x; + + //Rotation Matrix + rRotationMatrix(0, 0) = Vx[0]; + rRotationMatrix(0, 1) = Vx[1]; + + // We need to determine the unitary vector in local y direction pointing towards the TOP face of the joint + + // Unitary vector in local x direction (3D) + array_1d Vx3D; + Vx3D[0] = Vx[0]; + Vx3D[1] = Vx[1]; + Vx3D[2] = 0.0; + + // Unitary vector in local y direction (first option) + array_1d Vy3D; + Vy3D[0] = -Vx[1]; + Vy3D[1] = Vx[0]; + Vy3D[2] = 0.0; + + // Vector in global z direction (first option) + array_1d Vz; + MathUtils::CrossProduct(Vz, Vx3D, Vy3D); + + // Vz must have the same sign as vector (0,0,1) + if (Vz[2] > 0.0) + { + rRotationMatrix(1, 0) = -Vx[1]; + rRotationMatrix(1, 1) = Vx[0]; + } + else + { + rRotationMatrix(1, 0) = Vx[1]; + rRotationMatrix(1, 1) = -Vx[0]; + } + +} + + +template< > +void UPwLysmerAbsorbingCondition<2, 3>::CalculateRotationMatrix(BoundedMatrix& rRotationMatrix, const Element::GeometryType& rGeom) +{ + //Line_2d_3 + //Unitary vector in local x direction + array_1d Vx; + noalias(Vx) = rGeom.GetPoint(1) - rGeom.GetPoint(0); + const double norm_x = norm_2(Vx); + + Vx[0] *= 1.0 / norm_x; + Vx[1] *= 1.0 / norm_x; + + //Rotation Matrix + rRotationMatrix(0, 0) = Vx[0]; + rRotationMatrix(0, 1) = Vx[1]; + + // We need to determine the unitary vector in local y direction pointing towards the TOP face of the joint + + // Unitary vector in local x direction (3D) + array_1d Vx3D; + Vx3D[0] = Vx[0]; + Vx3D[1] = Vx[1]; + Vx3D[2] = 0.0; + + // Unitary vector in local y direction (first option) + array_1d Vy3D; + Vy3D[0] = -Vx[1]; + Vy3D[1] = Vx[0]; + Vy3D[2] = 0.0; + + // Vector in global z direction (first option) + array_1d Vz; + MathUtils::CrossProduct(Vz, Vx3D, Vy3D); + + // Vz must have the same sign as vector (0,0,1) + if (Vz[2] > 0.0) + { + rRotationMatrix(1, 0) = -Vx[1]; + rRotationMatrix(1, 1) = Vx[0]; + } + else + { + rRotationMatrix(1, 0) = Vx[1]; + rRotationMatrix(1, 1) = -Vx[0]; + } +} + +template< > +void UPwLysmerAbsorbingCondition<3, 3>::CalculateRotationMatrix(BoundedMatrix& rRotationMatrix, const Element::GeometryType& rGeom) +{ + + ////triangle_3d_3 + array_1d pmid0; + array_1d pmid1; + noalias(pmid0) = 0.5 * (rGeom.GetPoint(0) + rGeom.GetPoint(1)); + noalias(pmid1) = 0.5 * (rGeom.GetPoint(0) + rGeom.GetPoint(2)); + + //Unitary vector in local x direction + array_1d Vx; + noalias(Vx) = rGeom.GetPoint(1) - rGeom.GetPoint(0); + const double inv_norm_x = 1.0 / norm_2(Vx); + Vx[0] *= inv_norm_x; + Vx[1] *= inv_norm_x; + Vx[2] *= inv_norm_x; + + //Unitary vector in local z direction + array_1d Vy; + noalias(Vy) = rGeom.GetPoint(2) - rGeom.GetPoint(0); + + array_1d Vz; + MathUtils::CrossProduct(Vz, Vx, Vy); + const double norm_z = norm_2(Vz); + + Vz[0] *= 1.0 / norm_z; + Vz[1] *= 1.0 / norm_z; + Vz[2] *= 1.0 / norm_z; + + //Unitary vector in local y direction + MathUtils::CrossProduct(Vy, Vz, Vx); + + //Rotation Matrix + rRotationMatrix(0, 0) = Vx[0]; + rRotationMatrix(0, 1) = Vx[1]; + rRotationMatrix(0, 2) = Vx[2]; + + rRotationMatrix(1, 0) = Vy[0]; + rRotationMatrix(1, 1) = Vy[1]; + rRotationMatrix(1, 2) = Vy[2]; + + rRotationMatrix(2, 0) = Vz[0]; + rRotationMatrix(2, 1) = Vz[1]; + rRotationMatrix(2, 2) = Vz[2]; +} +//---------------------------------------------------------------------------------------- + +template< > +void UPwLysmerAbsorbingCondition<3, 4>::CalculateRotationMatrix( BoundedMatrix& rRotationMatrix, const Element::GeometryType& rGeom) +{ + //Quadrilateral_3d_4 + array_1d pmid0; + array_1d pmid1; + const array_1d P2 = array_1d(rGeom.GetPoint(2)); + noalias(pmid0) = 0.5 * (rGeom.GetPoint(0) + rGeom.GetPoint(3)); + noalias(pmid1) = 0.5 * (rGeom.GetPoint(1) + P2); + + //Unitary vector in local x direction + array_1d Vx; + noalias(Vx) = pmid1 - pmid0; + const double inv_norm_x = 1.0 / norm_2(Vx); + Vx[0] *= inv_norm_x; + Vx[1] *= inv_norm_x; + Vx[2] *= inv_norm_x; + + //Unitary vector in local z direction + array_1d Vy; + noalias(Vy) = P2 - pmid0; + array_1d Vz; + MathUtils::CrossProduct(Vz, Vx, Vy); + const double norm_z = norm_2(Vz); + + Vz[0] *= 1.0 / norm_z; + Vz[1] *= 1.0 / norm_z; + Vz[2] *= 1.0 / norm_z; + + //Unitary vector in local y direction + MathUtils::CrossProduct(Vy, Vz, Vx); + + //Rotation Matrix + rRotationMatrix(0, 0) = Vx[0]; + rRotationMatrix(0, 1) = Vx[1]; + rRotationMatrix(0, 2) = Vx[2]; + + rRotationMatrix(1, 0) = Vy[0]; + rRotationMatrix(1, 1) = Vy[1]; + rRotationMatrix(1, 2) = Vy[2]; + + rRotationMatrix(2, 0) = Vz[0]; + rRotationMatrix(2, 1) = Vz[1]; + rRotationMatrix(2, 2) = Vz[2]; +} +// + +//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +template class UPwLysmerAbsorbingCondition<2,2>; +template class UPwLysmerAbsorbingCondition<2,3>; +template class UPwLysmerAbsorbingCondition<3,3>; +template class UPwLysmerAbsorbingCondition<3,4>; + +} // Namespace Kratos. diff --git a/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_lysmer_absorbing_condition.hpp b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_lysmer_absorbing_condition.hpp new file mode 100644 index 000000000000..b55174db240c --- /dev/null +++ b/applications/GeoMechanicsApplication/custom_conditions/U_Pw_normal_lysmer_absorbing_condition.hpp @@ -0,0 +1,145 @@ +// KRATOS___ +// // ) ) +// // ___ ___ +// // ____ //___) ) // ) ) +// // / / // // / / +// ((____/ / ((____ ((___/ / MECHANICS +// +// License: geo_mechanics_application/license.txt +// +// +// Main authors: Aron Noordam +// + + +#if !defined(KRATOS_GEO_U_PW_NORMAL_LYSMER_ABSORBING_CONDITION_H_INCLUDED ) +#define KRATOS_GEO_U_PW_NORMAL_LYSMER_ABSORBING_CONDITION_H_INCLUDED + +// Project includes +#include "includes/serializer.h" + +// Application includes +#include "custom_conditions/U_Pw_condition.hpp" +#include "custom_conditions/U_Pw_face_load_condition.hpp" +#include "custom_utilities/element_utilities.hpp" +#include "custom_utilities/condition_utilities.hpp" +#include "geo_mechanics_application_variables.h" + +namespace Kratos +{ + +template< unsigned int TDim, unsigned int TNumNodes > +class KRATOS_API(GEO_MECHANICS_APPLICATION) UPwLysmerAbsorbingCondition : public UPwFaceLoadCondition +{ + +public: + + KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(UPwLysmerAbsorbingCondition); + + typedef std::size_t IndexType; + typedef Properties PropertiesType; + typedef Node <3> NodeType; + typedef Geometry GeometryType; + typedef Geometry::PointsArrayType NodesArrayType; + typedef Vector VectorType; + typedef Matrix MatrixType; + using UPwCondition::mThisIntegrationMethod; + +//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + + // Default constructor + UPwLysmerAbsorbingCondition() : UPwFaceLoadCondition() {} + + // Constructor 1 + UPwLysmerAbsorbingCondition( IndexType NewId, GeometryType::Pointer pGeometry ) : UPwFaceLoadCondition(NewId, pGeometry) {} + + // Constructor 2 + UPwLysmerAbsorbingCondition( IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties ) : UPwFaceLoadCondition(NewId, pGeometry, pProperties) {} + + // Destructor + ~UPwLysmerAbsorbingCondition() override {} + +//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + + Condition::Pointer Create(IndexType NewId,NodesArrayType const& ThisNodes,PropertiesType::Pointer pProperties ) const override; + + void GetFirstDerivativesVector(Vector& rValues, int Step) const override; + +//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +protected: + + static constexpr SizeType N_DOF = TNumNodes * TDim; + static constexpr SizeType CONDITION_SIZE = TNumNodes * TDim + TNumNodes; + + struct NormalLysmerAbsorbingVariables + { + double IntegrationCoefficient; + array_1d Np; + BoundedMatrix UMatrix; + double rho; // density of soil mixture + double Ec; // p wave modulus + double G; // shear modulus + double n; // porosity + double vp; // p wave velocity + double vs; // shear wave velocity + double p_factor; // p wave relaxation factor + double s_factor; // s wave relaxation factor + double virtual_thickness; + vector EcNodes; + vector GNodes; + vector SaturationNodes; + vector rhoNodes; + + BoundedMatrix CAbsMatrix; // damping part of absorbing matrix; + BoundedMatrix KAbsMatrix; // stiffness part of absorbing matrix; + }; + + // Member Variables + +//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + void CalculateDampingMatrix(MatrixType& rDampingMatrix, const ProcessInfo& CurrentProcessInfo) override; + + void CalculateLocalSystem(MatrixType& rLhsMatrix, VectorType& rRightHandSideVector, const ProcessInfo& CurrentProcessInfo) override; + + void CalculateAndAddLHS(MatrixType& rLeftHandSideMatrix, NormalLysmerAbsorbingVariables& rVariables); + + void CalculateRotationMatrix(BoundedMatrix& rRotationMatrix, const Element::GeometryType& Geom); + + void GetNeighbourElementVariables(NormalLysmerAbsorbingVariables& rVariables, const ProcessInfo& CurrentProcessInfo); + + void GetVariables(NormalLysmerAbsorbingVariables& rVariables, const ProcessInfo& CurrentProcessInfo); + + void CalculateNodalDampingMatrix(NormalLysmerAbsorbingVariables& rVariables, const ProcessInfo& CurrentProcessInfo, const Element::GeometryType& Geom); + + void CalculateNodalStiffnessMatrix(NormalLysmerAbsorbingVariables& rVariables, const ProcessInfo& CurrentProcessInfo, const Element::GeometryType& Geom); + + Matrix CalculateExtrapolationMatrixNeighbour(const Element& NeighbourElement); +//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +private: + typedef std::unordered_multimap, std::vector, KeyHasherRange>, KeyComparorRange> > hashmap; + + // Member Variables + +//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + + // Serialization + + friend class Serializer; + + void save(Serializer& rSerializer) const override + { + KRATOS_SERIALIZE_SAVE_BASE_CLASS( rSerializer, Condition ) + } + + void load(Serializer& rSerializer) override + { + KRATOS_SERIALIZE_LOAD_BASE_CLASS( rSerializer, Condition ) + } + +}; // class UPwLysmerAbsorbingCondition. + +} // namespace Kratos. + +#endif // KRATOS_GEO_U_PW_NORMAL_LYSMER_ABSORBING_CONDITION_H_INCLUDED defined diff --git a/applications/GeoMechanicsApplication/custom_elements/U_Pw_base_element.cpp b/applications/GeoMechanicsApplication/custom_elements/U_Pw_base_element.cpp index c824fb749c52..b4b96d7d745a 100644 --- a/applications/GeoMechanicsApplication/custom_elements/U_Pw_base_element.cpp +++ b/applications/GeoMechanicsApplication/custom_elements/U_Pw_base_element.cpp @@ -153,7 +153,7 @@ void UPwBaseElement:: // resize mStressVector: if ( mStressVector.size() != NumGPoints ) { unsigned int VoigtSize = VOIGT_SIZE_3D; - if (TDim == 2) VoigtSize = VOIGT_SIZE_2D_PLANE_STRAIN; + if constexpr (TDim == 2) VoigtSize = VOIGT_SIZE_2D_PLANE_STRAIN; mStressVector.resize(NumGPoints); for (unsigned int i=0; i < mStressVector.size(); ++i) { mStressVector[i].resize(VoigtSize); @@ -233,7 +233,7 @@ void UPwBaseElement:: if (rElementalDofList.size() != N_DOF) rElementalDofList.resize( N_DOF ); - if (TDim == 3) { + if constexpr (TDim == 3) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_X); @@ -241,7 +241,7 @@ void UPwBaseElement:: rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_Z); rElementalDofList[index++] = rGeom[i].pGetDof(WATER_PRESSURE); } - } else if (TDim == 2) { + } else if constexpr (TDim == 2) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_X); @@ -360,14 +360,14 @@ void UPwBaseElement:: if (rResult.size() != N_DOF) rResult.resize( N_DOF, false ); - if (TDim == 2) { + if constexpr (TDim == 2) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_X).EquationId(); rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_Y).EquationId(); rResult[index++] = rGeom[i].GetDof(WATER_PRESSURE).EquationId(); } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_X).EquationId(); @@ -492,7 +492,7 @@ void UPwBaseElement:: rValues[index++] = rGeom[i].FastGetSolutionStepValue( VELOCITY_Y, Step ); rValues[index++] = 0.0; } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { unsigned int index = 0; for ( unsigned int i = 0; i < TNumNodes; ++i ) { rValues[index++] = rGeom[i].FastGetSolutionStepValue( VELOCITY_X, Step ); @@ -527,7 +527,7 @@ void UPwBaseElement:: rValues[index++] = rGeom[i].FastGetSolutionStepValue( ACCELERATION_Y, Step ); rValues[index++] = 0.0; } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { unsigned int index = 0; for ( unsigned int i = 0; i < TNumNodes; ++i ) { rValues[index++] = rGeom[i].FastGetSolutionStepValue( ACCELERATION_X, Step ); @@ -606,7 +606,61 @@ void UPwBaseElement:: KRATOS_CATCH( "" ) } +//---------------------------------------------------------------------------------------- +template< unsigned int TDim, unsigned int TNumNodes > +void UPwBaseElement:: +CalculateOnIntegrationPoints(const Variable>& rVariable, + std::vector>& rValues, + const ProcessInfo& rCurrentProcessInfo) +{ + KRATOS_TRY + + KRATOS_ERROR << "calling the default CalculateOnIntegrationPoints (array_1d) method for a particular element ... illegal operation!!" << this->Id() << std::endl; + + KRATOS_CATCH("") +} + +//---------------------------------------------------------------------------------------- +template< unsigned int TDim, unsigned int TNumNodes > +void UPwBaseElement:: +CalculateOnIntegrationPoints(const Variable& rVariable, + std::vector& rValues, + const ProcessInfo& rCurrentProcessInfo) +{ + KRATOS_TRY + + KRATOS_ERROR << "calling the default CalculateOnIntegrationPoints (Matrix) method for a particular element ... illegal operation!!" << this->Id() << std::endl; + + KRATOS_CATCH("") +} +//---------------------------------------------------------------------------------------- +template< unsigned int TDim, unsigned int TNumNodes > +void UPwBaseElement:: +CalculateOnIntegrationPoints(const Variable& rVariable, + std::vector& rValues, + const ProcessInfo& rCurrentProcessInfo) +{ + KRATOS_TRY + + KRATOS_ERROR << "calling the default CalculateOnIntegrationPoints (Vector) method for a particular element ... illegal operation!!" << this->Id() << std::endl; + + KRATOS_CATCH("") +} + +//---------------------------------------------------------------------------------------- +template< unsigned int TDim, unsigned int TNumNodes > +void UPwBaseElement:: +CalculateOnIntegrationPoints(const Variable& rVariable, + std::vector& rValues, + const ProcessInfo& rCurrentProcessInfo) +{ + KRATOS_TRY + + KRATOS_ERROR << "calling the default CalculateOnIntegrationPoints (double) method for a particular element ... illegal operation!!" << this->Id() << std::endl; + + KRATOS_CATCH("") +} //------------------------------------------------------------------------------------------------------------------------------------------- template< unsigned int TDim, unsigned int TNumNodes > void UPwBaseElement:: diff --git a/applications/GeoMechanicsApplication/custom_elements/U_Pw_base_element.hpp b/applications/GeoMechanicsApplication/custom_elements/U_Pw_base_element.hpp index c214c5a825c6..0a845edceacc 100644 --- a/applications/GeoMechanicsApplication/custom_elements/U_Pw_base_element.hpp +++ b/applications/GeoMechanicsApplication/custom_elements/U_Pw_base_element.hpp @@ -118,6 +118,23 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) UPwBaseElement : public Element std::vector& rValues, const ProcessInfo& rCurrentProcessInfo ) override; + void CalculateOnIntegrationPoints(const Variable>& rVariable, + std::vector>& rValues, + const ProcessInfo& rCurrentProcessInfo) override; + + void CalculateOnIntegrationPoints(const Variable& rVariable, + std::vector& rValues, + const ProcessInfo& rCurrentProcessInfo) override; + + void CalculateOnIntegrationPoints(const Variable& rVariable, + std::vector& rValues, + const ProcessInfo& rCurrentProcessInfo) override; + + void CalculateOnIntegrationPoints(const Variable& rVariable, + std::vector& rValues, + const ProcessInfo& rCurrentProcessInfo) override; + + void SetValuesOnIntegrationPoints(const Variable& rVariable, const std::vector& rValues, const ProcessInfo& rCurrentProcessInfo) override; diff --git a/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_element.cpp b/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_element.cpp index 8398d7505ed9..3c107fe41da4 100644 --- a/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_element.cpp +++ b/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_element.cpp @@ -78,7 +78,7 @@ int UPwSmallStrainElement:: if ( rProp.Has( PERMEABILITY_XY ) == false || rProp[PERMEABILITY_XY] < 0.0 ) KRATOS_ERROR << "PERMEABILITY_XY has Key zero, is not defined or has an invalid value at element" << this->Id() << std::endl; - if (TDim > 2) { + if constexpr (TDim > 2) { if ( rProp.Has( PERMEABILITY_ZZ ) == false || rProp[PERMEABILITY_ZZ] < 0.0 ) KRATOS_ERROR << "PERMEABILITY_ZZ has Key zero, is not defined or has an invalid value at element" << this->Id() << std::endl; @@ -625,7 +625,74 @@ void UPwSmallStrainElement:: rOutput[GPoint] = HydraulicHead; } - } else { + } + else if (rVariable == CONFINED_STIFFNESS || rVariable == SHEAR_STIFFNESS) { + size_t variable_index; + if (rVariable == CONFINED_STIFFNESS) + { + if (TDim == 2) + { + variable_index = INDEX_2D_PLANE_STRAIN_XX; + } + else if (TDim == 3) + { + variable_index = INDEX_3D_XX; + } + else + { + KRATOS_ERROR << "CONFINED_STIFFNESS can not be retrieved for dim " << TDim << " in element: " << this->Id() << std::endl; + } + } + else if (rVariable == SHEAR_STIFFNESS) + { + if (TDim == 2) + { + variable_index = INDEX_2D_PLANE_STRAIN_XY; + } + else if (TDim == 3) + { + variable_index = INDEX_3D_XZ; + } + else + { + KRATOS_ERROR << "SHEAR_STIFFNESS can not be retrieved for dim " << TDim << " in element: " << this->Id() << std::endl; + } + } + + ElementVariables Variables; + this->InitializeElementVariables(Variables, + rCurrentProcessInfo); + + if (rOutput.size() != mConstitutiveLawVector.size()) + rOutput.resize(mConstitutiveLawVector.size()); + + for (unsigned int GPoint = 0; GPoint < mConstitutiveLawVector.size(); ++GPoint) { + const PropertiesType& rProp = this->GetProperties(); + + ConstitutiveLaw::Parameters ConstitutiveParameters(rGeom, rProp, rCurrentProcessInfo); + ConstitutiveParameters.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN); + ConstitutiveParameters.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); + + + //Compute Np, GradNpT, B and StrainVector + this->CalculateKinematics(Variables, GPoint); + + //Compute infinitessimal strain + this->CalculateStrain(Variables, GPoint); + + //set gauss points variables to constitutivelaw parameters + this->SetConstitutiveParameters(Variables, ConstitutiveParameters); + + //compute constitutive tensor and/or stresses + noalias(Variables.StressVector) = mStressVector[GPoint]; + ConstitutiveParameters.SetStressVector(Variables.StressVector); + + mConstitutiveLawVector[GPoint]->CalculateMaterialResponseCauchy(ConstitutiveParameters); + + rOutput[GPoint] = Variables.ConstitutiveMatrix(variable_index, variable_index); + } + } + else { if ( rOutput.size() != mConstitutiveLawVector.size() ) rOutput.resize(mConstitutiveLawVector.size()); @@ -1367,7 +1434,7 @@ void UPwSmallStrainElement:: unsigned int index; - if (TDim > 2) { + if constexpr (TDim > 2) { for ( unsigned int i = 0; i < TNumNodes; ++i ) { index = TDim * i; @@ -1866,7 +1933,7 @@ void UPwSmallStrainElement:: ETensor(i,i) -= 1.0; ETensor *= 0.5; - if (TDim==2) { + if constexpr (TDim==2) { Vector StrainVector; StrainVector = MathUtils::StrainTensorToVector(ETensor); rVariables.StrainVector[INDEX_2D_PLANE_STRAIN_XX] = StrainVector[0]; @@ -1904,7 +1971,7 @@ void UPwSmallStrainElement:: ETensor *= 0.5; - if (TDim==2) { + if constexpr (TDim==2) { Vector StrainVector; StrainVector = MathUtils::StrainTensorToVector(ETensor); rVariables.StrainVector[INDEX_2D_PLANE_STRAIN_XX] = StrainVector[0]; @@ -1948,7 +2015,7 @@ void UPwSmallStrainElement:: MathUtils::BDBtProductOperation(ETensor, EigenValuesMatrix, EigenVectorsMatrix); // Hencky Strain Calculation - if (TDim==2) { + if constexpr (TDim==2) { Vector StrainVector; StrainVector = MathUtils::StrainTensorToVector(ETensor); rVariables.StrainVector[INDEX_2D_PLANE_STRAIN_XX] = StrainVector[0]; diff --git a/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.cpp b/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.cpp index 2b6539934b35..89b444d91114 100644 --- a/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.cpp +++ b/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.cpp @@ -626,26 +626,145 @@ void UPwSmallStrainInterfaceElement:: //Defining necessary variables const GeometryType& Geom = this->GetGeometry(); const unsigned int NumGPoints = Geom.IntegrationPointsNumber( mThisIntegrationMethod ); + std::vector GPValues(NumGPoints); //Element variables InterfaceElementVariables Variables; this->InitializeElementVariables(Variables, Geom, this->GetProperties(), rCurrentProcessInfo); - // create general parametes of retention law + // create general parameters of retention law RetentionLaw::Parameters RetentionParameters(Geom, this->GetProperties(), rCurrentProcessInfo); + if (GPValues.size() != NumGPoints) + GPValues.resize(NumGPoints); + //Loop over integration points for ( unsigned int GPoint = 0; GPoint < NumGPoints; ++GPoint ) { Variables.FluidPressure = CalculateFluidPressure(Variables); SetRetentionParameters(Variables, RetentionParameters); - if (rVariable == DEGREE_OF_SATURATION) rValues[GPoint] = mRetentionLawVector[GPoint]->CalculateSaturation(RetentionParameters); - if (rVariable == EFFECTIVE_SATURATION) rValues[GPoint] = mRetentionLawVector[GPoint]->CalculateEffectiveSaturation(RetentionParameters); - if (rVariable == BISHOP_COEFFICIENT) rValues[GPoint] = mRetentionLawVector[GPoint]->CalculateBishopCoefficient(RetentionParameters); - if (rVariable == DERIVATIVE_OF_SATURATION) rValues[GPoint] = mRetentionLawVector[GPoint]->CalculateDerivativeOfSaturation(RetentionParameters); - if (rVariable == RELATIVE_PERMEABILITY ) rValues[GPoint] = mRetentionLawVector[GPoint]->CalculateRelativePermeability(RetentionParameters); + if (rVariable == DEGREE_OF_SATURATION) GPValues[GPoint] = mRetentionLawVector[GPoint]->CalculateSaturation(RetentionParameters); + if (rVariable == EFFECTIVE_SATURATION) GPValues[GPoint] = mRetentionLawVector[GPoint]->CalculateEffectiveSaturation(RetentionParameters); + if (rVariable == BISHOP_COEFFICIENT) GPValues[GPoint] = mRetentionLawVector[GPoint]->CalculateBishopCoefficient(RetentionParameters); + if (rVariable == DERIVATIVE_OF_SATURATION) GPValues[GPoint] = mRetentionLawVector[GPoint]->CalculateDerivativeOfSaturation(RetentionParameters); + if (rVariable == RELATIVE_PERMEABILITY ) GPValues[GPoint] = mRetentionLawVector[GPoint]->CalculateRelativePermeability(RetentionParameters); } - } else { + + const unsigned int OutputGPoints = Geom.IntegrationPointsNumber(this->GetIntegrationMethod()); + if (rValues.size() != OutputGPoints) + rValues.resize(OutputGPoints); + + this->InterpolateOutputDoubles(rValues, GPValues); + } + else if (rVariable == CONFINED_STIFFNESS || rVariable == SHEAR_STIFFNESS) { + + // set the correct index of the variable in the constitutive matrix + size_t variable_index; + if (rVariable == CONFINED_STIFFNESS) + { + if (TDim == 2) + { + variable_index = INDEX_2D_INTERFACE_ZZ; + } + else if (TDim == 3) + { + variable_index = INDEX_3D_INTERFACE_ZZ; + } + else + { + KRATOS_ERROR << "CONFINED_STIFFNESS can not be retrieved for dim " << TDim << " in element: " << this->Id() << std::endl; + } + } + else if (rVariable == SHEAR_STIFFNESS) + { + if (TDim == 2) + { + variable_index = INDEX_2D_INTERFACE_XZ; + } + else if (TDim == 3) + { + variable_index = INDEX_3D_INTERFACE_XZ; + } + else + { + KRATOS_ERROR << "SHEAR_STIFFNESS can not be retrieved for dim " << TDim << " in element: " << this->Id() << std::endl; + } + } + + InterfaceElementVariables Variables; + const PropertiesType& rProp = this->GetProperties(); + const GeometryType& rGeom = this->GetGeometry(); + const unsigned int NumGPoints = rGeom.IntegrationPointsNumber(mThisIntegrationMethod); + std::vector GPValues(NumGPoints); + + this->InitializeElementVariables(Variables, + rGeom, + rProp, + rCurrentProcessInfo); + + //Containers of variables at all integration points + const Matrix& NContainer = rGeom.ShapeFunctionsValues(mThisIntegrationMethod); + const GeometryType::ShapeFunctionsGradientsType& DN_DeContainer = + rGeom.ShapeFunctionsLocalGradients(mThisIntegrationMethod); + GeometryType::JacobiansType JContainer(NumGPoints); + rGeom.Jacobian(JContainer, mThisIntegrationMethod); + + // set constitutive parameters + if (GPValues.size() != mConstitutiveLawVector.size()) + GPValues.resize(mConstitutiveLawVector.size()); + + ConstitutiveLaw::Parameters ConstitutiveParameters(rGeom, rProp, rCurrentProcessInfo); + ConstitutiveParameters.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN); + ConstitutiveParameters.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR); + + this->SetConstitutiveParameters(Variables, ConstitutiveParameters); + + //Auxiliary variables + const double& MinimumJointWidth = rProp[MINIMUM_JOINT_WIDTH]; + array_1d RelDispVector; + SFGradAuxVariables SFGradAuxVars; + + for (unsigned int GPoint = 0; GPoint < mConstitutiveLawVector.size(); ++GPoint) { + + //Compute Np, StrainVector, JointWidth, GradNpT + noalias(Variables.Np) = row(NContainer, GPoint); + InterfaceElementUtilities::CalculateNuMatrix(Variables.Nu, NContainer, GPoint); + noalias(RelDispVector) = prod(Variables.Nu, Variables.DisplacementVector); + noalias(Variables.StrainVector) = prod(Variables.RotationMatrix, RelDispVector); + + this->CheckAndCalculateJointWidth(Variables.JointWidth, + ConstitutiveParameters, + Variables.StrainVector[TDim - 1], + MinimumJointWidth, + GPoint); + + this->CalculateShapeFunctionsGradients< Matrix >(Variables.GradNpT, + SFGradAuxVars, + JContainer[GPoint], + Variables.RotationMatrix, + DN_DeContainer[GPoint], + NContainer, + Variables.JointWidth, + GPoint); + + //Compute constitutive tensor + noalias(Variables.StressVector) = mStressVector[GPoint]; + ConstitutiveParameters.SetStressVector(Variables.StressVector); + + mConstitutiveLawVector[GPoint]->CalculateMaterialResponseCauchy(ConstitutiveParameters); + + // get variable from constitutive matrix + GPValues[GPoint] = Variables.ConstitutiveMatrix(variable_index, variable_index); + } + + //Printed on standard GiD Gauss points + const unsigned int OutputGPoints = rGeom.IntegrationPointsNumber(this->GetIntegrationMethod()); + if (rValues.size() != OutputGPoints) + rValues.resize(OutputGPoints); + + this->InterpolateOutputDoubles(rValues, GPValues); + } + else { //Variables computed on Lobatto points const GeometryType& Geom = this->GetGeometry(); const unsigned int NumGPoints = Geom.IntegrationPointsNumber( mThisIntegrationMethod ); diff --git a/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.hpp b/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.hpp index 474e6d4358ba..c4aff3d26a47 100644 --- a/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.hpp +++ b/applications/GeoMechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.hpp @@ -108,7 +108,6 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) UPwSmallStrainInterfaceElement : std::vector>& rValues, const ProcessInfo& rCurrentProcessInfo) override; - ///---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- protected: diff --git a/applications/GeoMechanicsApplication/custom_elements/geo_curved_beam_element.cpp b/applications/GeoMechanicsApplication/custom_elements/geo_curved_beam_element.cpp index 582e6b45b4ff..0ed2464e4e39 100644 --- a/applications/GeoMechanicsApplication/custom_elements/geo_curved_beam_element.cpp +++ b/applications/GeoMechanicsApplication/custom_elements/geo_curved_beam_element.cpp @@ -15,7 +15,7 @@ #include "custom_elements/geo_curved_beam_element.hpp" #include "custom_utilities/element_utilities.hpp" -#include +#include namespace Kratos { @@ -72,7 +72,7 @@ int GeoCurvedBeamElement:: << this->Id() << std::endl; - if (TDim > 2) { + if constexpr (TDim > 2) { if ( TORSIONAL_INERTIA.Key() == 0 || rProp.Has( TORSIONAL_INERTIA ) == false || rProp[TORSIONAL_INERTIA] < 0.0 ) diff --git a/applications/GeoMechanicsApplication/custom_elements/geo_structural_base_element.cpp b/applications/GeoMechanicsApplication/custom_elements/geo_structural_base_element.cpp index d12c3b966067..2ff4799dcfb1 100644 --- a/applications/GeoMechanicsApplication/custom_elements/geo_structural_base_element.cpp +++ b/applications/GeoMechanicsApplication/custom_elements/geo_structural_base_element.cpp @@ -170,13 +170,13 @@ void GeoStructuralBaseElement:: rElementalDofList.resize( N_DOF_ELEMENT ); unsigned int index = 0; - if (TDim == 2) { + if constexpr (TDim == 2) { for (unsigned int i = 0; i < TNumNodes; ++i) { rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_X); rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_Y); rElementalDofList[index++] = rGeom[i].pGetDof(ROTATION_Z); } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { for (unsigned int i = 0; i < TNumNodes; ++i) { rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_X); rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_Y); @@ -303,13 +303,13 @@ void GeoStructuralBaseElement:: rResult.resize( N_DOF_ELEMENT, false ); unsigned int index = 0; - if (TDim == 2) { + if constexpr (TDim == 2) { for (unsigned int i = 0; i < TNumNodes; ++i) { rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_X).EquationId(); rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_Y).EquationId(); rResult[index++] = rGeom[i].GetDof(ROTATION_Z).EquationId(); } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { for (unsigned int i = 0; i < TNumNodes; ++i) { rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_X).EquationId(); rResult[index++] = rGeom[i].GetDof(DISPLACEMENT_Y).EquationId(); @@ -387,13 +387,13 @@ void GeoStructuralBaseElement:: rValues.resize( N_DOF_ELEMENT, false ); unsigned int index = 0; - if (TDim == 2) { + if constexpr (TDim == 2) { for ( unsigned int i = 0; i < TNumNodes; ++i ) { rValues[index++] = rGeom[i].FastGetSolutionStepValue( DISPLACEMENT_X, Step ); rValues[index++] = rGeom[i].FastGetSolutionStepValue( DISPLACEMENT_Y, Step ); rValues[index++] = rGeom[i].FastGetSolutionStepValue( ROTATION_Z, Step ); } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { for ( unsigned int i = 0; i < TNumNodes; ++i ) { rValues[index++] = rGeom[i].FastGetSolutionStepValue( DISPLACEMENT_X, Step ); rValues[index++] = rGeom[i].FastGetSolutionStepValue( DISPLACEMENT_Y, Step ); @@ -425,13 +425,13 @@ void GeoStructuralBaseElement:: rValues.resize( N_DOF_ELEMENT, false ); unsigned int index = 0; - if (TDim == 2) { + if constexpr (TDim == 2) { for ( unsigned int i = 0; i < TNumNodes; ++i ) { rValues[index++] = rGeom[i].FastGetSolutionStepValue( VELOCITY_X, Step ); rValues[index++] = rGeom[i].FastGetSolutionStepValue( VELOCITY_Y, Step ); rValues[index++] = rGeom[i].FastGetSolutionStepValue( ANGULAR_VELOCITY_Z, Step ); } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { for ( unsigned int i = 0; i < TNumNodes; ++i ) { rValues[index++] = rGeom[i].FastGetSolutionStepValue( VELOCITY_X, Step ); rValues[index++] = rGeom[i].FastGetSolutionStepValue( VELOCITY_Y, Step ); @@ -464,13 +464,13 @@ void GeoStructuralBaseElement:: rValues.resize( N_DOF_ELEMENT, false ); unsigned int index = 0; - if (TDim == 2) { + if constexpr (TDim == 2) { for ( unsigned int i = 0; i < TNumNodes; ++i ) { rValues[index++] = rGeom[i].FastGetSolutionStepValue( ACCELERATION_X, Step ); rValues[index++] = rGeom[i].FastGetSolutionStepValue( ACCELERATION_Y, Step ); rValues[index++] = rGeom[i].FastGetSolutionStepValue( ANGULAR_ACCELERATION_Z, Step ); } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { for ( unsigned int i = 0; i < TNumNodes; ++i ) { rValues[index++] = rGeom[i].FastGetSolutionStepValue( ACCELERATION_X, Step ); rValues[index++] = rGeom[i].FastGetSolutionStepValue( ACCELERATION_Y, Step ); @@ -602,13 +602,13 @@ void GeoStructuralBaseElement:: // KRATOS_INFO("0-GeoStructuralBaseElement::GetNodalDofValuesVector") << std::endl; unsigned int index = 0; - if (TDim == 2) { + if constexpr (TDim == 2) { for (unsigned int i = 0; i < TNumNodes; ++i) { rNodalVariableVector[index++] = rGeom[i].FastGetSolutionStepValue(DISPLACEMENT_X, SolutionStepIndex); rNodalVariableVector[index++] = rGeom[i].FastGetSolutionStepValue(DISPLACEMENT_Y, SolutionStepIndex); rNodalVariableVector[index++] = rGeom[i].FastGetSolutionStepValue(ROTATION_Z, SolutionStepIndex); } - } else if (TDim == 3) { + } else if constexpr (TDim == 3) { for (unsigned int i = 0; i < TNumNodes; ++i) { rNodalVariableVector[index++] = rGeom[i].FastGetSolutionStepValue(DISPLACEMENT_X, SolutionStepIndex); rNodalVariableVector[index++] = rGeom[i].FastGetSolutionStepValue(DISPLACEMENT_Y, SolutionStepIndex); diff --git a/applications/GeoMechanicsApplication/custom_elements/geo_truss_element_base.cpp b/applications/GeoMechanicsApplication/custom_elements/geo_truss_element_base.cpp index b51b08f87e8d..3e0fa18bb8a3 100644 --- a/applications/GeoMechanicsApplication/custom_elements/geo_truss_element_base.cpp +++ b/applications/GeoMechanicsApplication/custom_elements/geo_truss_element_base.cpp @@ -78,7 +78,7 @@ void GeoTrussElementBase:: rResult.resize(TDim*TNumNodes); } - if (TDim > 2) { + if constexpr (TDim > 2) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rResult[index++] = GetGeometry()[i].GetDof(DISPLACEMENT_X).EquationId(); @@ -105,7 +105,7 @@ void GeoTrussElementBase:: rElementalDofList.resize(TDim*TNumNodes); } - if (TDim > 2) { + if constexpr (TDim > 2) { unsigned int index = 0; for (unsigned int i = 0; i < TNumNodes; ++i) { rElementalDofList[index++] = GetGeometry()[i].pGetDof(DISPLACEMENT_X); @@ -594,7 +594,7 @@ int GeoTrussElementBase:: } // Check that the element's nodes contain all required SolutionStepData and Degrees of freedom - if (TDim > 2) { + if constexpr (TDim > 2) { for (IndexType i = 0; i < number_of_nodes; ++i) { const NodeType& rnode = GetGeometry()[i]; KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(DISPLACEMENT, rnode); diff --git a/applications/GeoMechanicsApplication/custom_elements/steady_state_Pw_element.cpp b/applications/GeoMechanicsApplication/custom_elements/steady_state_Pw_element.cpp index 295f031cf8e5..edc0d1858722 100644 --- a/applications/GeoMechanicsApplication/custom_elements/steady_state_Pw_element.cpp +++ b/applications/GeoMechanicsApplication/custom_elements/steady_state_Pw_element.cpp @@ -94,7 +94,7 @@ int SteadyStatePwElement:: if ( Prop.Has( PERMEABILITY_XY ) == false || Prop[PERMEABILITY_XY] < 0.0 ) KRATOS_ERROR << "PERMEABILITY_XY does not exist in the material properties or has an invalid value at element" << this->Id() << std::endl; - if (TDim > 2) { + if constexpr (TDim > 2) { if ( Prop.Has( PERMEABILITY_ZZ ) == false || Prop[PERMEABILITY_ZZ] < 0.0 ) KRATOS_ERROR << "PERMEABILITY_ZZ does not exist in the material properties or has an invalid value at element" << this->Id() << std::endl; diff --git a/applications/GeoMechanicsApplication/custom_elements/transient_Pw_element.cpp b/applications/GeoMechanicsApplication/custom_elements/transient_Pw_element.cpp index df40a0b3b9cd..0403153d94a5 100644 --- a/applications/GeoMechanicsApplication/custom_elements/transient_Pw_element.cpp +++ b/applications/GeoMechanicsApplication/custom_elements/transient_Pw_element.cpp @@ -284,7 +284,7 @@ int TransientPwElement:: if (!Prop.Has( BIOT_COEFFICIENT )) KRATOS_ERROR << "BIOT_COEFFICIENT does not exist in the material properties in element" << this->Id() << std::endl; - if (TDim > 2) { + if constexpr (TDim > 2) { if ( Prop.Has( PERMEABILITY_ZZ ) == false || Prop[PERMEABILITY_ZZ] < 0.0 ) KRATOS_ERROR << "PERMEABILITY_ZZ does not exist in the material properties or has an invalid value at element" << this->Id() << std::endl; diff --git a/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp b/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp index 6a1fc035ead3..fbce246fc229 100644 --- a/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp +++ b/applications/GeoMechanicsApplication/custom_processes/find_neighbour_elements_of_conditions_process.cpp @@ -96,7 +96,6 @@ void FindNeighbourElementsOfConditionsProcess::Execute() } hashmap::iterator itFace = FacesMap.find(FaceIds); - if (itFace == FacesMap.end() && rGeometryElement.LocalSpaceDimension() == 3) { // condition is not found but might be a problem of ordering in 3D geometries! DenseVector FaceIdsSorted = FaceIds; diff --git a/applications/GeoMechanicsApplication/custom_processes/set_absorbing_boundary_parameters_process.hpp b/applications/GeoMechanicsApplication/custom_processes/set_absorbing_boundary_parameters_process.hpp new file mode 100644 index 000000000000..430166813448 --- /dev/null +++ b/applications/GeoMechanicsApplication/custom_processes/set_absorbing_boundary_parameters_process.hpp @@ -0,0 +1,154 @@ +// KRATOS___ +// // ) ) +// // ___ ___ +// // ____ //___) ) // ) ) +// // / / // // / / +// ((____/ / ((____ ((___/ / MECHANICS +// +// License: geo_mechanics_application/license.txt +// +// Main authors: Aron Noordam +// + +#if !defined(KRATOS_GEO_SET_ABSORBING_BOUNDARY_PARAMETERS_PROCESS ) +#define KRATOS_GEO_SET_ABSORBING_BOUNDARY_PARAMETERS_PROCESS + +#include +#include "includes/kratos_flags.h" +#include "includes/kratos_parameters.h" +#include "processes/process.h" + +#include "geo_mechanics_application_variables.h" + +namespace Kratos +{ + +class SetAbsorbingBoundaryParametersProcess : public Process +{ + +public: + + KRATOS_CLASS_POINTER_DEFINITION(SetAbsorbingBoundaryParametersProcess); + +///---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + + /// Constructor + SetAbsorbingBoundaryParametersProcess(ModelPart& model_part, + Parameters rParameters + ) : Process(Flags()) , mrModelPart(model_part) + { + KRATOS_TRY + + //only include validation with c++11 since raw_literals do not exist in c++03 + Parameters default_parameters( R"( + { + "model_part_name":"PLEASE_CHOOSE_MODEL_PART_NAME", + "absorbing_factors": [1.0,1.0], + "virtual_thickness": 1e10 + } )" ); + + // Some values need to be mandatorily prescribed since no meaningful default value exist. For this reason try accessing to them + // So that an error is thrown if they don't exist + rParameters["model_part_name"]; + + // Now validate agains defaults -- this also ensures no type mismatch + rParameters.ValidateAndAssignDefaults(default_parameters); + + // get absorbing factors + mAbsorbingFactors.resize(2, false); + mAbsorbingFactors(0) = rParameters["absorbing_factors"][0].GetDouble(); + mAbsorbingFactors(1) = rParameters["absorbing_factors"][1].GetDouble(); + + // get virtual thickness + mVirtualThickness = rParameters["virtual_thickness"].GetDouble(); + + KRATOS_CATCH(""); + } + + ///------------------------------------------------------------------------------------ + + /// Destructor + ~SetAbsorbingBoundaryParametersProcess() override {} + +///---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + + /// Execute method is used to execute the ApplyConstantPhreaticLinePressureProcess algorithms. + void Execute() override + { + } + + /// this function is designed for being called at the beginning of the computations + /// right after reading the model and the groups + void ExecuteInitialize() override + { + KRATOS_TRY + + if (mrModelPart.NumberOfConditions() > 0) { + + block_for_each(mrModelPart.Conditions(), [&](Condition& rCondition) { + rCondition.SetValue(ABSORBING_FACTORS, mAbsorbingFactors); + rCondition.SetValue(VIRTUAL_THICKNESS, mVirtualThickness); + }); + } + + KRATOS_CATCH("") + } + + /// Turn back information as a string. + std::string Info() const override + { + return "SetAbsorbingBoundaryParametersProcess"; + } + + /// Print information about this object. + void PrintInfo(std::ostream& rOStream) const override + { + rOStream << "SetAbsorbingBoundaryParameters"; + } + + /// Print object's data. + void PrintData(std::ostream& rOStream) const override + { + } + +///---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +protected: + + /// Member Variables + + ModelPart& mrModelPart; + Vector mAbsorbingFactors; + double mVirtualThickness; + + +///---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + +private: + + /// Assignment operator. + SetAbsorbingBoundaryParametersProcess& operator=(SetAbsorbingBoundaryParametersProcess const& rOther); + + /// Copy constructor. + //SetAbsorbingBoundaryParametersProcess(SetAbsorbingBoundaryParametersProcess const& rOther); + +}; // Class SetAbsorbingBoundaryParametersProcess + +/// input stream function +inline std::istream& operator >> (std::istream& rIStream, + SetAbsorbingBoundaryParametersProcess& rThis); + +/// output stream function +inline std::ostream& operator << (std::ostream& rOStream, + const SetAbsorbingBoundaryParametersProcess& rThis) +{ + rThis.PrintInfo(rOStream); + rOStream << std::endl; + rThis.PrintData(rOStream); + + return rOStream; +} + +} // namespace Kratos. + +#endif /* KRATOS_GEO_SET_ABSORBING_BOUNDARY_PARAMETERS_PROCESS defined */ diff --git a/applications/GeoMechanicsApplication/custom_python/add_custom_processes_to_python.cpp b/applications/GeoMechanicsApplication/custom_python/add_custom_processes_to_python.cpp index 4f5640db6982..fa4245ab0f37 100644 --- a/applications/GeoMechanicsApplication/custom_python/add_custom_processes_to_python.cpp +++ b/applications/GeoMechanicsApplication/custom_python/add_custom_processes_to_python.cpp @@ -39,6 +39,7 @@ #include "custom_processes/apply_write_result_scalar_process.hpp" #include "custom_processes/find_neighbour_elements_of_conditions_process.hpp" #include "custom_processes/deactivate_conditions_on_inactive_elements_process.hpp" +#include "custom_processes/set_absorbing_boundary_parameters_process.hpp" namespace Kratos { @@ -130,6 +131,10 @@ namespace Python (m, "DeactivateConditionsOnInactiveElements") .def(init < ModelPart&>()); + class_ + (m, "SetAbsorbingBoundaryParametersProcess") + .def(init < ModelPart&, Parameters&>()); + } } // namespace Python. } // Namespace Kratos diff --git a/applications/GeoMechanicsApplication/custom_python/geo_mechanics_python_application.cpp b/applications/GeoMechanicsApplication/custom_python/geo_mechanics_python_application.cpp index 486782f49cda..849b9a3cddf0 100644 --- a/applications/GeoMechanicsApplication/custom_python/geo_mechanics_python_application.cpp +++ b/applications/GeoMechanicsApplication/custom_python/geo_mechanics_python_application.cpp @@ -77,6 +77,8 @@ namespace Python { KRATOS_REGISTER_IN_PYTHON_VARIABLE( m, DERIVATIVE_OF_SATURATION ) KRATOS_REGISTER_IN_PYTHON_VARIABLE( m, RELATIVE_PERMEABILITY ) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, ABSORBING_FACTORS) + KRATOS_REGISTER_IN_PYTHON_3D_VARIABLE_WITH_COMPONENTS( m, TOTAL_DISPLACEMENT) KRATOS_REGISTER_IN_PYTHON_VARIABLE( m, IS_CONVERGED ) diff --git a/applications/GeoMechanicsApplication/custom_strategies/schemes/newmark_dynamic_U_Pw_scheme.hpp b/applications/GeoMechanicsApplication/custom_strategies/schemes/newmark_dynamic_U_Pw_scheme.hpp index e18b83a1ec5f..0429591301db 100644 --- a/applications/GeoMechanicsApplication/custom_strategies/schemes/newmark_dynamic_U_Pw_scheme.hpp +++ b/applications/GeoMechanicsApplication/custom_strategies/schemes/newmark_dynamic_U_Pw_scheme.hpp @@ -206,6 +206,34 @@ class NewmarkDynamicUPwScheme : public NewmarkQuasistaticUPwSchemeAddDynamicsToLHS(LHS_Contribution, mMassMatrix[thread], mDampingMatrix[thread], CurrentProcessInfo); + + this->AddDynamicsToRHS(rCurrentCondition, RHS_Contribution, mMassMatrix[thread], mDampingMatrix[thread], CurrentProcessInfo); + + (rCurrentCondition).EquationIdVector(EquationId, CurrentProcessInfo); + + KRATOS_CATCH("") + } + // Note: this is in a parallel loop void CalculateSystemContributions( @@ -265,6 +293,34 @@ class NewmarkDynamicUPwScheme : public NewmarkQuasistaticUPwSchemeAddDynamicsToLHS(LHS_Contribution, mMassMatrix[thread], mDampingMatrix[thread], CurrentProcessInfo); + + (rCurrentCondition).EquationIdVector(EquationId, CurrentProcessInfo); + + KRATOS_CATCH("") + } + void CalculateLHSContribution( Element &rCurrentElement, LocalSystemMatrixType& LHS_Contribution, @@ -321,6 +377,33 @@ class NewmarkDynamicUPwScheme : public NewmarkQuasistaticUPwScheme( Condition::GeometryType::PointsArrayType(2)))), mAxisymmetricLineNormalLoadDiffOrderCondition2D3N( 0, Condition::GeometryType::Pointer( new Line2D3( Condition::GeometryType::PointsArrayType(3)))), - mAxisymmetricLineNormalFluidFluxDiffOrderCondition2D3N( 0, Condition::GeometryType::Pointer( new Line2D3( Condition::GeometryType::PointsArrayType(3)))) + mAxisymmetricLineNormalFluidFluxDiffOrderCondition2D3N( 0, Condition::GeometryType::Pointer( new Line2D3( Condition::GeometryType::PointsArrayType(3)))), + + mUPwLysmerAbsorbingCondition2D2N(0, Condition::GeometryType::Pointer(new Line2D2(Condition::GeometryType::PointsArrayType(2)))), + mUPwLysmerAbsorbingCondition2D3N(0, Condition::GeometryType::Pointer(new Line2D3(Condition::GeometryType::PointsArrayType(3)))), + mUPwLysmerAbsorbingCondition3D3N(0, Condition::GeometryType::Pointer(new Triangle3D3 (Condition::GeometryType::PointsArrayType(3)))), + mUPwLysmerAbsorbingCondition3D4N(0, Condition::GeometryType::Pointer(new Quadrilateral3D4 (Condition::GeometryType::PointsArrayType(4)))) {} @@ -446,6 +451,11 @@ void KratosGeoMechanicsApplication::Register() { KRATOS_REGISTER_CONDITION( "AxisymmetricLineNormalLoadDiffOrderCondition2D3N", mAxisymmetricLineNormalLoadDiffOrderCondition2D3N ) KRATOS_REGISTER_CONDITION( "AxisymmetricLineNormalFluidFluxDiffOrderCondition2D3N", mAxisymmetricLineNormalFluidFluxDiffOrderCondition2D3N ) + KRATOS_REGISTER_CONDITION("UPwLysmerAbsorbingCondition2D2N", mUPwLysmerAbsorbingCondition2D2N) + KRATOS_REGISTER_CONDITION("UPwLysmerAbsorbingCondition2D3N", mUPwLysmerAbsorbingCondition2D3N) + KRATOS_REGISTER_CONDITION("UPwLysmerAbsorbingCondition3D3N", mUPwLysmerAbsorbingCondition3D3N) + KRATOS_REGISTER_CONDITION("UPwLysmerAbsorbingCondition3D4N", mUPwLysmerAbsorbingCondition3D4N) + //Register Constitutive Laws KRATOS_REGISTER_CONSTITUTIVE_LAW("BilinearCohesive3DLaw", mBilinearCohesive3DLaw) KRATOS_REGISTER_CONSTITUTIVE_LAW("BilinearCohesive2DLaw", mBilinearCohesive2DLaw) @@ -573,6 +583,12 @@ void KratosGeoMechanicsApplication::Register() { KRATOS_REGISTER_VARIABLE( DERIVATIVE_OF_SATURATION ) KRATOS_REGISTER_VARIABLE( RELATIVE_PERMEABILITY ) + KRATOS_REGISTER_VARIABLE( ABSORBING_FACTORS ) + KRATOS_REGISTER_VARIABLE( VIRTUAL_THICKNESS ) + + KRATOS_REGISTER_VARIABLE(CONFINED_STIFFNESS) + KRATOS_REGISTER_VARIABLE(SHEAR_STIFFNESS) + // UDSM KRATOS_REGISTER_VARIABLE( UDSM_NAME ) // Also for UMAT KRATOS_REGISTER_VARIABLE( UDSM_NUMBER ) diff --git a/applications/GeoMechanicsApplication/geo_mechanics_application.h b/applications/GeoMechanicsApplication/geo_mechanics_application.h index 71261c786b16..521ff2f71114 100644 --- a/applications/GeoMechanicsApplication/geo_mechanics_application.h +++ b/applications/GeoMechanicsApplication/geo_mechanics_application.h @@ -47,6 +47,7 @@ #include "custom_conditions/axisymmetric_U_Pw_normal_face_load_condition.hpp" #include "custom_conditions/axisymmetric_line_normal_load_2D_diff_order_condition.hpp" #include "custom_conditions/axisymmetric_line_normal_fluid_flux_2D_diff_order_condition.hpp" +#include "custom_conditions/U_Pw_normal_lysmer_absorbing_condition.hpp" // elements #include "custom_elements/transient_Pw_element.hpp" @@ -475,6 +476,11 @@ class KRATOS_API(GEO_MECHANICS_APPLICATION) KratosGeoMechanicsApplication : publ const AxisymmetricLineNormalLoad2DDiffOrderCondition mAxisymmetricLineNormalLoadDiffOrderCondition2D3N; const AxisymmetricLineNormalFluidFlux2DDiffOrderCondition mAxisymmetricLineNormalFluidFluxDiffOrderCondition2D3N; + const UPwLysmerAbsorbingCondition<2, 2> mUPwLysmerAbsorbingCondition2D2N; + const UPwLysmerAbsorbingCondition<2, 3> mUPwLysmerAbsorbingCondition2D3N; + const UPwLysmerAbsorbingCondition<3, 3> mUPwLysmerAbsorbingCondition3D3N; + const UPwLysmerAbsorbingCondition<3, 4> mUPwLysmerAbsorbingCondition3D4N; + // constitutive models const BilinearCohesive3DLaw mBilinearCohesive3DLaw; const BilinearCohesive2DLaw mBilinearCohesive2DLaw; diff --git a/applications/GeoMechanicsApplication/geo_mechanics_application_variables.cpp b/applications/GeoMechanicsApplication/geo_mechanics_application_variables.cpp index bd20388ee97b..2cfa2240303a 100644 --- a/applications/GeoMechanicsApplication/geo_mechanics_application_variables.cpp +++ b/applications/GeoMechanicsApplication/geo_mechanics_application_variables.cpp @@ -118,6 +118,13 @@ KRATOS_CREATE_VARIABLE(double, BISHOP_COEFFICIENT ) KRATOS_CREATE_VARIABLE(double, DERIVATIVE_OF_SATURATION ) KRATOS_CREATE_VARIABLE(double, RELATIVE_PERMEABILITY ) +// absorbing boundary +KRATOS_CREATE_VARIABLE(Vector, ABSORBING_FACTORS) +KRATOS_CREATE_VARIABLE(double, VIRTUAL_THICKNESS) + +KRATOS_CREATE_VARIABLE(double, CONFINED_STIFFNESS) +KRATOS_CREATE_VARIABLE(double, SHEAR_STIFFNESS) + // UDSM KRATOS_CREATE_VARIABLE( std::string, UDSM_NAME ) // Also for UMAT KRATOS_CREATE_VARIABLE( int, UDSM_NUMBER ) diff --git a/applications/GeoMechanicsApplication/geo_mechanics_application_variables.h b/applications/GeoMechanicsApplication/geo_mechanics_application_variables.h index f4f2a37b5f5e..1e0586345aa2 100644 --- a/applications/GeoMechanicsApplication/geo_mechanics_application_variables.h +++ b/applications/GeoMechanicsApplication/geo_mechanics_application_variables.h @@ -138,6 +138,13 @@ namespace Kratos KRATOS_DEFINE_APPLICATION_VARIABLE( GEO_MECHANICS_APPLICATION, double, DERIVATIVE_OF_SATURATION ) KRATOS_DEFINE_APPLICATION_VARIABLE( GEO_MECHANICS_APPLICATION, double, RELATIVE_PERMEABILITY ) + // absorbing boundary + KRATOS_DEFINE_APPLICATION_VARIABLE(GEO_MECHANICS_APPLICATION, Vector, ABSORBING_FACTORS) + KRATOS_DEFINE_APPLICATION_VARIABLE(GEO_MECHANICS_APPLICATION, double, VIRTUAL_THICKNESS) + + KRATOS_DEFINE_APPLICATION_VARIABLE(GEO_MECHANICS_APPLICATION, double, CONFINED_STIFFNESS) + KRATOS_DEFINE_APPLICATION_VARIABLE(GEO_MECHANICS_APPLICATION, double, SHEAR_STIFFNESS) + // UDSM KRATOS_DEFINE_APPLICATION_VARIABLE( GEO_MECHANICS_APPLICATION, std::string, UDSM_NAME ) // also for umat KRATOS_DEFINE_APPLICATION_VARIABLE( GEO_MECHANICS_APPLICATION, int, UDSM_NUMBER ) diff --git a/applications/GeoMechanicsApplication/python_scripts/set_absorbing_boundary_parameters_process.py b/applications/GeoMechanicsApplication/python_scripts/set_absorbing_boundary_parameters_process.py new file mode 100644 index 000000000000..8fd5da8e9f50 --- /dev/null +++ b/applications/GeoMechanicsApplication/python_scripts/set_absorbing_boundary_parameters_process.py @@ -0,0 +1,26 @@ +from __future__ import absolute_import, division #makes KratosMultiphysics backward compatible with python 2.6 and 2.7 + +import KratosMultiphysics +import KratosMultiphysics.GeoMechanicsApplication as KratosGeo + +def Factory(settings, Model): + if(type(settings) != KratosMultiphysics.Parameters): + raise Exception("expected input shall be a Parameters object, encapsulating a json string") + return SetAbsorbingBoundaryParametersProcess(Model, settings["Parameters"]) + + +class SetAbsorbingBoundaryParametersProcess(KratosMultiphysics.Process): + def __init__(self, Model, settings ): + KratosMultiphysics.Process.__init__(self) + + model_part = Model[settings["model_part_name"].GetString()] + + params = KratosMultiphysics.Parameters("{}") + params.AddValue("model_part_name",settings["model_part_name"]) + params.AddValue("absorbing_factors", settings["absorbing_factors"]) + params.AddValue("virtual_thickness", settings["virtual_thickness"]) + + self.process = KratosGeo.SetAbsorbingBoundaryParametersProcess(model_part, params) + + def ExecuteInitialize(self): + self.process.ExecuteInitialize() diff --git a/applications/GeoMechanicsApplication/tests/MohrCoulombUMAT.so b/applications/GeoMechanicsApplication/tests/MohrCoulombUMAT.so index 908500e5e59e..ba960e763592 100644 Binary files a/applications/GeoMechanicsApplication/tests/MohrCoulombUMAT.so and b/applications/GeoMechanicsApplication/tests/MohrCoulombUMAT.so differ diff --git a/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py b/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py index 6775784e9cd9..91c2d53e530a 100644 --- a/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py +++ b/applications/GeoMechanicsApplication/tests/test_GeoMechanicsApplication.py @@ -24,6 +24,7 @@ from test_transient_groundwater_flow import KratosGeoMechanicsTransientGroundWaterFlowTests from test_soil_weight import KratosGeoMechanicsSoilWeightTests from test_curved_beam_elements import KratosGeoMechanicsCurvedBeamElementTests +from test_absorbing_boundary import KratosGeoMechanicsAbsorbingBoundaryColumnTests def AssambleTestSuites(is_team_city): ''' Populates the test suites to run. @@ -64,7 +65,8 @@ def AssambleTestSuites(is_team_city): # - testNightlyFirstExample # - testNightlySecondExample - night_test_cases = [KratosGeoMechanicsDynamicsTests] + night_test_cases = [KratosGeoMechanicsDynamicsTests, + KratosGeoMechanicsAbsorbingBoundaryColumnTests] night_test_cases.extend(small_test_cases) # Create an array that contains all the tests from every testCase diff --git a/applications/GeoMechanicsApplication/tests/test_absorbing_boundary.py b/applications/GeoMechanicsApplication/tests/test_absorbing_boundary.py new file mode 100644 index 000000000000..f49d082a4250 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_absorbing_boundary.py @@ -0,0 +1,163 @@ +import os + +import KratosMultiphysics.KratosUnittest as KratosUnittest +import test_helper + + +class KratosGeoMechanicsAbsorbingBoundaryColumnTests(KratosUnittest.TestCase): + """ + This class contains tests which check if the lysmer absorbing boundary works in a 1d column made out of different + element types + """ + + def setUp(self): + self.E = 10000 + self.nu = 0.2 + self.rho = 2.65 * 0.7 + self.load = -10 + self.height_column = 10 + self.vp = None + self.expected_velocity = None + + self.calculate_expected_p_wave_velocity() + self.calculate_expected_velocity_column() + + def tearDown(self): + # Code here will be placed AFTER every test in this TestCase. + pass + + def test_absorbing_boundary_on_1d_column_quad(self): + """ + Tests the lysmer absorbing boundary condition on a column made of rectangulars. The boundary is a 2d2n line. + + :return: + """ + test_name = 'test_lysmer_boundary_column2d_quad.gid' + file_path = test_helper.get_file_path(os.path.join('.', test_name)) + + # quarter node, middle node, three quarter node + node_nbrs_to_assert = [5,11,17] + direction = 1 + + self.run_and_assert_1d_column(file_path, node_nbrs_to_assert, direction) + + def test_absorbing_boundary_on_1d_column_tetra(self): + """ + Tests the lysmer absorbing boundary condition on a column made of tetrahedrals. The boundary is a 3d3n triangle. + + :return: + """ + test_name = 'test_lysmer_boundary_column3d_tetra.gid' + file_path = test_helper.get_file_path(os.path.join('.', test_name)) + + # quarter node, middle node, three quarter node + node_nbrs_to_assert = [33,54,81] + direction = 2 + + self.run_and_assert_1d_column(file_path, node_nbrs_to_assert, direction) + + def test_absorbing_boundary_on_1d_column_tetra_horizontal(self): + """ + Tests the lysmer absorbing boundary condition on a column made of tetrahedrals. In this case the wave columns + moves in a positive y-direction. The boundary is a 3d3n triangle. + :return: + """ + + test_name = 'test_lysmer_boundary_column3d_tetra_hor.gid' + file_path = test_helper.get_file_path(os.path.join('.', test_name)) + + # quarter node, middle node, three quarter node + node_nbrs_to_assert = [33,54,81] + direction = 1 + + self.run_and_assert_1d_column(file_path, node_nbrs_to_assert, direction) + + def test_absorbing_boundary_on_1d_column_hexa(self): + """ + Tests the lysmer absorbing boundary condition on a column made of hexahedrals. The boundary is a 3d4n rectangle. + + :return: + """ + test_name = 'test_lysmer_column3d_hexa.gid' + file_path = test_helper.get_file_path(os.path.join('.', test_name)) + + # quarter node, middle node, three quarter node + node_nbrs_to_assert = [31, 54, 81] + direction = 2 + + self.run_and_assert_1d_column(file_path, node_nbrs_to_assert, direction) + + def run_and_assert_1d_column(self, file_path, node_nbrs, direction): + """ + Runs and asserts a dynamic test on a 1d column. This test checks when a p-wave arrives at a certain coordinate + and the velocity of the corresponding node afterwards + + :param file_path: path of test + :param node_nbrs: node nbrs to be checked + :param direction: direction of the wave 0 = x; 1 = y; 2 = z; + :return: + + """ + + # get name of output file + _, output_file_name = os.path.split(file_path) + output_file_name = os.path.splitext(output_file_name)[0] + "_0.post.res" + output_file_path = os.path.join(file_path,output_file_name) + + # clear old results + if os.path.exists(output_file_path): + os.remove(output_file_path) + + # run simulation + simulation = test_helper.run_kratos(file_path) + + # get results from calculation + coords = test_helper.get_nodal_coordinates(simulation) + res = test_helper.get_nodal_variable_from_ascii(output_file_path, "DISPLACEMENT") + + # calculate and check velocity and time of arrival at all nodes + for node_nbr in node_nbrs: + vert_coord = coords[node_nbr-1][direction] + + # distance between top and vertical coordinate of node + dist = self.height_column-vert_coord + + # expected time of wave arrival + expected_ini_time = dist/self.vp + + # find index of expected time of wave arrival in time list + ini_time_idx = test_helper.find_closest_index_greater_than_value(res["time"], expected_ini_time) + + # calculate velocity after wave arrival + dt = (res["time"][-1] - res["time"][ini_time_idx]) + velocity_part_two = (res[str(node_nbr)][-1][direction] - res[str(node_nbr)][ini_time_idx][direction])/dt + + # assert velocities + self.assertAlmostEqual(velocity_part_two, self.expected_velocity, 2) + + def calculate_expected_p_wave_velocity(self): + """ + Calculates the expected p_wave velocity in a 1d column + Returns + ------- + + """ + # calculate expected p-wave velocity + + Ec = self.E * (1 - self.nu) / ((1 + self.nu) * (1 - 2 * self.nu)) + + # calculate p-wave velocity + self.vp = (Ec / self.rho) ** 0.5 + + def calculate_expected_velocity_column(self): + """ + Calculates the expected velocity in a 1d column based on the p-wave + Returns + ------- + + """ + self.expected_velocity = self.load / (self.vp * self.rho) + + +if __name__ == '__main__': + KratosUnittest.main() diff --git a/applications/GeoMechanicsApplication/tests/test_helper.py b/applications/GeoMechanicsApplication/tests/test_helper.py index 408ca356b8ef..9d167d8186b5 100644 --- a/applications/GeoMechanicsApplication/tests/test_helper.py +++ b/applications/GeoMechanicsApplication/tests/test_helper.py @@ -79,6 +79,17 @@ def get_displacement(simulation): return get_nodal_variable(simulation, Kratos.DISPLACEMENT) + +def get_velocity(simulation): + """ + Gets velocities from kratos simulation + :param simulation: + :return velocities: + """ + + return get_nodal_variable(simulation, Kratos.VELOCITY) + + def get_water_pressure(simulation): """ Gets the water pressure from kratos simulation @@ -88,6 +99,7 @@ def get_water_pressure(simulation): """ return get_nodal_variable(simulation, Kratos.WATER_PRESSURE) + def get_hydraulic_discharge(simulation): """ Gets displacements from kratos simulation @@ -110,6 +122,68 @@ def get_nodal_variable(simulation, variable): return values + +def get_nodal_variable_from_ascii(filename: str, variable: str): + """ + Reads data of Kratos variable from ascii output GID file + + :param filename: ascii output file + :param variable: variable name in GID output + + :return values of a variable: + """ + + # read data + with open(filename, "r") as f: + all_data = f.readlines() + + add_var = False + + data = [] + time_steps = [] + all_var_data = [] + + # read all data at each time step of variable + for line in all_data: + + if "End Values" in line and add_var: + add_var = False + all_var_data.append(data) + data = [] + if add_var: + data.append(line) + + if r'"' + variable + r'"' in line: + time_step = float(line.split()[3]) + + time_steps.append(time_step) + add_var=True + + # initialise results dictionary + res = {"time": time_steps} + + for var_data in all_var_data: + var_data.pop(0) + + # convert var data to floats + for i, _ in enumerate(var_data): + line = var_data[i].split() + line[1] = float(line[1]) + line[2] = float(line[2]) + line[3] = float(line[3]) + var_data[i] = line + + # add node numbers as dict keys + for line in var_data: + res[line[0]] = [] + + for var_data in all_var_data: + for line in var_data: + res[line[0]].append(line[1:]) + + return res + + def get_gauss_coordinates(simulation): """ Gets the coordinates of the gauss points @@ -227,9 +301,23 @@ def compute_distance(point1, point2): import math return math.sqrt((point1[0] - point2[0])**2 + (point1[1] - point2[1])**2) + def compute_mean_list(list): return sum(list)/len(list) -if __name__ == "__main__": - file_path = r"C:\Users\noordam\Documenten\Kratos\applications\GeoMechanicsApplication\test_examples\simple_dike_test.gid" - run_kratos(file_path) \ No newline at end of file + +def find_closest_index_greater_than_value(input_list, value): + """ + Finds closest value in list which is greater than the input value. This method assumes a sorted list from + low to high + + :param input_list: sorted list + :param value: value to be checked + :return: + + """ + + for index, list_value in enumerate(input_list): + if value < list_value: + return index + return None diff --git a/applications/GeoMechanicsApplication/tests/test_interface.py b/applications/GeoMechanicsApplication/tests/test_interface.py index 0c3777a4ee8d..03178ad7c4c8 100644 --- a/applications/GeoMechanicsApplication/tests/test_interface.py +++ b/applications/GeoMechanicsApplication/tests/test_interface.py @@ -20,7 +20,7 @@ def tearDown(self): # Code here will be placed AFTER every test in this TestCase. pass - + @KratosUnittest.skip("MCGICJN2 27/6/22 - Test Ignored - Investigation Underway") def test_interface_side_cohesive(self): """ Tests an interface between a fixed line-element with and a non-fixed surface. @@ -48,7 +48,7 @@ def test_interface_side_cohesive(self): self.assertLess(error_gauss_1, precision) self.assertLess(error_gauss_2, precision) - + @KratosUnittest.skip("MCGICJN2 27/6/22 - Test Ignored - Investigation Underway") def test_interface_on_beam(self): """ Tests an interface on a beam. In this test a calculation is done with and without interface, @@ -90,7 +90,7 @@ def test_interface_on_beam(self): self.assertLess(abs(max_interface_y_displacement - max_base_y_displacement), precision*max_base_y_displacement) self.assertLess(abs(min_interface_y_displacement - min_base_y_displacement), precision*max_base_y_displacement) - + @KratosUnittest.skip("MCGICJN2 27/6/22 - Test Ignored - Investigation Underway") def test_weak_interface_on_beam(self): """ Tests an interface on a beam. In this test a calculation is done with a very weak interface. diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column2d_quad.gid/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column2d_quad.gid/MaterialParameters.json new file mode 100644 index 000000000000..4e180af2912d --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column2d_quad.gid/MaterialParameters.json @@ -0,0 +1,34 @@ +{ + "properties": [{ + "model_part_name": "PorousDomain.soil", + "properties_id": 1, + "Material": { + "constitutive_law": { + "name" : "GeoLinearElasticPlaneStrain2DLaw" + }, + "Variables": { + "IGNORE_UNDRAINED" : true, + "YOUNG_MODULUS" : 10000, + "POISSON_RATIO" : 0.2, + "DENSITY_SOLID" : 2.65, + "DENSITY_WATER" : 1.0, + "POROSITY" : 0.3, + "BULK_MODULUS_SOLID" : 1.0e9, + "BULK_MODULUS_FLUID" : 2.0e-30, + "PERMEABILITY_XX" : 4.5e-30, + "PERMEABILITY_YY" : 4.5e-30, + "PERMEABILITY_XY" : 0.0, + "DYNAMIC_VISCOSITY" : 8.90e-7, + "THICKNESS" : 1.0, + "RETENTION_LAW" : "SaturatedBelowPhreaticLevelLaw", + "SATURATED_SATURATION" : 1.0, + "RESIDUAL_SATURATION" : 1e-10, + "VAN_GENUCHTEN_AIR_ENTRY_PRESSURE" : 2.561, + "VAN_GENUCHTEN_GN" : 1.377, + "VAN_GENUCHTEN_GL" : 1.25, + "MINIMUM_RELATIVE_PERMEABILITY" : 0.0001 + }, + "Tables": {} + } + }] +} diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column2d_quad.gid/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column2d_quad.gid/ProjectParameters.json new file mode 100644 index 000000000000..eaca7f7b25b1 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column2d_quad.gid/ProjectParameters.json @@ -0,0 +1,146 @@ +{ + "problem_data": { + "problem_name": "test_lysmer_boundary_column2d_quad", + "start_time": 0.0, + "end_time": 0.3, + "echo_level": 1, + "parallel_type": "OpenMP", + "number_of_threads": 1 + }, + "solver_settings": { + "solver_type": "U_Pw", + "model_part_name": "PorousDomain", + "domain_size": 2, + "start_time": 0.0, + "model_import_settings": { + "input_type": "mdpa", + "input_filename": "test_lysmer_boundary_column2d_quad" + }, + "material_import_settings": { + "materials_filename": "MaterialParameters.json" + }, + "time_stepping": { + "time_step": 0.01, + "max_delta_time_factor": 1000 + }, + "buffer_size": 2, + "echo_level": 1, + "clear_storage": false, + "compute_reactions": false, + "move_mesh_flag": false, + "reform_dofs_at_each_step": false, + "nodal_smoothing": false, + "block_builder": true, + "solution_type": "Dynamic", + "scheme_type": "Newmark", + "reset_displacements": true, + "newmark_beta": 0.25, + "newmark_gamma": 0.5, + "newmark_theta": 0.5, + "rayleigh_m": 0.1, + "rayleigh_k": 0.001, + "strategy_type": "newton_raphson", + "convergence_criterion": "displacement_criterion", + "displacement_relative_tolerance": 1.0E-4, + "displacement_absolute_tolerance": 1.0E-9, + "residual_relative_tolerance": 1.0E-4, + "residual_absolute_tolerance": 1.0E-9, + "water_pressure_relative_tolerance": 1.0E-4, + "water_pressure_absolute_tolerance": 1.0E-9, + "min_iterations": 6, + "max_iterations": 30, + "number_cycles": 100, + "reduction_factor": 1, + "increase_factor": 1, + "realised_factor": 0.9999, + "desired_iterations": 4, + "max_radius_factor": 10.0, + "min_radius_factor": 0.1, + "calculate_reactions": true, + "max_line_search_iterations": 5, + "first_alpha_value": 0.5, + "second_alpha_value": 1.0, + "min_alpha": 0.1, + "max_alpha": 2.0, + "line_search_tolerance": 0.5, + "rotation_dofs": true, + "linear_solver_settings": { + "solver_type": "skyline_lu_factorization", + "tolerance": 1.0e-6, + "max_iteration": 1000, + "scaling": true, + "preconditioner_type": "ilu0" + }, + "problem_domain_sub_model_part_list": ["soil"], + "processes_sub_model_part_list": ["sides","load","abs"], + "body_domain_sub_model_part_list": ["soil"] + }, + "output_processes": { + "gid_output": [{ + "python_module": "gid_output_process", + "kratos_module": "KratosMultiphysics", + "process_name": "GiDOutputProcess", + "Parameters": { + "model_part_name": "PorousDomain.porous_computational_model_part", + "output_name": "test_lysmer_boundary_column2d_quad", + "postprocess_parameters": { + "result_file_configuration": { + "gidpost_flags": { + "WriteDeformedMeshFlag": "WriteUndeformed", + "WriteConditionsFlag": "WriteElementsOnly", + "GiDPostMode": "GiD_PostAscii", + "MultiFileFlag": "SingleFile" + }, + "file_label": "step", + "output_control_type": "step", + "output_interval": 1, + "body_output": true, + "node_output": false, + "skin_output": false, + "plane_output": [], + "nodal_results": ["DISPLACEMENT", "VELOCITY"], + "gauss_point_results": [] + }, + "point_data_configuration": [] + } + } + }] + }, + "processes": { + "constraints_process_list": [{ + "python_module": "apply_vector_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyVectorConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.sides", + "variable_name": "DISPLACEMENT", + "active": [true,false,false], + "is_fixed": [true,false,false], + "value": [0.0,0.0,0.0], + "table": [0,0,0] + } + }], + "loads_process_list": [{ + "python_module": "apply_vector_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyVectorConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.load", + "variable_name": "LINE_LOAD", + "active": [false,true,false], + "value": [0.0,-10,0.0], + "table": [0,0,0] + } + },{ + "python_module": "set_absorbing_boundary_parameters_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "SetAbsorbingBoundaryParametersProcess", + "Parameters": { + "model_part_name": "PorousDomain.abs", + "absorbing_factors": [1,1], + "virtual_thickness": 1000 + } + }], + "auxiliar_process_list": [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column2d_quad.gid/test_lysmer_boundary_column2d_quad.mdpa b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column2d_quad.gid/test_lysmer_boundary_column2d_quad.mdpa new file mode 100644 index 000000000000..19cd3624bc2b --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column2d_quad.gid/test_lysmer_boundary_column2d_quad.mdpa @@ -0,0 +1,158 @@ + +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.0000000000 10.0000000000 0.0000000000 + 2 1.0000000000 10.0000000000 0.0000000000 + 3 0.0000000000 9.0000000000 0.0000000000 + 4 1.0000000000 9.0000000000 0.0000000000 + 5 0.0000000000 8.0000000000 0.0000000000 + 6 1.0000000000 8.0000000000 0.0000000000 + 7 0.0000000000 7.0000000000 0.0000000000 + 8 1.0000000000 7.0000000000 0.0000000000 + 9 0.0000000000 6.0000000000 0.0000000000 + 10 1.0000000000 6.0000000000 0.0000000000 + 11 0.0000000000 5.0000000000 0.0000000000 + 12 1.0000000000 5.0000000000 0.0000000000 + 13 0.0000000000 4.0000000000 0.0000000000 + 14 1.0000000000 4.0000000000 0.0000000000 + 15 0.0000000000 3.0000000000 0.0000000000 + 16 1.0000000000 3.0000000000 0.0000000000 + 17 0.0000000000 2.0000000000 0.0000000000 + 18 1.0000000000 2.0000000000 0.0000000000 + 19 0.0000000000 1.0000000000 0.0000000000 + 20 1.0000000000 1.0000000000 0.0000000000 + 21 0.0000000000 0.0000000000 0.0000000000 + 22 1.0000000000 0.0000000000 0.0000000000 +End Nodes + + +Begin Elements UPwSmallStrainElement2D4N + 1 1 22 20 19 21 + 2 1 20 18 17 19 + 3 1 18 16 15 17 + 4 1 16 14 13 15 + 5 1 14 12 11 13 + 6 1 12 10 9 11 + 7 1 10 8 7 9 + 8 1 8 6 5 7 + 9 1 6 4 3 5 + 10 1 4 2 1 3 +End Elements + + +Begin Conditions UPwFaceLoadCondition2D2N + 1 1 2 1 +End Conditions + +Begin Conditions UPwLysmerAbsorbingCondition2D2N + 2 1 21 22 +End Conditions + + +Begin SubModelPart soil + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart sides + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart load + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 1 + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart abs + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 21 + 22 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 2 + End SubModelPartConditions +End SubModelPart + diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra.gid/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra.gid/MaterialParameters.json new file mode 100644 index 000000000000..254d40578c1f --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra.gid/MaterialParameters.json @@ -0,0 +1,36 @@ +{ + "properties": [{ + "model_part_name": "PorousDomain.soil", + "properties_id": 1, + "Material": { + "constitutive_law": { + "name" : "LinearElastic3DLaw" + }, + "Variables": { + "IGNORE_UNDRAINED" : true, + "YOUNG_MODULUS" : 10000, + "POISSON_RATIO" : 0.2, + "DENSITY_SOLID" : 2.65, + "DENSITY_WATER" : 1.0, + "POROSITY" : 0.3, + "BULK_MODULUS_SOLID" : 1.0e9, + "BULK_MODULUS_FLUID" : 2.0e-30, + "PERMEABILITY_XX" : 4.5e-30, + "PERMEABILITY_YY" : 4.5e-30, + "PERMEABILITY_ZZ" : 4.5e-30, + "PERMEABILITY_XY" : 0.0, + "PERMEABILITY_YZ" : 0.0, + "PERMEABILITY_ZX" : 0.0, + "DYNAMIC_VISCOSITY" : 8.90e-7, + "RETENTION_LAW" : "SaturatedBelowPhreaticLevelLaw", + "SATURATED_SATURATION" : 1.0, + "RESIDUAL_SATURATION" : 1e-10, + "VAN_GENUCHTEN_AIR_ENTRY_PRESSURE" : 2.561, + "VAN_GENUCHTEN_GN" : 1.377, + "VAN_GENUCHTEN_GL" : 1.25, + "MINIMUM_RELATIVE_PERMEABILITY" : 0.0001 + }, + "Tables": {} + } + }] +} diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra.gid/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra.gid/ProjectParameters.json new file mode 100644 index 000000000000..7970d1f4bee1 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra.gid/ProjectParameters.json @@ -0,0 +1,146 @@ +{ + "problem_data": { + "problem_name": "test_lysmer_boundary_column3d_tetra", + "start_time": 0.0, + "end_time": 0.3, + "echo_level": 1, + "parallel_type": "OpenMP", + "number_of_threads": 1 + }, + "solver_settings": { + "solver_type": "U_Pw", + "model_part_name": "PorousDomain", + "domain_size": 2, + "start_time": 0.0, + "model_import_settings": { + "input_type": "mdpa", + "input_filename": "test_lysmer_boundary_column3d_tetra" + }, + "material_import_settings": { + "materials_filename": "MaterialParameters.json" + }, + "time_stepping": { + "time_step": 0.01, + "max_delta_time_factor": 1000 + }, + "buffer_size": 2, + "echo_level": 1, + "clear_storage": false, + "compute_reactions": false, + "move_mesh_flag": false, + "reform_dofs_at_each_step": false, + "nodal_smoothing": false, + "block_builder": true, + "solution_type": "Dynamic", + "scheme_type": "Newmark", + "reset_displacements": true, + "newmark_beta": 0.25, + "newmark_gamma": 0.5, + "newmark_theta": 0.5, + "rayleigh_m": 0.1, + "rayleigh_k": 0.001, + "strategy_type": "newton_raphson", + "convergence_criterion": "displacement_criterion", + "displacement_relative_tolerance": 1.0E-4, + "displacement_absolute_tolerance": 1.0E-9, + "residual_relative_tolerance": 1.0E-4, + "residual_absolute_tolerance": 1.0E-9, + "water_pressure_relative_tolerance": 1.0E-4, + "water_pressure_absolute_tolerance": 1.0E-9, + "min_iterations": 6, + "max_iterations": 15, + "number_cycles": 100, + "reduction_factor": 1, + "increase_factor": 1, + "realised_factor": 0.9999, + "desired_iterations": 4, + "max_radius_factor": 10.0, + "min_radius_factor": 0.1, + "calculate_reactions": true, + "max_line_search_iterations": 5, + "first_alpha_value": 0.5, + "second_alpha_value": 1.0, + "min_alpha": 0.1, + "max_alpha": 2.0, + "line_search_tolerance": 0.5, + "rotation_dofs": true, + "linear_solver_settings": { + "solver_type": "bicgstab", + "tolerance": 1.0e-6, + "max_iteration": 1000, + "scaling": true, + "preconditioner_type": "ilu0" + }, + "problem_domain_sub_model_part_list": ["soil"], + "processes_sub_model_part_list": ["sides","load","abs"], + "body_domain_sub_model_part_list": ["soil"] + }, + "output_processes": { + "gid_output": [{ + "python_module": "gid_output_process", + "kratos_module": "KratosMultiphysics", + "process_name": "GiDOutputProcess", + "Parameters": { + "model_part_name": "PorousDomain.porous_computational_model_part", + "output_name": "test_lysmer_boundary_column3d_tetra", + "postprocess_parameters": { + "result_file_configuration": { + "gidpost_flags": { + "WriteDeformedMeshFlag": "WriteUndeformed", + "WriteConditionsFlag": "WriteElementsOnly", + "GiDPostMode": "GiD_PostAscii", + "MultiFileFlag": "SingleFile" + }, + "file_label": "step", + "output_control_type": "step", + "output_interval": 1, + "body_output": true, + "node_output": false, + "skin_output": false, + "plane_output": [], + "nodal_results": ["DISPLACEMENT","VELOCITY"], + "gauss_point_results": ["CAUCHY_STRESS_TENSOR"] + }, + "point_data_configuration": [] + } + } + }] + }, + "processes": { + "constraints_process_list": [{ + "python_module": "apply_vector_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyVectorConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.sides", + "variable_name": "DISPLACEMENT", + "active": [true,true,false], + "is_fixed": [true,true,false], + "value": [0.0,0.0,0.0], + "table": [0,0,0] + } + }], + "loads_process_list": [{ + "python_module": "apply_vector_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyVectorConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.load", + "variable_name": "SURFACE_LOAD", + "active": [false,false,true], + "value": [0.0,0.0,-10], + "table": [0,0,0] + } + },{ + "python_module": "set_absorbing_boundary_parameters_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "SetAbsorbingBoundaryParametersProcess", + "Parameters": { + "model_part_name": "PorousDomain.abs", + "absorbing_factors": [1,1], + "virtual_thickness": 1000 + } + }], + "auxiliar_process_list": [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra.gid/test_lysmer_boundary_column3d_tetra.mdpa b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra.gid/test_lysmer_boundary_column3d_tetra.mdpa new file mode 100644 index 000000000000..214f807f4a01 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra.gid/test_lysmer_boundary_column3d_tetra.mdpa @@ -0,0 +1,880 @@ + +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.9999999997 0.9999999997 10.0000000000 + 2 0.9999999997 0.0000000000 10.0000000000 + 3 0.0000000000 0.9999999997 10.0000000000 + 4 0.9999999997 0.9999999997 9.0000000000 + 5 0.0000000000 0.0000000000 10.0000000000 + 6 0.0000000000 0.9999999997 9.0000000000 + 7 0.9999999997 0.0000000000 9.0000000000 + 8 0.0000000000 0.0000000000 9.0000000000 + 9 -0.9999999997 0.9999999997 10.0000000000 + 10 0.9999999997 -0.9999999997 10.0000000000 + 11 0.9999999997 0.9999999997 8.0000000000 + 12 0.0000000000 -0.9999999997 10.0000000000 + 13 -0.9999999997 0.0000000000 10.0000000000 + 14 -0.9999999997 0.9999999997 9.0000000000 + 15 0.9999999997 -0.9999999997 9.0000000000 + 16 0.9999999997 0.0000000000 8.0000000000 + 17 0.0000000000 0.9999999997 8.0000000000 + 18 -0.9999999997 0.0000000000 9.0000000000 + 19 0.0000000000 -0.9999999997 9.0000000000 + 20 0.0000000000 0.0000000000 8.0000000000 + 21 -0.9999999997 -0.9999999997 10.0000000000 + 22 -0.9999999997 0.9999999997 8.0000000000 + 23 0.9999999997 -0.9999999997 8.0000000000 + 24 -0.9999999997 -0.9999999997 9.0000000000 + 25 -0.9999999997 0.0000000000 8.0000000000 + 26 0.0000000000 -0.9999999997 8.0000000000 + 27 0.9999999997 0.9999999997 7.0000000000 + 28 0.0000000000 0.9999999997 7.0000000000 + 29 0.9999999997 0.0000000000 7.0000000000 + 30 0.0000000000 0.0000000000 7.0000000000 + 31 -0.9999999997 -0.9999999997 8.0000000000 + 32 0.9999999997 -0.9999999997 7.0000000000 + 33 -0.9999999997 0.9999999997 7.0000000000 + 34 0.0000000000 -0.9999999997 7.0000000000 + 35 -0.9999999997 0.0000000000 7.0000000000 + 36 0.9999999997 0.9999999997 6.0000000000 + 37 -0.9999999997 -0.9999999997 7.0000000000 + 38 0.9999999997 0.0000000000 6.0000000000 + 39 0.0000000000 0.9999999997 6.0000000000 + 40 0.0000000000 0.0000000000 6.0000000000 + 41 -0.9999999997 0.9999999997 6.0000000000 + 42 0.9999999997 -0.9999999997 6.0000000000 + 43 -0.9999999997 0.0000000000 6.0000000000 + 44 0.0000000000 -0.9999999997 6.0000000000 + 45 -0.9999999997 -0.9999999997 6.0000000000 + 46 0.9999999997 0.9999999997 5.0000000000 + 47 0.0000000000 0.9999999997 5.0000000000 + 48 0.9999999997 0.0000000000 5.0000000000 + 49 0.0000000000 0.0000000000 5.0000000000 + 50 -0.9999999997 0.9999999997 5.0000000000 + 51 0.9999999997 -0.9999999997 5.0000000000 + 52 0.0000000000 -0.9999999997 5.0000000000 + 53 -0.9999999997 0.0000000000 5.0000000000 + 54 -0.9999999997 -0.9999999997 5.0000000000 + 55 0.9999999997 0.9999999997 4.0000000000 + 56 0.0000000000 0.9999999997 4.0000000000 + 57 0.9999999997 0.0000000000 4.0000000000 + 58 0.0000000000 0.0000000000 4.0000000000 + 59 0.9999999997 -0.9999999997 4.0000000000 + 60 -0.9999999997 0.9999999997 4.0000000000 + 61 -0.9999999997 0.0000000000 4.0000000000 + 62 0.0000000000 -0.9999999997 4.0000000000 + 63 -0.9999999997 -0.9999999997 4.0000000000 + 64 0.9999999997 0.9999999997 3.0000000000 + 65 0.0000000000 0.9999999997 3.0000000000 + 66 0.9999999997 0.0000000000 3.0000000000 + 67 0.0000000000 0.0000000000 3.0000000000 + 68 -0.9999999997 0.9999999997 3.0000000000 + 69 0.9999999997 -0.9999999997 3.0000000000 + 70 0.0000000000 -0.9999999997 3.0000000000 + 71 -0.9999999997 0.0000000000 3.0000000000 + 72 -0.9999999997 -0.9999999997 3.0000000000 + 73 0.9999999997 0.9999999997 2.0000000000 + 74 0.9999999997 0.0000000000 2.0000000000 + 75 0.0000000000 0.9999999997 2.0000000000 + 76 0.0000000000 0.0000000000 2.0000000000 + 77 0.9999999997 -0.9999999997 2.0000000000 + 78 -0.9999999997 0.9999999997 2.0000000000 + 79 -0.9999999997 0.0000000000 2.0000000000 + 80 0.0000000000 -0.9999999997 2.0000000000 + 81 -0.9999999997 -0.9999999997 2.0000000000 + 82 0.9999999997 0.9999999997 1.0000000000 + 83 0.9999999997 0.0000000000 1.0000000000 + 84 0.0000000000 0.9999999997 1.0000000000 + 85 0.0000000000 0.0000000000 1.0000000000 + 86 -0.9999999997 0.9999999997 1.0000000000 + 87 0.9999999997 -0.9999999997 1.0000000000 + 88 0.0000000000 -0.9999999997 1.0000000000 + 89 -0.9999999997 0.0000000000 1.0000000000 + 90 -0.9999999997 -0.9999999997 1.0000000000 + 91 0.9999999997 0.9999999997 0.0000000000 + 92 0.0000000000 0.9999999997 0.0000000000 + 93 0.9999999997 0.0000000000 0.0000000000 + 94 0.0000000000 0.0000000000 0.0000000000 + 95 -0.9999999997 0.9999999997 0.0000000000 + 96 0.9999999997 -0.9999999997 0.0000000000 + 97 0.0000000000 -0.9999999997 0.0000000000 + 98 -0.9999999997 0.0000000000 0.0000000000 + 99 -0.9999999997 -0.9999999997 0.0000000000 +End Nodes + + +Begin Elements UPwSmallStrainElement3D4N + 1 1 98 89 85 95 + 2 1 95 98 94 85 + 3 1 86 84 85 95 + 4 1 95 92 84 85 + 5 1 95 86 89 85 + 6 1 92 94 85 95 + 7 1 97 88 85 99 + 8 1 99 97 94 85 + 9 1 90 89 85 99 + 10 1 99 98 89 85 + 11 1 99 90 88 85 + 12 1 98 94 85 99 + 13 1 89 79 76 86 + 14 1 86 89 85 76 + 15 1 78 75 76 86 + 16 1 86 84 75 76 + 17 1 86 78 79 76 + 18 1 84 85 76 86 + 19 1 88 80 76 90 + 20 1 90 88 85 76 + 21 1 81 79 76 90 + 22 1 90 89 79 76 + 23 1 90 81 80 76 + 24 1 89 85 76 90 + 25 1 79 71 67 78 + 26 1 78 79 76 67 + 27 1 68 65 67 78 + 28 1 78 75 65 67 + 29 1 78 68 71 67 + 30 1 75 76 67 78 + 31 1 80 70 67 81 + 32 1 81 80 76 67 + 33 1 72 71 67 81 + 34 1 81 79 71 67 + 35 1 81 72 70 67 + 36 1 79 76 67 81 + 37 1 71 61 58 68 + 38 1 68 71 67 58 + 39 1 60 56 58 68 + 40 1 68 65 56 58 + 41 1 68 60 61 58 + 42 1 65 67 58 68 + 43 1 70 62 58 72 + 44 1 72 70 67 58 + 45 1 63 61 58 72 + 46 1 72 71 61 58 + 47 1 72 63 62 58 + 48 1 71 67 58 72 + 49 1 61 53 49 60 + 50 1 60 61 58 49 + 51 1 50 47 49 60 + 52 1 60 56 47 49 + 53 1 60 50 53 49 + 54 1 56 58 49 60 + 55 1 62 52 49 63 + 56 1 63 62 58 49 + 57 1 54 53 49 63 + 58 1 63 61 53 49 + 59 1 63 54 52 49 + 60 1 61 58 49 63 + 61 1 53 43 40 50 + 62 1 50 53 49 40 + 63 1 41 39 40 50 + 64 1 50 47 39 40 + 65 1 50 41 43 40 + 66 1 47 49 40 50 + 67 1 52 44 40 54 + 68 1 54 52 49 40 + 69 1 45 43 40 54 + 70 1 54 53 43 40 + 71 1 54 45 44 40 + 72 1 53 49 40 54 + 73 1 43 35 30 41 + 74 1 41 43 40 30 + 75 1 33 28 30 41 + 76 1 41 39 28 30 + 77 1 41 33 35 30 + 78 1 39 40 30 41 + 79 1 44 34 30 45 + 80 1 45 44 40 30 + 81 1 37 35 30 45 + 82 1 45 43 35 30 + 83 1 45 37 34 30 + 84 1 43 40 30 45 + 85 1 35 25 20 33 + 86 1 33 35 30 20 + 87 1 22 17 20 33 + 88 1 33 28 17 20 + 89 1 33 22 25 20 + 90 1 28 30 20 33 + 91 1 34 26 20 37 + 92 1 37 34 30 20 + 93 1 31 25 20 37 + 94 1 37 35 25 20 + 95 1 37 31 26 20 + 96 1 35 30 20 37 + 97 1 25 18 8 22 + 98 1 22 25 20 8 + 99 1 14 6 8 22 + 100 1 22 17 6 8 + 101 1 22 14 18 8 + 102 1 17 20 8 22 + 103 1 26 19 8 31 + 104 1 31 26 20 8 + 105 1 24 18 8 31 + 106 1 31 25 18 8 + 107 1 31 24 19 8 + 108 1 25 20 8 31 + 109 1 6 3 9 8 + 110 1 8 6 14 9 + 111 1 5 13 9 8 + 112 1 8 18 13 9 + 113 1 8 5 3 9 + 114 1 18 14 9 8 + 115 1 18 13 21 8 + 116 1 8 18 24 21 + 117 1 5 12 21 8 + 118 1 8 19 12 21 + 119 1 8 5 13 21 + 120 1 19 24 21 8 + 121 1 92 84 85 91 + 122 1 91 92 94 85 + 123 1 82 83 85 91 + 124 1 91 93 83 85 + 125 1 91 82 84 85 + 126 1 93 94 85 91 + 127 1 93 83 85 96 + 128 1 96 93 94 85 + 129 1 87 88 85 96 + 130 1 96 97 88 85 + 131 1 96 87 83 85 + 132 1 97 94 85 96 + 133 1 84 75 76 82 + 134 1 82 84 85 76 + 135 1 73 74 76 82 + 136 1 82 83 74 76 + 137 1 82 73 75 76 + 138 1 83 85 76 82 + 139 1 83 74 76 87 + 140 1 87 83 85 76 + 141 1 77 80 76 87 + 142 1 87 88 80 76 + 143 1 87 77 74 76 + 144 1 88 85 76 87 + 145 1 75 65 67 73 + 146 1 73 75 76 67 + 147 1 64 66 67 73 + 148 1 73 74 66 67 + 149 1 73 64 65 67 + 150 1 74 76 67 73 + 151 1 74 66 67 77 + 152 1 77 74 76 67 + 153 1 69 70 67 77 + 154 1 77 80 70 67 + 155 1 77 69 66 67 + 156 1 80 76 67 77 + 157 1 65 56 58 64 + 158 1 64 65 67 58 + 159 1 55 57 58 64 + 160 1 64 66 57 58 + 161 1 64 55 56 58 + 162 1 66 67 58 64 + 163 1 66 57 58 69 + 164 1 69 66 67 58 + 165 1 59 62 58 69 + 166 1 69 70 62 58 + 167 1 69 59 57 58 + 168 1 70 67 58 69 + 169 1 56 47 49 55 + 170 1 55 56 58 49 + 171 1 46 48 49 55 + 172 1 55 57 48 49 + 173 1 55 46 47 49 + 174 1 57 58 49 55 + 175 1 57 48 49 59 + 176 1 59 57 58 49 + 177 1 51 52 49 59 + 178 1 59 62 52 49 + 179 1 59 51 48 49 + 180 1 62 58 49 59 + 181 1 47 39 40 46 + 182 1 46 47 49 40 + 183 1 36 38 40 46 + 184 1 46 48 38 40 + 185 1 46 36 39 40 + 186 1 48 49 40 46 + 187 1 48 38 40 51 + 188 1 51 48 49 40 + 189 1 42 44 40 51 + 190 1 51 52 44 40 + 191 1 51 42 38 40 + 192 1 52 49 40 51 + 193 1 39 28 30 36 + 194 1 36 39 40 30 + 195 1 27 29 30 36 + 196 1 36 38 29 30 + 197 1 36 27 28 30 + 198 1 38 40 30 36 + 199 1 38 29 30 42 + 200 1 42 38 40 30 + 201 1 32 34 30 42 + 202 1 42 44 34 30 + 203 1 42 32 29 30 + 204 1 44 40 30 42 + 205 1 28 17 20 27 + 206 1 27 28 30 20 + 207 1 11 16 20 27 + 208 1 27 29 16 20 + 209 1 27 11 17 20 + 210 1 29 30 20 27 + 211 1 29 16 20 32 + 212 1 32 29 30 20 + 213 1 23 26 20 32 + 214 1 32 34 26 20 + 215 1 32 23 16 20 + 216 1 34 30 20 32 + 217 1 17 6 8 11 + 218 1 11 17 20 8 + 219 1 4 7 8 11 + 220 1 11 16 7 8 + 221 1 11 4 6 8 + 222 1 16 20 8 11 + 223 1 16 7 8 23 + 224 1 23 16 20 8 + 225 1 15 19 8 23 + 226 1 23 26 19 8 + 227 1 23 15 7 8 + 228 1 26 20 8 23 + 229 1 7 2 1 8 + 230 1 8 7 4 1 + 231 1 5 3 1 8 + 232 1 8 6 3 1 + 233 1 8 5 2 1 + 234 1 6 4 1 8 + 235 1 19 12 10 8 + 236 1 8 19 15 10 + 237 1 5 2 10 8 + 238 1 8 7 2 10 + 239 1 8 5 12 10 + 240 1 7 15 10 8 +End Elements + + +Begin Conditions UPwFaceLoadCondition3D3N + 1 1 5 13 9 + 2 1 5 9 3 + 3 1 5 12 21 + 4 1 5 21 13 + 5 1 5 3 1 + 6 1 5 1 2 + 7 1 5 2 10 + 8 1 5 10 12 +End Conditions + +Begin Conditions UPwLysmerAbsorbingCondition3D3N + 9 1 95 98 94 + 10 1 95 94 92 + 11 1 99 97 94 + 12 1 99 94 98 + 13 1 91 92 94 + 14 1 91 94 93 + 15 1 96 93 94 + 16 1 96 94 97 +End Conditions + + +Begin SubModelPart soil + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + 126 + 127 + 128 + 129 + 130 + 131 + 132 + 133 + 134 + 135 + 136 + 137 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 160 + 161 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 178 + 179 + 180 + 181 + 182 + 183 + 184 + 185 + 186 + 187 + 188 + 189 + 190 + 191 + 192 + 193 + 194 + 195 + 196 + 197 + 198 + 199 + 200 + 201 + 202 + 203 + 204 + 205 + 206 + 207 + 208 + 209 + 210 + 211 + 212 + 213 + 214 + 215 + 216 + 217 + 218 + 219 + 220 + 221 + 222 + 223 + 224 + 225 + 226 + 227 + 228 + 229 + 230 + 231 + 232 + 233 + 234 + 235 + 236 + 237 + 238 + 239 + 240 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart sides + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 6 + 7 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 95 + 96 + 97 + 98 + 99 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart load + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 5 + 9 + 10 + 12 + 13 + 21 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart abs + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + End SubModelPartConditions +End SubModelPart + diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra_hor.gid/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra_hor.gid/MaterialParameters.json new file mode 100644 index 000000000000..254d40578c1f --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra_hor.gid/MaterialParameters.json @@ -0,0 +1,36 @@ +{ + "properties": [{ + "model_part_name": "PorousDomain.soil", + "properties_id": 1, + "Material": { + "constitutive_law": { + "name" : "LinearElastic3DLaw" + }, + "Variables": { + "IGNORE_UNDRAINED" : true, + "YOUNG_MODULUS" : 10000, + "POISSON_RATIO" : 0.2, + "DENSITY_SOLID" : 2.65, + "DENSITY_WATER" : 1.0, + "POROSITY" : 0.3, + "BULK_MODULUS_SOLID" : 1.0e9, + "BULK_MODULUS_FLUID" : 2.0e-30, + "PERMEABILITY_XX" : 4.5e-30, + "PERMEABILITY_YY" : 4.5e-30, + "PERMEABILITY_ZZ" : 4.5e-30, + "PERMEABILITY_XY" : 0.0, + "PERMEABILITY_YZ" : 0.0, + "PERMEABILITY_ZX" : 0.0, + "DYNAMIC_VISCOSITY" : 8.90e-7, + "RETENTION_LAW" : "SaturatedBelowPhreaticLevelLaw", + "SATURATED_SATURATION" : 1.0, + "RESIDUAL_SATURATION" : 1e-10, + "VAN_GENUCHTEN_AIR_ENTRY_PRESSURE" : 2.561, + "VAN_GENUCHTEN_GN" : 1.377, + "VAN_GENUCHTEN_GL" : 1.25, + "MINIMUM_RELATIVE_PERMEABILITY" : 0.0001 + }, + "Tables": {} + } + }] +} diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra_hor.gid/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra_hor.gid/ProjectParameters.json new file mode 100644 index 000000000000..6686190ca376 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra_hor.gid/ProjectParameters.json @@ -0,0 +1,146 @@ +{ + "problem_data": { + "problem_name": "test_lysmer_boundary_column3d_tetra_hor", + "start_time": 0.0, + "end_time": 0.3, + "echo_level": 1, + "parallel_type": "OpenMP", + "number_of_threads": 1 + }, + "solver_settings": { + "solver_type": "U_Pw", + "model_part_name": "PorousDomain", + "domain_size": 3, + "start_time": 0.0, + "model_import_settings": { + "input_type": "mdpa", + "input_filename": "test_lysmer_boundary_column3d_tetra_hor" + }, + "material_import_settings": { + "materials_filename": "MaterialParameters.json" + }, + "time_stepping": { + "time_step": 0.01, + "max_delta_time_factor": 1000 + }, + "buffer_size": 2, + "echo_level": 1, + "clear_storage": false, + "compute_reactions": false, + "move_mesh_flag": false, + "reform_dofs_at_each_step": false, + "nodal_smoothing": false, + "block_builder": true, + "solution_type": "Dynamic", + "scheme_type": "Newmark", + "reset_displacements": true, + "newmark_beta": 0.25, + "newmark_gamma": 0.5, + "newmark_theta": 0.5, + "rayleigh_m": 0.1, + "rayleigh_k": 0.001, + "strategy_type": "newton_raphson", + "convergence_criterion": "displacement_criterion", + "displacement_relative_tolerance": 1.0E-4, + "displacement_absolute_tolerance": 1.0E-9, + "residual_relative_tolerance": 1.0E-4, + "residual_absolute_tolerance": 1.0E-9, + "water_pressure_relative_tolerance": 1.0E-4, + "water_pressure_absolute_tolerance": 1.0E-9, + "min_iterations": 6, + "max_iterations": 15, + "number_cycles": 100, + "reduction_factor": 1, + "increase_factor": 1, + "realised_factor": 0.9999, + "desired_iterations": 4, + "max_radius_factor": 10.0, + "min_radius_factor": 0.1, + "calculate_reactions": true, + "max_line_search_iterations": 5, + "first_alpha_value": 0.5, + "second_alpha_value": 1.0, + "min_alpha": 0.1, + "max_alpha": 2.0, + "line_search_tolerance": 0.5, + "rotation_dofs": true, + "linear_solver_settings": { + "solver_type": "bicgstab", + "tolerance": 1.0e-6, + "max_iteration": 1000, + "scaling": true, + "preconditioner_type": "ilu0" + }, + "problem_domain_sub_model_part_list": ["soil"], + "processes_sub_model_part_list": ["sides","load","abs"], + "body_domain_sub_model_part_list": ["soil"] + }, + "output_processes": { + "gid_output": [{ + "python_module": "gid_output_process", + "kratos_module": "KratosMultiphysics", + "process_name": "GiDOutputProcess", + "Parameters": { + "model_part_name": "PorousDomain.porous_computational_model_part", + "output_name": "test_lysmer_boundary_column3d_tetra_hor", + "postprocess_parameters": { + "result_file_configuration": { + "gidpost_flags": { + "WriteDeformedMeshFlag": "WriteUndeformed", + "WriteConditionsFlag": "WriteElementsOnly", + "GiDPostMode": "GiD_PostAscii", + "MultiFileFlag": "SingleFile" + }, + "file_label": "step", + "output_control_type": "step", + "output_interval": 1, + "body_output": true, + "node_output": false, + "skin_output": false, + "plane_output": [], + "nodal_results": ["DISPLACEMENT","TOTAL_DISPLACEMENT"], + "gauss_point_results": ["CAUCHY_STRESS_TENSOR"] + }, + "point_data_configuration": [] + } + } + }] + }, + "processes": { + "constraints_process_list": [{ + "python_module": "apply_vector_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyVectorConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.sides", + "variable_name": "DISPLACEMENT", + "active": [true,false,true], + "is_fixed": [true,false,true], + "value": [0.0,0.0,0.0], + "table": [0,0,0] + } + }], + "loads_process_list": [{ + "python_module": "apply_vector_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyVectorConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.load", + "variable_name": "SURFACE_LOAD", + "active": [false,true,false], + "value": [0.0,-10,0.0], + "table": [0,0,0] + } + },{ + "python_module": "set_absorbing_boundary_parameters_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "SetAbsorbingBoundaryParametersProcess", + "Parameters": { + "model_part_name": "PorousDomain.abs", + "absorbing_factors": [1,1], + "virtual_thickness": 1000 + } + }], + "auxiliar_process_list": [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra_hor.gid/test_lysmer_boundary_column3d_tetra_hor.mdpa b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra_hor.gid/test_lysmer_boundary_column3d_tetra_hor.mdpa new file mode 100644 index 000000000000..5334bd89d36d --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_boundary_column3d_tetra_hor.gid/test_lysmer_boundary_column3d_tetra_hor.mdpa @@ -0,0 +1,880 @@ + +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.0000000000 10.0000000000 2.0000000000 + 2 0.0000000000 10.0000000000 1.0000000000 + 3 1.0000000000 10.0000000000 2.0000000000 + 4 0.0000000000 9.0000000000 2.0000000000 + 5 1.0000000000 10.0000000000 1.0000000000 + 6 0.0000000000 9.0000000000 1.0000000000 + 7 1.0000000000 9.0000000000 2.0000000000 + 8 1.0000000000 9.0000000000 1.0000000000 + 9 2.0000000000 10.0000000000 2.0000000000 + 10 0.0000000000 10.0000000000 0.0000000000 + 11 0.0000000000 8.0000000000 2.0000000000 + 12 0.0000000000 8.0000000000 1.0000000000 + 13 2.0000000000 10.0000000000 1.0000000000 + 14 1.0000000000 10.0000000000 0.0000000000 + 15 2.0000000000 9.0000000000 2.0000000000 + 16 0.0000000000 9.0000000000 0.0000000000 + 17 1.0000000000 8.0000000000 2.0000000000 + 18 2.0000000000 9.0000000000 1.0000000000 + 19 1.0000000000 9.0000000000 0.0000000000 + 20 1.0000000000 8.0000000000 1.0000000000 + 21 0.0000000000 8.0000000000 0.0000000000 + 22 2.0000000000 8.0000000000 2.0000000000 + 23 2.0000000000 10.0000000000 0.0000000000 + 24 0.0000000000 7.0000000000 2.0000000000 + 25 2.0000000000 8.0000000000 1.0000000000 + 26 2.0000000000 9.0000000000 0.0000000000 + 27 1.0000000000 8.0000000000 0.0000000000 + 28 1.0000000000 7.0000000000 2.0000000000 + 29 0.0000000000 7.0000000000 1.0000000000 + 30 1.0000000000 7.0000000000 1.0000000000 + 31 2.0000000000 8.0000000000 0.0000000000 + 32 0.0000000000 7.0000000000 0.0000000000 + 33 2.0000000000 7.0000000000 2.0000000000 + 34 1.0000000000 7.0000000000 0.0000000000 + 35 2.0000000000 7.0000000000 1.0000000000 + 36 0.0000000000 6.0000000000 2.0000000000 + 37 0.0000000000 6.0000000000 1.0000000000 + 38 2.0000000000 7.0000000000 0.0000000000 + 39 1.0000000000 6.0000000000 2.0000000000 + 40 1.0000000000 6.0000000000 1.0000000000 + 41 0.0000000000 6.0000000000 0.0000000000 + 42 2.0000000000 6.0000000000 2.0000000000 + 43 1.0000000000 6.0000000000 0.0000000000 + 44 2.0000000000 6.0000000000 1.0000000000 + 45 2.0000000000 6.0000000000 0.0000000000 + 46 0.0000000000 5.0000000000 2.0000000000 + 47 0.0000000000 5.0000000000 1.0000000000 + 48 1.0000000000 5.0000000000 2.0000000000 + 49 1.0000000000 5.0000000000 1.0000000000 + 50 0.0000000000 5.0000000000 0.0000000000 + 51 2.0000000000 5.0000000000 2.0000000000 + 52 1.0000000000 5.0000000000 0.0000000000 + 53 2.0000000000 5.0000000000 1.0000000000 + 54 2.0000000000 5.0000000000 0.0000000000 + 55 0.0000000000 4.0000000000 2.0000000000 + 56 1.0000000000 4.0000000000 2.0000000000 + 57 0.0000000000 4.0000000000 1.0000000000 + 58 1.0000000000 4.0000000000 1.0000000000 + 59 0.0000000000 4.0000000000 0.0000000000 + 60 2.0000000000 4.0000000000 2.0000000000 + 61 1.0000000000 4.0000000000 0.0000000000 + 62 2.0000000000 4.0000000000 1.0000000000 + 63 2.0000000000 4.0000000000 0.0000000000 + 64 0.0000000000 3.0000000000 2.0000000000 + 65 0.0000000000 3.0000000000 1.0000000000 + 66 1.0000000000 3.0000000000 2.0000000000 + 67 1.0000000000 3.0000000000 1.0000000000 + 68 0.0000000000 3.0000000000 0.0000000000 + 69 2.0000000000 3.0000000000 2.0000000000 + 70 1.0000000000 3.0000000000 0.0000000000 + 71 2.0000000000 3.0000000000 1.0000000000 + 72 2.0000000000 3.0000000000 0.0000000000 + 73 0.0000000000 2.0000000000 2.0000000000 + 74 0.0000000000 2.0000000000 1.0000000000 + 75 1.0000000000 2.0000000000 2.0000000000 + 76 1.0000000000 2.0000000000 1.0000000000 + 77 2.0000000000 2.0000000000 2.0000000000 + 78 0.0000000000 2.0000000000 0.0000000000 + 79 1.0000000000 2.0000000000 0.0000000000 + 80 2.0000000000 2.0000000000 1.0000000000 + 81 2.0000000000 2.0000000000 0.0000000000 + 82 0.0000000000 1.0000000000 2.0000000000 + 83 1.0000000000 1.0000000000 2.0000000000 + 84 0.0000000000 1.0000000000 1.0000000000 + 85 1.0000000000 1.0000000000 1.0000000000 + 86 0.0000000000 1.0000000000 0.0000000000 + 87 2.0000000000 1.0000000000 2.0000000000 + 88 2.0000000000 1.0000000000 1.0000000000 + 89 1.0000000000 1.0000000000 0.0000000000 + 90 2.0000000000 1.0000000000 0.0000000000 + 91 0.0000000000 0.0000000000 2.0000000000 + 92 1.0000000000 0.0000000000 2.0000000000 + 93 0.0000000000 0.0000000000 1.0000000000 + 94 1.0000000000 0.0000000000 1.0000000000 + 95 0.0000000000 0.0000000000 0.0000000000 + 96 2.0000000000 0.0000000000 2.0000000000 + 97 2.0000000000 0.0000000000 1.0000000000 + 98 1.0000000000 0.0000000000 0.0000000000 + 99 2.0000000000 0.0000000000 0.0000000000 +End Nodes + + +Begin Elements UPwSmallStrainElement3D4N + 1 1 98 94 85 95 + 2 1 95 98 89 85 + 3 1 93 84 85 95 + 4 1 95 86 84 85 + 5 1 95 93 94 85 + 6 1 86 89 85 95 + 7 1 90 88 85 99 + 8 1 99 90 89 85 + 9 1 97 94 85 99 + 10 1 99 98 94 85 + 11 1 99 97 88 85 + 12 1 98 89 85 99 + 13 1 84 82 91 85 + 14 1 85 84 93 91 + 15 1 83 92 91 85 + 16 1 85 94 92 91 + 17 1 85 83 82 91 + 18 1 94 93 91 85 + 19 1 94 92 96 85 + 20 1 85 94 97 96 + 21 1 83 87 96 85 + 22 1 85 88 87 96 + 23 1 85 83 92 96 + 24 1 88 97 96 85 + 25 1 89 85 76 86 + 26 1 86 89 79 76 + 27 1 84 74 76 86 + 28 1 86 78 74 76 + 29 1 86 84 85 76 + 30 1 78 79 76 86 + 31 1 81 80 76 90 + 32 1 90 81 79 76 + 33 1 88 85 76 90 + 34 1 90 89 85 76 + 35 1 90 88 80 76 + 36 1 89 79 76 90 + 37 1 74 73 82 76 + 38 1 76 74 84 82 + 39 1 75 83 82 76 + 40 1 76 85 83 82 + 41 1 76 75 73 82 + 42 1 85 84 82 76 + 43 1 85 83 87 76 + 44 1 76 85 88 87 + 45 1 75 77 87 76 + 46 1 76 80 77 87 + 47 1 76 75 83 87 + 48 1 80 88 87 76 + 49 1 79 76 67 78 + 50 1 78 79 70 67 + 51 1 74 65 67 78 + 52 1 78 68 65 67 + 53 1 78 74 76 67 + 54 1 68 70 67 78 + 55 1 72 71 67 81 + 56 1 81 72 70 67 + 57 1 80 76 67 81 + 58 1 81 79 76 67 + 59 1 81 80 71 67 + 60 1 79 70 67 81 + 61 1 65 64 73 67 + 62 1 67 65 74 73 + 63 1 66 75 73 67 + 64 1 67 76 75 73 + 65 1 67 66 64 73 + 66 1 76 74 73 67 + 67 1 76 75 77 67 + 68 1 67 76 80 77 + 69 1 66 69 77 67 + 70 1 67 71 69 77 + 71 1 67 66 75 77 + 72 1 71 80 77 67 + 73 1 70 67 58 68 + 74 1 68 70 61 58 + 75 1 65 57 58 68 + 76 1 68 59 57 58 + 77 1 68 65 67 58 + 78 1 59 61 58 68 + 79 1 63 62 58 72 + 80 1 72 63 61 58 + 81 1 71 67 58 72 + 82 1 72 70 67 58 + 83 1 72 71 62 58 + 84 1 70 61 58 72 + 85 1 57 55 64 58 + 86 1 58 57 65 64 + 87 1 56 66 64 58 + 88 1 58 67 66 64 + 89 1 58 56 55 64 + 90 1 67 65 64 58 + 91 1 67 66 69 58 + 92 1 58 67 71 69 + 93 1 56 60 69 58 + 94 1 58 62 60 69 + 95 1 58 56 66 69 + 96 1 62 71 69 58 + 97 1 61 58 49 59 + 98 1 59 61 52 49 + 99 1 57 47 49 59 + 100 1 59 50 47 49 + 101 1 59 57 58 49 + 102 1 50 52 49 59 + 103 1 54 53 49 63 + 104 1 63 54 52 49 + 105 1 62 58 49 63 + 106 1 63 61 58 49 + 107 1 63 62 53 49 + 108 1 61 52 49 63 + 109 1 47 46 55 49 + 110 1 49 47 57 55 + 111 1 48 56 55 49 + 112 1 49 58 56 55 + 113 1 49 48 46 55 + 114 1 58 57 55 49 + 115 1 58 56 60 49 + 116 1 49 58 62 60 + 117 1 48 51 60 49 + 118 1 49 53 51 60 + 119 1 49 48 56 60 + 120 1 53 62 60 49 + 121 1 52 49 40 50 + 122 1 50 52 43 40 + 123 1 47 37 40 50 + 124 1 50 41 37 40 + 125 1 50 47 49 40 + 126 1 41 43 40 50 + 127 1 45 44 40 54 + 128 1 54 45 43 40 + 129 1 53 49 40 54 + 130 1 54 52 49 40 + 131 1 54 53 44 40 + 132 1 52 43 40 54 + 133 1 37 36 46 40 + 134 1 40 37 47 46 + 135 1 39 48 46 40 + 136 1 40 49 48 46 + 137 1 40 39 36 46 + 138 1 49 47 46 40 + 139 1 49 48 51 40 + 140 1 40 49 53 51 + 141 1 39 42 51 40 + 142 1 40 44 42 51 + 143 1 40 39 48 51 + 144 1 44 53 51 40 + 145 1 43 40 30 41 + 146 1 41 43 34 30 + 147 1 37 29 30 41 + 148 1 41 32 29 30 + 149 1 41 37 40 30 + 150 1 32 34 30 41 + 151 1 38 35 30 45 + 152 1 45 38 34 30 + 153 1 44 40 30 45 + 154 1 45 43 40 30 + 155 1 45 44 35 30 + 156 1 43 34 30 45 + 157 1 29 24 36 30 + 158 1 30 29 37 36 + 159 1 28 39 36 30 + 160 1 30 40 39 36 + 161 1 30 28 24 36 + 162 1 40 37 36 30 + 163 1 40 39 42 30 + 164 1 30 40 44 42 + 165 1 28 33 42 30 + 166 1 30 35 33 42 + 167 1 30 28 39 42 + 168 1 35 44 42 30 + 169 1 34 30 20 32 + 170 1 32 34 27 20 + 171 1 29 12 20 32 + 172 1 32 21 12 20 + 173 1 32 29 30 20 + 174 1 21 27 20 32 + 175 1 31 25 20 38 + 176 1 38 31 27 20 + 177 1 35 30 20 38 + 178 1 38 34 30 20 + 179 1 38 35 25 20 + 180 1 34 27 20 38 + 181 1 12 11 24 20 + 182 1 20 12 29 24 + 183 1 17 28 24 20 + 184 1 20 30 28 24 + 185 1 20 17 11 24 + 186 1 30 29 24 20 + 187 1 30 28 33 20 + 188 1 20 30 35 33 + 189 1 17 22 33 20 + 190 1 20 25 22 33 + 191 1 20 17 28 33 + 192 1 25 35 33 20 + 193 1 27 20 8 21 + 194 1 21 27 19 8 + 195 1 12 6 8 21 + 196 1 21 16 6 8 + 197 1 21 12 20 8 + 198 1 16 19 8 21 + 199 1 26 18 8 31 + 200 1 31 26 19 8 + 201 1 25 20 8 31 + 202 1 31 27 20 8 + 203 1 31 25 18 8 + 204 1 27 19 8 31 + 205 1 6 4 11 8 + 206 1 8 6 12 11 + 207 1 7 17 11 8 + 208 1 8 20 17 11 + 209 1 8 7 4 11 + 210 1 20 12 11 8 + 211 1 20 17 22 8 + 212 1 8 20 25 22 + 213 1 7 15 22 8 + 214 1 8 18 15 22 + 215 1 8 7 17 22 + 216 1 18 25 22 8 + 217 1 16 6 8 10 + 218 1 10 16 19 8 + 219 1 2 5 8 10 + 220 1 10 14 5 8 + 221 1 10 2 6 8 + 222 1 14 19 8 10 + 223 1 14 5 8 23 + 224 1 23 14 19 8 + 225 1 13 18 8 23 + 226 1 23 26 18 8 + 227 1 23 13 5 8 + 228 1 26 19 8 23 + 229 1 5 3 1 8 + 230 1 8 5 2 1 + 231 1 7 4 1 8 + 232 1 8 6 4 1 + 233 1 8 7 3 1 + 234 1 6 2 1 8 + 235 1 18 15 9 8 + 236 1 8 18 13 9 + 237 1 7 3 9 8 + 238 1 8 5 3 9 + 239 1 8 7 15 9 + 240 1 5 13 9 8 +End Elements + + +Begin Conditions UPwFaceLoadCondition3D3N + 1 1 10 5 2 + 2 1 10 14 5 + 3 1 23 5 14 + 4 1 23 13 5 + 5 1 5 3 1 + 6 1 5 1 2 + 7 1 5 9 3 + 8 1 5 13 9 +End Conditions + +Begin Conditions UPwLysmerAbsorbingCondition3D3N + 9 1 95 94 98 + 10 1 95 93 94 + 11 1 99 94 97 + 12 1 99 98 94 + 13 1 94 91 92 + 14 1 94 93 91 + 15 1 94 92 96 + 16 1 94 96 97 +End Conditions + + +Begin SubModelPart soil + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + 100 + 101 + 102 + 103 + 104 + 105 + 106 + 107 + 108 + 109 + 110 + 111 + 112 + 113 + 114 + 115 + 116 + 117 + 118 + 119 + 120 + 121 + 122 + 123 + 124 + 125 + 126 + 127 + 128 + 129 + 130 + 131 + 132 + 133 + 134 + 135 + 136 + 137 + 138 + 139 + 140 + 141 + 142 + 143 + 144 + 145 + 146 + 147 + 148 + 149 + 150 + 151 + 152 + 153 + 154 + 155 + 156 + 157 + 158 + 159 + 160 + 161 + 162 + 163 + 164 + 165 + 166 + 167 + 168 + 169 + 170 + 171 + 172 + 173 + 174 + 175 + 176 + 177 + 178 + 179 + 180 + 181 + 182 + 183 + 184 + 185 + 186 + 187 + 188 + 189 + 190 + 191 + 192 + 193 + 194 + 195 + 196 + 197 + 198 + 199 + 200 + 201 + 202 + 203 + 204 + 205 + 206 + 207 + 208 + 209 + 210 + 211 + 212 + 213 + 214 + 215 + 216 + 217 + 218 + 219 + 220 + 221 + 222 + 223 + 224 + 225 + 226 + 227 + 228 + 229 + 230 + 231 + 232 + 233 + 234 + 235 + 236 + 237 + 238 + 239 + 240 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart sides + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 6 + 7 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 95 + 96 + 97 + 98 + 99 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart load + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 5 + 9 + 10 + 13 + 14 + 23 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart abs + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + End SubModelPartConditions +End SubModelPart + diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_column3d_hexa.gid/MaterialParameters.json b/applications/GeoMechanicsApplication/tests/test_lysmer_column3d_hexa.gid/MaterialParameters.json new file mode 100644 index 000000000000..254d40578c1f --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_column3d_hexa.gid/MaterialParameters.json @@ -0,0 +1,36 @@ +{ + "properties": [{ + "model_part_name": "PorousDomain.soil", + "properties_id": 1, + "Material": { + "constitutive_law": { + "name" : "LinearElastic3DLaw" + }, + "Variables": { + "IGNORE_UNDRAINED" : true, + "YOUNG_MODULUS" : 10000, + "POISSON_RATIO" : 0.2, + "DENSITY_SOLID" : 2.65, + "DENSITY_WATER" : 1.0, + "POROSITY" : 0.3, + "BULK_MODULUS_SOLID" : 1.0e9, + "BULK_MODULUS_FLUID" : 2.0e-30, + "PERMEABILITY_XX" : 4.5e-30, + "PERMEABILITY_YY" : 4.5e-30, + "PERMEABILITY_ZZ" : 4.5e-30, + "PERMEABILITY_XY" : 0.0, + "PERMEABILITY_YZ" : 0.0, + "PERMEABILITY_ZX" : 0.0, + "DYNAMIC_VISCOSITY" : 8.90e-7, + "RETENTION_LAW" : "SaturatedBelowPhreaticLevelLaw", + "SATURATED_SATURATION" : 1.0, + "RESIDUAL_SATURATION" : 1e-10, + "VAN_GENUCHTEN_AIR_ENTRY_PRESSURE" : 2.561, + "VAN_GENUCHTEN_GN" : 1.377, + "VAN_GENUCHTEN_GL" : 1.25, + "MINIMUM_RELATIVE_PERMEABILITY" : 0.0001 + }, + "Tables": {} + } + }] +} diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_column3d_hexa.gid/ProjectParameters.json b/applications/GeoMechanicsApplication/tests/test_lysmer_column3d_hexa.gid/ProjectParameters.json new file mode 100644 index 000000000000..8098b8d2729a --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_column3d_hexa.gid/ProjectParameters.json @@ -0,0 +1,146 @@ +{ + "problem_data": { + "problem_name": "test_lysmer_column3d_hexa", + "start_time": 0.0, + "end_time": 0.3, + "echo_level": 1, + "parallel_type": "OpenMP", + "number_of_threads": 1 + }, + "solver_settings": { + "solver_type": "U_Pw", + "model_part_name": "PorousDomain", + "domain_size": 2, + "start_time": 0.0, + "model_import_settings": { + "input_type": "mdpa", + "input_filename": "test_lysmer_column3d_hexa" + }, + "material_import_settings": { + "materials_filename": "MaterialParameters.json" + }, + "time_stepping": { + "time_step": 0.01, + "max_delta_time_factor": 1000 + }, + "buffer_size": 2, + "echo_level": 1, + "clear_storage": false, + "compute_reactions": false, + "move_mesh_flag": false, + "reform_dofs_at_each_step": false, + "nodal_smoothing": false, + "block_builder": true, + "solution_type": "Dynamic", + "scheme_type": "Newmark", + "reset_displacements": true, + "newmark_beta": 0.25, + "newmark_gamma": 0.5, + "newmark_theta": 0.5, + "rayleigh_m": 0.1, + "rayleigh_k": 0.001, + "strategy_type": "newton_raphson", + "convergence_criterion": "displacement_criterion", + "displacement_relative_tolerance": 1.0E-4, + "displacement_absolute_tolerance": 1.0E-9, + "residual_relative_tolerance": 1.0E-4, + "residual_absolute_tolerance": 1.0E-9, + "water_pressure_relative_tolerance": 1.0E-4, + "water_pressure_absolute_tolerance": 1.0E-9, + "min_iterations": 6, + "max_iterations": 30, + "number_cycles": 100, + "reduction_factor": 1, + "increase_factor": 1, + "realised_factor": 0.9999, + "desired_iterations": 4, + "max_radius_factor": 10.0, + "min_radius_factor": 0.1, + "calculate_reactions": true, + "max_line_search_iterations": 5, + "first_alpha_value": 0.5, + "second_alpha_value": 1.0, + "min_alpha": 0.1, + "max_alpha": 2.0, + "line_search_tolerance": 0.5, + "rotation_dofs": true, + "linear_solver_settings": { + "solver_type": "bicgstab", + "tolerance": 1.0e-6, + "max_iteration": 1000, + "scaling": true, + "preconditioner_type": "ilu0" + }, + "problem_domain_sub_model_part_list": ["soil"], + "processes_sub_model_part_list": ["sides","load","abs"], + "body_domain_sub_model_part_list": ["soil"] + }, + "output_processes": { + "gid_output": [{ + "python_module": "gid_output_process", + "kratos_module": "KratosMultiphysics", + "process_name": "GiDOutputProcess", + "Parameters": { + "model_part_name": "PorousDomain.porous_computational_model_part", + "output_name": "test_lysmer_column3d_hexa", + "postprocess_parameters": { + "result_file_configuration": { + "gidpost_flags": { + "WriteDeformedMeshFlag": "WriteUndeformed", + "WriteConditionsFlag": "WriteElementsOnly", + "GiDPostMode": "GiD_PostAscii", + "MultiFileFlag": "SingleFile" + }, + "file_label": "step", + "output_control_type": "step", + "output_interval": 1, + "body_output": true, + "node_output": false, + "skin_output": false, + "plane_output": [], + "nodal_results": ["DISPLACEMENT","VOLUME_ACCELERATION"], + "gauss_point_results": ["CAUCHY_STRESS_TENSOR"] + }, + "point_data_configuration": [] + } + } + }] + }, + "processes": { + "constraints_process_list": [{ + "python_module": "apply_vector_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyVectorConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.sides", + "variable_name": "DISPLACEMENT", + "active": [true,true,false], + "is_fixed": [true,true,false], + "value": [0.0,0.0,0.0], + "table": [0,0,0] + } + }], + "loads_process_list": [{ + "python_module": "apply_vector_constraint_table_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "ApplyVectorConstraintTableProcess", + "Parameters": { + "model_part_name": "PorousDomain.load", + "variable_name": "SURFACE_LOAD", + "active": [false,false,true], + "value": [0.0,0.0,-10], + "table": [0,0,0] + } + },{ + "python_module": "set_absorbing_boundary_parameters_process", + "kratos_module": "KratosMultiphysics.GeoMechanicsApplication", + "process_name": "SetAbsorbingBoundaryParametersProcess", + "Parameters": { + "model_part_name": "PorousDomain.abs", + "absorbing_factors": [1,1], + "virtual_thickness": 1000 + } + }], + "auxiliar_process_list": [] + } +} diff --git a/applications/GeoMechanicsApplication/tests/test_lysmer_column3d_hexa.gid/test_lysmer_column3d_hexa.mdpa b/applications/GeoMechanicsApplication/tests/test_lysmer_column3d_hexa.gid/test_lysmer_column3d_hexa.mdpa new file mode 100644 index 000000000000..aeab806d9a82 --- /dev/null +++ b/applications/GeoMechanicsApplication/tests/test_lysmer_column3d_hexa.gid/test_lysmer_column3d_hexa.mdpa @@ -0,0 +1,464 @@ + +Begin Properties 1 +End Properties + + +Begin Nodes + 1 0.9999999997 0.9999999997 10.0000000000 + 2 0.0000000000 0.9999999997 10.0000000000 + 3 0.9999999997 0.0000000000 10.0000000000 + 4 0.9999999997 0.9999999997 9.0000000000 + 5 0.0000000000 0.0000000000 10.0000000000 + 6 0.9999999997 0.0000000000 9.0000000000 + 7 0.0000000000 0.9999999997 9.0000000000 + 8 0.0000000000 0.0000000000 9.0000000000 + 9 -0.9999999997 0.9999999997 10.0000000000 + 10 0.9999999997 -0.9999999997 10.0000000000 + 11 0.9999999997 0.9999999997 8.0000000000 + 12 0.0000000000 -0.9999999997 10.0000000000 + 13 -0.9999999997 0.0000000000 10.0000000000 + 14 -0.9999999997 0.9999999997 9.0000000000 + 15 0.9999999997 -0.9999999997 9.0000000000 + 16 0.0000000000 0.9999999997 8.0000000000 + 17 0.9999999997 0.0000000000 8.0000000000 + 18 0.0000000000 -0.9999999997 9.0000000000 + 19 -0.9999999997 0.0000000000 9.0000000000 + 20 0.0000000000 0.0000000000 8.0000000000 + 21 -0.9999999997 -0.9999999997 10.0000000000 + 22 0.9999999997 -0.9999999997 8.0000000000 + 23 -0.9999999997 0.9999999997 8.0000000000 + 24 -0.9999999997 -0.9999999997 9.0000000000 + 25 0.0000000000 -0.9999999997 8.0000000000 + 26 -0.9999999997 0.0000000000 8.0000000000 + 27 0.9999999997 0.9999999997 7.0000000000 + 28 0.0000000000 0.9999999997 7.0000000000 + 29 0.9999999997 0.0000000000 7.0000000000 + 30 0.0000000000 0.0000000000 7.0000000000 + 31 -0.9999999997 -0.9999999997 8.0000000000 + 32 0.9999999997 -0.9999999997 7.0000000000 + 33 -0.9999999997 0.9999999997 7.0000000000 + 34 -0.9999999997 0.0000000000 7.0000000000 + 35 0.0000000000 -0.9999999997 7.0000000000 + 36 0.9999999997 0.9999999997 6.0000000000 + 37 -0.9999999997 -0.9999999997 7.0000000000 + 38 0.9999999997 0.0000000000 6.0000000000 + 39 0.0000000000 0.9999999997 6.0000000000 + 40 0.0000000000 0.0000000000 6.0000000000 + 41 -0.9999999997 0.9999999997 6.0000000000 + 42 0.9999999997 -0.9999999997 6.0000000000 + 43 -0.9999999997 0.0000000000 6.0000000000 + 44 0.0000000000 -0.9999999997 6.0000000000 + 45 -0.9999999997 -0.9999999997 6.0000000000 + 46 0.9999999997 0.9999999997 5.0000000000 + 47 0.9999999997 0.0000000000 5.0000000000 + 48 0.0000000000 0.9999999997 5.0000000000 + 49 0.0000000000 0.0000000000 5.0000000000 + 50 -0.9999999997 0.9999999997 5.0000000000 + 51 0.9999999997 -0.9999999997 5.0000000000 + 52 0.0000000000 -0.9999999997 5.0000000000 + 53 -0.9999999997 0.0000000000 5.0000000000 + 54 -0.9999999997 -0.9999999997 5.0000000000 + 55 0.9999999997 0.9999999997 4.0000000000 + 56 0.0000000000 0.9999999997 4.0000000000 + 57 0.9999999997 0.0000000000 4.0000000000 + 58 0.0000000000 0.0000000000 4.0000000000 + 59 0.9999999997 -0.9999999997 4.0000000000 + 60 -0.9999999997 0.9999999997 4.0000000000 + 61 -0.9999999997 0.0000000000 4.0000000000 + 62 0.0000000000 -0.9999999997 4.0000000000 + 63 -0.9999999997 -0.9999999997 4.0000000000 + 64 0.9999999997 0.9999999997 3.0000000000 + 65 0.9999999997 0.0000000000 3.0000000000 + 66 0.0000000000 0.9999999997 3.0000000000 + 67 0.0000000000 0.0000000000 3.0000000000 + 68 -0.9999999997 0.9999999997 3.0000000000 + 69 0.9999999997 -0.9999999997 3.0000000000 + 70 -0.9999999997 0.0000000000 3.0000000000 + 71 0.0000000000 -0.9999999997 3.0000000000 + 72 -0.9999999997 -0.9999999997 3.0000000000 + 73 0.9999999997 0.9999999997 2.0000000000 + 74 0.0000000000 0.9999999997 2.0000000000 + 75 0.9999999997 0.0000000000 2.0000000000 + 76 0.0000000000 0.0000000000 2.0000000000 + 77 0.9999999997 -0.9999999997 2.0000000000 + 78 -0.9999999997 0.9999999997 2.0000000000 + 79 -0.9999999997 0.0000000000 2.0000000000 + 80 0.0000000000 -0.9999999997 2.0000000000 + 81 -0.9999999997 -0.9999999997 2.0000000000 + 82 0.9999999997 0.9999999997 1.0000000000 + 83 0.9999999997 0.0000000000 1.0000000000 + 84 0.0000000000 0.9999999997 1.0000000000 + 85 0.0000000000 0.0000000000 1.0000000000 + 86 0.9999999997 -0.9999999997 1.0000000000 + 87 -0.9999999997 0.9999999997 1.0000000000 + 88 0.0000000000 -0.9999999997 1.0000000000 + 89 -0.9999999997 0.0000000000 1.0000000000 + 90 -0.9999999997 -0.9999999997 1.0000000000 + 91 0.9999999997 0.9999999997 0.0000000000 + 92 0.9999999997 0.0000000000 0.0000000000 + 93 0.0000000000 0.9999999997 0.0000000000 + 94 0.0000000000 0.0000000000 0.0000000000 + 95 -0.9999999997 0.9999999997 0.0000000000 + 96 0.9999999997 -0.9999999997 0.0000000000 + 97 0.0000000000 -0.9999999997 0.0000000000 + 98 -0.9999999997 0.0000000000 0.0000000000 + 99 -0.9999999997 -0.9999999997 0.0000000000 +End Nodes + + +Begin Elements UPwSmallStrainElement3D8N + 1 1 85 84 93 94 89 87 95 98 + 2 1 88 85 94 97 90 89 98 99 + 3 1 76 74 84 85 79 78 87 89 + 4 1 80 76 85 88 81 79 89 90 + 5 1 67 66 74 76 70 68 78 79 + 6 1 71 67 76 80 72 70 79 81 + 7 1 58 56 66 67 61 60 68 70 + 8 1 62 58 67 71 63 61 70 72 + 9 1 49 48 56 58 53 50 60 61 + 10 1 52 49 58 62 54 53 61 63 + 11 1 40 39 48 49 43 41 50 53 + 12 1 44 40 49 52 45 43 53 54 + 13 1 30 28 39 40 34 33 41 43 + 14 1 35 30 40 44 37 34 43 45 + 15 1 20 16 28 30 26 23 33 34 + 16 1 25 20 30 35 31 26 34 37 + 17 1 8 7 16 20 19 14 23 26 + 18 1 18 8 20 25 24 19 26 31 + 19 1 5 2 7 8 13 9 14 19 + 20 1 12 5 8 18 21 13 19 24 + 21 1 83 82 91 92 85 84 93 94 + 22 1 86 83 92 96 88 85 94 97 + 23 1 75 73 82 83 76 74 84 85 + 24 1 77 75 83 86 80 76 85 88 + 25 1 65 64 73 75 67 66 74 76 + 26 1 69 65 75 77 71 67 76 80 + 27 1 57 55 64 65 58 56 66 67 + 28 1 59 57 65 69 62 58 67 71 + 29 1 47 46 55 57 49 48 56 58 + 30 1 51 47 57 59 52 49 58 62 + 31 1 38 36 46 47 40 39 48 49 + 32 1 42 38 47 51 44 40 49 52 + 33 1 29 27 36 38 30 28 39 40 + 34 1 32 29 38 42 35 30 40 44 + 35 1 17 11 27 29 20 16 28 30 + 36 1 22 17 29 32 25 20 30 35 + 37 1 6 4 11 17 8 7 16 20 + 38 1 15 6 17 22 18 8 20 25 + 39 1 3 1 4 6 5 2 7 8 + 40 1 10 3 6 15 12 5 8 18 +End Elements + + +Begin Conditions UPwFaceLoadCondition3D4N + 1 1 5 13 9 2 + 2 1 12 21 13 5 + 3 1 3 5 2 1 + 4 1 10 12 5 3 +End Conditions + +Begin Conditions UPwLysmerAbsorbingCondition3D4N + 5 1 93 95 98 94 + 6 1 94 98 99 97 + 7 1 91 93 94 92 + 8 1 92 94 97 96 +End Conditions + + +Begin SubModelPart soil + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 76 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 85 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart sides + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 6 + 7 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 68 + 69 + 70 + 71 + 72 + 73 + 74 + 75 + 77 + 78 + 79 + 80 + 81 + 82 + 83 + 84 + 86 + 87 + 88 + 89 + 90 + 91 + 92 + 93 + 95 + 96 + 97 + 98 + 99 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart load + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 1 + 2 + 3 + 5 + 9 + 10 + 12 + 13 + 21 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 1 + 2 + 3 + 4 + End SubModelPartConditions +End SubModelPart + +Begin SubModelPart abs + Begin SubModelPartTables + End SubModelPartTables + Begin SubModelPartNodes + 91 + 92 + 93 + 94 + 95 + 96 + 97 + 98 + 99 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + 5 + 6 + 7 + 8 + End SubModelPartConditions +End SubModelPart + diff --git a/applications/GeoMechanicsApplication/tests/test_reset_displacement.py b/applications/GeoMechanicsApplication/tests/test_reset_displacement.py index e5f05f9f9c60..089a0810241f 100644 --- a/applications/GeoMechanicsApplication/tests/test_reset_displacement.py +++ b/applications/GeoMechanicsApplication/tests/test_reset_displacement.py @@ -18,6 +18,7 @@ def tearDown(self): # Code here will be placed AFTER every test in this TestCase. pass + @KratosUnittest.skip("MCGICJN2 27/6/22 - Test Ignored - Investigation Underway") def test_reset_displacement_truss(self): """ Tests reset displacement in a truss in 4 stages diff --git a/applications/HDF5Application/custom_io/hdf5_file.cpp b/applications/HDF5Application/custom_io/hdf5_file.cpp index 3a53c6ded8b0..3932eceb46f7 100644 --- a/applications/HDF5Application/custom_io/hdf5_file.cpp +++ b/applications/HDF5Application/custom_io/hdf5_file.cpp @@ -19,11 +19,7 @@ namespace Internals bool IsPath(const std::string& rPath) { -#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ < 4 || (__GNUC__ == 4 && (__GNUC_MINOR__ < 9))) - KRATOS_ERROR << "This method is not compiled well. You should use a GCC 4.9 or higher" << std::endl; -#else return regex_match(rPath, std::regex("(/[\\w\\(\\)]+)+")); -#endif } hid_t GetScalarDataType(const Vector&) @@ -191,7 +187,9 @@ File& File::operator=(File&& rOther) File::~File() { - H5Fclose(m_file_id); + if (0 <= m_file_id) { + H5Fclose(m_file_id); + } } bool File::HasPath(const std::string& rPath) const @@ -629,6 +627,17 @@ void File::Flush() << "H5Fflush failed." << std::endl; } +void File::Close() +{ + if (0 <= m_file_id) { + const auto close_result = H5Fclose(m_file_id); + KRATOS_ERROR_IF(close_result < 0) << "Failed to close " << m_file_name << " with error code " << close_result; + m_file_id = -1; + } else { + KRATOS_WARNING("Invalid file handle") << "Attempt to close an invalid file" << std::endl; + } +} + unsigned File::GetFileSize() const { hsize_t size; diff --git a/applications/HDF5Application/custom_io/hdf5_file.h b/applications/HDF5Application/custom_io/hdf5_file.h index ed679f07bc14..4e413a29f6a1 100644 --- a/applications/HDF5Application/custom_io/hdf5_file.h +++ b/applications/HDF5Application/custom_io/hdf5_file.h @@ -167,6 +167,12 @@ class File void Flush(); + /// Terminate access to the HDF5 file. + /* + * @throws If the underlying HDF5 call fails. + */ + void Close(); + unsigned GetFileSize() const; std::string GetFileName() const; diff --git a/applications/HDF5Application/custom_python/add_custom_io_to_python.cpp b/applications/HDF5Application/custom_python/add_custom_io_to_python.cpp index 3bf4236bb9fe..018ea7e5ac25 100644 --- a/applications/HDF5Application/custom_python/add_custom_io_to_python.cpp +++ b/applications/HDF5Application/custom_python/add_custom_io_to_python.cpp @@ -87,6 +87,7 @@ void AddCustomIOToPython(pybind11::module& m) .def("HasIntDataType",&HDF5::File::HasIntDataType) .def("HasFloatDataType",&HDF5::File::HasFloatDataType) .def("Flush",&HDF5::File::Flush) + .def("Close", &HDF5::File::Close) .def("GetFileSize",&HDF5::File::GetFileSize) .def("GetFileName",&HDF5::File::GetFileName) ; diff --git a/applications/HDF5Application/python_scripts/core/file_io.py b/applications/HDF5Application/python_scripts/core/file_io.py index e1d3b82d8d4c..fbbecdd84feb 100644 --- a/applications/HDF5Application/python_scripts/core/file_io.py +++ b/applications/HDF5Application/python_scripts/core/file_io.py @@ -150,3 +150,24 @@ def Create(settings, data_comm): io.file_driver = settings['file_driver'] io.echo_level = settings['echo_level'] return io + +class OpenHDF5File(object): + """@brief A context responsible for managing the lifetime of HDF5 files.""" + + def __init__(self, file_parameters: KratosMultiphysics.Parameters, model_part: KratosMultiphysics.ModelPart): + self.__parameters = ParametersWrapper(file_parameters) + self.__model_part = model_part + self.__file: KratosHDF5.HDF5File = None + + def __enter__(self) -> KratosHDF5.HDF5File: + distributed = "parallel_hdf5_file_io" if self.__model_part.IsDistributed() else "serial_hdf5_file_io" + if self.__parameters.Has("io_type"): + self.__parameters["io_type"].SetString(distributed) + else: + self.__parameters.AddString("io_type", distributed) + self.__file = Create(self.__parameters, self.__model_part.GetCommunicator().GetDataCommunicator()).Get(self.__model_part) + return self.__file + + def __exit__(self, exit_type, exit_value, exit_traceback) -> None: + self.__file.Close() + self.__file = None diff --git a/applications/HDF5Application/python_scripts/line_output_process.py b/applications/HDF5Application/python_scripts/line_output_process.py index 013d00e4c33a..bcf1ded31cb2 100644 --- a/applications/HDF5Application/python_scripts/line_output_process.py +++ b/applications/HDF5Application/python_scripts/line_output_process.py @@ -8,7 +8,7 @@ def Factory(parameters: KratosMultiphysics.Parameters, model: KratosMultiphysics.Model): if not isinstance(parameters, KratosMultiphysics.Parameters): raise Exception("expecting input parameters of type KratosMultiphysics.Parameters, but got {}".format(type(parameters))) - return LineOutputProcess(model, parameters) + return LineOutputProcess(model, parameters["Parameters"]) class LineOutputProcess(KratosMultiphysics.OutputProcess): @@ -49,7 +49,6 @@ def GetDefaultParameters(): "file_parameters" : { "file_name" : "", "file_access_mode" : "read_write", - "file_driver" : "sec2", "echo_level" : 0 } }""") diff --git a/applications/HDF5Application/python_scripts/point_set_output_process.py b/applications/HDF5Application/python_scripts/point_set_output_process.py index a0890308789f..4f487509c522 100644 --- a/applications/HDF5Application/python_scripts/point_set_output_process.py +++ b/applications/HDF5Application/python_scripts/point_set_output_process.py @@ -4,13 +4,14 @@ # HDF5 imports import KratosMultiphysics.HDF5Application as HDF5Application from KratosMultiphysics.HDF5Application.core.operations.model_part import Prefix +from KratosMultiphysics.HDF5Application.core.file_io import OpenHDF5File def Factory(parameters: KratosMultiphysics.Parameters, model: KratosMultiphysics.Model): if not isinstance(parameters, KratosMultiphysics.Parameters): raise Exception("expecting input parameters of type KratosMultiphysics.Parameters, but got {}".format(type(parameters))) - return PointSetOutputProcess(model, parameters) + return PointSetOutputProcess(model, parameters["Parameters"]) @@ -76,14 +77,17 @@ def ExecuteInitialize(self): "write_vertex_ids" : true }""") io_parameters["prefix"].SetString(coordinates_path) - with OpenHDF5File(self.__GetCurrentFileParameters(), self.is_distributed) as file: - HDF5Application.VertexContainerCoordinateIO(io_parameters, file).Write(self.vertices) + with OpenHDF5File(self.__GetCurrentFileParameters(), self.model_part) as file: + # Skip writing if the analysis is restarted and the group already exists. + if self.model_part.ProcessInfo[KratosMultiphysics.IS_RESTARTED] and file.HasPath(coordinates_path): + KratosMultiphysics.Logger.PrintWarning("[PointSetOutputProcess] Path exists", f"Skip writing vertex coordinates to group: {coordinates_path}") + else: + HDF5Application.VertexContainerCoordinateIO(io_parameters, file).Write(self.vertices) + def PrintOutput(self): - prefix = Prefix( - self.variables_prefix_pattern, - self.model_part) + prefix = Prefix(self.variables_prefix_pattern, self.model_part) io_parameters = KratosMultiphysics.Parameters() io_parameters.AddString("prefix", prefix) @@ -93,8 +97,12 @@ def PrintOutput(self): file_parameters = self.__GetCurrentFileParameters() file_parameters["file_access_mode"].SetString("read_write") - with OpenHDF5File(file_parameters, self.is_distributed) as file: - HDF5Application.VertexContainerVariableIO(io_parameters, file).Write(self.vertices) + with OpenHDF5File(file_parameters, self.model_part) as file: + # Skip writing if the analysis is restarted and the group already exists. + if self.model_part.ProcessInfo[KratosMultiphysics.IS_RESTARTED] and file.HasPath(prefix): + KratosMultiphysics.Logger.PrintWarning("[PointSetOutputProcess] Path exists", f"Skip writing vertex data to group: {prefix}") + else: + HDF5Application.VertexContainerVariableIO(io_parameters, file).Write(self.vertices) @staticmethod @@ -113,7 +121,6 @@ def GetDefaultParameters(): "file_parameters" : { "file_name" : "", "file_access_mode" : "truncate", - "file_driver" : "sec2", "echo_level" : 0 } }""") @@ -127,25 +134,3 @@ def __GetCurrentFileParameters(self): parameters["file_name"].SetString(file_name) return parameters - - -class OpenHDF5File(object): - - def __init__(self, - file_parameters: KratosMultiphysics.Parameters, - is_distributed: bool): - parameters = file_parameters.Clone() - if is_distributed: - parameters["file_driver"].SetString("mpio") - self.file = HDF5Application.HDF5FileParallel(parameters) - else: - self.file = HDF5Application.HDF5FileSerial(parameters) - - - def __enter__(self): - return self.file - - - def __exit__(self, exit_type, exit_value, exit_traceback): - # HDF5::File has RAII, so this is the best we can do to close it - self.file = None \ No newline at end of file diff --git a/applications/HDF5Application/tests/test_line_output_process.py b/applications/HDF5Application/tests/test_line_output_process.py index d485ce7e4ef4..3a84af6c43b2 100644 --- a/applications/HDF5Application/tests/test_line_output_process.py +++ b/applications/HDF5Application/tests/test_line_output_process.py @@ -1,10 +1,14 @@ +# Core imports import KratosMultiphysics import KratosMultiphysics.kratos_utilities as KratosUtils from KratosMultiphysics import KratosUnittest as UnitTest + +# HDF5 imports from KratosMultiphysics.HDF5Application.line_output_process import Factory as LineOutputProcessFactory from KratosMultiphysics.testing.utilities import ReadModelPart +from KratosMultiphysics.HDF5Application.core.file_io import OpenHDF5File -import math +# STD imports import pathlib @@ -32,7 +36,9 @@ def test_LineOutputProcess(self): parameters = self.parameters number_of_steps = 10 - process = LineOutputProcessFactory(parameters, model) + process_parameters = KratosMultiphysics.Parameters() + process_parameters.AddValue("Parameters", parameters) + process = LineOutputProcessFactory(process_parameters, model) process.ExecuteInitialize() for i_step in range(number_of_steps): @@ -53,19 +59,12 @@ def test_LineOutputProcess(self): # Open output file file_parameters = parameters["file_parameters"].Clone() - file_parameters.AddString("file_access_mode","read_only") - if self.communicator.IsDistributed(): - File = KratosMultiphysics.HDF5Application.HDF5FileParallel - file_parameters.AddString("file_driver", "mpio") - else: - File = KratosMultiphysics.HDF5Application.HDF5FileSerial - - file = File(file_parameters) - - # Check output file structure - root = "/test_line_output_{}".format(parameters["model_part_name"].GetString()) - self.assertTrue(file.IsGroup(root)) - self.assertTrue(file.IsDataSet(root + "/POSITION")) + file_parameters.AddString("file_access_mode", "read_only") + with OpenHDF5File(file_parameters, model_part) as file: + # Check output file structure + root = "/test_line_output_{}".format(parameters["model_part_name"].GetString()) + self.assertTrue(file.IsGroup(root)) + self.assertTrue(file.IsDataSet(root + "/POSITION")) @property diff --git a/applications/HDF5Application/tests/test_point_set_output_process.py b/applications/HDF5Application/tests/test_point_set_output_process.py index cb20f5f3c1e6..d84e034632af 100644 --- a/applications/HDF5Application/tests/test_point_set_output_process.py +++ b/applications/HDF5Application/tests/test_point_set_output_process.py @@ -7,20 +7,20 @@ # HDF5 imports from KratosMultiphysics import HDF5Application as HDF5 from KratosMultiphysics.HDF5Application.point_set_output_process import Factory as PointSetOutputProcessFactory +from KratosMultiphysics.HDF5Application.core.file_io import OpenHDF5File # STL imports -import math import pathlib + class TestPointSetOutputProcess(UnitTest.TestCase): communicator = KratosMultiphysics.Testing.GetDefaultDataCommunicator() - file_name = "test_point_set_output.h5" def setUp(self): - KratosUtils.DeleteFileIfExisting(self.file_name) + KratosUtils.DeleteFileIfExisting("test_point_set_output.h5") self.communicator.Barrier() @@ -29,7 +29,7 @@ def tearDown(self): # so if you need to validate the results, comment the line # below. self.communicator.Barrier() - KratosUtils.DeleteFileIfExisting(self.file_name) + KratosUtils.DeleteFileIfExisting("test_point_set_output.h5") def test_PointSetOutputProcessWrite(self): @@ -38,7 +38,9 @@ def test_PointSetOutputProcessWrite(self): number_of_steps = 10 # Write coordinates and variables - point_set_output_process = PointSetOutputProcessFactory(parameters, model) + process_parameters = KratosMultiphysics.Parameters() + process_parameters.AddValue("Parameters", parameters) + point_set_output_process = PointSetOutputProcessFactory(process_parameters, model) point_set_output_process.ExecuteInitialize() for i_step in range(number_of_steps): @@ -59,43 +61,27 @@ def test_PointSetOutputProcessWrite(self): # Open output file file_parameters = parameters["file_parameters"].Clone() - file_parameters.AddString("file_access_mode","read_only") - if self.communicator.IsDistributed(): - File = KratosMultiphysics.HDF5Application.HDF5FileParallel - file_parameters.AddString("file_driver", "mpio") - else: - File = KratosMultiphysics.HDF5Application.HDF5FileSerial - - file = File(file_parameters) - - # Check output file structure - root = "/test_point_set_output_{}".format(parameters["model_part_name"].GetString()) - self.assertTrue(file.IsGroup(root)) - self.assertTrue(file.IsDataSet(root + "/POSITION")) - + file_parameters["file_access_mode"].SetString("read_only") + with OpenHDF5File(file_parameters, model_part) as file: + # Check output file structure + root = "/test_point_set_output_{}".format(parameters["model_part_name"].GetString()) + self.assertTrue(file.IsGroup(root)) + self.assertTrue(file.IsDataSet(root + "/POSITION")) @property def parameters(self) -> KratosMultiphysics.Parameters: parameters = KratosMultiphysics.Parameters("""{ "model_part_name" : "main", - "positions" : [], + "positions" : [[0.0, 0.0, 0.0]], "output_variables" : ["DISPLACEMENT_X", "VELOCITY"], "output_frequency" : 3, "coordinates_prefix" : "/test_point_set_output_", "variables_prefix" : "/test_point_set_output_/test_step_", "file_parameters" : { - "file_name" : "" + "file_name" : "test_point_set_output.h5", + "file_access_mode" : "read_write" } }""") - parameters["file_parameters"]["file_name"].SetString(self.file_name) - - # Create sample points across the the element row - positions = parameters["positions"] - number_of_points = 50 - for i_point in range(number_of_points): - s = float(i_point) / (number_of_points - 1) - position = KratosMultiphysics.Vector([s, s, 0.0]) - positions.Append(position) return parameters diff --git a/applications/LinearSolversApplication/CMakeLists.txt b/applications/LinearSolversApplication/CMakeLists.txt index 8a6fbd7833c5..0c0597b7d5cd 100644 --- a/applications/LinearSolversApplication/CMakeLists.txt +++ b/applications/LinearSolversApplication/CMakeLists.txt @@ -102,18 +102,22 @@ IF(CMAKE_UNITY_BUILD MATCHES ON) ENDIF(CMAKE_UNITY_BUILD MATCHES ON) if( USE_EIGEN_MKL MATCHES ON ) - if( ${CMAKE_SYSTEM_NAME} MATCHES "Windows" ) + if( MSVC ) find_library(MKL_RT_LIB mkl_rt) - message( "mkl_rt.lib found at: ${MKL_RT_LIB}") - target_link_libraries( KratosLinearSolversCore PUBLIC ${MKL_RT_LIB} ) + if(NOT MKL_RT_LIB) + message( FATAL_ERROR "mkl_rt.lib not found") + else(NOT MKL_RT_LIB) + message( "mkl_rt.lib found at: ${MKL_RT_LIB}") + target_link_libraries( KratosLinearSolversCore PUBLIC ${MKL_RT_LIB} ) + endif(NOT MKL_RT_LIB) elseif( ${CMAKE_CXX_COMPILER_ID} MATCHES Clang ) message( FATAL_ERROR "Clang does not yet support MKL" ) - else( ${CMAKE_SYSTEM_NAME} MATCHES "Windows" ) + else( MSVC ) target_link_libraries( KratosLinearSolversCore PUBLIC mkl_rt ) if( USE_EIGEN_FEAST MATCHES ON ) target_link_libraries(KratosLinearSolversCore PUBLIC feast4 gfortran m) endif() - endif( ${CMAKE_SYSTEM_NAME} MATCHES "Windows" ) + endif( MSVC ) endif() # changing the .dll suffix to .pyd diff --git a/applications/LinearSolversApplication/README.md b/applications/LinearSolversApplication/README.md index e4a057e6589a..cbf95225179b 100644 --- a/applications/LinearSolversApplication/README.md +++ b/applications/LinearSolversApplication/README.md @@ -132,13 +132,13 @@ In case you have installed [MKL](https://software.intel.com/en-us/mkl) (see belo **Windows:** ```batch - call "C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\mkl\bin\mklvars.bat" intel64 lp64 + call "C:\Program Files (x86)\Intel\oneAPI\mkl\latest\env\vars.bat" intel64 lp64 ``` **Linux:** ```bash - source /opt/intel/mkl/bin/mklvars.sh intel64 lp64 + source /opt/intel/oneapi/setvars.sh intel64 ``` 2. Add the following flag to CMake to your configure script: @@ -161,51 +161,45 @@ In case you have installed [MKL](https://software.intel.com/en-us/mkl) (see belo **Windows:** - Copy the required MKL libraries to the Kratos `lib` - ```batch - C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\intel64_win\mkl\mkl_core.dll - C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\intel64_win\mkl\mkl_rt.dll - C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\intel64_win\mkl\mkl_intel_thread.dll - C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\intel64_win\mkl\mkl_def.dll - C:\Program Files (x86)\IntelSWTools\compilers_and_libraries\windows\redist\intel64_win\compiler\libiomp5md.dll + call "C:\Program Files (x86)\Intel\oneAPI\mkl\latest\env\vars.bat" intel64 lp64 ``` - or add the folders to your `PATH`/`LD_LIBRARY_PATH` variable. - **Linux:** Set the environment before using MKL + ```bash - source /opt/intel/mkl/bin/mklvars.sh intel64 lp64 + source /opt/intel/oneapi/setvars.sh intel64 ``` ## Install MKL on Ubuntu with apt -Intel MKL can be installed with apt on Ubuntu. A guide can be found in https://software.intel.com/en-us/articles/installing-intel-free-libs-and-python-apt-repo. -For example to install the MKL 2020 version +Intel MKL can be installed with apt on Ubuntu. A guide can be found in [here](https://neelravi.com/post/intel-oneapi-install/). +For example to install the MKL 2022 version ```bash sudo bash # -# cd to /tmp where this shell has write permission -cd /tmp -# now get the key: -wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB -# now install that key -apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB -# now remove the public key file exit the root shell -rm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB -# add the repository for mkl only (other packages are not needed here) -sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list' -apt-get update -y -# install specific version of intel-mkl -apt-get install -y intel-mkl-2020.4-912 +# If they are not installed, you can install using the following command: +sudo apt update +sudo apt -y install cmake pkg-config build-essential +# use wget to fetch the Intel repository public key +wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB +# add to your apt sources keyring so that archives signed with this key will be trusted. +sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB +# remove the public key +rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB +# Configure apt client to use Intel repository +sudo add-apt-repository "deb https://apt.repos.intel.com/oneapi all main" +# Install all MKL related dependencies. You can install full HPC with: sudo apt install intel-hpckit +sudo apt install intel-oneapi-mkl-devel +# Exit exit ``` To enable the MKL environment (needs to be done before build/run) use ```bash -source /opt/intel/mkl/bin/mklvars.sh intel64 lp64 +source /opt/intel/oneapi/setvars.sh intel64 ``` diff --git a/applications/MappingApplication/python_scripts/serial_output_process.py b/applications/MappingApplication/python_scripts/serial_output_process.py index e09c88dd5af4..1abe878dfa0a 100644 --- a/applications/MappingApplication/python_scripts/serial_output_process.py +++ b/applications/MappingApplication/python_scripts/serial_output_process.py @@ -60,27 +60,37 @@ def __init__(self, model, settings): if self.destination_rank >= self.data_comm.Size(): raise Exception("Destination rank %i larger than available size %i" %(self.destination_rank, self.data_comm.Size())) - if self.data_comm.Rank() == self.destination_rank: - if mdpa_file_name_destination != "": + # optionally read mdpa (only on one rank) + if mdpa_file_name_destination != "": + if self.data_comm.Rank() == self.destination_rank: import_flags = KM.ModelPartIO.READ | KM.ModelPartIO.SKIP_TIMER KM.ModelPartIO(mdpa_file_name_destination, import_flags).ReadModelPart(self.model_part_destination) - self.output_process = None - if len(settings["output_process_settings"].keys()) > 0: - output_proc_params = KM.Parameters('''{ "dummy" : [] }''') - output_proc_params["dummy"].Append(settings["output_process_settings"]) - self.output_process = KratosProcessFactory(model).ConstructListOfProcesses(output_proc_params["dummy"])[0] + # properly initialize in MPI (on other ranks) + if model_part_origin.IsDistributed(): + import KratosMultiphysics.mpi as KratosMPI + + # initialize SubModelPartStructure on other ranks + KratosMPI.DistributedModelPartInitializer(self.model_part_destination, self.data_comm, self.destination_rank).CopySubModelPartStructure() + + data_comm_destination = KratosMPI.DataCommunicatorFactory.CreateFromRanksAndRegister( + self.data_comm, + [self.destination_rank], + "destination_mapping") + if self.data_comm.Rank() != self.destination_rank: + KratosMPI.ModelPartCommunicatorUtilities.SetMPICommunicatorRecursively(self.model_part_destination, data_comm_destination) + + # optionally create output process (only on one rank) + self.output_process = None + if len(settings["output_process_settings"].keys()) > 0 and self.data_comm.Rank() == self.destination_rank: + output_proc_params = KM.Parameters('''{ "dummy" : [] }''') + output_proc_params["dummy"].Append(settings["output_process_settings"]) + self.output_process = KratosProcessFactory(model).ConstructListOfProcesses(output_proc_params["dummy"])[0] + + # create mapper if model_part_origin.IsDistributed(): - import KratosMultiphysics.mpi as KratosMPI from KratosMultiphysics.MappingApplication.MPIExtension import MPIMapperFactory - data_comm_destination = KratosMPI.DataCommunicatorFactory.CreateFromRanksAndRegister( - self.data_comm, - [self.destination_rank], - "destination_mapping") - - if self.data_comm.Rank() != self.destination_rank: - KratosMPI.ModelPartCommunicatorUtilities.SetMPICommunicator(self.model_part_destination, data_comm_destination) self.mapper = MPIMapperFactory.CreateMapper( model_part_origin, diff --git a/applications/MeshMovingApplication/custom_python/add_custom_utilities_to_python.cpp b/applications/MeshMovingApplication/custom_python/add_custom_utilities_to_python.cpp index f543a7aacb44..1a2e0e981f42 100644 --- a/applications/MeshMovingApplication/custom_python/add_custom_utilities_to_python.cpp +++ b/applications/MeshMovingApplication/custom_python/add_custom_utilities_to_python.cpp @@ -22,7 +22,6 @@ // Application includes #include "custom_python/add_custom_utilities_to_python.h" -#include "custom_utilities/explicit_fixed_mesh_ale_utilities.h" #include "custom_utilities/fixed_mesh_ale_utilities.h" #include "custom_utilities/mesh_velocity_calculation.h" #include "custom_utilities/move_mesh_utilities.h" @@ -37,7 +36,6 @@ void AddCustomUtilitiesToPython(pybind11::module& m) { py::class_(m, "FixedMeshALEUtilities") .def(py::init()) - .def(py::init()) .def("Initialize", &FixedMeshALEUtilities::Initialize) .def("SetVirtualMeshValuesFromOriginMesh", &FixedMeshALEUtilities::SetVirtualMeshValuesFromOriginMesh) .def("ComputeMeshMovement", &FixedMeshALEUtilities::ComputeMeshMovement) @@ -45,16 +43,6 @@ void AddCustomUtilitiesToPython(pybind11::module& m) { .def("ProjectVirtualValues3D", &FixedMeshALEUtilities::ProjectVirtualValues<3>) .def("UndoMeshMovement", &FixedMeshALEUtilities::UndoMeshMovement); - py::class_(m, "ExplicitFixedMeshALEUtilities") - .def(py::init()) - .def(py::init()) - .def("Initialize", &ExplicitFixedMeshALEUtilities::Initialize) - .def("SetVirtualMeshValuesFromOriginMesh", &ExplicitFixedMeshALEUtilities::SetVirtualMeshValuesFromOriginMesh) - .def("ComputeMeshMovement", &ExplicitFixedMeshALEUtilities::ComputeMeshMovement) - .def("ProjectVirtualValues2D", &ExplicitFixedMeshALEUtilities::ProjectVirtualValues<2>) - .def("ProjectVirtualValues3D", &ExplicitFixedMeshALEUtilities::ProjectVirtualValues<3>) - .def("UndoMeshMovement", &ExplicitFixedMeshALEUtilities::UndoMeshMovement); - py::class_(m, "LinearTransform") .def(py::init&, const double, const array_1d&, const array_1d&>()) .def(py::init&, const array_1d&, const array_1d&>()) diff --git a/applications/MeshMovingApplication/custom_utilities/explicit_fixed_mesh_ale_utilities.cpp b/applications/MeshMovingApplication/custom_utilities/explicit_fixed_mesh_ale_utilities.cpp deleted file mode 100644 index f9af254a0e4e..000000000000 --- a/applications/MeshMovingApplication/custom_utilities/explicit_fixed_mesh_ale_utilities.cpp +++ /dev/null @@ -1,248 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Ruben Zorrilla -// -// - -// System includes - -// External includes - -// Application includes -#include "custom_utilities/explicit_fixed_mesh_ale_utilities.h" -#include "custom_utilities/mesh_velocity_calculation.h" -#include "custom_utilities/move_mesh_utilities.h" - -// Project includes -#include "includes/mesh_moving_variables.h" -#include "spatial_containers/spatial_containers.h" -#include "utilities/binbased_fast_point_locator.h" -#include "utilities/spatial_containers_configure.h" -#include "utilities/variable_utils.h" -#include "utilities/parallel_utilities.h" - - -namespace Kratos -{ -/* Public functions *******************************************************/ - -ExplicitFixedMeshALEUtilities::ExplicitFixedMeshALEUtilities( - ModelPart &rVirtualModelPart, - ModelPart &rStructureModelPart, - const double SearchRadius) : - FixedMeshALEUtilities( - rVirtualModelPart, - rStructureModelPart), - mSearchRadius(SearchRadius) -{ - // Check the structure model part - if (mrStructureModelPart.GetBufferSize() < 2) { - (mrStructureModelPart.GetRootModelPart()).SetBufferSize(2); - KRATOS_WARNING("ExplicitFixedMeshALEUtilities") << "Structure model part buffer size is 1. Setting buffer size to 2." << std::endl; - } -} - -ExplicitFixedMeshALEUtilities::ExplicitFixedMeshALEUtilities( - Model &rModel, - Parameters &rParameters) : - FixedMeshALEUtilities( - rModel.GetModelPart(rParameters["virtual_model_part_name"].GetString()), - rModel.GetModelPart(rParameters["structure_model_part_name"].GetString())), - mSearchRadius(rParameters["search_radius"].GetDouble()) -{ - // Validate with default parameters - Parameters default_parameters(R"( - { - "virtual_model_part_name": "", - "structure_model_part_name": "", - "search_radius": 0.0 - } )"); - rParameters.ValidateAndAssignDefaults(default_parameters); - - // Check the input level set type - if (mSearchRadius <= 0.0) { - KRATOS_ERROR << "Search radius is: " << mSearchRadius << ". A value larger than 0 is expected."; - } - - // Check the structure model part - if (mrStructureModelPart.GetBufferSize() < 2) { - (mrStructureModelPart.GetRootModelPart()).SetBufferSize(2); - KRATOS_WARNING("FixedMeshALEUtilities") << "Structure model part buffer size is 1. Setting buffer size to 2." << std::endl; - } -} - -void ExplicitFixedMeshALEUtilities::Initialize(ModelPart &rOriginModelPart) -{ - // Fill the virtual model part as a copy of the origin mesh - this->FillVirtualModelPart(rOriginModelPart); -} - -void -ExplicitFixedMeshALEUtilities::ComputeMeshMovement(const double DeltaTime) -{ - VectorResultNodesContainerType search_results; - DistanceVectorContainerType search_distance_results; - - this->SearchStructureNodes(search_results, search_distance_results); - this->ComputeExplicitMeshDisplacement(search_results, search_distance_results); - TimeDiscretization::BDF1 time_disc_BDF1; - mrVirtualModelPart.GetProcessInfo()[DELTA_TIME] = DeltaTime; - MeshVelocityCalculation::CalculateMeshVelocities(mrVirtualModelPart, time_disc_BDF1); - MoveMeshUtilities::MoveMesh(mrVirtualModelPart.Nodes()); - - // Check that the moved virtual mesh has no negative Jacobian elements -#ifdef KRATOS_DEBUG - for (auto it_elem : mrVirtualModelPart.ElementsArray()) { - KRATOS_ERROR_IF((it_elem->GetGeometry()).Area() < 0.0) << "Element " << it_elem->Id() << " in virtual model part has negative jacobian." << std::endl; - } -#endif -} - -/* Private functions *******************************************************/ - -void ExplicitFixedMeshALEUtilities::SearchStructureNodes( - VectorResultNodesContainerType &rSearchResults, - DistanceVectorContainerType &rSearchDistanceResults) { - - auto &r_virt_nodes = mrVirtualModelPart.NodesArray(); - const unsigned int n_virt_nodes = r_virt_nodes.size(); - auto &r_structure_nodes = mrStructureModelPart.NodesArray(); - const unsigned int max_number_of_nodes = r_structure_nodes.size(); - - rSearchResults.resize(n_virt_nodes); - rSearchDistanceResults.resize(n_virt_nodes); - - NodeBinsType bins(r_structure_nodes.begin(), r_structure_nodes.end()); - - IndexPartition( static_cast(n_virt_nodes) ).for_each( - [&]( size_t index ) - { - // Initialize the search results variables - std::size_t n_results = 0; - ResultNodesContainerType i_node_results(max_number_of_nodes); - DistanceVectorType i_node_distance_results(max_number_of_nodes); - auto it_results = i_node_results.begin(); - auto it_results_distances = i_node_distance_results.begin(); - - // Perform the structure nodes search - auto it_virt_node = r_virt_nodes.begin() + index; - n_results = bins.SearchObjectsInRadiusExclusive(*it_virt_node, mSearchRadius, it_results, it_results_distances, max_number_of_nodes); - - // Resize and save the current virtual node results - i_node_results.resize(n_results); - i_node_distance_results.resize(n_results); - - rSearchResults[index] = i_node_results; - rSearchDistanceResults[index] = i_node_distance_results; - } ); -} - -void ExplicitFixedMeshALEUtilities::ComputeExplicitMeshDisplacement( - const VectorResultNodesContainerType &rSearchResults, - const DistanceVectorContainerType &rSearchDistanceResults) -{ - IndexPartition( static_cast(mrVirtualModelPart.NumberOfNodes()) ).for_each( - [&]( std::size_t i_fl ) - { - // Get auxiliar current fluid node info. - auto it_node = mrVirtualModelPart.NodesBegin() + i_fl; - const auto i_fl_str_nodes = rSearchResults[i_fl]; - const auto i_fl_str_dists = rSearchDistanceResults[i_fl]; - const std::size_t n_str_nodes = i_fl_str_nodes.size(); - - // Check origin model part mesh displacementfixity - const auto it_orig_node = mpOriginModelPart->NodesBegin() + i_fl; - if (it_orig_node->IsFixed(MESH_DISPLACEMENT_X)) { - it_node->Fix(MESH_DISPLACEMENT_X); - } - if (it_orig_node->IsFixed(MESH_DISPLACEMENT_Y)) { - it_node->Fix(MESH_DISPLACEMENT_Y); - } - if (it_orig_node->IsFixed(MESH_DISPLACEMENT_Z)) { - it_node->Fix(MESH_DISPLACEMENT_Z); - } - - // Initialize the current virtual model part node MESH_DISPLACEMENT - auto &r_mesh_disp = it_node->FastGetSolutionStepValue(MESH_DISPLACEMENT); - r_mesh_disp = ZeroVector(3); - - // Check if any structure node is found - if (n_str_nodes != 0){ - // Compute the closest structure node MESH_DISPLACEMENT - double min_distance = 1.01; - Node<3>::Pointer str_node_ptr = nullptr; - for(unsigned int i_str = 0; i_str < n_str_nodes; ++i_str) { - // Compute the structure point weight according to the kernel function - const double normalised_distance = std::sqrt(i_fl_str_dists[i_str]) / mSearchRadius; - - // Check if the point is closer than the current one - if (normalised_distance < min_distance) { - min_distance = normalised_distance; - str_node_ptr = i_fl_str_nodes[i_str]; - } - } - - // Current step structure pt. DISPLACEMENT values - if (str_node_ptr) { - const double weight = this->ComputeKernelValue(min_distance); - const auto &r_str_disp_0 = str_node_ptr->FastGetSolutionStepValue(DISPLACEMENT,0); - const auto &r_str_disp_1 = str_node_ptr->FastGetSolutionStepValue(DISPLACEMENT,1); - const auto str_disp = weight * (r_str_disp_0 - r_str_disp_1); - if (!it_node->IsFixed(MESH_DISPLACEMENT_X)) { - r_mesh_disp[0] = str_disp[0]; - } - if (!it_node->IsFixed(MESH_DISPLACEMENT_Y)) { - r_mesh_disp[1] = str_disp[1]; - } - if (!it_node->IsFixed(MESH_DISPLACEMENT_Z)) { - r_mesh_disp[2] = str_disp[2]; - } - } // if ( str_node_ptr ) - } // if ( n_str_nodes != 0 ) - } ); // IndexPartition.for_each -} - -inline double ExplicitFixedMeshALEUtilities::ComputeKernelValue(const double NormalisedDistance){ - // Epanechnikov (parabolic) kernel function - // return (std::abs(NormalisedDistance) < 1.0) ? std::abs((3.0/4.0)*(1.0-std::pow(NormalisedDistance,2))) : 0.0; - // Triangle kernel function - return (std::abs(NormalisedDistance) < 1.0) ? 1.0 - std::abs(NormalisedDistance) : 0.0; -} - -void ExplicitFixedMeshALEUtilities::CreateVirtualModelPartElements(const ModelPart &rOriginModelPart) -{ - // Copy the origin model part elements - auto &r_elems = rOriginModelPart.Elements(); - for(auto &elem : r_elems) { - // Set the array of virtual nodes to create the element from the original ids. - PointsArrayType nodes_array; - auto &r_orig_geom = elem.GetGeometry(); - for (unsigned int i = 0; i < r_orig_geom.PointsNumber(); ++i){ - nodes_array.push_back(mrVirtualModelPart.pGetNode(r_orig_geom[i].Id())); - } - - // Create the same element but using the virtual model part nodes - auto p_elem = elem.Create(elem.Id(), nodes_array, elem.pGetProperties()); - mrVirtualModelPart.AddElement(p_elem); - } -} - -/* External functions *****************************************************/ - -/// output stream function -inline std::ostream& operator << ( - std::ostream& rOStream, - const ExplicitFixedMeshALEUtilities& rThis) { - - rThis.PrintData(rOStream); - return rOStream; -} - -} // namespace Kratos diff --git a/applications/MeshMovingApplication/custom_utilities/explicit_fixed_mesh_ale_utilities.h b/applications/MeshMovingApplication/custom_utilities/explicit_fixed_mesh_ale_utilities.h deleted file mode 100644 index 373a82355cf2..000000000000 --- a/applications/MeshMovingApplication/custom_utilities/explicit_fixed_mesh_ale_utilities.h +++ /dev/null @@ -1,287 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main author: Ruben Zorrilla -// - -#if !defined(KRATOS_EXPLICIT_FIXED_MESH_ALE_UTILITIES_H_INCLUDED ) -#define KRATOS_EXPLICIT_FIXED_MESH_ALE_UTILITIES_H_INCLUDED - -// System includes - -// External includes - -// Project includes -#include "containers/model.h" -#include "includes/define.h" -#include "spatial_containers/spatial_search.h" -#include "spatial_containers/bins_dynamic_objects.h" -#include "spatial_containers/configures/node_configure.h" - -// Application includes -#include "custom_utilities/fixed_mesh_ale_utilities.h" - -namespace Kratos -{ - ///@addtogroup FluidDynamicsApplication - ///@{ - - ///@name Kratos Globals - ///@{ - - ///@} - ///@name Type Definitions - ///@{ - - ///@} - ///@name Enum's - ///@{ - - ///@} - ///@name Functions - ///@{ - - ///@} - ///@name Kratos Classes - ///@{ - - /// Utility to initialize the historical data in moving boundary problems - /** This utility is based on the Fixed Mesh - Arbitrary Lagrangian Eulerian - * (FM-ALE) method but solving the mesh problem in an explicit manner. Thus, - * a virtual mesh is set. This virtual mesh is moved according to the embedded - * object movement. The virtual mesh movement, is computed in an explicit - * manner as a weighted average. Such weights are computed by means of a - * kernel function. Once the mesh movement (and velocity) have been computed, - * the origin mesh historical values (velocity and pressure) are computed as - * an interpolation in the virtual model part. - */ - class KRATOS_API(MESH_MOVING_APPLICATION) ExplicitFixedMeshALEUtilities : public FixedMeshALEUtilities - { - public: - - ///@name Type Definitions - ///@{ - - typedef Element::GeometryType::PointsArrayType PointsArrayType; - typedef BinsObjectDynamic NodeBinsType; - typedef std::vector DistanceVectorType; - typedef SpatialSearch::ResultNodesContainerType ResultNodesContainerType; - typedef std::vector> DistanceVectorContainerType; - typedef SpatialSearch::VectorResultNodesContainerType VectorResultNodesContainerType; - - /// Pointer definition of ExplicitFixedMeshALEUtilities - KRATOS_CLASS_POINTER_DEFINITION(ExplicitFixedMeshALEUtilities); - - ///@} - ///@name Life Cycle - ///@{ - - /// Constructor - ExplicitFixedMeshALEUtilities( - ModelPart &rVirtualModelPart, - ModelPart &rStructureModelPart, - const double SearchRadius); - - /// Constructor with model and parameters - ExplicitFixedMeshALEUtilities( - Model &rModel, - Parameters &rParameters); - - /// Destructor. - ~ExplicitFixedMeshALEUtilities() = default; - - ///@} - ///@name Operators - ///@{ - - - ///@} - ///@name Operations - ///@{ - - /** - * @brief Initializes the FM-ALE utility - * This method fills the virtual model part as a copy of the origin model part. - * In case it is used, it also creates and initializes the mesh moving strategy - * @param rOriginModelPart model part from where the nodes and elements are copied - */ - void Initialize(ModelPart &rOriginModelPart) override; - - /** - * This method performs the explicit mesh movement (computes the MESH_DISPLACEMENT value and moves - * the mesh accordingly) and computes the MESH_VELOCITY values. - * @param DeltaTime time step value (used in the computation of the MESH_VELOCITY values) - */ - void ComputeMeshMovement(const double DeltaTime) override; - - ///@} - ///@name Access - ///@{ - - - ///@} - ///@name Inquiry - ///@{ - - - ///@} - ///@name Input and output - ///@{ - - /// Turn back information as a string. - std::string Info() const; - - /// Print information about this object. - void PrintInfo(std::ostream& rOStream) const; - - /// Print object's data. - void PrintData(std::ostream& rOStream) const; - - ///@} - ///@name Friends - ///@{ - - - ///@} -protected: - ///@name Static Member Variables - ///@{ - - - ///@} - ///@name Member Variables - ///@{ - - - ///@} - ///@name Protected Operators - ///@{ - - - ///@} - ///@name Protected Operations - ///@{ - - /** - * @brief Create the virtual model part elements - * This method creates the elements in the virtual model part - * @param rOriginModelPart Origin model part to mimic the elements from - */ - void CreateVirtualModelPartElements(const ModelPart &rOriginModelPart) override; - - ///@} - ///@name Protected Access - ///@{ - - - ///@} - ///@name Protected Inquiry - ///@{ - - - ///@} - ///@name Un accessible methods - ///@{ - - - ///@} -private: - ///@name Static Member Variables - ///@{ - - - ///@} - ///@name Member Variables - ///@{ - - const double mSearchRadius; - - ///@} - ///@name Private Operators - ///@{ - - - ///@} - ///@name Private Operations - ///@{ - - /** - * According to mSearchRadius, performs the bins search of the close structure nodes for each fluid node - * @return rSearchResults vector containing the the rStructureModelPart nodes inside - * @return rSearchDistanceResults vector containing the the rStructureModelPart nodes - * inside SearchRadius distance values for each rModelPart nodes - */ - void SearchStructureNodes( - VectorResultNodesContainerType &rSearchResults, - DistanceVectorContainerType &rSearchDistanceResults); - - /** - * Computes the MESH_DISPLACEMENT value for each fluid node. This operation is explicitly computed - * as a weighted average of the structure nodes DISPLACEMENT values within the mSearchRadius. The - * weights are computed using a kernel function. - * @param rSearchResults vector containing the the rStructureModelPart nodes inside - * @param rSearchDistanceResults vector containing the the rStructureModelPart nodes - * inside SearchRadius distance values for each rModelPart nodes - */ - void ComputeExplicitMeshDisplacement( - const VectorResultNodesContainerType &rSearchResults, - const DistanceVectorContainerType &rSearchDistanceResults); - - /** - * Computes the kernel function value for a given normalised distance value - * @param NormalisedDistance structure node distance value normalised with the mSearchRadius - */ - inline double ComputeKernelValue(const double NormalisedDistance); - - ///@} - ///@name Private Access - ///@{ - - - ///@} - ///@name Private Inquiry - ///@{ - - - ///@} - ///@name Un accessible methods - ///@{ - - /// Assignment operator. - ExplicitFixedMeshALEUtilities& operator=(ExplicitFixedMeshALEUtilities const& rOther) = delete; - - /// Copy constructor. - ExplicitFixedMeshALEUtilities(ExplicitFixedMeshALEUtilities const& rOther) = delete; - - ///@} -}; // Class ExplicitFixedMeshALEUtilities - -///@} - -///@name Type Definitions -///@{ - - -///@} -///@name Input and output -///@{ - - -/// output stream function -inline std::ostream& operator << ( - std::ostream& rOStream, - const ExplicitFixedMeshALEUtilities& rThis); - -///@} - -///@} addtogroup block - -} // namespace Kratos. - -#endif // KRATOS_EXPLICIT_FIXED_MESH_ALE_UTILITIES_H_INCLUDED defined diff --git a/applications/MeshMovingApplication/custom_utilities/fixed_mesh_ale_utilities.cpp b/applications/MeshMovingApplication/custom_utilities/fixed_mesh_ale_utilities.cpp index 078fa771876a..3be7f0f3d65a 100644 --- a/applications/MeshMovingApplication/custom_utilities/fixed_mesh_ale_utilities.cpp +++ b/applications/MeshMovingApplication/custom_utilities/fixed_mesh_ale_utilities.cpp @@ -31,28 +31,6 @@ namespace Kratos { /* Public functions *******************************************************/ - FixedMeshALEUtilities::FixedMeshALEUtilities( - ModelPart &rVirtualModelPart, - ModelPart &rStructureModelPart) : - mrVirtualModelPart(rVirtualModelPart), - mrStructureModelPart(rStructureModelPart) - { - // Get the default settings - auto default_parameters = this->GetDefaultParameters(); - - // Set default embedded nodal variable settings - mEmbeddedNodalVariableSettings = default_parameters["embedded_nodal_variable_settings"]; - - // Set default linear solver pointer - this->SetLinearSolverPointer(default_parameters["linear_solver_settings"]); - - // Check the structure model part - if (mrStructureModelPart.GetBufferSize() < 2) { - (mrStructureModelPart.GetRootModelPart()).SetBufferSize(2); - KRATOS_WARNING("FixedMeshALEUtilities") << "Structure model part buffer size is 1. Setting buffer size to 2." << std::endl; - } - } - FixedMeshALEUtilities::FixedMeshALEUtilities( Model &rModel, Parameters &rParameters) : @@ -62,6 +40,21 @@ namespace Kratos // Validate with default parameters rParameters.ValidateAndAssignDefaults(this->GetDefaultParameters()); + // Set the lists containing the variables to be projected from the virtual to the origin mesh + for (std::string var_name : rParameters["projected_variable_names"].GetStringArray()) { + if (KratosComponents>::Has(var_name)) { + mScalarVariablesList.push_back(&(KratosComponents>::Get(var_name))); + } else if (KratosComponents>>::Has(var_name)) { + mArrayVariablesList.push_back(&(KratosComponents>>::Get(var_name))); + } else { + KRATOS_ERROR << "Variable '" << var_name << "' in 'projected_variable_names' is not of scalar nor array type." << std::endl; + } + } + + // Set the settings for the search in the virtual mesh + mSearchTolerance = rParameters["search_tolerance"].GetDouble(); + mSearchMaxResults = rParameters["search_max_results"].GetInt(); + // Save the embedded nodal variable settings mEmbeddedNodalVariableSettings = rParameters["embedded_nodal_variable_settings"]; @@ -101,11 +94,15 @@ namespace Kratos mrVirtualModelPart.SetProcessInfo(rOriginModelPart.GetProcessInfo()); // Add the required varibles to the virtual model part - mrVirtualModelPart.AddNodalSolutionStepVariable(VELOCITY); - mrVirtualModelPart.AddNodalSolutionStepVariable(PRESSURE); mrVirtualModelPart.AddNodalSolutionStepVariable(DISPLACEMENT); mrVirtualModelPart.AddNodalSolutionStepVariable(MESH_VELOCITY); mrVirtualModelPart.AddNodalSolutionStepVariable(MESH_DISPLACEMENT); + for (auto p_scalar_var : mScalarVariablesList) { + mrVirtualModelPart.AddNodalSolutionStepVariable(*p_scalar_var); + } + for (auto p_vector_var : mArrayVariablesList) { + mrVirtualModelPart.AddNodalSolutionStepVariable(*p_vector_var); + } // Set the buffer size in the virtual model part mrVirtualModelPart.SetBufferSize(rOriginModelPart.GetBufferSize()); @@ -143,15 +140,19 @@ namespace Kratos const auto it_orig_node = orig_nodes_begin + index; for (unsigned int step = 1; step < buffer_size; ++step) { - it_virt_node->FastGetSolutionStepValue(PRESSURE, step) = it_orig_node->FastGetSolutionStepValue(PRESSURE, step); - noalias(it_virt_node->FastGetSolutionStepValue(VELOCITY, step)) = it_orig_node->FastGetSolutionStepValue(VELOCITY, step); + for (auto p_scalar_var : mScalarVariablesList) { + it_virt_node->FastGetSolutionStepValue(*p_scalar_var, step) = it_orig_node->FastGetSolutionStepValue(*p_scalar_var, step); + } + for (auto p_vector_var : mArrayVariablesList) { + noalias(it_virt_node->FastGetSolutionStepValue(*p_vector_var, step)) = it_orig_node->FastGetSolutionStepValue(*p_vector_var, step); + } } } ); } void FixedMeshALEUtilities::ComputeMeshMovement(const double DeltaTime) { - // Initialize the PRESSURE and VELOCITY virtual mesh values + // Initialize the virtual mesh values this->InitializeVirtualMeshValues(); // Initialize the MESH_DISPLACEMENT fixity @@ -165,6 +166,7 @@ namespace Kratos // Set the mesh moving strategy this->SolveMeshMovementStrategy(DeltaTime); + } void FixedMeshALEUtilities::UndoMeshMovement() @@ -192,13 +194,20 @@ namespace Kratos // Search the origin model part nodes in the virtual mesh elements and // interpolate the values in the virtual element to the origin model part node - block_for_each( rOriginModelPart.Nodes(), - [&]( Node<3>& rNode ) - { + block_for_each( + rOriginModelPart.Nodes(), + typename BinBasedFastPointLocator::ResultContainerType(mSearchMaxResults), + [&](auto& rNode, auto& rSearchResults){ // Find the origin model part node in the virtual mesh - Vector aux_N; + Vector aux_N(TDim+1); Element::Pointer p_elem = nullptr; - const bool is_found = bin_based_point_locator.FindPointOnMeshSimplified(rNode.Coordinates(), aux_N, p_elem); + const bool is_found = bin_based_point_locator.FindPointOnMesh( + rNode.Coordinates(), + aux_N, + p_elem, + rSearchResults.begin(), + mSearchMaxResults, + mSearchTolerance); // Check if the node is found if (is_found){ @@ -207,8 +216,12 @@ namespace Kratos // Initialize historical data for (unsigned int i_step = 1; i_step < BufferSize; ++i_step) { - rNode.FastGetSolutionStepValue(PRESSURE, i_step) = 0.0; - noalias(rNode.FastGetSolutionStepValue(VELOCITY, i_step)) = ZeroVector(3); + for (auto p_scal_var : mScalarVariablesList) { + rNode.FastGetSolutionStepValue(*p_scal_var, i_step) = 0.0; + } + for (auto p_arr_var : mArrayVariablesList) { + noalias(rNode.FastGetSolutionStepValue(*p_arr_var, i_step)) = ZeroVector(3); + } } // Interpolate the origin model part nodal values @@ -220,10 +233,14 @@ namespace Kratos // Project historical data for (unsigned int i_step = 1; i_step < BufferSize; ++i_step){ - const auto &i_virt_v = r_geom[i_virt_node].FastGetSolutionStepValue(VELOCITY, i_step); - const double &i_virt_p = r_geom[i_virt_node].FastGetSolutionStepValue(PRESSURE, i_step); - rNode.FastGetSolutionStepValue(PRESSURE, i_step) += aux_N(i_virt_node) * i_virt_p; - noalias(rNode.FastGetSolutionStepValue(VELOCITY, i_step)) += aux_N(i_virt_node) * i_virt_v; + for (auto p_scal_var : mScalarVariablesList) { + const double &i_virt_val = r_geom[i_virt_node].FastGetSolutionStepValue(*p_scal_var, i_step); + rNode.FastGetSolutionStepValue(*p_scal_var, i_step) += aux_N(i_virt_node) * i_virt_val; + } + for (auto p_arr_var : mArrayVariablesList) { + const auto &i_virt_val = r_geom[i_virt_node].FastGetSolutionStepValue(*p_arr_var, i_step); + noalias(rNode.FastGetSolutionStepValue(*p_arr_var, i_step)) += aux_N(i_virt_node) * i_virt_val; + } } } } else { @@ -264,6 +281,9 @@ namespace Kratos { "virtual_model_part_name": "", "structure_model_part_name": "", + "projected_variable_names" : ["PRESSURE","VELOCITY"], + "search_tolerance" : 1.0e-5, + "search_max_results" : 10000, "linear_solver_settings": { "solver_type": "cg", "tolerance": 1.0e-8, diff --git a/applications/MeshMovingApplication/custom_utilities/fixed_mesh_ale_utilities.h b/applications/MeshMovingApplication/custom_utilities/fixed_mesh_ale_utilities.h index 4c6a50c75e73..e9bee8e45741 100644 --- a/applications/MeshMovingApplication/custom_utilities/fixed_mesh_ale_utilities.h +++ b/applications/MeshMovingApplication/custom_utilities/fixed_mesh_ale_utilities.h @@ -102,11 +102,6 @@ class KRATOS_API(MESH_MOVING_APPLICATION) FixedMeshALEUtilities ///@name Life Cycle ///@{ - /// Constructor - FixedMeshALEUtilities( - ModelPart &rVirtualModelPart, - ModelPart &rStructureModelPart); - /// Constructor with model and parameters FixedMeshALEUtilities( Model &rModel, @@ -201,13 +196,7 @@ class KRATOS_API(MESH_MOVING_APPLICATION) FixedMeshALEUtilities ///@} -protected: - ///@} - ///@name Life Cycle - ///@{ - - - ///@} +private: ///@name Static Member Variables ///@{ @@ -220,56 +209,13 @@ class KRATOS_API(MESH_MOVING_APPLICATION) FixedMeshALEUtilities ModelPart &mrStructureModelPart; ModelPart *mpOriginModelPart = nullptr; - Parameters mEmbeddedNodalVariableSettings; - - ///@} - ///@name Protected Operators - ///@{ - - - ///@} - ///@name Protected Operations - ///@{ - - /** - * This method fills the mrVirtualModelPart with the nodes and elmens of a given model part - * It has to be performed once since after each values projection the virtual mesh configuration - * is reverted to its original status. - * @param rOriginModelPart model part from where the nodes and elements are copied - */ - virtual void FillVirtualModelPart(ModelPart &rOriginModelPart); - - /** - * @brief Create the virtual model part elements - * This method creates the elements in the virtual model part - * @param rOriginModelPart Origin model part to mimic the elements from - */ - virtual void CreateVirtualModelPartElements(const ModelPart &rOriginModelPart); - - ///@} - ///@name Protected Access - ///@{ - - - ///@} - ///@name Protected Inquiry - ///@{ - - - ///@} - ///@name Un accessible methods - ///@{ - - - ///@} -private: - ///@name Static Member Variables - ///@{ + double mSearchTolerance; + unsigned int mSearchMaxResults; + Parameters mEmbeddedNodalVariableSettings; - ///@} - ///@name Member Variables - ///@{ + std::vector*> mScalarVariablesList; + std::vector>*> mArrayVariablesList; LinearSolverType::Pointer mpLinearSolver = nullptr; StrategyPointerType mpMeshMovingStrategy = nullptr; @@ -297,6 +243,21 @@ class KRATOS_API(MESH_MOVING_APPLICATION) FixedMeshALEUtilities */ void SetLinearSolverPointer(const Parameters &rLinearSolverSettings); + /** + * This method fills the mrVirtualModelPart with the nodes and elmens of a given model part + * It has to be performed once since after each values projection the virtual mesh configuration + * is reverted to its original status. + * @param rOriginModelPart model part from where the nodes and elements are copied + */ + virtual void FillVirtualModelPart(ModelPart &rOriginModelPart); + + /** + * @brief Create the virtual model part elements + * This method creates the elements in the virtual model part + * @param rOriginModelPart Origin model part to mimic the elements from + */ + virtual void CreateVirtualModelPartElements(const ModelPart &rOriginModelPart); + /** * @brief Set the Mesh Moving Strategy object * This methods sets the mesh moving linear solver strategy diff --git a/applications/MeshMovingApplication/tests/cpp_tests/test_explicit_fixed_mesh_ale_utilities.cpp b/applications/MeshMovingApplication/tests/cpp_tests/test_explicit_fixed_mesh_ale_utilities.cpp deleted file mode 100644 index 366207e220e3..000000000000 --- a/applications/MeshMovingApplication/tests/cpp_tests/test_explicit_fixed_mesh_ale_utilities.cpp +++ /dev/null @@ -1,141 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Ruben Zorrilla -// -// - -// Project includes -#include "containers/model.h" -#include "testing/testing.h" -#include "includes/checks.h" -#include "geometries/quadrilateral_2d_4.h" -#include "processes/structured_mesh_generator_process.h" -#include "utilities/variable_utils.h" -#include "includes/mesh_moving_variables.h" - -// Application includes -#include "custom_utilities/explicit_fixed_mesh_ale_utilities.h" - -namespace Kratos { -namespace Testing { - - KRATOS_TEST_CASE_IN_SUITE(ExplicitFixedMeshALEUtilities2D, MeshMovingApplicationFastSuite) - { - Model current_model; - - // Generate the origin model part (done with the StructuredMeshGeneratorProcess) - Node<3>::Pointer p_point_1 = Kratos::make_intrusive>(1, 0.0, 0.0, 0.0); - Node<3>::Pointer p_point_2 = Kratos::make_intrusive>(2, 0.0, 1.0, 0.0); - Node<3>::Pointer p_point_3 = Kratos::make_intrusive>(3, 1.0, 1.0, 0.0); - Node<3>::Pointer p_point_4 = Kratos::make_intrusive>(4, 1.0, 0.0, 0.0); - - Quadrilateral2D4 > geometry(p_point_1, p_point_2, p_point_3, p_point_4); - - Parameters mesher_parameters(R"( - { - "number_of_divisions": 3, - "element_name": "Element2D3N" - })"); - - ModelPart& origin_model_part = current_model.CreateModelPart("OriginModelPart"); - origin_model_part.SetBufferSize(3); - origin_model_part.AddNodalSolutionStepVariable(VELOCITY); - origin_model_part.AddNodalSolutionStepVariable(PRESSURE); - origin_model_part.AddNodalSolutionStepVariable(DISPLACEMENT); - origin_model_part.AddNodalSolutionStepVariable(MESH_VELOCITY); - origin_model_part.AddNodalSolutionStepVariable(MESH_DISPLACEMENT); - StructuredMeshGeneratorProcess(geometry, origin_model_part, mesher_parameters).Execute(); - - // Fix the boundary mesh displacement - const double max_x = 1.0; - const double min_x = 0.0; - const double max_y = 1.0; - const double min_y = 0.0; - const double coord_tol = 1e-3; - for (auto it_node : origin_model_part.NodesArray()){ - if ((std::abs(it_node->X() - min_x) < coord_tol) || (std::abs(it_node->X() - max_x) < coord_tol)) - it_node->Fix(MESH_DISPLACEMENT_X); - if ((std::abs(it_node->Y() - min_y) < coord_tol) || (std::abs(it_node->Y() - max_y) < coord_tol)) - it_node->Fix(MESH_DISPLACEMENT_Y); - } - - // Create a fake time loop to fill the buffer - const double n_steps = 3; - const double delta_time = 0.1; - for (unsigned int i_step = 0; i_step < n_steps; ++i_step){ - origin_model_part.CloneTimeStep(i_step * delta_time); - double p_val = i_step * delta_time; - array_1d v_val = ZeroVector(3); - for (auto it_node : origin_model_part.NodesArray()){ - it_node->GetSolutionStepValue(PRESSURE) = p_val; - v_val(0) = i_step * delta_time * it_node->X(); - v_val(1) = i_step * delta_time * it_node->Y(); - it_node->GetSolutionStepValue(VELOCITY) = v_val; - } - } - - // Set the virtual model part - ModelPart& virtual_model_part = current_model.CreateModelPart("VirtualModelPart"); - virtual_model_part.SetBufferSize(3); - virtual_model_part.AddNodalSolutionStepVariable(VELOCITY); - virtual_model_part.AddNodalSolutionStepVariable(PRESSURE); - virtual_model_part.AddNodalSolutionStepVariable(MESH_VELOCITY); - virtual_model_part.AddNodalSolutionStepVariable(MESH_DISPLACEMENT); - - // Set the structure model part - ModelPart& str_model_part =current_model.CreateModelPart("StructureModelPart"); - str_model_part.SetBufferSize(3); - str_model_part.AddNodalSolutionStepVariable(DISPLACEMENT); - Properties::Pointer p_prop = Kratos::make_shared(0); - auto p_str_point_1 = str_model_part.CreateNewNode(100, 0.6, 0.2, 0.0); - auto p_str_point_2 = str_model_part.CreateNewNode(200, 0.6, 0.4, 0.0); - auto p_str_point_3 = str_model_part.CreateNewNode(300, 0.8, 0.4, 0.0); - auto p_str_point_4 = str_model_part.CreateNewNode(400, 0.8, 0.2, 0.0); - auto p_elem = str_model_part.CreateNewElement("Element2D4N", 1, {100,200,300,400}, p_prop); - - // Set the structure mesh movement - array_1d str_mov = ZeroVector(3); - for (auto it_str_node : str_model_part.NodesArray()){ - str_mov(0) = -(it_str_node->X()) * 0.1; - str_mov(1) = (it_str_node->Y()) * 0.2; - it_str_node->FastGetSolutionStepValue(DISPLACEMENT) = str_mov; - } - - // Set the explicit mesh moving utility - const double search_radius = 1.0; - ExplicitFixedMeshALEUtilities::Pointer p_mesh_moving = - Kratos::make_shared(virtual_model_part, str_model_part, search_radius); - - // Fill the virtual model part geometry - p_mesh_moving->Initialize(origin_model_part); - - // Copy the origin model part data to the virtual one - p_mesh_moving->SetVirtualMeshValuesFromOriginMesh(); - - // Execute the explicit mesh movement operations - const unsigned int buffer_size = 3; - p_mesh_moving->ComputeMeshMovement(delta_time); - p_mesh_moving->ProjectVirtualValues<2>(origin_model_part, buffer_size); - p_mesh_moving->UndoMeshMovement(); - - // Check the obtained results - auto p_node_10 = origin_model_part.pGetNode(10); - const auto &r_vel_n1 = p_node_10->GetSolutionStepValue(VELOCITY,1); - const auto &r_mesh_vel = p_node_10->FastGetSolutionStepValue(MESH_VELOCITY); - - const double tol = 1e-6; - std::vector expected_values = {0.0702503, 0.0286924, -0.358364, 0.464094}; // Triangular kernel function - std::vector obtained_values = {r_vel_n1(0), r_vel_n1(1), r_mesh_vel(0), r_mesh_vel(1)}; - for (unsigned int i = 0; i < expected_values.size(); ++i) { - KRATOS_CHECK_NEAR(obtained_values[i], expected_values[i], tol); - } - } -} -} // namespace Kratos. diff --git a/applications/MeshMovingApplication/tests/cpp_tests/test_fixed_mesh_ale_utilities.cpp b/applications/MeshMovingApplication/tests/cpp_tests/test_fixed_mesh_ale_utilities.cpp index 8e294f341ca4..a1d356cb0f04 100644 --- a/applications/MeshMovingApplication/tests/cpp_tests/test_fixed_mesh_ale_utilities.cpp +++ b/applications/MeshMovingApplication/tests/cpp_tests/test_fixed_mesh_ale_utilities.cpp @@ -116,7 +116,11 @@ namespace Testing { CalculateDistanceToSkinProcess<2>(origin_model_part, str_model_part).Execute(); // Set the FM-ALE utility - auto p_mesh_moving = Kratos::make_shared(virtual_model_part, str_model_part); + Parameters fm_ale_settings(R"({ + "virtual_model_part_name" : "VirtualModelPart", + "structure_model_part_name" : "StructureModelPart" + })"); + auto p_mesh_moving = Kratos::make_shared(current_model, fm_ale_settings); // Fill the virtual model part geometry p_mesh_moving->Initialize(origin_model_part); @@ -201,6 +205,16 @@ namespace Testing { for (std::size_t i = 0; i < 8; ++i) { KRATOS_CHECK_NEAR(obtained_projected_values[i], expected_projected_values[i], tol); } + + const auto v_n_29 = origin_model_part.pGetNode(29)->FastGetSolutionStepValue(VELOCITY, 1); + const auto v_n_53 = origin_model_part.pGetNode(54)->FastGetSolutionStepValue(VELOCITY, 1); + const auto p_n_29 = origin_model_part.pGetNode(29)->FastGetSolutionStepValue(PRESSURE, 1); + const auto p_n_53 = origin_model_part.pGetNode(54)->FastGetSolutionStepValue(PRESSURE, 1); + const std::array expected_projected_values_n{{0.459105,0,0,0.1,0.885347,0,0,0.1}}; + const std::array obtained_projected_values_n{{v_n_29[0], v_n_29[1], v_n_29[2], p_n_29, v_n_53[0], v_n_53[1], v_n_53[2], p_n_53}}; + for (std::size_t i = 0; i < 8; ++i) { + KRATOS_CHECK_NEAR(obtained_projected_values_n[i], expected_projected_values_n[i], tol); + } } } } // namespace Kratos. diff --git a/applications/MeshingApplication/custom_external_libraries/mmg/build/configure.sh b/applications/MeshingApplication/custom_external_libraries/mmg/build/configure.sh index 6b1cc07f3a9e..2c394e092a60 100644 --- a/applications/MeshingApplication/custom_external_libraries/mmg/build/configure.sh +++ b/applications/MeshingApplication/custom_external_libraries/mmg/build/configure.sh @@ -1,25 +1,25 @@ -cmake .. \ --DCMAKE_BUILD_TYPE=Release \ --DUSE_SCOTCH=OFF \ --DSCOTCH_INCLUDE_DIR="/usr/include/scotch/" \ --DSCOTCH_LIBRARY="libscotchmetis-5.1.so" \ --DSCOTCHERR_LIBRARY="libscotcherr-5.1.so" \ --DCMAKE_CXX_FLAGS="-O3 -msse3 -fPIC -fopenmp" \ --DCMAKE_C_FLAGS="-O3 -msse3 -fPIC -fopenmp" \ --DLIBMMG_SHARED=ON \ --DLIBMMG_STATIC=OFF \ --DLIBMMGS_SHARED=ON \ --DLIBMMGS_STATIC=OFF \ --DLIBMMG2D_SHARED=ON \ --DLIBMMG2D_STATIC=OFF \ --DLIBMMG3D_SHARED=ON \ --DLIBMMG3D_STATIC=OFF \ -# If you ha modern processor use this instructions instead (look the whole list here https://software.intel.com/sites/landingpage/IntrinsicsGuide/) -# With relatively new (Intel i7 2013 works with -maxvx) -# -DCMAKE_CXX_FLAGS="-O3 -mavx2 -fPIC -fopenmp" \ -# -DCMAKE_C_FLAGS="-O3 -mavx2 -fPIC -fopenmp" \ +#!/bin/bash -#decomment this to have it verbose -# make VERBOSE=1 -j4 -make -j4 -# sudo make install +# Set compiler +export CC=${CC:-gcc} +export CXX=${CXX:-g++} + +# Configure +cmake \ +-DCMAKE_BUILD_TYPE=Release \ +-DCMAKE_C_COMPILER=${CC} \ +-DCMAKE_CXX_COMPILER=${CXX} \ +-DCMAKE_C_FLAGS="-O3 -march=native -mtune=native -fopenmp" \ +-DCMAKE_CXX_FLAGS="-O3 -march=native -mtune=native -fopenmp" \ +-DUSE_SCOTCH=OFF \ +-DLIBMMG_SHARED=ON \ +-DLIBMMG_STATIC=OFF \ +-DLIBMMGS_SHARED=ON \ +-DLIBMMGS_STATIC=OFF \ +-DLIBMMG2D_SHARED=ON \ +-DLIBMMG2D_STATIC=OFF \ +-DLIBMMG3D_SHARED=ON \ +-DLIBMMG3D_STATIC=OFF \ + +# Build +cmake --build $(pwd) -- -j$(nproc) diff --git a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/Math3D.h b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/Math3D.h index 6943bebdc89c..e170678e233c 100644 --- a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/Math3D.h +++ b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/Math3D.h @@ -2,7 +2,7 @@ #include #include -#include +#include int Min ( int a, int b ); double Min ( double a, double b ); diff --git a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/MeshOptimizer.cpp b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/MeshOptimizer.cpp index 303fddb865b9..787ba21cb59b 100644 --- a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/MeshOptimizer.cpp +++ b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/MeshOptimizer.cpp @@ -2,7 +2,7 @@ // #include #include -#include +#include #include #include "u_Types.h" #include "u_MeshLoaders.h" diff --git a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_ShowMetrics.cpp b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_ShowMetrics.cpp index 74c803a299da..c508628c5009 100644 --- a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_ShowMetrics.cpp +++ b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_ShowMetrics.cpp @@ -1,6 +1,6 @@ #include "Math3D.h" -#include +#include #include #include "u_ShowMetrics.h" #include "u_TetraFunctions.h" diff --git a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_ShowMetrics.h b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_ShowMetrics.h index 68d1d709e5b8..507e878502b0 100644 --- a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_ShowMetrics.h +++ b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_ShowMetrics.h @@ -1,6 +1,6 @@ #include "u_Types.h" #include "Math3D.h" -#include +#include #include class TetQuality diff --git a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_elementCluster.h b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_elementCluster.h index e5d3f6a18c12..454931f07629 100644 --- a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_elementCluster.h +++ b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_elementCluster.h @@ -1,7 +1,7 @@ #if !defined(U_ELEMENTS_CLUSTER_H ) #define U_ELEMENTS_CLUSTER_H -#include +#include #include "Math3D.h" #include "u_Types.h" diff --git a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_qualityMetrics.cpp b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_qualityMetrics.cpp index 4aeb4c45cbbb..21bd0a5ef055 100644 --- a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_qualityMetrics.cpp +++ b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_qualityMetrics.cpp @@ -1,5 +1,5 @@ -#include +#include #include "Math3D.h" #include "u_Types.h" #include "u_delphiClasses.h" diff --git a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_qualityMetrics.h b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_qualityMetrics.h index 81f220f3c9ac..f801adc90ed3 100644 --- a/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_qualityMetrics.h +++ b/applications/MeshingApplication/custom_external_libraries/tetMeshOpt/u_qualityMetrics.h @@ -1,4 +1,4 @@ -#include +#include #include "u_Types.h" #include "Math3D.h" diff --git a/applications/MeshingApplication/custom_processes/mmg/mmg_process.cpp b/applications/MeshingApplication/custom_processes/mmg/mmg_process.cpp index 125a9c600d6e..0555672c40ff 100755 --- a/applications/MeshingApplication/custom_processes/mmg/mmg_process.cpp +++ b/applications/MeshingApplication/custom_processes/mmg/mmg_process.cpp @@ -485,6 +485,11 @@ void MmgProcess::ExecuteRemeshing() r_old_auxiliar_model_part.AddElements( r_auxiliar_model_part.ElementsBegin(), r_auxiliar_model_part.ElementsEnd() ); } + // Apply local entity parameters if there are any + if (mThisParameters["advanced_parameters"]["local_entity_parameters_list"].size() > 0) { + ApplyLocalParameters(); + } + // Calling the library functions if (mDiscretization == DiscretizationOption::ISOSURFACE) { mMmgUtilities.MMGLibCallIsoSurface(mThisParameters); @@ -635,7 +640,7 @@ void MmgProcess::ExecuteRemeshing() interpolate_parameters.AddValue("extrapolate_contour_values", mThisParameters["extrapolate_contour_values"]); interpolate_parameters.AddValue("surface_elements", mThisParameters["surface_elements"]); interpolate_parameters.AddValue("search_parameters", mThisParameters["search_parameters"]); - if (TMMGLibrary == MMGLibrary::MMGS) interpolate_parameters["surface_elements"].SetBool(!collapse_prisms_elements); + if constexpr (TMMGLibrary == MMGLibrary::MMGS) interpolate_parameters["surface_elements"].SetBool(!collapse_prisms_elements); NodalValuesInterpolationProcess interpolate_nodal_values_process(r_old_model_part, mrThisModelPart, interpolate_parameters); interpolate_nodal_values_process.Execute(); } @@ -730,6 +735,50 @@ void MmgProcess::InitializeElementsAndConditions() /***********************************************************************************/ /***********************************************************************************/ +template +void MmgProcess::ApplyLocalParameters() { + + // Find colors with a unique submodelpart (size == 1) + std::unordered_map string_to_color; + for (auto& r_color : mColors) { + if (r_color.second.size() == 1) { + string_to_color[r_color.second[0]] = r_color.first; + } + } + + // Count number of parameters given by the user + const auto parameter_array = mThisParameters["advanced_parameters"]["local_entity_parameters_list"]; + IndexType n_parameters = parameter_array.size(); + for (auto& parameter_settings : parameter_array) { + n_parameters += parameter_settings["model_part_name_list"].size(); + } + + // Set the number of tags references on which you will impose local parameters + mMmgUtilities.SetNumberOfLocalParameters(n_parameters); + + // For each local parameter, set the type of the entity on which the parameter will + // apply (triangle or tetra), the reference of these entities and the hmin, hmax and + // hausdorff values to apply + for (auto parameter_settings : parameter_array) { + for (auto model_part_name_object : parameter_settings["model_part_name_list"]) + { + KRATOS_ERROR_IF_NOT(parameter_settings.Has("hmin")) << "hmin is missing in the local entity parameters list"; + const double hmin = parameter_settings["hmin"].GetDouble(); + KRATOS_ERROR_IF_NOT(parameter_settings.Has("hmax")) << "hmax is missing in the local entity parameters list"; + const double hmax = parameter_settings["hmax"].GetDouble(); + KRATOS_ERROR_IF_NOT(parameter_settings.Has("hausdorff_value")) << "hausdorff is missing in the local entity parameters list"; + const double hausdorff = parameter_settings["hausdorff_value"].GetDouble(); + const auto model_part_name = model_part_name_object.GetString(); + KRATOS_ERROR_IF(string_to_color.find(model_part_name) == string_to_color.end()) << "model_part_name " << model_part_name << " is not found in the colors list"; + const IndexType color = string_to_color[model_part_name]; + mMmgUtilities.SetLocalParameter(color, hmin, hmax, hausdorff); + } + } +} + +/***********************************************************************************/ +/***********************************************************************************/ + template void MmgProcess::SaveSolutionToFile(const bool PostOutput) { @@ -1243,7 +1292,7 @@ void MmgProcess::CleanSuperfluousConditions() std::sort(ids.begin(), ids.end()); if(faces_map.find(ids) != faces_map.end()) { // Found condition in element face, do not erase - for (auto p_cond : faces_map[ids]) { + for (const auto& p_cond : faces_map[ids]) { p_cond->Set(TO_ERASE,false); } } @@ -1318,7 +1367,8 @@ const Parameters MmgProcess::GetDefaultParameters() const "angle_detection_value" : 45.0, "force_gradation_value" : false, "mesh_optimization_only" : false, - "gradation_value" : 1.3 + "gradation_value" : 1.3, + "local_entity_parameters_list" : [] }, "collapse_prisms_elements" : false, "save_external_files" : false, diff --git a/applications/MeshingApplication/custom_processes/mmg/mmg_process.h b/applications/MeshingApplication/custom_processes/mmg/mmg_process.h index 43ec8ee24eb7..cb9ccc85647f 100644 --- a/applications/MeshingApplication/custom_processes/mmg/mmg_process.h +++ b/applications/MeshingApplication/custom_processes/mmg/mmg_process.h @@ -398,7 +398,7 @@ class KRATOS_API(MESHING_APPLICATION) MmgProcess // Firts we generate the variable list std::unordered_set list_variables; const auto it_begin_old = rOldContainer.begin(); - auto& data = it_begin_old->Data(); + auto& data = it_begin_old->GetData(); for(auto i = data.begin() ; i != data.end() ; ++i) { list_variables.insert((i->first)->Name()); } @@ -450,6 +450,12 @@ class KRATOS_API(MESHING_APPLICATION) MmgProcess */ virtual void CreateDebugPrePostRemeshOutput(ModelPart& rOldModelPart); + /** + * @brief Applies local hmin, hmax and hausd values to entitities as specified + * in the parameters, to locally control the size and curvature of the remeshing. + */ + void ApplyLocalParameters(); + ///@} ///@name Protected Access ///@{ diff --git a/applications/MeshingApplication/custom_processes/multiscale_refining_process.cpp b/applications/MeshingApplication/custom_processes/multiscale_refining_process.cpp index b85844f3a96f..da5747a2deb7 100644 --- a/applications/MeshingApplication/custom_processes/multiscale_refining_process.cpp +++ b/applications/MeshingApplication/custom_processes/multiscale_refining_process.cpp @@ -157,7 +157,7 @@ void MultiscaleRefiningProcess::InitializeVisualizationModelPart(ModelPart& rRef sub_model_parts_names = rReferenceModelPart.GetSubModelPartNames(); // Add the entities to the submodel parts - for (auto name : sub_model_parts_names) + for (const auto& name : sub_model_parts_names) { ModelPart& destination = rNewModelPart.GetSubModelPart(name); ModelPart& origin = rReferenceModelPart.GetSubModelPart(name); @@ -192,7 +192,7 @@ void MultiscaleRefiningProcess::InitializeNewModelPart(ModelPart& rReferenceMode sub_model_parts_names = rReferenceModelPart.GetSubModelPartNames(); // Copy the hierarchy to the refined model part - for (auto name : sub_model_parts_names) + for (const auto& name : sub_model_parts_names) { ModelPart& sub_model_part = rNewModelPart.CreateSubModelPart(name); @@ -391,7 +391,7 @@ void MultiscaleRefiningProcess::CloneNodesToRefine(IndexType& rNodeId) // Adding the nodes to the refined sub model parts StringVectorType sub_model_part_names = mrCoarseModelPart.GetSubModelPartNames(); - for (auto name : sub_model_part_names) + for (const auto& name : sub_model_part_names) { ModelPart& coarse_sub_model_part = mrCoarseModelPart.GetSubModelPart(name); ModelPart& refined_sub_model_part = mrRefinedModelPart.GetSubModelPart(name); @@ -587,7 +587,7 @@ void MultiscaleRefiningProcess::CreateElementsToRefine(IndexType& rElemId, Index const auto tag = collection.first; if (tag != 0) { - for (auto name : collection.second) + for (const auto& name : collection.second) { ModelPart& sub_model_part = mrRefinedModelPart.GetSubModelPart(name); sub_model_part.AddElements(tag_elems_map[tag]); @@ -637,7 +637,7 @@ void MultiscaleRefiningProcess::CreateConditionsToRefine(IndexType& rCondId, Ind const auto tag = collection.first; if (tag != 0) { - for (auto name : collection.second) + for (const auto& name : collection.second) { ModelPart& sub_model_part = mrRefinedModelPart.GetSubModelPart(name); sub_model_part.AddConditions(tag_conds_map[tag]); diff --git a/applications/MeshingApplication/custom_processes/nodal_values_interpolation_process.cpp b/applications/MeshingApplication/custom_processes/nodal_values_interpolation_process.cpp index 322f98bbea71..2b5aa61cf344 100755 --- a/applications/MeshingApplication/custom_processes/nodal_values_interpolation_process.cpp +++ b/applications/MeshingApplication/custom_processes/nodal_values_interpolation_process.cpp @@ -141,7 +141,7 @@ void NodalValuesInterpolationProcess::GetListNonHistoricalVariables() for (auto& r_node : mrOriginMainModelPart.Nodes()) { const bool old_entity = r_node.IsDefined(OLD_ENTITY) ? r_node.Is(OLD_ENTITY) : false; if (!old_entity) { - auto& r_data = r_node.Data(); + auto& r_data = r_node.GetData(); for(auto it_data = r_data.begin() ; it_data != r_data.end() ; ++it_data) { mListVariables.insert((it_data->first)->Name()); } @@ -278,7 +278,7 @@ void NodalValuesInterpolationProcess::ExtrapolateValues( KDTreeType tree_points(point_list_destination.begin(), point_list_destination.end(), bucket_size); // We extrapolate the nodes that cannot been found - for (auto p_node : rToExtrapolateNodes) { + for (const auto& p_node : rToExtrapolateNodes) { // Initialize values PointVector points_found(allocation_size); diff --git a/applications/MeshingApplication/custom_python/add_custom_utilities_to_python.cpp b/applications/MeshingApplication/custom_python/add_custom_utilities_to_python.cpp index e2c563a89136..cf05cfe2e639 100644 --- a/applications/MeshingApplication/custom_python/add_custom_utilities_to_python.cpp +++ b/applications/MeshingApplication/custom_python/add_custom_utilities_to_python.cpp @@ -26,6 +26,8 @@ #include "custom_utilities/local_refine_triangle_mesh.hpp" #include "custom_utilities/local_refine_prism_mesh.hpp" #include "custom_utilities/local_refine_tetrahedra_mesh.hpp" +#include "custom_utilities/linear_to_quadratic_tetrahedra_mesh_converter_utility.h" + #ifdef USE_TETGEN_NONFREE_TPL #include "custom_utilities/tetgen_volume_mesher.h" @@ -114,6 +116,12 @@ void AddCustomUtilitiesToPython(pybind11::module& m) .def("LocalRefineMesh", &LocalRefineTetrahedraMesh::LocalRefineMesh) ; + py::class_ + (m,"LinearToQuadraticTetrahedraMeshConverter") + .def(py::init()) + .def("LocalConvertLinearToQuadraticTetrahedraMesh", &LinearToQuadraticTetrahedraMeshConverter::LocalConvertLinearToQuadraticTetrahedraMesh) + ; + #ifdef USE_TETGEN_NONFREE_TPL py::class_ (m,"TetgenVolumeMesher") diff --git a/applications/MeshingApplication/custom_utilities/binbased_projection.h b/applications/MeshingApplication/custom_utilities/binbased_projection.h index 44c366693665..ba219b8d3fb8 100644 --- a/applications/MeshingApplication/custom_utilities/binbased_projection.h +++ b/applications/MeshingApplication/custom_utilities/binbased_projection.h @@ -18,7 +18,7 @@ // System includes #include #include -#include +#include // Project includes #include "includes/define.h" diff --git a/applications/MeshingApplication/custom_utilities/cutting_iso_app.h b/applications/MeshingApplication/custom_utilities/cutting_iso_app.h index d7978c7573e5..4a7f7d57dbff 100644 --- a/applications/MeshingApplication/custom_utilities/cutting_iso_app.h +++ b/applications/MeshingApplication/custom_utilities/cutting_iso_app.h @@ -21,7 +21,7 @@ // System includes #include #include -#include +#include #include #include diff --git a/applications/MeshingApplication/custom_utilities/linear_to_quadratic_tetrahedra_mesh_converter_utility.cpp b/applications/MeshingApplication/custom_utilities/linear_to_quadratic_tetrahedra_mesh_converter_utility.cpp new file mode 100644 index 000000000000..0cf43a6d57a7 --- /dev/null +++ b/applications/MeshingApplication/custom_utilities/linear_to_quadratic_tetrahedra_mesh_converter_utility.cpp @@ -0,0 +1,221 @@ +// KRATOS __ __ _____ ____ _ _ ___ _ _ ____ +// | \/ | ____/ ___|| | | |_ _| \ | |/ ___| +// | |\/| | _| \___ \| |_| || || \| | | _ +// | | | | |___ ___) | _ || || |\ | |_| | +// |_| |_|_____|____/|_| |_|___|_| \_|\____| APPLICATION +// +// License: BSD License +// Kratos default license: kratos/license.txt +// +// Main authors: Ariadna Cortés +// + +//Project includes +#include "custom_utilities/linear_to_quadratic_tetrahedra_mesh_converter_utility.h" + +namespace Kratos { + + void LinearToQuadraticTetrahedraMeshConverter::LocalConvertLinearToQuadraticTetrahedraMesh( + bool RefineOnReference, + bool InterpolateInternalVariables) + { + block_for_each(mModelPart.Elements(), [&](Element element) { + element.SetValue(SPLIT_ELEMENT,true); + }); + block_for_each(mModelPart.Conditions(), [&](Condition condition) { + condition.SetValue(SPLIT_ELEMENT,true); + }); + LocalRefineMesh(RefineOnReference, InterpolateInternalVariables); + } + + Tetrahedra3D10> LinearToQuadraticTetrahedraMeshConverter::GenerateTetrahedra( + ModelPart& rThisModelPart, + const std::vector& rNodeIds) + { + unsigned int i0 = rNodeIds[0]; + unsigned int i1 = rNodeIds[1]; + unsigned int i2 = rNodeIds[2]; + unsigned int i3 = rNodeIds[3]; + unsigned int i4 = rNodeIds[4]; + unsigned int i6 = rNodeIds[5]; + unsigned int i7 = rNodeIds[6]; + unsigned int i5 = rNodeIds[7]; + unsigned int i8 = rNodeIds[8]; + unsigned int i9 = rNodeIds[9]; + + Tetrahedra3D10 > geom( + rThisModelPart.pGetNode(i0), + rThisModelPart.pGetNode(i1), + rThisModelPart.pGetNode(i2), + rThisModelPart.pGetNode(i3), + rThisModelPart.pGetNode(i4), + rThisModelPart.pGetNode(i5), + rThisModelPart.pGetNode(i6), + rThisModelPart.pGetNode(i7), + rThisModelPart.pGetNode(i8), + rThisModelPart.pGetNode(i9) + ); + return geom; + } + + Triangle3D6> LinearToQuadraticTetrahedraMeshConverter::GenerateTriangle3D6( + ModelPart& rThisModelPart, + const array_1d& rNodeIds) + { + unsigned int i0 = rNodeIds[0]; + unsigned int i1 = rNodeIds[1]; + unsigned int i2 = rNodeIds[2]; + unsigned int i3 = rNodeIds[3]; + unsigned int i4 = rNodeIds[4]; + unsigned int i5 = rNodeIds[5]; + + Triangle3D6 > geom( + rThisModelPart.pGetNode(i0), + rThisModelPart.pGetNode(i1), + rThisModelPart.pGetNode(i2), + rThisModelPart.pGetNode(i3), + rThisModelPart.pGetNode(i4), + rThisModelPart.pGetNode(i5) + ); + + return geom; + } + + void LinearToQuadraticTetrahedraMeshConverter::EraseOldElementAndCreateNewElement( + ModelPart& rThisModelPart, + const compressed_matrix& Coord, + PointerVector< Element >& NewElements, + bool InterpolateInternalVariables + ) + { + auto& r_elements = rThisModelPart.Elements(); + ElementsArrayType::iterator it_begin = r_elements.ptr_begin(); + ElementsArrayType::iterator it_end = r_elements.ptr_end(); + + const auto& r_current_process_info = rThisModelPart.GetProcessInfo(); + int edge_ids[6]; + std::vector node_ids; + + const Element& r_elem = KratosComponents::Get("Element3D10N"); + for (ElementsArrayType::iterator& it = it_begin; it != it_end; ++it) + { + // GlobalPointersVector< Element >& r_child_elements = it->GetValue(NEIGHBOUR_ELEMENTS); + auto& r_child_elements = it->GetValue(NEIGHBOUR_ELEMENTS); + r_child_elements.resize(0); + + CalculateEdges(it->GetGeometry(), Coord, edge_ids, node_ids); + + // Generate the new Tetrahedra3D10 element + Tetrahedra3D10> geom = GenerateTetrahedra(rThisModelPart, node_ids); + Element::Pointer p_element; + p_element = r_elem.Create(it->Id(), geom, it->pGetProperties()); + p_element->Initialize(r_current_process_info); + p_element->InitializeSolutionStep(r_current_process_info); + p_element->FinalizeSolutionStep(r_current_process_info); + + // Setting the internal variables in the "child" elem (the element replacing the old one) + if (InterpolateInternalVariables == true) + { + //This method only copies the current information to the new element + InterpolateInteralVariables(0, *it.base(), p_element, r_current_process_info); + } + + // Transfer elemental variables to new element + p_element->GetData() = it->GetData(); + p_element->GetValue(SPLIT_ELEMENT) = false; + NewElements.push_back(p_element); + + r_child_elements.push_back( Element::WeakPointer(p_element) ); + } + + // Now replace the elements in SubModelParts + if ( NewElements.size() > 0 ) { + ReplaceElementsInSubModelPart(rThisModelPart); + } + } + + void LinearToQuadraticTetrahedraMeshConverter::ReplaceElementsInSubModelPart(ModelPart& rThisModelPart) { + for(auto& p_element : rThisModelPart.ElementsArray()){ + if( p_element->GetValue(SPLIT_ELEMENT) ) + { + // GlobalPointersVector< Element >& children = p_element->GetValue(NEIGHBOUR_ELEMENTS); + auto& children = p_element->GetValue(NEIGHBOUR_ELEMENTS); + p_element = children[0].shared_from_this(); + } + } + + //Recursively for all subModelParts + for (ModelPart::SubModelPartIterator i_submodelpart = rThisModelPart.SubModelPartsBegin(); + i_submodelpart != rThisModelPart.SubModelPartsEnd(); i_submodelpart++) + { + ReplaceElementsInSubModelPart(*i_submodelpart); + } + } + + void LinearToQuadraticTetrahedraMeshConverter::EraseOldConditionsAndCreateNew( + ModelPart& rThisModelPart, + const compressed_matrix& Coord) + { + KRATOS_TRY; + + PointerVector< Condition > NewConditions; + auto& r_conditions = rThisModelPart.Conditions(); + + if(r_conditions.size() > 0) + { + ConditionsArrayType::iterator it_begin = r_conditions.ptr_begin(); + ConditionsArrayType::iterator it_end = r_conditions.ptr_end(); + int edge_ids[3]; + array_1d node_ids; + + const auto& r_current_process_info = rThisModelPart.GetProcessInfo(); + const Condition& r_cond = KratosComponents::Get("SurfaceCondition3D6N"); + + for (ConditionsArrayType::iterator it = it_begin; it != it_end; ++it) + { + CalculateEdgesFaces(it->GetGeometry(), Coord, edge_ids, node_ids); + + // GlobalPointersVector< Condition >& r_child_conditions = it->GetValue(NEIGHBOUR_CONDITIONS); + auto& r_child_conditions = it->GetValue(NEIGHBOUR_CONDITIONS); + r_child_conditions.resize(0); + + //Generate the new condition + Triangle3D6 > geom = GenerateTriangle3D6 (rThisModelPart, node_ids); + Condition::Pointer p_cond; + p_cond = r_cond.Create(it->Id(), geom, it->pGetProperties()); + p_cond ->Initialize(r_current_process_info); + p_cond ->InitializeSolutionStep(r_current_process_info); + p_cond ->FinalizeSolutionStep(r_current_process_info); + + // Transfer condition variables + p_cond->GetData() = it->GetData(); + p_cond->GetValue(SPLIT_ELEMENT) = false; + NewConditions.push_back(p_cond); + + r_child_conditions.push_back( Condition::WeakPointer( p_cond ) ); + } + + // Replace the conditions in SubModelParts + if (NewConditions.size() > 0) { + ReplaceConditionsInSubModelPart(rThisModelPart); + } + } + KRATOS_CATCH(""); + } + + void LinearToQuadraticTetrahedraMeshConverter::ReplaceConditionsInSubModelPart(ModelPart& rThisModelPart) { + for(auto& p_cond : rThisModelPart.ConditionsArray()){ + if( p_cond->GetValue(SPLIT_ELEMENT) ) + { + // GlobalPointersVector< Condition >& children = p_cond->GetValue(NEIGHBOUR_CONDITIONS); + auto& children = p_cond->GetValue(NEIGHBOUR_CONDITIONS); + p_cond = children[0].shared_from_this(); + } + } + for (ModelPart::SubModelPartIterator i_submodelpart = rThisModelPart.SubModelPartsBegin(); + i_submodelpart != rThisModelPart.SubModelPartsEnd(); i_submodelpart++) + { + ReplaceConditionsInSubModelPart(*i_submodelpart); + } + } +} \ No newline at end of file diff --git a/applications/MeshingApplication/custom_utilities/linear_to_quadratic_tetrahedra_mesh_converter_utility.h b/applications/MeshingApplication/custom_utilities/linear_to_quadratic_tetrahedra_mesh_converter_utility.h new file mode 100644 index 000000000000..2a3f5c49c287 --- /dev/null +++ b/applications/MeshingApplication/custom_utilities/linear_to_quadratic_tetrahedra_mesh_converter_utility.h @@ -0,0 +1,173 @@ +// KRATOS __ __ _____ ____ _ _ ___ _ _ ____ +// | \/ | ____/ ___|| | | |_ _| \ | |/ ___| +// | |\/| | _| \___ \| |_| || || \| | | _ +// | | | | |___ ___) | _ || || |\ | |_| | +// |_| |_|_____|____/|_| |_|___|_| \_|\____| APPLICATION +// +// License: BSD License +// Kratos default license: kratos/license.txt +// +// Main authors: Ariadna Cortés +// + +#if !defined(KRATOS_LINEAR_TO_QUADRATIC_TETRAHEDRA_MESH_CONVERTER_UTILITY) +#define KRATOS_LINEAR_TO_QUADRATIC_TETRAHEDRA_MESH_CONVERTER_UTILITY + +// System includes + +/* Project includes */ +#include "custom_utilities/local_refine_tetrahedra_mesh.hpp" +#include "geometries/tetrahedra_3d_10.h" +#include "utilities/parallel_utilities.h" + +namespace Kratos +{ +///@name Kratos Globals +///@{ +///@} +///@name Type Definitions +///@{ +///@} +///@name Enum's +///@{ +///@} +///@name Functions +///@{ +///@} +///@name Kratos Classes +///@{ +class KRATOS_API(MESHING_APPLICATION) LinearToQuadraticTetrahedraMeshConverter : public LocalRefineTetrahedraMesh +{ +public: + + ///@name Type Definitions + ///@{ + ///@} + + typedef Node<3> NodeType; + typedef Geometry GeometryType; + typedef GeometryType::Pointer GeometryPtrType; + + /// Pointer definition of VoxelInsideVolume + KRATOS_CLASS_POINTER_DEFINITION( LinearToQuadraticTetrahedraMeshConverter ); + + ///@name Life Cycle + ///@{ + + /// Default constructors + LinearToQuadraticTetrahedraMeshConverter(ModelPart& ModelPart) : LocalRefineTetrahedraMesh(ModelPart) + { + + } + + /// Destructor + ~LinearToQuadraticTetrahedraMeshConverter() + = default; + + ///@} + ///@name Operators + ///@{ + + ///@} + ///@name Operations + ///@{ + + /** + * Replaces the geometry of the mesh of Tetrahedra3D4 elements. Resulting is a mesh of Tetrahedra3D10 created + * by adding intermediate nodes to each Tetrahedra3D4. Does the same for conditions, replacing the Triangle3D3 + * by Triangle3D6 + * @param RefineOnReference: Boolean that defines if refine or not the mesh according to the reference + * @param InterpolateInternalVariables: Boolean that defines if to interpolate or not the internal variables + */ + void LocalConvertLinearToQuadraticTetrahedraMesh( + bool RefineOnReference, + bool InterpolateInternalVariables); + +private: + ///@name Private static Member Variables + ///@{ + + ///@} + ///@name Private member Variables + ///@{ + + ///@} + ///@name Private Operators + ///@{ + + ///@} + ///@name Private Operations + ///@{ + + /** + * Creates a new tetrahedra3D10 + * @return The new tetrahedra + */ + Tetrahedra3D10> GenerateTetrahedra( + ModelPart& rThisModelPart, + const std::vector& rNodeIds); + + /** + * Creates a new triangle3D6 + * @return The new triangle + */ + Triangle3D6> GenerateTriangle3D6( + ModelPart& rThisModelPart, + const array_1d& rNodeIds); + + /** + * It erases the old Tetrahedra3D4 elements and it creates the new Tetrahedra3D10 ones + * @param Coord: The compressed matrix containing at (i,j) the id of the node created between nodes i,j + * @param New_Elements: The new elements created + * @param InterpolateInternalVariables: A boolean that defines if it is necessary to interpolate the internal variables + * @return rThisModelPart: The model part of the model (it is the input too) + */ + + void EraseOldElementAndCreateNewElement( + ModelPart& rThisModelPart, + const compressed_matrix& Coord, + PointerVector< Element >& NewElements, + bool InterpolateInternalVariables + ) override; + + /** + * It replaces the old Tetrahedra3D4 elements in its corresponding submodelpart by its new Tetrahedra3D10 + * @param rThisModelPart: The modelpart or submodelpart to replace the elements + */ + void ReplaceElementsInSubModelPart(ModelPart& rThisModelPart); + + /** + * Remove the old Trangle3D3 conditions and replace them by the new Trangle3D6 ones + * @param Coord: The coordinates of the nodes of the geometry + * @return rThisModelPart: The model part of the model (it is the input too) + */ + + void EraseOldConditionsAndCreateNew( + ModelPart& rThisModelPart, + const compressed_matrix& Coord + ) override; + + /** + * It replaces the old Triangle3D3 elements in its corresponding submodelpart by its new Triangle3D6 + * @param rThisModelPart: The modelpart or submodelpart to replace the elements + */ + void ReplaceConditionsInSubModelPart(ModelPart& rThisModelPart); + + ///@} + ///@name Private Access + ///@{ + + ///@} + ///@name Private Inquiry + ///@{ + + ///@} + ///@name Private LifeCycle + ///@{ + ///@} + +}; // Class LinearToQuadraticTetrahedraMeshConverter + +} // namespace Kratos. + +#endif // KRATOS_LINEAR_TO_QUADRATIC_TETRAHEDRA_MESH_CONVERTER_UTILITY defined diff --git a/applications/MeshingApplication/custom_utilities/local_refine_geometry_mesh.cpp b/applications/MeshingApplication/custom_utilities/local_refine_geometry_mesh.cpp index 6526f476f1e8..7073947740ad 100644 --- a/applications/MeshingApplication/custom_utilities/local_refine_geometry_mesh.cpp +++ b/applications/MeshingApplication/custom_utilities/local_refine_geometry_mesh.cpp @@ -480,6 +480,7 @@ namespace Kratos for (ModelPart::SubModelPartIterator iSubModelPart = rModelPart.SubModelPartsBegin(); iSubModelPart != rModelPart.SubModelPartsEnd(); iSubModelPart++) { + bool added_nodes = false; for (auto iNode = rModelPart.Nodes().ptr_begin(); iNode != rModelPart.Nodes().ptr_end(); iNode++) { @@ -499,10 +500,17 @@ namespace Kratos ParentsInSubModelPart++; } - if ( ParentCount == ParentsInSubModelPart ) + if ( ParentCount == ParentsInSubModelPart ) { iSubModelPart->AddNode( *iNode ); + added_nodes = true; + } } } + if(added_nodes) + { + ModelPart &rSubModelPart = *iSubModelPart; + UpdateSubModelPartNodes(rSubModelPart); + } } } diff --git a/applications/MeshingApplication/custom_utilities/local_refine_geometry_mesh.hpp b/applications/MeshingApplication/custom_utilities/local_refine_geometry_mesh.hpp index 0f1d64127cda..736be85e2957 100644 --- a/applications/MeshingApplication/custom_utilities/local_refine_geometry_mesh.hpp +++ b/applications/MeshingApplication/custom_utilities/local_refine_geometry_mesh.hpp @@ -243,7 +243,7 @@ class KRATOS_API(MESHING_APPLICATION) LocalRefineGeometryMesh ///@} ///@name Protected member Variables ///@{ - + ModelPart& mModelPart; ///@} ///@name Protected Operators ///@{ @@ -273,8 +273,6 @@ class KRATOS_API(MESHING_APPLICATION) LocalRefineGeometryMesh ///@name Private member Variables ///@{ - ModelPart& mModelPart; - ///@} ///@name Private Operators ///@{ diff --git a/applications/MeshingApplication/custom_utilities/local_refine_prism_mesh.hpp b/applications/MeshingApplication/custom_utilities/local_refine_prism_mesh.hpp index a8c7d9990415..54c56660b59a 100644 --- a/applications/MeshingApplication/custom_utilities/local_refine_prism_mesh.hpp +++ b/applications/MeshingApplication/custom_utilities/local_refine_prism_mesh.hpp @@ -250,7 +250,7 @@ class LocalRefinePrismMesh : public LocalRefineGeometryMesh } // Transfer elemental variables - p_element->Data() = it->Data(); + p_element->GetData() = it->GetData(); p_element->GetValue(SPLIT_ELEMENT) = false; New_Elements.push_back(p_element); @@ -343,8 +343,8 @@ class LocalRefinePrismMesh : public LocalRefineGeometryMesh Condition::Pointer pcond1 = it->Create(current_id++, newgeom1, it->pGetProperties()); Condition::Pointer pcond2 = it->Create(current_id++, newgeom2, it->pGetProperties()); - pcond1->Data() = it->Data(); - pcond2->Data() = it->Data(); + pcond1->GetData() = it->GetData(); + pcond2->GetData() = it->GetData(); New_Conditions.push_back(pcond1); New_Conditions.push_back(pcond2); diff --git a/applications/MeshingApplication/custom_utilities/local_refine_tetrahedra_mesh.hpp b/applications/MeshingApplication/custom_utilities/local_refine_tetrahedra_mesh.hpp index fb5e0dcd99b0..0893b19fb3d7 100644 --- a/applications/MeshingApplication/custom_utilities/local_refine_tetrahedra_mesh.hpp +++ b/applications/MeshingApplication/custom_utilities/local_refine_tetrahedra_mesh.hpp @@ -264,7 +264,7 @@ class LocalRefineTetrahedraMesh : public LocalRefineGeometryMesh } // Transfer elemental variables - p_element->Data() = it->Data(); + p_element->GetData() = it->GetData(); p_element->GetValue(SPLIT_ELEMENT) = false; NewElements.push_back(p_element); @@ -389,7 +389,7 @@ class LocalRefineTetrahedraMesh : public LocalRefineGeometryMesh CalculateEdgesFaces(geom, Coord, edge_ids, aux); // Create the new conditions - bool create_condition = Split_Triangle(edge_ids, t, &number_elem, &splitted_edges, &nint); + bool create_condition = TriangleSplit::Split_Triangle(edge_ids, t, &number_elem, &splitted_edges, &nint); if(create_condition==true) { @@ -421,7 +421,7 @@ class LocalRefineTetrahedraMesh : public LocalRefineGeometryMesh pcond ->FinalizeSolutionStep(rCurrentProcessInfo); // Transfer condition variables - pcond->Data() = it->Data(); + pcond->GetData() = it->GetData(); pcond->GetValue(SPLIT_ELEMENT) = false; NewConditions.push_back(pcond); diff --git a/applications/MeshingApplication/custom_utilities/local_refine_triangle_mesh.hpp b/applications/MeshingApplication/custom_utilities/local_refine_triangle_mesh.hpp index 4a356566b122..7c221fd224c1 100644 --- a/applications/MeshingApplication/custom_utilities/local_refine_triangle_mesh.hpp +++ b/applications/MeshingApplication/custom_utilities/local_refine_triangle_mesh.hpp @@ -201,7 +201,7 @@ class LocalRefineTriangleMesh : public LocalRefineGeometryMesh const unsigned int dimension = geom.WorkingSpaceDimension(); // It creates the new conectivities - create_element = Split_Triangle(edge_ids, t, &number_elem, &splitted_edges, &nint); + create_element = TriangleSplit::Split_Triangle(edge_ids, t, &number_elem, &splitted_edges, &nint); // It creates the new elements if (create_element == true) @@ -236,7 +236,7 @@ class LocalRefineTriangleMesh : public LocalRefineGeometryMesh } // Transfer elemental variables - p_element->Data() = it->Data(); + p_element->GetData() = it->GetData(); //const unsigned int& level = it->GetValue(REFINEMENT_LEVEL); p_element->GetValue(SPLIT_ELEMENT) = false; //p_element->SetValue(REFINEMENT_LEVEL, 1); @@ -261,7 +261,7 @@ class LocalRefineTriangleMesh : public LocalRefineGeometryMesh InterpolateInteralVariables(number_elem, *it.base(), p_element, rCurrentProcessInfo); // Transfer elemental variables - p_element->Data() = it->Data(); + p_element->GetData() = it->GetData(); p_element->GetValue(SPLIT_ELEMENT) = false; New_Elements.push_back(p_element); } @@ -359,8 +359,8 @@ class LocalRefineTriangleMesh : public LocalRefineGeometryMesh Condition::Pointer pcond1 = it->Create(current_id++, newgeom1, it->pGetProperties()); Condition::Pointer pcond2 = it->Create(current_id++, newgeom2, it->pGetProperties()); - pcond1->Data() = it->Data(); - pcond2->Data() = it->Data(); + pcond1->GetData() = it->GetData(); + pcond2->GetData() = it->GetData(); New_Conditions.push_back(pcond1); New_Conditions.push_back(pcond2); @@ -380,8 +380,8 @@ class LocalRefineTriangleMesh : public LocalRefineGeometryMesh Condition::Pointer pcond1 = it->Create(current_id++, newgeom1, it->pGetProperties()); Condition::Pointer pcond2 = it->Create(current_id++, newgeom2, it->pGetProperties()); - pcond1->Data() = it->Data(); - pcond2->Data() = it->Data(); + pcond1->GetData() = it->GetData(); + pcond2->GetData() = it->GetData(); New_Conditions.push_back(pcond1); New_Conditions.push_back(pcond2); diff --git a/applications/MeshingApplication/custom_utilities/mmg/mmg_utilities.cpp b/applications/MeshingApplication/custom_utilities/mmg/mmg_utilities.cpp index a06766222365..a76b5419a599 100644 --- a/applications/MeshingApplication/custom_utilities/mmg/mmg_utilities.cpp +++ b/applications/MeshingApplication/custom_utilities/mmg/mmg_utilities.cpp @@ -139,11 +139,7 @@ SizeType MMGMeshInfo::NumberFirstTypeElements() const template<> SizeType MMGMeshInfo::NumberSecondTypeElements() const { -#if MMG_VERSION_GE(5,5) return NumberOfQuadrilaterals; -#else - return 0; -#endif } /***********************************************************************************/ @@ -177,9 +173,7 @@ template struct MMGMeshInfo; // The member variables related with the MMG library MMG5_pMesh mMmgMesh; /// The mesh data from MMG MMG5_pSol mMmgMet; /// The metric variable for MMG -#if MMG_VERSION_GE(5,5) - MMG5_pSol mMmgSol; /// The solution variable for MMG -#endif +MMG5_pSol mMmgSol; /// The solution variable for MMG MMG5_pSol mMmgDisp; /// The displacement variable for MMG /***********************************************************************************/ @@ -254,20 +248,18 @@ void MmgUtilities::PrintAndGetMmgMeshInfo(MMGMeshInfo& KRATOS_TRY; rMMGMeshInfo.NumberOfNodes = mMmgMesh->np; - if (TMMGLibrary == MMGLibrary::MMG2D) { // 2D + if constexpr (TMMGLibrary == MMGLibrary::MMG2D) { // 2D rMMGMeshInfo.NumberOfLines = mMmgMesh->na; - } else if (TMMGLibrary == MMGLibrary::MMG3D) { // 3D + } else if constexpr (TMMGLibrary == MMGLibrary::MMG3D) { // 3D rMMGMeshInfo.NumberOfTriangles = mMmgMesh->nt; rMMGMeshInfo.NumberOfQuadrilaterals = mMmgMesh->nquad; } else { // Surfaces rMMGMeshInfo.NumberOfLines = mMmgMesh->na; } - if (TMMGLibrary == MMGLibrary::MMG2D) { // 2D + if constexpr (TMMGLibrary == MMGLibrary::MMG2D) { // 2D rMMGMeshInfo.NumberOfTriangles = mMmgMesh->nt; - #if MMG_VERSION_GE(5,5) rMMGMeshInfo.NumberOfQuadrilaterals = mMmgMesh->nquad; - #endif - } else if (TMMGLibrary == MMGLibrary::MMG3D) { // 3D + } else if constexpr (TMMGLibrary == MMGLibrary::MMG3D) { // 3D rMMGMeshInfo.NumberOfTetrahedra = mMmgMesh->ne; rMMGMeshInfo.NumberOfPrism = mMmgMesh->nprism; } else { // Surfaces @@ -275,17 +267,11 @@ void MmgUtilities::PrintAndGetMmgMeshInfo(MMGMeshInfo& } KRATOS_INFO_IF("MmgUtilities", mEchoLevel > 0) << "\tNodes created: " << rMMGMeshInfo.NumberOfNodes << std::endl; - if (TMMGLibrary == MMGLibrary::MMG2D) { // 2D - #if MMG_VERSION_GE(5,5) + if constexpr (TMMGLibrary == MMGLibrary::MMG2D) { // 2D KRATOS_INFO_IF("MmgUtilities", mEchoLevel > 0) << "Conditions created: " << rMMGMeshInfo.NumberOfLines << "\n" << "Elements created: " << rMMGMeshInfo.NumberOfTriangles + rMMGMeshInfo.NumberOfQuadrilaterals << "\n\tTriangles: " << rMMGMeshInfo.NumberOfTriangles << "\tQuadrilaterals: " << rMMGMeshInfo.NumberOfQuadrilaterals << std::endl; - #else - KRATOS_INFO_IF("MmgUtilities", mEchoLevel > 0) << - "Conditions created: " << rMMGMeshInfo.NumberOfLines << "\n" << - "Elements created: " << rMMGMeshInfo.NumberOfTriangles << std::endl; - #endif - } else if (TMMGLibrary == MMGLibrary::MMG3D) { // 3D + } else if constexpr (TMMGLibrary == MMGLibrary::MMG3D) { // 3D KRATOS_INFO_IF("MmgUtilities", mEchoLevel > 0) << "Conditions created: " << rMMGMeshInfo.NumberOfTriangles + rMMGMeshInfo.NumberOfQuadrilaterals << "\n\tTriangles: " << rMMGMeshInfo.NumberOfTriangles << "\tQuadrilaterals: " << rMMGMeshInfo.NumberOfQuadrilaterals << "\n" << "Elements created: " << rMMGMeshInfo.NumberOfTetrahedra + rMMGMeshInfo.NumberOfPrism << "\n\tTetrahedron: " << rMMGMeshInfo.NumberOfTetrahedra << "\tPrisms: " << rMMGMeshInfo.NumberOfPrism << std::endl; @@ -645,7 +631,6 @@ IndexVectorType MmgUtilities::CheckSecondTypeElements() { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) IndexVectorMapType quadrilateral_map; IndexVectorType ids_quadrialteral(4); @@ -671,9 +656,6 @@ IndexVectorType MmgUtilities::CheckSecondTypeElements() if (r_count > 1) elements_to_remove.push_back(i + 1); } -#else - IndexVectorType elements_to_remove(0); -#endif return elements_to_remove; @@ -1419,7 +1401,6 @@ Element::Pointer MmgUtilities::CreateSecondTypeElement( bool SkipCreation ) { -#if MMG_VERSION_GE(5,5) Element::Pointer p_element = nullptr; int vertex_0, vertex_1, vertex_2, vertex_3; @@ -1453,9 +1434,6 @@ Element::Pointer MmgUtilities::CreateSecondTypeElement( if (p_element != nullptr) KRATOS_ERROR_IF(p_element->GetGeometry().Area() < ZeroTolerance) << "Creating a almost zero or negative area element" << std::endl; return p_element; -#else - return nullptr; -#endif } /***********************************************************************************/ @@ -1539,9 +1517,7 @@ void MmgUtilities::InitMesh() mMmgMesh = nullptr; mMmgMet = nullptr; mMmgDisp = nullptr; -#if MMG_VERSION_GE(5,5) mMmgSol = nullptr; -#endif // We init the MMG mesh and sol if (mDiscretization == DiscretizationOption::STANDARD) { @@ -1549,11 +1525,7 @@ void MmgUtilities::InitMesh() } else if (mDiscretization == DiscretizationOption::LAGRANGIAN) { MMG2D_Init_mesh( MMG5_ARG_start, MMG5_ARG_ppMesh, &mMmgMesh, MMG5_ARG_ppMet, &mMmgMet, MMG5_ARG_ppDisp, &mMmgDisp, MMG5_ARG_end); } else if (mDiscretization == DiscretizationOption::ISOSURFACE) { - #if MMG_VERSION_GE(5,5) MMG2D_Init_mesh( MMG5_ARG_start, MMG5_ARG_ppMesh, &mMmgMesh, MMG5_ARG_ppMet, &mMmgMet, MMG5_ARG_ppLs, &mMmgSol, MMG5_ARG_end); - #else - MMG2D_Init_mesh( MMG5_ARG_start, MMG5_ARG_ppMesh, &mMmgMesh, MMG5_ARG_ppLs, &mMmgMet, MMG5_ARG_end); - #endif } else { KRATOS_ERROR << "Discretization type: " << static_cast(mDiscretization) << " not fully implemented" << std::endl; } @@ -1574,9 +1546,7 @@ void MmgUtilities::InitMesh() mMmgMesh = nullptr; mMmgMet = nullptr; mMmgDisp = nullptr; -#if MMG_VERSION_GE(5,5) mMmgSol = nullptr; -#endif // We init the MMG mesh and sol if (mDiscretization == DiscretizationOption::STANDARD) { @@ -1584,11 +1554,7 @@ void MmgUtilities::InitMesh() } else if (mDiscretization == DiscretizationOption::LAGRANGIAN) { MMG3D_Init_mesh( MMG5_ARG_start, MMG5_ARG_ppMesh, &mMmgMesh, MMG5_ARG_ppMet, &mMmgMet, MMG5_ARG_ppDisp, &mMmgDisp, MMG5_ARG_end); } else if (mDiscretization == DiscretizationOption::ISOSURFACE) { - #if MMG_VERSION_GE(5,5) MMG3D_Init_mesh( MMG5_ARG_start, MMG5_ARG_ppMesh, &mMmgMesh, MMG5_ARG_ppMet, &mMmgMet, MMG5_ARG_ppLs, &mMmgSol, MMG5_ARG_end); - #else - MMG3D_Init_mesh( MMG5_ARG_start, MMG5_ARG_ppMesh, &mMmgMesh, MMG5_ARG_ppLs, &mMmgMet, MMG5_ARG_end); - #endif } else { KRATOS_ERROR << "Discretization type: " << static_cast(mDiscretization) << " not fully implemented" << std::endl; } @@ -1609,9 +1575,7 @@ void MmgUtilities::InitMesh() mMmgMesh = nullptr; mMmgMet = nullptr; mMmgDisp = nullptr; -#if MMG_VERSION_GE(5,5) mMmgSol = nullptr; -#endif // We init the MMG mesh and sol if (mDiscretization == DiscretizationOption::STANDARD) { @@ -1619,11 +1583,7 @@ void MmgUtilities::InitMesh() } else if (mDiscretization == DiscretizationOption::LAGRANGIAN) { MMGS_Init_mesh( MMG5_ARG_start, MMG5_ARG_ppMesh, &mMmgMesh, MMG5_ARG_ppMet, &mMmgMet, MMG5_ARG_ppDisp, &mMmgDisp, MMG5_ARG_end); } else if (mDiscretization == DiscretizationOption::ISOSURFACE) { - #if MMG_VERSION_GE(5,5) MMGS_Init_mesh( MMG5_ARG_start, MMG5_ARG_ppMesh, &mMmgMesh, MMG5_ARG_ppMet, &mMmgMet, MMG5_ARG_ppLs, &mMmgSol, MMG5_ARG_end); - #else - MMGS_Init_mesh( MMG5_ARG_start, MMG5_ARG_ppMesh, &mMmgMesh, MMG5_ARG_ppLs, &mMmgMet, MMG5_ARG_end); - #endif } else { KRATOS_ERROR << "Discretization type: " << static_cast(mDiscretization) << " not fully implemented" << std::endl; } @@ -1731,9 +1691,9 @@ template<> void MmgUtilities::SetMeshOptimizationModeParameter(const bool EnableMeshOptimization) { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) + KRATOS_ERROR_IF( !MMGS_Set_iparameter(mMmgMesh,mMmgMet,MMGS_IPARAM_optim, EnableMeshOptimization) ) << "Unable to set optim mode" << std::endl; -#endif + KRATOS_CATCH(""); } @@ -1746,11 +1706,7 @@ void MmgUtilities::SetMeshSize(MMGMeshInfo KRATOS_TRY; //Give the size of the mesh: NumNodes vertices, num_elements triangles, num_conditions edges (2D) -#if MMG_VERSION_GE(5,5) - KRATOS_ERROR_IF( MMG2D_Set_meshSize(mMmgMesh, rMMGMeshInfo.NumberOfNodes, rMMGMeshInfo.NumberOfTriangles, rMMGMeshInfo.NumberOfQuadrilaterals, rMMGMeshInfo.NumberOfLines) != 1 ) << "Unable to set mesh size" << std::endl; -#else - KRATOS_ERROR_IF( MMG2D_Set_meshSize(mMmgMesh, rMMGMeshInfo.NumberOfNodes, rMMGMeshInfo.NumberOfTriangles, rMMGMeshInfo.NumberOfLines) != 1 ) << "Unable to set mesh size" << std::endl; -#endif + KRATOS_ERROR_IF( MMG2D_Set_meshSize(mMmgMesh, rMMGMeshInfo.NumberOfNodes, rMMGMeshInfo.NumberOfTriangles, rMMGMeshInfo.NumberOfQuadrilaterals, rMMGMeshInfo.NumberOfLines) != 1 ) << "Unable to set mesh size" << std::endl; KRATOS_CATCH(""); } @@ -1791,15 +1747,11 @@ void MmgUtilities::SetSolSizeScalar(const SizeType NumNodes) { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { KRATOS_ERROR_IF( MMG2D_Set_solSize(mMmgMesh,mMmgSol,MMG5_Vertex,NumNodes,MMG5_Scalar) != 1 ) << "Unable to set metric size" << std::endl; } else { KRATOS_ERROR_IF( MMG2D_Set_solSize(mMmgMesh,mMmgMet,MMG5_Vertex,NumNodes,MMG5_Scalar) != 1 ) << "Unable to set metric size" << std::endl; } -#else - KRATOS_ERROR_IF( MMG2D_Set_solSize(mMmgMesh,mMmgMet,MMG5_Vertex,NumNodes,MMG5_Scalar) != 1 ) << "Unable to set metric size" << std::endl; -#endif KRATOS_CATCH(""); } @@ -1812,15 +1764,11 @@ void MmgUtilities::SetSolSizeScalar(const SizeType NumNodes) { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { KRATOS_ERROR_IF( MMG3D_Set_solSize(mMmgMesh,mMmgSol,MMG5_Vertex,NumNodes,MMG5_Scalar) != 1 ) << "Unable to set metric size" << std::endl; } else { KRATOS_ERROR_IF( MMG3D_Set_solSize(mMmgMesh,mMmgMet,MMG5_Vertex,NumNodes,MMG5_Scalar) != 1 ) << "Unable to set metric size" << std::endl; } -#else - KRATOS_ERROR_IF( MMG3D_Set_solSize(mMmgMesh,mMmgMet,MMG5_Vertex,NumNodes,MMG5_Scalar) != 1 ) << "Unable to set metric size" << std::endl; -#endif KRATOS_CATCH(""); } @@ -1833,15 +1781,11 @@ void MmgUtilities::SetSolSizeScalar(const SizeType NumNodes) { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { KRATOS_ERROR_IF( MMGS_Set_solSize(mMmgMesh,mMmgSol,MMG5_Vertex,NumNodes,MMG5_Scalar) != 1 ) << "Unable to set metric size" << std::endl; } else { KRATOS_ERROR_IF( MMGS_Set_solSize(mMmgMesh,mMmgMet,MMG5_Vertex,NumNodes,MMG5_Scalar) != 1 ) << "Unable to set metric size" << std::endl; } -#else - KRATOS_ERROR_IF( MMGS_Set_solSize(mMmgMesh,mMmgMet,MMG5_Vertex,NumNodes,MMG5_Scalar) != 1 ) << "Unable to set metric size" << std::endl; -#endif KRATOS_CATCH(""); } @@ -1981,12 +1925,8 @@ void MmgUtilities::CheckMeshData() KRATOS_ERROR_IF( MMG2D_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong metric data" << std::endl; KRATOS_ERROR_IF( MMG2D_Chk_meshData(mMmgMesh, mMmgDisp) != 1 ) << "Wrong displacement data" << std::endl; } else if (mDiscretization == DiscretizationOption::ISOSURFACE) { - #if MMG_VERSION_GE(5,5) KRATOS_ERROR_IF( MMG2D_Chk_meshData(mMmgMesh, mMmgSol) != 1 ) << "Wrong solution data" << std::endl; KRATOS_ERROR_IF( MMG2D_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong metric data" << std::endl; - #else - KRATOS_ERROR_IF( MMG2D_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong metric data" << std::endl; - #endif } else { KRATOS_ERROR_IF( MMG2D_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong mesh data" << std::endl; } @@ -2006,12 +1946,8 @@ void MmgUtilities::CheckMeshData() KRATOS_ERROR_IF( MMG3D_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong metric data" << std::endl; KRATOS_ERROR_IF( MMG3D_Chk_meshData(mMmgMesh, mMmgDisp) != 1 ) << "Wrong displacement data" << std::endl; } else if (mDiscretization == DiscretizationOption::ISOSURFACE) { - #if MMG_VERSION_GE(5,5) KRATOS_ERROR_IF( MMG3D_Chk_meshData(mMmgMesh, mMmgSol) != 1 ) << "Wrong solution data" << std::endl; KRATOS_ERROR_IF( MMG3D_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong metric data" << std::endl; - #else - KRATOS_ERROR_IF( MMG3D_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong metric data" << std::endl; - #endif } else { KRATOS_ERROR_IF( MMG3D_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong mesh data" << std::endl; } @@ -2031,12 +1967,8 @@ void MmgUtilities::CheckMeshData() KRATOS_ERROR_IF( MMGS_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong metric data" << std::endl; KRATOS_ERROR_IF( MMGS_Chk_meshData(mMmgMesh, mMmgDisp) != 1 ) << "Wrong displacement data" << std::endl; } else if (mDiscretization == DiscretizationOption::ISOSURFACE) { - #if MMG_VERSION_GE(5,5) KRATOS_ERROR_IF( MMGS_Chk_meshData(mMmgMesh, mMmgSol) != 1 ) << "Wrong solution data" << std::endl; KRATOS_ERROR_IF( MMGS_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong metric data" << std::endl; - #else - KRATOS_ERROR_IF( MMGS_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong metric data" << std::endl; - #endif } else { KRATOS_ERROR_IF( MMGS_Chk_meshData(mMmgMesh, mMmgMet) != 1 ) << "Wrong mesh data" << std::endl; } @@ -2115,7 +2047,6 @@ void MmgUtilities::InputSol(const std::string& rInputName) const std::string sol_name = rInputName + ".sol"; const char* sol_file = sol_name.c_str(); -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { // a) Give the ouptut mesh name using MMG2D_Set_inputSolName (by default, the mesh is saved in the "mesh.o.mesh") file MMG2D_Set_inputSolName(mMmgMesh, mMmgSol, sol_file); @@ -2129,13 +2060,6 @@ void MmgUtilities::InputSol(const std::string& rInputName) // b) function calling KRATOS_INFO_IF("MmgUtilities", MMG2D_loadSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO READ METRIC" << std::endl; } -#else - // a) Give the ouptut mesh name using MMG2D_Set_inputSolName (by default, the mesh is saved in the "mesh.o.mesh") file - MMG2D_Set_inputSolName(mMmgMesh, mMmgMet, sol_file); - - // b) function calling - KRATOS_INFO_IF("MmgUtilities", MMG2D_loadSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO READ METRIC" << std::endl; -#endif KRATOS_CATCH(""); } @@ -2151,7 +2075,6 @@ void MmgUtilities::InputSol(const std::string& rInputName) const std::string sol_name = rInputName + ".sol"; const char* sol_file = sol_name.c_str(); -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { // a) Give the ouptut mesh name using MMG3D_Set_inputSolName (by default, the mesh is saved in the "mesh.o.mesh") file MMG3D_Set_inputSolName(mMmgMesh, mMmgSol, sol_file); @@ -2165,13 +2088,6 @@ void MmgUtilities::InputSol(const std::string& rInputName) // b) function calling KRATOS_INFO_IF("MmgUtilities", MMG3D_loadSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO READ METRIC" << std::endl; } -#else - // a) Give the ouptut mesh name using MMG3D_Set_inputSolName (by default, the mesh is saved in the "mesh.o.mesh") file - MMG3D_Set_inputSolName(mMmgMesh, mMmgMet, sol_file); - - // b) function calling - KRATOS_INFO_IF("MmgUtilities", MMG3D_loadSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO READ METRIC" << std::endl; -#endif KRATOS_CATCH(""); } @@ -2187,7 +2103,6 @@ void MmgUtilities::InputSol(const std::string& rInputName) const std::string sol_name = rInputName + ".sol"; const char* sol_file = sol_name.c_str(); -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { // a) Give the ouptut mesh name using MMGS_Set_inputSolName (by default, the mesh is saved in the "mesh.o.mesh") file MMGS_Set_inputSolName(mMmgMesh, mMmgSol, sol_file); @@ -2201,13 +2116,6 @@ void MmgUtilities::InputSol(const std::string& rInputName) // b) function calling KRATOS_INFO_IF("MmgUtilities", MMGS_loadSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO READ METRIC" << std::endl; } -#else - // a) Give the ouptut mesh name using MMGS_Set_inputSolName (by default, the mesh is saved in the "mesh.o.mesh") file - MMGS_Set_inputSolName(mMmgMesh, mMmgMet, sol_file); - - // b) function calling - KRATOS_INFO_IF("MmgUtilities", MMGS_loadSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO READ METRIC" << std::endl; -#endif KRATOS_CATCH(""); } @@ -2229,14 +2137,12 @@ void MmgUtilities::OutputMesh(const std::string& rOutputName) // b) function calling KRATOS_INFO_IF("MmgUtilities", MMG2D_saveMesh(mMmgMesh,mesh_file) != 1) << "UNABLE TO SAVE MESH" << std::endl; -#if MMG_VERSION_GE(5,5) const std::string vtk_name = rOutputName + ".vtk"; const char* vtk_file = vtk_name.c_str(); KRATOS_INFO_IF("MmgUtilities", MMG2D_saveVtkMesh(mMmgMesh, mMmgMet,vtk_file) != 1) << "UNABLE TO SAVE MESH" << std::endl; const std::string vtu_name = rOutputName + ".vtu"; const char* vtu_file = vtu_name.c_str(); KRATOS_INFO_IF("MmgUtilities", MMG2D_saveVtuMesh(mMmgMesh, mMmgMet,vtu_file) != 1) << "UNABLE TO SAVE MESH" << std::endl; -#endif KRATOS_CATCH(""); } @@ -2258,14 +2164,12 @@ void MmgUtilities::OutputMesh(const std::string& rOutputName) // b) function calling KRATOS_INFO_IF("MmgUtilities", MMG3D_saveMesh(mMmgMesh,mesh_file) != 1) << "UNABLE TO SAVE MESH" << std::endl; -#if MMG_VERSION_GE(5,5) const std::string vtk_name = rOutputName + ".vtk"; const char* vtk_file = vtk_name.c_str(); KRATOS_INFO_IF("MmgUtilities", MMG3D_saveVtkMesh(mMmgMesh, mMmgMet,vtk_file) != 1) << "UNABLE TO SAVE MESH" << std::endl; const std::string vtu_name = rOutputName + ".vtu"; const char* vtu_file = vtu_name.c_str(); KRATOS_INFO_IF("MmgUtilities", MMG3D_saveVtuMesh(mMmgMesh, mMmgMet,vtu_file) != 1) << "UNABLE TO SAVE MESH" << std::endl; -#endif KRATOS_CATCH(""); } @@ -2287,14 +2191,12 @@ void MmgUtilities::OutputMesh(const std::string& rOutputName) // b) function calling KRATOS_INFO_IF("MmgUtilities", MMGS_saveMesh(mMmgMesh,mesh_file) != 1) << "UNABLE TO SAVE MESH" << std::endl; -#if MMG_VERSION_GE(5,5) const std::string vtk_name = rOutputName + ".vtk"; const char* vtk_file = vtk_name.c_str(); KRATOS_INFO_IF("MmgUtilities", MMGS_saveVtkMesh(mMmgMesh, mMmgMet,vtk_file) != 1) << "UNABLE TO SAVE MESH" << std::endl; const std::string vtu_name = rOutputName + ".vtu"; const char* vtu_file = vtu_name.c_str(); KRATOS_INFO_IF("MmgUtilities", MMGS_saveVtuMesh(mMmgMesh, mMmgMet,vtu_file) != 1) << "UNABLE TO SAVE MESH" << std::endl; -#endif KRATOS_CATCH(""); } @@ -2310,7 +2212,6 @@ void MmgUtilities::OutputSol(const std::string& rOutputName) const std::string sol_name = rOutputName + ".sol"; const char* sol_file = sol_name.c_str(); -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { // a) Give the ouptut sol name using MMG2D_Set_outputSolName (by default, the mesh is saved in the "mesh.o.sol" file MMG2D_Set_outputSolName(mMmgMesh, mMmgSol, sol_file); @@ -2324,13 +2225,6 @@ void MmgUtilities::OutputSol(const std::string& rOutputName) // b) Function calling KRATOS_INFO_IF("MmgUtilities", MMG2D_saveSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO SAVE METRIC" << std::endl; } -#else - // a) Give the ouptut sol name using MMG2D_Set_outputSolName (by default, the mesh is saved in the "mesh.o.sol" file - MMG2D_Set_outputSolName(mMmgMesh, mMmgMet, sol_file); - - // b) Function calling - KRATOS_INFO_IF("MmgUtilities", MMG2D_saveSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO SAVE METRIC" << std::endl; -#endif KRATOS_CATCH(""); } @@ -2346,7 +2240,6 @@ void MmgUtilities::OutputSol(const std::string& rOutputName) const std::string sol_name = rOutputName + ".sol"; const char* sol_file = sol_name.c_str(); -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { // a) Give the ouptut sol name using MMG3D_Set_outputSolName (by default, the mesh is saved in the "mesh.o.sol" file MMG3D_Set_outputSolName(mMmgMesh, mMmgSol, sol_file); @@ -2360,13 +2253,6 @@ void MmgUtilities::OutputSol(const std::string& rOutputName) // b) Function calling KRATOS_INFO_IF("MmgUtilities", MMG3D_saveSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO SAVE METRIC" << std::endl; } -#else - // a) Give the ouptut sol name using MMG3D_Set_outputSolName (by default, the mesh is saved in the "mesh.o.sol" file - MMG3D_Set_outputSolName(mMmgMesh, mMmgMet, sol_file); - - // b) Function calling - KRATOS_INFO_IF("MmgUtilities", MMG3D_saveSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO SAVE METRIC" << std::endl; -#endif KRATOS_CATCH(""); } @@ -2382,7 +2268,6 @@ void MmgUtilities::OutputSol(const std::string& rOutputName) const std::string sol_name = rOutputName + ".sol"; const char* sol_file = sol_name.c_str(); -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { // a) Give the ouptut sol name using MMGS_Set_outputSolName (by default, the mesh is saved in the "mesh.o.sol" file MMGS_Set_outputSolName(mMmgMesh, mMmgSol, sol_file); @@ -2396,13 +2281,6 @@ void MmgUtilities::OutputSol(const std::string& rOutputName) // b) Function calling KRATOS_INFO_IF("MmgUtilities", MMGS_saveSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO SAVE METRIC" << std::endl; } -#else - // a) Give the ouptut sol name using MMGS_Set_outputSolName (by default, the mesh is saved in the "mesh.o.sol" file - MMGS_Set_outputSolName(mMmgMesh, mMmgMet, sol_file); - - // b) Function calling - KRATOS_INFO_IF("MmgUtilities", MMGS_saveSol(mMmgMesh, mMmgMet, sol_file) != 1) << "UNABLE TO SAVE METRIC" << std::endl; -#endif KRATOS_CATCH(""); } @@ -2529,15 +2407,11 @@ void MmgUtilities::FreeAll() if (mDiscretization == DiscretizationOption::LAGRANGIAN) { MMG2D_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_ppDisp,&mMmgDisp,MMG5_ARG_end); } else { - #if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { MMG2D_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_ppLs,&mMmgSol,MMG5_ARG_end); } else { MMG2D_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_end); } - #else - MMG2D_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_end); - #endif } KRATOS_CATCH(""); @@ -2554,15 +2428,11 @@ void MmgUtilities::FreeAll() if (mDiscretization == DiscretizationOption::LAGRANGIAN) { MMG3D_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_ppDisp,&mMmgDisp,MMG5_ARG_end); } else { - #if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { MMG3D_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_ppLs,&mMmgSol,MMG5_ARG_end); } else { MMG3D_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_end); } - #else - MMG3D_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_end); - #endif } KRATOS_CATCH(""); @@ -2579,15 +2449,11 @@ void MmgUtilities::FreeAll() if (mDiscretization == DiscretizationOption::LAGRANGIAN) { MMGS_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_ppDisp,&mMmgDisp,MMG5_ARG_end); } else { - #if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { MMGS_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_ppLs,&mMmgSol,MMG5_ARG_end); } else { MMGS_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_end); } - #else - MMGS_Free_all(MMG5_ARG_start,MMG5_ARG_ppMesh,&mMmgMesh,MMG5_ARG_ppMet,&mMmgMet,MMG5_ARG_end); - #endif } KRATOS_CATCH(""); @@ -2681,11 +2547,7 @@ void MmgUtilities::MMGLibCallIsoSurface(Parameters Configurat { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) auto p_sol = mMmgSol; -#else - auto p_sol = mMmgMet; -#endif /**------------------- Level set discretization option ---------------------*/ /* Ask for level set discretization */ @@ -2699,12 +2561,7 @@ void MmgUtilities::MMGLibCallIsoSurface(Parameters Configurat // /* Debug mode ON (default value = OFF) */ // KRATOS_ERROR_IF( MMG2D_Set_iparameter(mMmgMesh,p_sol,MMG2D_IPARAM_debug, 1) != 1 ) << "Unable to set on debug mode" << std::endl; -#if MMG_VERSION_GE(5,5) const int ier = MMG2D_mmg2dls(mMmgMesh, mMmgSol, mMmgMet); -#else - const int ier = MMG2D_mmg2dls(mMmgMesh, mMmgMet); -#endif - if ( ier == MMG5_STRONGFAILURE ) KRATOS_ERROR << "ERROR: BAD ENDING OF MMG2DLS: UNABLE TO SAVE MESH. ier: " << ier << std::endl; @@ -2802,11 +2659,7 @@ void MmgUtilities::MMGLibCallIsoSurface(Parameters Configurat { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) auto p_sol = mMmgSol; -#else - auto p_sol = mMmgMet; -#endif /**------------------- Level set discretization option ---------------------*/ /* Ask for level set discretization */ @@ -2846,11 +2699,7 @@ void MmgUtilities::MMGLibCallIsoSurface(Parameters Configurat // /* Debug mode ON (default value = OFF) */ // KRATOS_ERROR_IF( MMG3D_Set_iparameter(mMmgMesh,p_sol,MMG3D_IPARAM_debug, 1) != 1 ) << "Unable to set on debug mode" << std::endl; -#if MMG_VERSION_GE(5,5) const int ier = MMG3D_mmg3dls(mMmgMesh, mMmgSol, mMmgMet); -#else - const int ier = MMG3D_mmg3dls(mMmgMesh, mMmgMet); -#endif if ( ier == MMG5_STRONGFAILURE ) KRATOS_ERROR << "ERROR: BAD ENDING OF MMG3DLIB: UNABLE TO SAVE MESH. ier: " << ier << std::endl; @@ -2946,12 +2795,7 @@ template<> void MmgUtilities::MMGLibCallIsoSurface(Parameters ConfigurationParameters) { KRATOS_TRY; - -#if MMG_VERSION_GE(5,5) auto p_sol = mMmgSol; -#else - auto p_sol = mMmgMet; -#endif /**------------------- Level set discretization option ---------------------*/ /* Ask for level set discretization */ @@ -2964,11 +2808,7 @@ void MmgUtilities::MMGLibCallIsoSurface(Parameters Configurati // /* Debug mode ON (default value = OFF) */ // KRATOS_ERROR_IF( MMGS_Set_iparameter(mMmgMesh,p_sol,MMGS_IPARAM_debug, 1) != 1 ) << "Unable to set on debug mode" << std::endl; -#if MMG_VERSION_GE(5,5) const int ier = MMGS_mmgsls(mMmgMesh, mMmgSol, mMmgMet); -#else - const int ier = MMGS_mmgsls(mMmgMesh, mMmgMet); -#endif if ( ier == MMG5_STRONGFAILURE ) KRATOS_ERROR << "ERROR: BAD ENDING OF MMGSLS: UNABLE TO SAVE MESH. ier: " << ier << std::endl; @@ -2981,6 +2821,78 @@ void MmgUtilities::MMGLibCallIsoSurface(Parameters Configurati /***********************************************************************************/ /***********************************************************************************/ +template<> +void MmgUtilities::SetNumberOfLocalParameters(IndexType NumberOfLocalParameter) { + if ( MMG2D_Set_iparameter(mMmgMesh, mMmgMet, MMG2D_IPARAM_numberOfLocalParam, NumberOfLocalParameter) != 1) + KRATOS_ERROR << "Unable to set the number of local parameters" << std::endl; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template<> +void MmgUtilities::SetNumberOfLocalParameters(IndexType NumberOfLocalParameter) { + if ( MMG3D_Set_iparameter(mMmgMesh, mMmgMet, MMG3D_IPARAM_numberOfLocalParam, NumberOfLocalParameter) != 1) + KRATOS_ERROR << "Unable to set the number of local parameters" << std::endl; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template<> +void MmgUtilities::SetNumberOfLocalParameters(IndexType NumberOfLocalParameter) { + if ( MMGS_Set_iparameter(mMmgMesh, mMmgMet, MMGS_IPARAM_numberOfLocalParam, NumberOfLocalParameter) != 1) + KRATOS_ERROR << "Unable to set the number of local parameters" << std::endl; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template<> +void MmgUtilities::SetLocalParameter( + IndexType rColor, + double HMin, + double HMax, + double HausdorffValue + ) +{ + if ( MMG2D_Set_localParameter(mMmgMesh, mMmgMet, MMG5_Edg, rColor, HMin, HMax, HausdorffValue) != 1) + KRATOS_ERROR << "Unable to set local parameter" << std::endl; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template<> +void MmgUtilities::SetLocalParameter( + IndexType rColor, + double HMin, + double HMax, + double HausdorffValue + ) +{ + if ( MMG3D_Set_localParameter(mMmgMesh, mMmgMet, MMG5_Triangle, rColor, HMin, HMax, HausdorffValue) != 1) + KRATOS_ERROR << "Unable to set local parameter" << std::endl; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +template<> +void MmgUtilities::SetLocalParameter( + IndexType rColor, + double HMin, + double HMax, + double HausdorffValue + ) +{ + if ( MMGS_Set_localParameter(mMmgMesh, mMmgMet, MMG5_Triangle, rColor, HMin, HMax, HausdorffValue) != 1) + KRATOS_ERROR << "Unable to set local parameter" << std::endl; +} + +/***********************************************************************************/ +/***********************************************************************************/ + template<> void MmgUtilities::SetNodes( const double X, @@ -3266,15 +3178,11 @@ void MmgUtilities::SetMetricScalar( { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { KRATOS_ERROR_IF( MMG2D_Set_scalarSol(mMmgSol, Metric, NodeId) != 1 ) << "Unable to set distance" << std::endl; } else { KRATOS_ERROR_IF( MMG2D_Set_scalarSol(mMmgMet, Metric, NodeId) != 1 ) << "Unable to set scalar metric" << std::endl; } -#else - KRATOS_ERROR_IF( MMG2D_Set_scalarSol(mMmgMet, Metric, NodeId) != 1 ) << "Unable to set scalar metric" << std::endl; -#endif KRATOS_CATCH(""); } @@ -3290,15 +3198,11 @@ void MmgUtilities::SetMetricScalar( { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { KRATOS_ERROR_IF( MMG3D_Set_scalarSol(mMmgSol, Metric, NodeId) != 1 ) << "Unable to set distance" << std::endl; } else { KRATOS_ERROR_IF( MMG3D_Set_scalarSol(mMmgMet, Metric, NodeId) != 1 ) << "Unable to set scalar metric" << std::endl; } -#else - KRATOS_ERROR_IF( MMG3D_Set_scalarSol(mMmgMet, Metric, NodeId) != 1 ) << "Unable to set scalar metric" << std::endl; -#endif KRATOS_CATCH(""); } @@ -3314,15 +3218,11 @@ void MmgUtilities::SetMetricScalar( { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { KRATOS_ERROR_IF( MMGS_Set_scalarSol(mMmgSol, Metric, NodeId) != 1 ) << "Unable to set distance" << std::endl; } else { KRATOS_ERROR_IF( MMGS_Set_scalarSol(mMmgMet, Metric, NodeId) != 1 ) << "Unable to set scalar metric" << std::endl; } -#else - KRATOS_ERROR_IF( MMGS_Set_scalarSol(mMmgMet, Metric, NodeId) != 1 ) << "Unable to set scalar metric" << std::endl; -#endif KRATOS_CATCH(""); } @@ -3482,16 +3382,12 @@ void MmgUtilities::GetMetricScalar(double& rMetric) { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { rMetric = 0.0; // KRATOS_ERROR_IF( MMG2D_Get_scalarSol(mMmgSol, &rMetric) != 1 ) << "Unable to get solution" << std::endl; } else { KRATOS_ERROR_IF( MMG2D_Get_scalarSol(mMmgMet, &rMetric) != 1 ) << "Unable to get scalar metric" << std::endl; } -#else - KRATOS_ERROR_IF( MMG2D_Get_scalarSol(mMmgMet, &rMetric) != 1 ) << "Unable to get scalar metric" << std::endl; -#endif KRATOS_CATCH(""); } @@ -3504,17 +3400,12 @@ void MmgUtilities::GetMetricScalar(double& rMetric) { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { rMetric = 0.0; // KRATOS_ERROR_IF( MMG3D_Get_scalarSol(mMmgSol, &rMetric) != 1 ) << "Unable to get solution" << std::endl; } else { KRATOS_ERROR_IF( MMG3D_Get_scalarSol(mMmgMet, &rMetric) != 1 ) << "Unable to get scalar metric" << std::endl; } -#else - KRATOS_ERROR_IF( MMG3D_Get_scalarSol(mMmgMet, &rMetric) != 1 ) << "Unable to get scalar metric" << std::endl; -#endif - KRATOS_CATCH(""); } @@ -3526,16 +3417,12 @@ void MmgUtilities::GetMetricScalar(double& rMetric) { KRATOS_TRY; -#if MMG_VERSION_GE(5,5) if (mDiscretization == DiscretizationOption::ISOSURFACE) { rMetric = 0.0; // KRATOS_ERROR_IF( MMGS_Get_scalarSol(mMmgSol, &rMetric) != 1 ) << "Unable to get solution" << std::endl; } else { KRATOS_ERROR_IF( MMGS_Get_scalarSol(mMmgMet, &rMetric) != 1 ) << "Unable to get scalar metric" << std::endl; } -#else - KRATOS_ERROR_IF( MMGS_Get_scalarSol(mMmgMet, &rMetric) != 1 ) << "Unable to get scalar metric" << std::endl; -#endif KRATOS_CATCH(""); } @@ -3602,15 +3489,12 @@ void MmgUtilities::GetMetricTensor(array_1d& rMetr KRATOS_TRY; // The order is XX, XY, XZ, YY, YZ, ZZ - #if MMG_VERSION_GE(5,5) - if (mDiscretization == DiscretizationOption::ISOSURFACE) { - rMetric = ZeroVector(6); - } else { - KRATOS_ERROR_IF( MMG3D_Get_tensorSol(mMmgMet, &rMetric[0], &rMetric[3], &rMetric[5], &rMetric[1], &rMetric[4], &rMetric[2]) != 1 ) << "Unable to get tensor metric" << std::endl; - } - #else + if (mDiscretization == DiscretizationOption::ISOSURFACE) { + rMetric = ZeroVector(6); + } else { KRATOS_ERROR_IF( MMG3D_Get_tensorSol(mMmgMet, &rMetric[0], &rMetric[3], &rMetric[5], &rMetric[1], &rMetric[4], &rMetric[2]) != 1 ) << "Unable to get tensor metric" << std::endl; - #endif + } + KRATOS_CATCH(""); } @@ -3715,7 +3599,7 @@ void MmgUtilities::GenerateMeshDataFromModelPart( // Before computing colors we do some check and throw a warning to get the user informed const std::vector sub_model_part_names = AssignUniqueModelPartCollectionTagUtility::GetRecursiveSubModelPartNames(rModelPart); - for (auto sub_model_part_name : sub_model_part_names) { + for (const auto& sub_model_part_name : sub_model_part_names) { ModelPart& r_sub_model_part = AssignUniqueModelPartCollectionTagUtility::GetRecursiveSubModelPart(rModelPart, sub_model_part_name); KRATOS_WARNING_IF("MmgUtilities", mEchoLevel > 0 && (r_sub_model_part.NumberOfNodes() > 0 && (r_sub_model_part.NumberOfConditions() == 0 && r_sub_model_part.NumberOfElements() == 0))) << @@ -3740,7 +3624,7 @@ void MmgUtilities::GenerateMeshDataFromModelPart( /* Manually set of the mesh */ MMGMeshInfo mmg_mesh_info; - if (TMMGLibrary == MMGLibrary::MMG2D) { // 2D + if constexpr (TMMGLibrary == MMGLibrary::MMG2D) { // 2D /* Conditions */ std::size_t num_lines = 0; for(IndexType i = 0; i < r_conditions_array.size(); ++i) { @@ -3770,12 +3654,10 @@ void MmgUtilities::GenerateMeshDataFromModelPart( for (auto& r_node : it_elem->GetGeometry()) remeshed_nodes.insert(r_node.Id()); num_tri += 1; - #if MMG_VERSION_GE(5,5) } else if ((it_elem->GetGeometry()).GetGeometryType() == GeometryData::KratosGeometryType::Kratos_Quadrilateral2D4) { // Quadrilaterals for (auto& r_node : it_elem->GetGeometry()) remeshed_nodes.insert(r_node.Id()); num_quad += 1; - #endif } else { it_elem->Set(OLD_ENTITY, true); KRATOS_WARNING_IF("MmgUtilities", mEchoLevel > 1) << "WARNING:: YOUR GEOMETRY CONTAINS AN ELEMENT WITH " << it_elem->GetGeometry().PointsNumber() <<" NODES CAN NOT BE REMESHED" << std::endl; @@ -3785,15 +3667,10 @@ void MmgUtilities::GenerateMeshDataFromModelPart( mmg_mesh_info.NumberOfTriangles = num_tri; mmg_mesh_info.NumberOfQuadrilaterals = num_quad; - #if MMG_VERSION_GE(5,5) - KRATOS_INFO_IF("MmgUtilities", (num_tri < r_elements_array.size()) && mEchoLevel > 0) << - "Number of Elements: " << r_conditions_array.size() << " Number of Triangles: " << num_tri << std::endl; - #else KRATOS_INFO_IF("MmgUtilities", ((num_tri + num_quad) < r_elements_array.size()) && mEchoLevel > 0) << - "Number of Elements: " << r_conditions_array.size() << " Number of Triangles: " << num_tri << " Number of Quadrilaterals: " << num_quad << std::endl; - #endif + "Number of Conditions: " << r_conditions_array.size() << " Number of Triangles: " << num_tri << " Number of Quadrilaterals: " << num_quad << std::endl; - } else if (TMMGLibrary == MMGLibrary::MMG3D) { // 3D + } else if constexpr (TMMGLibrary == MMGLibrary::MMG3D) { // 3D /* Conditions */ std::size_t num_tri = 0, num_quad = 0; for(IndexType i = 0; i < r_conditions_array.size(); ++i) { @@ -4322,9 +4199,7 @@ void MmgUtilities::GenerateIsosurfaceMetricDataFromModelPart(ModelP { KRATOS_TRY; - #if MMG_VERSION_GE(5,5) - this->GenerateSolDataFromModelPart(rModelPart); - #endif + this->GenerateSolDataFromModelPart(rModelPart); KRATOS_CATCH(""); } @@ -4497,7 +4372,7 @@ void MmgUtilities::WriteMeshDataToModelPart( const IndexType key = r_color_list.first; if (key != 0) {// NOTE: key == 0 is the MainModelPart - for (auto sub_model_part_name : r_color_list.second) { + for (const auto& sub_model_part_name : r_color_list.second) { ModelPart& r_sub_model_part = AssignUniqueModelPartCollectionTagUtility::GetRecursiveSubModelPart(rModelPart, sub_model_part_name); if (color_nodes.find(key) != color_nodes.end()) r_sub_model_part.AddNodes(color_nodes[key]); @@ -4530,7 +4405,7 @@ void MmgUtilities::WriteMeshDataToModelPart( // NOTE: We add the nodes from the elements and conditions to the respective submodelparts const std::vector sub_model_part_names = AssignUniqueModelPartCollectionTagUtility::GetRecursiveSubModelPartNames(rModelPart); - for (auto sub_model_part_name : sub_model_part_names) { + for (const auto& sub_model_part_name : sub_model_part_names) { ModelPart& r_sub_model_part = AssignUniqueModelPartCollectionTagUtility::GetRecursiveSubModelPart(rModelPart, sub_model_part_name); std::unordered_set node_ids; diff --git a/applications/MeshingApplication/custom_utilities/mmg/mmg_utilities.h b/applications/MeshingApplication/custom_utilities/mmg/mmg_utilities.h index 58866c788c0d..926b3c940b6e 100644 --- a/applications/MeshingApplication/custom_utilities/mmg/mmg_utilities.h +++ b/applications/MeshingApplication/custom_utilities/mmg/mmg_utilities.h @@ -26,19 +26,32 @@ #include "utilities/assign_unique_model_part_collection_tag_utility.h" #include "processes/fast_transfer_between_model_parts_process.h" +#ifndef MMG_VERSION_GT + #define MMG_VERSION_GT(MAJOR,MINOR) false +#endif #ifndef MMG_VERSION_GE #define MMG_VERSION_GE(MAJOR,MINOR) false #endif +#ifndef MMG_VERSION_LT + #define MMG_VERSION_LT(MAJOR,MINOR) false +#endif +#ifndef MMG_VERSION_LE + #define MMG_VERSION_LE(MAJOR,MINOR) false +#endif #ifndef MMG_VERSION_MAJOR #define MMG_VERSION_MAJOR 5 #endif #ifndef MMG_VERSION_MINOR - #define MMG_VERSION_MINOR 4 + #define MMG_VERSION_MINOR 5 #endif #ifndef MMG_VERSION_PATCH #define MMG_VERSION_PATCH 0 #endif +#if MMG_VERSION_LT(5,5) + #error "ERROR:: The minimal MMG compatible version is 5.5.0. Please update your MMG library" +#endif + // NOTE: The following contains the license of the MMG library /* ============================================================================= ** Copyright (c) Bx INP/Inria/UBordeaux/UPMC, 2004- . @@ -730,6 +743,18 @@ class KRATOS_API(MESHING_APPLICATION) MmgUtilities */ virtual void AssignAndClearAuxiliarSubModelPartForFlags(ModelPart& rModelPart); + /** + * @brief Sets the number of parameters to be defined locally at each reference color. + * Required by the library. + */ + void SetNumberOfLocalParameters(IndexType NumberOfLocalParameter); + + /** + * @brief Sets the local hmin, hmax and hausdorff value for all entities with the given + * color reference. + */ + void SetLocalParameter(IndexType rColor, double HMin, double HMax, double HausdorffValue); + ///@} ///@name Access ///@{ diff --git a/applications/MeshingApplication/custom_utilities/parmmg/pmmg_utilities.cpp b/applications/MeshingApplication/custom_utilities/parmmg/pmmg_utilities.cpp index 50de1a486f23..50e93ebf257e 100644 --- a/applications/MeshingApplication/custom_utilities/parmmg/pmmg_utilities.cpp +++ b/applications/MeshingApplication/custom_utilities/parmmg/pmmg_utilities.cpp @@ -71,7 +71,7 @@ void ParMmgUtilities::PrintAndGetParMmgMeshInfo(PMMGMeshInfo::PrintAndGetParMmgMeshInfo(PMMGMeshInfo 0) << "\tNodes created: " << rPMMGMeshInfo.NumberOfNodes << std::endl; - if (TPMMGLibrary == PMMGLibrary::PMMG3D) { // 3D + if constexpr (TPMMGLibrary == PMMGLibrary::PMMG3D) { // 3D KRATOS_INFO_IF("ParMmgUtilities", GetEchoLevel() > 0) << "Conditions created: " << rPMMGMeshInfo.NumberOfTriangles + rPMMGMeshInfo.NumberOfQuadrilaterals << "\n\tTriangles: " << rPMMGMeshInfo.NumberOfTriangles << "\tQuadrilaterals: " << rPMMGMeshInfo.NumberOfQuadrilaterals << "\n" << "Elements created: " << rPMMGMeshInfo.NumberOfTetrahedra + rPMMGMeshInfo.NumberOfPrism << "\n\tTetrahedron: " << rPMMGMeshInfo.NumberOfTetrahedra << "\tPrisms: " << rPMMGMeshInfo.NumberOfPrism << std::endl; @@ -882,7 +882,7 @@ void ParMmgUtilities::GenerateMeshDataFromModelPart( /* Gathering LOCAL mesh info */ PMMGMeshInfo pmmg_mesh_info; - if (TPMMGLibrary == PMMGLibrary::PMMG3D) { // 3D + if constexpr (TPMMGLibrary == PMMGLibrary::PMMG3D) { // 3D /* Conditions */ std::size_t num_tri = 0, num_quad = 0; for(IndexType i = 0; i < r_conditions_array.size(); ++i) { diff --git a/applications/MeshingApplication/custom_utilities/projection.h b/applications/MeshingApplication/custom_utilities/projection.h index b31fc3b1dd71..f4143a00ce27 100644 --- a/applications/MeshingApplication/custom_utilities/projection.h +++ b/applications/MeshingApplication/custom_utilities/projection.h @@ -18,7 +18,7 @@ // System includes #include #include -#include +#include // Project includes #include "includes/define.h" @@ -213,7 +213,7 @@ class MeshTransfer //find the center and "radius" of the element // double xc, yc, radius; -// if(TDim == 2) +// if constexpr (TDim == 2) // { // CalculateCenterAndSearchRadius( geom[0].X(), geom[0].Y(), // geom[1].X(), geom[1].Y(), @@ -253,7 +253,7 @@ class MeshTransfer bool is_inside = false; //once we are sure the node in inside the circle we have to see if it is inside the triangle i.e. if all the Origin element shape functions are >1 -// if(TDim == 2) +// if constexpr (TDim == 2) // { // is_inside = CalculatePosition(geom[0].X(), geom[0].Y(), // geom[1].X(), geom[1].Y(), @@ -396,7 +396,7 @@ class MeshTransfer //find the center and "radius" of the element // double xc, yc, radius; -// if(TDim == 2) +// if constexpr (TDim == 2) // { // CalculateCenterAndSearchRadius( geom[0].X(), geom[0].Y(), // geom[1].X(), geom[1].Y(), @@ -436,7 +436,7 @@ class MeshTransfer // KRATOS_WATCH("line 402") bool is_inside = false; //once we are sure the node in inside the circle we have to see if it is inside the triangle i.e. if all the Origin element shape functions are >1 -// if(TDim == 2) +// if constexpr (TDim == 2) // { // is_inside = CalculatePosition(geom[0].X(), geom[0].Y(), // geom[1].X(), geom[1].Y(), diff --git a/applications/MeshingApplication/custom_utilities/uniform_refinement_utility.cpp b/applications/MeshingApplication/custom_utilities/uniform_refinement_utility.cpp index eac6c4b39ff8..cb901e30244c 100644 --- a/applications/MeshingApplication/custom_utilities/uniform_refinement_utility.cpp +++ b/applications/MeshingApplication/custom_utilities/uniform_refinement_utility.cpp @@ -133,7 +133,7 @@ void UniformRefinementUtility::Refine(int& rFinalRefinementLevel) const IndexType tag = collection.first; if (tag != 0) // NOTE: tag == 0 is the root model part { - for (auto model_part_name : collection.second) + for (const auto& model_part_name : collection.second) { ModelPart& sub_model_part = mrModelPart.GetSubModelPart(model_part_name); sub_model_part.AddNodes(tag_nodes[tag]); diff --git a/applications/MeshingApplication/external_includes/gid_mesh_library.h b/applications/MeshingApplication/external_includes/gid_mesh_library.h index 6f6bc0097e19..26d8b2ba7f36 100644 --- a/applications/MeshingApplication/external_includes/gid_mesh_library.h +++ b/applications/MeshingApplication/external_includes/gid_mesh_library.h @@ -1,7 +1,7 @@ #ifndef GID_MESH_LIBRARY_H #define GID_MESH_LIBRARY_H -#include +#include typedef void *GiDInput_Handle; typedef void *GiDOutput_Handle; diff --git a/applications/MeshingApplication/external_includes/msuite_pfem_refine.h b/applications/MeshingApplication/external_includes/msuite_pfem_refine.h index 6c7496a2e628..612e5e92cd56 100644 --- a/applications/MeshingApplication/external_includes/msuite_pfem_refine.h +++ b/applications/MeshingApplication/external_includes/msuite_pfem_refine.h @@ -18,7 +18,7 @@ // System includes #include #include -#include +#include #include diff --git a/applications/MeshingApplication/external_includes/pragmatic_adapt_3d.h b/applications/MeshingApplication/external_includes/pragmatic_adapt_3d.h index 7e49797f09a4..4943ab7cc52a 100644 --- a/applications/MeshingApplication/external_includes/pragmatic_adapt_3d.h +++ b/applications/MeshingApplication/external_includes/pragmatic_adapt_3d.h @@ -6,7 +6,7 @@ // System includes #include #include -#include +#include #include diff --git a/applications/MeshingApplication/external_includes/tetgen_cdt.h b/applications/MeshingApplication/external_includes/tetgen_cdt.h index c504cffef20b..d720ddcc6baf 100644 --- a/applications/MeshingApplication/external_includes/tetgen_cdt.h +++ b/applications/MeshingApplication/external_includes/tetgen_cdt.h @@ -16,7 +16,7 @@ // System includes #include #include -#include +#include #include diff --git a/applications/MeshingApplication/external_includes/tetgen_pfem_contact.h b/applications/MeshingApplication/external_includes/tetgen_pfem_contact.h index e7ece9ddd136..d4e9e16853e2 100644 --- a/applications/MeshingApplication/external_includes/tetgen_pfem_contact.h +++ b/applications/MeshingApplication/external_includes/tetgen_pfem_contact.h @@ -16,7 +16,7 @@ // System includes #include #include -#include +#include #include diff --git a/applications/MeshingApplication/external_includes/tetgen_pfem_refine.h b/applications/MeshingApplication/external_includes/tetgen_pfem_refine.h index 1d6823af188b..2f74cc6e9eac 100644 --- a/applications/MeshingApplication/external_includes/tetgen_pfem_refine.h +++ b/applications/MeshingApplication/external_includes/tetgen_pfem_refine.h @@ -16,7 +16,7 @@ // System includes #include #include -#include +#include #include diff --git a/applications/MeshingApplication/external_includes/tetgen_pfem_refine_face.h b/applications/MeshingApplication/external_includes/tetgen_pfem_refine_face.h index 02a1c287809f..836400e8780d 100755 --- a/applications/MeshingApplication/external_includes/tetgen_pfem_refine_face.h +++ b/applications/MeshingApplication/external_includes/tetgen_pfem_refine_face.h @@ -16,7 +16,7 @@ // System includes #include #include -#include +#include #include diff --git a/applications/MeshingApplication/external_includes/tetgen_pfem_refine_vms.h b/applications/MeshingApplication/external_includes/tetgen_pfem_refine_vms.h index a6d9e5ed15a0..d0191799e65c 100644 --- a/applications/MeshingApplication/external_includes/tetgen_pfem_refine_vms.h +++ b/applications/MeshingApplication/external_includes/tetgen_pfem_refine_vms.h @@ -16,7 +16,7 @@ // System includes #include #include -#include +#include #include diff --git a/applications/MeshingApplication/external_includes/trigen_cdt.h b/applications/MeshingApplication/external_includes/trigen_cdt.h index e5fafb077284..9c2eb7108874 100644 --- a/applications/MeshingApplication/external_includes/trigen_cdt.h +++ b/applications/MeshingApplication/external_includes/trigen_cdt.h @@ -15,7 +15,7 @@ // System includes #include #include -#include +#include // External includes #include "triangle.h" diff --git a/applications/MeshingApplication/external_includes/trigen_mesh_suite_refine.h b/applications/MeshingApplication/external_includes/trigen_mesh_suite_refine.h index bf975845c371..44bf155eba53 100644 --- a/applications/MeshingApplication/external_includes/trigen_mesh_suite_refine.h +++ b/applications/MeshingApplication/external_includes/trigen_mesh_suite_refine.h @@ -15,7 +15,7 @@ // System includes #include #include -#include +#include // External includes #include "triangle.h" diff --git a/applications/MeshingApplication/external_includes/trigen_pfem_refine.h b/applications/MeshingApplication/external_includes/trigen_pfem_refine.h index d55eb4314d14..c080517a2904 100644 --- a/applications/MeshingApplication/external_includes/trigen_pfem_refine.h +++ b/applications/MeshingApplication/external_includes/trigen_pfem_refine.h @@ -13,7 +13,7 @@ // System includes #include #include -#include +#include // External includes #include "triangle.h" diff --git a/applications/MeshingApplication/tests/cpp_tests/test_linear_to_quadratic_tetrahedra_mesh_converter.cpp b/applications/MeshingApplication/tests/cpp_tests/test_linear_to_quadratic_tetrahedra_mesh_converter.cpp new file mode 100644 index 000000000000..fb30e086a732 --- /dev/null +++ b/applications/MeshingApplication/tests/cpp_tests/test_linear_to_quadratic_tetrahedra_mesh_converter.cpp @@ -0,0 +1,130 @@ +// KRATOS __ __ _____ ____ _ _ ___ _ _ ____ +// | \/ | ____/ ___|| | | |_ _| \ | |/ ___| +// | |\/| | _| \___ \| |_| || || \| | | _ +// | | | | |___ ___) | _ || || |\ | |_| | +// |_| |_|_____|____/|_| |_|___|_| \_|\____| APPLICATION +// +// License: BSD License +// Kratos default license: kratos/license.txt +// +// Main authors: Ariadna Cortés +// +//System inlcudes + +// Project includes +#include "includes/checks.h" +#include "testing/testing.h" +#include "containers/model.h" +#include "custom_utilities/linear_to_quadratic_tetrahedra_mesh_converter_utility.h" + + +namespace Kratos { +namespace Testing { + +namespace { + //Type definitions + typedef Node<3> NodeType; + typedef Node<3>::Pointer NodePtrType; + typedef Geometry GeometryType; + typedef GeometryType::Pointer GeometryPtrType; + typedef GeometryType::GeometriesArrayType GeometryArrayType; + typedef GeometryType::PointsArrayType PointsArrayType; + + //Auxiliar functions + /** + * @brief Returns the distance between two 3D points. + * @param rPoint0 reference to the first point + * @param rPoint1 reference an array of 3 coordinates representing the second point + * @return Distance + */ + static double Distance(const NodeType& Point0, const array_1d& Point1) { + const double lx = Point0.X() - Point1[0]; + const double ly = Point0.Y() - Point1[1]; + const double lz = Point0.Z() - Point1[2]; + + const double length = lx * lx + ly * ly + lz * lz; + + return std::sqrt( length ); + } +} //unnamed namespace + + KRATOS_TEST_CASE_IN_SUITE(LinearToQuadraticTetrahedraMeshConverter, KratosMeshingApplicationFastSuite) + { + Model MyModel; + ModelPart& modelpart = MyModel.CreateModelPart("Tetrahedras"); + ModelPart& subMp0 = modelpart.CreateSubModelPart("level1"); + ModelPart& subMp1 = subMp0.CreateSubModelPart("level2"); + ModelPart& subMp2 = subMp1.CreateSubModelPart("level3"); + modelpart.CreateNewNode(1, 2, 0, 0); + modelpart.CreateNewNode(2, 0, 1, 0); + modelpart.CreateNewNode(3, 0, 0, 1); + modelpart.CreateNewNode(4, 0, 0, 2); + modelpart.CreateNewNode(5, -40, 0, 0); + Properties::Pointer p_properties_1(new Properties(0)); + Element::Pointer tetra1 = subMp1.CreateNewElement("Element3D4N", 1, {1, 2, 3, 4}, p_properties_1); + Element::Pointer tetra2 = subMp2.CreateNewElement("Element3D4N", 2, {2, 3, 4, 5}, p_properties_1); + + subMp2.AddNode(modelpart.pGetNode(5)); + subMp2.AddNode(modelpart.pGetNode(2)); + subMp2.AddNode(modelpart.pGetNode(3)); + subMp2.AddNode(modelpart.pGetNode(4)); + subMp1.AddNode(modelpart.pGetNode(1)); + + + std::vector volumes(4); + GeometryPtrType geom1 = tetra1->pGetGeometry(); + volumes[tetra1->Id()] = geom1->Volume(); + GeometryPtrType geom2 = tetra2->pGetGeometry(); + volumes[tetra2->Id()] = geom2->Volume(); + + Condition::Pointer cond1 = subMp2.CreateNewCondition("SurfaceCondition3D3N", 3, {2, 3, 5}, p_properties_1); + + GeometryPtrType geom3 = cond1->pGetGeometry(); + volumes[cond1->Id()] = geom3->Area(); + + LinearToQuadraticTetrahedraMeshConverter refineTetra(modelpart); + refineTetra.LocalConvertLinearToQuadraticTetrahedraMesh(false,false); + + KRATOS_CHECK_EQUAL(modelpart.Nodes().size(),14); //There are 14 nodes (10 for each tetra but 6 are shared) + KRATOS_CHECK_EQUAL(subMp0.Nodes().size(),14); //Also in the first level submodelpart + KRATOS_CHECK_EQUAL(subMp1.Nodes().size(),14); //Also in the second level submodelpart + KRATOS_CHECK_EQUAL(subMp2.Nodes().size(),10); //In the third level submodelpart only 10 nodes + KRATOS_CHECK_EQUAL(modelpart.Elements().size(),2); //No new elements are added + KRATOS_CHECK_EQUAL(subMp1.Elements().size(),2); //No new elements are added + KRATOS_CHECK_EQUAL(subMp2.Elements().size(),1); //No new elements are added + KRATOS_CHECK_EQUAL(subMp2.Conditions().size(),1); //No new conditions are added + + for(auto elem : modelpart.Elements()) { + GeometryPtrType geom = elem.pGetGeometry(); + const auto geometryType = geom->GetGeometryType(); + KRATOS_CHECK_EQUAL(geometryType, GeometryData::KratosGeometryType::Kratos_Tetrahedra3D10); + const double vol = geom->Volume(); + KRATOS_CHECK_NEAR(volumes[elem.Id()], vol ,0.001); + + auto points = geom->Points(); + KRATOS_CHECK_EQUAL(Distance(points[0],points[1]), Distance(points[0],points[4]) + Distance(points[4],points[1])); + KRATOS_CHECK_EQUAL(Distance(points[1],points[2]), Distance(points[1],points[5]) + Distance(points[5],points[2])); + KRATOS_CHECK_EQUAL(Distance(points[2],points[3]), Distance(points[2],points[9]) + Distance(points[9],points[3])); + KRATOS_CHECK_EQUAL(Distance(points[3],points[0]), Distance(points[3],points[7]) + Distance(points[7],points[0])); + KRATOS_CHECK_EQUAL(Distance(points[0],points[2]), Distance(points[0],points[6]) + Distance(points[6],points[0])); + KRATOS_CHECK_EQUAL(Distance(points[1],points[3]), Distance(points[1],points[8]) + Distance(points[8],points[1])); + } + + for(auto cond : modelpart.Conditions()) { + GeometryPtrType geom = cond.pGetGeometry(); + const auto geometryType = geom->GetGeometryType(); + KRATOS_CHECK_EQUAL(geometryType, GeometryData::KratosGeometryType::Kratos_Triangle3D6); + const double vol = geom->Area(); + KRATOS_CHECK_NEAR(volumes[3], vol ,0.001); + + auto points = geom->Points(); + KRATOS_CHECK_EQUAL(Distance(points[0],points[1]), Distance(points[0],points[3]) + Distance(points[3],points[1])); + KRATOS_CHECK_EQUAL(Distance(points[1],points[2]), Distance(points[1],points[4]) + Distance(points[4],points[2])); + KRATOS_CHECK_EQUAL(Distance(points[2],points[0]), Distance(points[2],points[5]) + Distance(points[5],points[0])); + + } + + } + +} // namespace Testing. +} // namespace Kratos. \ No newline at end of file diff --git a/applications/PFEM2Application/custom_utilities/calculate_water_fraction.h b/applications/PFEM2Application/custom_utilities/calculate_water_fraction.h index 03b278e07705..632676e9e666 100644 --- a/applications/PFEM2Application/custom_utilities/calculate_water_fraction.h +++ b/applications/PFEM2Application/custom_utilities/calculate_water_fraction.h @@ -392,7 +392,7 @@ namespace Kratos for (unsigned int j = 0; j < (TDim); j++) velocities(i,j) = velocity[j]; - if (TDim==2) + if constexpr (TDim==2) { if (geom[i].IsFixed(FRACT_VEL_X) && geom[i].IsFixed(FRACT_VEL_Y)) { @@ -424,7 +424,7 @@ namespace Kratos //boundary_element=true; array_1d normal; unsigned int free_node=0; - if (TDim==2) + if constexpr (TDim==2) { fixed_face_area_or_lenght = fabs(sqrt(pow((geom[fixed_nodes[1]].Y()-geom[fixed_nodes[0]].Y()),2 ) + pow( (geom[fixed_nodes[1]].X()-geom[fixed_nodes[0]].X() ),2 ) ) ); normal[0] = geom[fixed_nodes[1]].Y()-geom[fixed_nodes[0]].Y(); diff --git a/applications/PFEM2Application/custom_utilities/move_particle_utility_pfem2.h b/applications/PFEM2Application/custom_utilities/move_particle_utility_pfem2.h index 215b9db618e6..654057eca1fe 100644 --- a/applications/PFEM2Application/custom_utilities/move_particle_utility_pfem2.h +++ b/applications/PFEM2Application/custom_utilities/move_particle_utility_pfem2.h @@ -234,7 +234,7 @@ namespace Kratos ielem->SetValue(MEAN_SIZE, elem_size); //and the matrix column for the enrichments in the pressure. - if (TDim==3) + if constexpr (TDim==3) ielem->SetValue(ENRICH_LHS_ROW_3D, ZeroVector(4)); // { // Vector & lhs_enrich = ielem->GetValue(ENRICH_LHS_ROW_3D); @@ -684,7 +684,7 @@ namespace Kratos { inode->FastGetSolutionStepValue(VELOCITY_Y)=inode->GetSolutionStepValue(VELOCITY_Y,1); } - if (TDim==3) + if constexpr (TDim==3) if (inode->IsFixed(VELOCITY_Z)) { inode->FastGetSolutionStepValue(VELOCITY_Z)=inode->GetSolutionStepValue(VELOCITY_Z,1); @@ -736,7 +736,7 @@ namespace Kratos { velocity[1] = original_velocity[1] - normal_velocity[1]; } - if (TDim==3) + if constexpr (TDim==3) if (inode->IsFixed(VELOCITY_Z)) { velocity[2] = original_velocity[2] - normal_velocity[2]; @@ -1396,7 +1396,7 @@ namespace Kratos //now we invert the matrix BoundedMatrix inverse_mass_matrix=ZeroMatrix(TDim+1 , TDim+1); - if(TDim==3) + if constexpr (TDim==3) InvertMatrix( mass_matrix, inverse_mass_matrix); else InvertMatrix3x3( mass_matrix, inverse_mass_matrix); diff --git a/applications/PFEM2Application/custom_utilities/particle_utilities.h b/applications/PFEM2Application/custom_utilities/particle_utilities.h index f86c1fa1e9b0..80984c3fe595 100644 --- a/applications/PFEM2Application/custom_utilities/particle_utilities.h +++ b/applications/PFEM2Application/custom_utilities/particle_utilities.h @@ -201,7 +201,7 @@ namespace Kratos KRATOS_ERROR<<"Add ----NODAL_H---- variable!!!!!! ERROR"; double sigma = 0.0; - if (TDim == 2) + if constexpr (TDim == 2) sigma = 10.0 / (7.0 * 3.1415926); else sigma = 1.0 / 3.1415926; @@ -306,7 +306,7 @@ namespace Kratos KRATOS_ERROR<<"Add ----NODAL_H---- variable!!!!!! ERROR"; double sigma = 0.0; - if (TDim == 2) + if constexpr (TDim == 2) sigma = 10.0 / (7.0 * 3.1415926); else sigma = 1.0 / 3.1415926; @@ -1340,7 +1340,7 @@ namespace Kratos double sigma = 0.0; - if (TDim == 2) + if constexpr (TDim == 2) sigma = 10.0 / (7.0 * 3.1415926); else sigma = 1.0 / 3.1415926; @@ -1494,7 +1494,7 @@ namespace Kratos double y3 = geom[3].Y(); double z3 = geom[3].Z(); double area=0.0; - //if(TDim==2) area=CalculateVol(x0, y0, x1, y1, x2, y2); + //if constexpr (TDim==2) area=CalculateVol(x0, y0, x1, y1, x2, y2); //else area=CalculateVol(x0, y0, z0, x1, y1, z1, x2, y2, z2, x3, y3, z3); diff --git a/applications/PFEM2Application/python_scripts/frac_step_solverQ.py b/applications/PFEM2Application/python_scripts/frac_step_solverQ.py index 2e85ba2681c5..3faef527adab 100644 --- a/applications/PFEM2Application/python_scripts/frac_step_solverQ.py +++ b/applications/PFEM2Application/python_scripts/frac_step_solverQ.py @@ -44,8 +44,8 @@ def AddVariables(model_part,p_model_part): model_part.AddNodalSolutionStepVariable(MOMENTUM_CM) - - + + model_part.AddNodalSolutionStepVariable(IS_BOUNDARY) #model_part.AddNodalSolutionStepVariable(TO_ERASE) model_part.AddNodalSolutionStepVariable(MATERIAL_VARIABLE); @@ -56,15 +56,15 @@ def AddVariables(model_part,p_model_part): model_part.AddNodalSolutionStepVariable(IS_WATER) model_part.AddNodalSolutionStepVariable(IS_STRUCTURE); model_part.AddNodalSolutionStepVariable(IS_FREE_SURFACE) - - + + model_part.AddNodalSolutionStepVariable(IS_VISITED) model_part.AddNodalSolutionStepVariable(NODAL_H) model_part.AddNodalSolutionStepVariable(IS_POROUS) model_part.AddNodalSolutionStepVariable(IS_EROSIONABLE) - + model_part.AddNodalSolutionStepVariable(PRESSUREAUX) @@ -111,8 +111,8 @@ def AddVariables(model_part,p_model_part): p_model_part.AddNodalSolutionStepVariable(MOMENTUM_CM) - - + + p_model_part.AddNodalSolutionStepVariable(IS_BOUNDARY) #p_model_part.AddNodalSolutionStepVariable(ERASE_FLAG) p_model_part.AddNodalSolutionStepVariable(MATERIAL_VARIABLE); @@ -123,15 +123,15 @@ def AddVariables(model_part,p_model_part): p_model_part.AddNodalSolutionStepVariable(IS_WATER) p_model_part.AddNodalSolutionStepVariable(IS_STRUCTURE); p_model_part.AddNodalSolutionStepVariable(IS_FREE_SURFACE) - - + + p_model_part.AddNodalSolutionStepVariable(IS_VISITED) p_model_part.AddNodalSolutionStepVariable(NODAL_H) p_model_part.AddNodalSolutionStepVariable(IS_POROUS) p_model_part.AddNodalSolutionStepVariable(IS_EROSIONABLE) - + p_model_part.AddNodalSolutionStepVariable(PRESSUREAUX) @@ -141,28 +141,28 @@ def AddVariables(model_part,p_model_part): def AddDofs(model_part,p_model_part): - + for node in model_part.Nodes: - node.AddDof(PRESSURE); + node.AddDof(PRESSURE); node.AddDof(VELOCITY_X); node.AddDof(VELOCITY_Y); node.AddDof(VELOCITY_Z); - + def ReadRestartFile(FileName,nodes): NODES = nodes aaa = open(FileName) for line in aaa: exec(line) - - + + class FracStepSolver: - + def __init__(self,model_part,p_model_part,domain_size): - + #neighbour search number_of_avg_elems = 10 number_of_avg_nodes = 10 @@ -179,7 +179,7 @@ def __init__(self,model_part,p_model_part,domain_size): self.max_press_its = 5; self.time_order = 2; self.CalculateReactions = False; - self.ReformDofAtEachIteration = False; + self.ReformDofAtEachIteration = False; self.CalculateNormDxFlag = True; self.laplacian_form = 2; #1 = laplacian, 2 = Discrete Laplacian self.predictor_corrector = False; @@ -189,7 +189,7 @@ def __init__(self,model_part,p_model_part,domain_size): #definition of the solvers pDiagPrecond = DiagonalPreconditioner() #self.velocity_linear_solver = BICGSTABSolver(1e-6, 5000, pDiagPrecond) - + self.velocity_linear_solver = SuperLUSolver() self.pressure_linear_solver = BICGSTABSolver(1e-6, 5000,pDiagPrecond) @@ -202,7 +202,7 @@ def __init__(self,model_part,p_model_part,domain_size): self.slip_conditions_initialized = False self.neigh_finder = FindNodalNeighboursProcess(model_part) self.compute_reactions=False - self.timer=Timer() + self.timer=Timer() #self.particle_utils = ParticleUtils2D() #self.normal=NormalCalculationUtils() @@ -216,27 +216,27 @@ def __init__(self,model_part,p_model_part,domain_size): self.Pfem2_apply_bc_process = Pfem2ApplyBCProcess(model_part); self.Pfem2Utils = Pfem2Utils() self.mark_outer_nodes_process = MarkOuterNodesProcess(model_part); - + if(domain_size == 2): - self.particle_utils = ParticleUtils2D() + self.particle_utils = ParticleUtils2D() self.Mesher = TriGenPFEMModeler() - + self.fluid_neigh_finder = FindNodalNeighboursProcess(model_part) #this is needed if we want to also store the conditions a node belongs to self.condition_neigh_finder = FindConditionsNeighboursProcess(model_part,2, 10) - self.elem_neighbor_finder = GenericFindElementalNeighboursProcess(model_part) - + self.elem_neighbor_finder = GenericFindElementalNeighboursProcess(model_part) + elif (domain_size == 3): #self.Mesher = TetGenModeler() #improved mesher self.particle_utils = ParticleUtils3D() - + self.Mesher = TetGenPfemModeler() self.fluid_neigh_finder = FindNodalNeighboursProcess(model_part) #this is needed if we want to also store the conditions a node belongs to self.condition_neigh_finder = FindConditionsNeighboursProcess(model_part,3, 20) self.elem_neighbor_finder = GenericFindElementalNeighboursProcess(model_part) - + self.mark_fluid_process = MarkFluidProcess(model_part); def Initialize(self): @@ -261,7 +261,7 @@ def Initialize(self): (self.solver).SetEchoLevel(self.echo_level) (self.fluid_neigh_finder).Execute(); - (self.Pfem2_apply_bc_process).Execute(); + (self.Pfem2_apply_bc_process).Execute(); for node in self.model_part.Nodes: node.SetSolutionStepValue(IS_FREE_SURFACE,0,0.0) @@ -269,35 +269,35 @@ def Initialize(self): #self.Remesh2(); self.RemeshAux(); #solo multifluido - + def Solve(self): - + (self.solver).Solve() def solve3(self): - + (self.solver).SolveStep3(1.0) def solve5(self): - + (self.solver).SolveStep5(1.0) def solve4(self): - + (self.solver).SolveStep4(1.0) def solve5(self): - + (self.solver).SolveStep5(1.0) def Projections(self): - + (self.solver).SolveStep5() def Reactions(self): @@ -312,7 +312,7 @@ def Clear(self): def Remesh2(self): - + h_factor=1.0; alpha_shape=1.2; @@ -327,23 +327,23 @@ def Remesh2(self): def RemeshAux(self): - - - h_factor=0.1 + + + h_factor=0.1 alpha_shape=1.4; for node in (self.model_part).Nodes: node.Set(TO_ERASE, False) #dambreak - for node in (self.model_part).Nodes: - node.SetSolutionStepValue(NODAL_H,0,0.0011) + for node in (self.model_part).Nodes: + node.SetSolutionStepValue(NODAL_H,0,0.0011) self.node_erase_process = NodeEraseProcess(self.model_part); - box_corner1 = Vector(3); - box_corner2 = Vector(3); + box_corner1 = Vector(3); + box_corner2 = Vector(3); + - box_corner1[0]=-0.014653 box_corner1[1]=-0.16#0.31315#-0.1689 @@ -363,8 +363,8 @@ def RemeshAux(self): box_corner2[1]=10.0 box_corner2[2]=10.0 - for node in (self.model_part).Nodes: - node.SetSolutionStepValue(NODAL_H,0,0.15) + for node in (self.model_part).Nodes: + node.SetSolutionStepValue(NODAL_H,0,0.15) self.box_corner1 = box_corner1 @@ -380,20 +380,20 @@ def RemeshAux(self): if (self.domain_size == 2): (self.Mesher).ReGenerateMesh("QFluid2D","LineCondition2D2N", self.model_part, self.node_erase_process, True, False, alpha_shape, h_factor) elif (self.domain_size == 3): - - (self.Mesher).ReGenerateMesh("QFluid3D","SurfaceCondition3D3N", self.model_part, self.node_erase_process, True, False, alpha_shape, h_factor) + + (self.Mesher).ReGenerateMesh("QFluid3D","SurfaceCondition3D3N", self.model_part, self.node_erase_process, True, False, alpha_shape, h_factor) (self.fluid_neigh_finder).Execute(); - (self.elem_neighbor_finder).ExecuteInitialize() + (self.elem_neighbor_finder).Execute() (self.condition_neigh_finder).Execute(); (self.Pfem2_apply_bc_process).Execute(); (self.mark_fluid_process).Execute(); - + def FindNeighbours(self): (self.neigh_finder).Execute(); - + def WriteRestartFile(self,FileName): restart_file = open(FileName + ".mdpa",'w') @@ -416,12 +416,12 @@ def WriteRestartFile(self,FileName): new_restart_utilities.PrintRestart_ScalarVariable(TEMPERATURE,"TEMPERATURE",self.model_part.Nodes,restart_file) new_restart_utilities.PrintRestart_ScalarVariable(FACE_HEAT_FLUX,"FACE_HEAT_FLUX",self.model_part.Nodes,restart_file) new_restart_utilities.PrintRestart_ScalarVariable(ENTHALPY,"ENTHALPY",self.model_part.Nodes,restart_file) - restart_file.close() + restart_file.close() def CalculateDistanceAndDiviedSet(self,domain_size): - + (self.neigh_finder).Execute(); distance_tools = ElemBasedDistanceUtilities(self.model_part) distance_calculator = BodyDistanceCalculationUtils() @@ -429,13 +429,13 @@ def CalculateDistanceAndDiviedSet(self,domain_size): #assign IS_VISITED1 to elem with DISTANCE>=0 and change DSITANCE to posetive for external ones ##Assign Zero distance to interface nodes for node in (self.model_part).Nodes: - + node.SetSolutionStepValue(DISTANCE,0,0.0) node.SetValue(IS_VISITED,0.0) - + for node in (self.model_part).Nodes: if(node.GetSolutionStepValue(IS_INTERFACE)== 1.0): - + node.SetSolutionStepValue(DISTANCE,0,0.0) node.SetValue(IS_VISITED,1.0) @@ -453,22 +453,22 @@ def CalculateDistanceAndDiviedSet(self,domain_size): else: distance_calculator.CalculateDistances3D((self.model_part).Elements,DISTANCE, True); - #change sign + #change sign distance_tools.ChangeSignToDistance() #mark as visited all of the nodes inside the fluid domain #### distance_tools.MarkInternalAndMixedNodes() print ((self.model_part).Elements).Size() - + def DistToH(self): - - for node in (self.model_part).Nodes: + + for node in (self.model_part).Nodes: node.SetSolutionStepValue(NODAL_H,0,0.05) def DistToH1(self): - - for node in (self.model_part).Nodes: + + for node in (self.model_part).Nodes: current_dist = node.GetSolutionStepValue(DISTANCE,0) if(abs(current_dist) <= 0.03): node.SetSolutionStepValue(NODAL_H,0,0.02) @@ -478,7 +478,7 @@ def DistToH1(self): else: node.SetSolutionStepValue(NODAL_H,0,0.012) - + for node in (self.model_part).Nodes: @@ -489,8 +489,8 @@ def DistToH2(self): #possible_h = self.CalculateRadius() #print possible_h - - for node in (self.model_part).Nodes: + + for node in (self.model_part).Nodes: current_dist = node.GetSolutionStepValue(DISTANCE,0) if(abs(current_dist) <= 0.06): #0.15 node.SetSolutionStepValue(NODAL_H,0,0.20) @@ -500,7 +500,7 @@ def DistToH2(self): else: node.SetSolutionStepValue(NODAL_H,0,0.012) - + for node in (self.model_part).Nodes: @@ -509,7 +509,7 @@ def DistToH2(self): def DistToH4(self): - for node in (self.model_part).Nodes: + for node in (self.model_part).Nodes: current_dist = node.GetSolutionStepValue(DISTANCE,0) if(abs(current_dist) <= 0.06): #0.15 node.SetSolutionStepValue(NODAL_H,0,0.010) @@ -519,14 +519,14 @@ def DistToH4(self): else: node.SetSolutionStepValue(NODAL_H,0,0.010) - + for node in (self.model_part).Nodes: if node.GetSolutionStepValue(IS_INTERFACE) == 1.0: node.SetSolutionStepValue(NODAL_H,0,0.012) - def CalculateRadius(self): + def CalculateRadius(self): max_radi = 0.0 for node in (self.model_part).Nodes: if node.GetSolutionStepValue(IS_INTERFACE) == 1.0: diff --git a/applications/PFEM2Application/python_scripts/pfem_2_process.py b/applications/PFEM2Application/python_scripts/pfem_2_process.py index 7d7f6bd28b5f..15b598f414f4 100644 --- a/applications/PFEM2Application/python_scripts/pfem_2_process.py +++ b/applications/PFEM2Application/python_scripts/pfem_2_process.py @@ -52,7 +52,7 @@ def ExecuteBeforeSolutionLoop(self): neighbor_search = KM.FindNodalNeighboursProcess(self.model_part) neighbor_search.Execute() neighbor_elements_search = KM.GenericFindElementalNeighboursProcess(self.model_part) - neighbor_elements_search.ExecuteInitialize() + neighbor_elements_search.Execute() max_num_of_particles = 8 * dimension if dimension == 2: diff --git a/applications/PFEM2Application/python_scripts/pfem_2_solver_fractional_step_fluid.py b/applications/PFEM2Application/python_scripts/pfem_2_solver_fractional_step_fluid.py index d07b2ba90cf5..e7aebdb72a20 100644 --- a/applications/PFEM2Application/python_scripts/pfem_2_solver_fractional_step_fluid.py +++ b/applications/PFEM2Application/python_scripts/pfem_2_solver_fractional_step_fluid.py @@ -15,12 +15,12 @@ def AddVariables(model_part): model_part.AddNodalSolutionStepVariable(PRESS_PROJ); model_part.AddNodalSolutionStepVariable(RHS); model_part.AddNodalSolutionStepVariable(PROJECTED_VELOCITY); - model_part.AddNodalSolutionStepVariable(NORMAL); + model_part.AddNodalSolutionStepVariable(NORMAL); model_part.AddNodalSolutionStepVariable(PREVIOUS_ITERATION_PRESSURE); - model_part.AddNodalSolutionStepVariable(DELTA_VELOCITY) - model_part.AddNodalSolutionStepVariable(PRESS_PROJ_NO_RO) - model_part.AddNodalSolutionStepVariable(MEAN_SIZE) - model_part.AddNodalSolutionStepVariable(NODAL_AREA) + model_part.AddNodalSolutionStepVariable(DELTA_VELOCITY) + model_part.AddNodalSolutionStepVariable(PRESS_PROJ_NO_RO) + model_part.AddNodalSolutionStepVariable(MEAN_SIZE) + model_part.AddNodalSolutionStepVariable(NODAL_AREA) model_part.AddNodalSolutionStepVariable(NODAL_MASS) model_part.AddNodalSolutionStepVariable(BODY_FORCE) @@ -37,7 +37,7 @@ class PFEM2Solver: #def __init__(self,model_part,linea_model_part,domain_size): def __init__(self,model_part,domain_size): self.model_part = model_part - + self.time_scheme = ResidualBasedIncrementalUpdateStaticScheme() #definition of the solvers @@ -45,32 +45,32 @@ def __init__(self,model_part,domain_size): tol = 1e-5 verbosity = 1 pDiagPrecond = DiagonalPreconditioner() - #self.pressure_linear_solver = BICGSTABSolver(1e-5, 5000,pDiagPrecond) # SkylineLUFactorizationSolver() + #self.pressure_linear_solver = BICGSTABSolver(1e-5, 5000,pDiagPrecond) # SkylineLUFactorizationSolver() #self.pressure_linear_solver = ViennaCLSolver(tol,500,OpenCLPrecision.Double,OpenCLSolverType.CG,OpenCLPreconditionerType.NoPreconditioner) # - self.pressure_linear_solver=AMGCLSolver(AMGCLSmoother.DAMPED_JACOBI,AMGCLIterativeSolverType.CG,tol,200,verbosity,gmres_size) #BICGSTABSolver(1e-7, 5000) # SkylineLUFactorizationSolver() - self.conv_criteria = DisplacementCriteria(1e-9,1e-15) #tolerance for the solver - + self.pressure_linear_solver=AMGCLSolver(AMGCLSmoother.DAMPED_JACOBI,AMGCLIterativeSolverType.CG,tol,200,verbosity,gmres_size) #BICGSTABSolver(1e-7, 5000) # SkylineLUFactorizationSolver() + self.conv_criteria = DisplacementCriteria(1e-9,1e-15) #tolerance for the solver + self.domain_size = domain_size self.neighbour_search = FindNodalNeighboursProcess(model_part) (self.neighbour_search).Execute() self.neighbour_elements_search= GenericFindElementalNeighboursProcess(model_part) - (self.neighbour_elements_search).ExecuteInitialize() + (self.neighbour_elements_search).Execute() ##calculate normals self.normal_tools = BodyNormalCalculationUtils() - - + + ####################################################################### ####################################################################### def Initialize(self): #creating the solution strategy CalculateReactionFlag = False - ReformDofSetAtEachStep = False + ReformDofSetAtEachStep = False MoveMeshFlag = False - + #build the edge data structure #if self.domain_size==2: # self.matrix_container = MatrixContainer2D() - #else: + #else: # self.matrix_container = MatrixContainer3D() #maximum_number_of_particles= 10*self.domain_size maximum_number_of_particles= 8*self.domain_size @@ -78,7 +78,7 @@ def Initialize(self): self.ExplicitStrategy=PFEM2_Explicit_Strategy(self.model_part,self.domain_size, MoveMeshFlag) self.VariableUtils = VariableUtils() - + if self.domain_size==2: self.moveparticles = MoveParticleUtilityPFEM22D(self.model_part,maximum_number_of_particles) else: @@ -87,7 +87,7 @@ def Initialize(self): print( "self.domain_size = ", self.domain_size) if self.domain_size==2: self.calculatewatervolume = CalculateWaterFraction2D(self.model_part) - else: + else: self.calculatewatervolume = CalculateWaterFraction3D(self.model_part) self.moveparticles.MountBin() @@ -95,16 +95,16 @@ def Initialize(self): self.water_initial_volume=0.0 #we initialize it at zero self.mass_correction_factor=0.0 - self.normal_tools.CalculateBodyNormals(self.model_part,self.domain_size); + self.normal_tools.CalculateBodyNormals(self.model_part,self.domain_size); condition_number=1 - + if self.domain_size==2: self.addBC = AddFixedVelocityCondition2D(self.model_part) else: self.addBC = AddFixedVelocityCondition3D(self.model_part) (self.addBC).AddThem() - + if self.domain_size==2: self.distance_utils = SignedDistanceCalculationUtils2D() else: @@ -124,10 +124,10 @@ def Initialize(self): self.total=0.0 - - - - ####################################################################### + + + + ####################################################################### def Solve(self): t1 = timer.time() #in order to define a reasonable number of substeps we calculate a mean courant in each element @@ -136,7 +136,7 @@ def Solve(self): #streamline integration: discriminate_streamlines=True - (self.moveparticles).MoveParticles(discriminate_streamlines); + (self.moveparticles).MoveParticles(discriminate_streamlines); t3 = timer.time() self.streamlineintegration = self.streamlineintegration + t3-t2 @@ -169,10 +169,10 @@ def Solve(self): self.implicitpressure = self.implicitpressure + t9 - t8 #setting the appropiate BC, with the pressure eq the boundaries are only weakly impermeable full_reset=True; - (self.moveparticles).ResetBoundaryConditions(full_reset) - + (self.moveparticles).ResetBoundaryConditions(full_reset) + #delta_velocity= Velocity(final) - ProjectedVelocity(from the particles), so we add to the particles the correction done in the mesh. - (self.moveparticles).CalculateDeltaVelocity(); + (self.moveparticles).CalculateDeltaVelocity(); t11 = timer.time() (self.moveparticles).AccelerateParticlesWithoutMovingUsingDeltaVelocity(); t12 = timer.time() @@ -180,13 +180,13 @@ def Solve(self): #reseeding in elements that have few particles to avoid having problems in next iterations: post_minimum_number_of_particles=self.domain_size*3; - (self.moveparticles).PostReseed(post_minimum_number_of_particles,self.mass_correction_factor); + (self.moveparticles).PostReseed(post_minimum_number_of_particles,self.mass_correction_factor); t13 = timer.time() self.reseed=self.reseed+ t13-t12 #calculating water volume to correct mass self.water_volume = (self.calculatewatervolume).Calculate() - if (self.water_initial_volume==0.0): + if (self.water_initial_volume==0.0): self.water_initial_volume=self.water_volume water_fraction= self.water_volume/(self.water_initial_volume+1e-9) self.mass_correction_factor = (1.0 - water_fraction) * 100.0 * 0.0 @@ -198,8 +198,8 @@ def Solve(self): #self.nodaltasks = self.nodaltasks + t11-t9 #print ". erasing = ", t14-t13 - self.total = self.total + t13-t1 - + self.total = self.total + t13-t1 + if True: print( "----------TIMES----------") print( "self.streamlineintegration " , self.streamlineintegration , "in % = ", 100.0*(self.streamlineintegration)/(self.total)) @@ -212,13 +212,13 @@ def Solve(self): print( "TOTAL ----- " , self.total) print( "this time step" , t13-t1 ) print( "current time in simulation: ", self.model_part.ProcessInfo.GetValue(TIME) , "s") - - ####################################################################### + + ####################################################################### def CalculatePressureIteration(self, iteration_number): self.model_part.ProcessInfo.SetValue(FRACTIONAL_STEP, 2) self.model_part.ProcessInfo.SetValue(NL_ITERATION_NUMBER, iteration_number) - + (self.pressure_solver).Solve() #implicit resolution of the pressure system. All the other tasks are explicit #if iteration_number==1: # for node in self.model_part.Nodes: @@ -231,14 +231,14 @@ def CalculatePressureIteration(self, iteration_number): (self.ExplicitStrategy).FinalizeSolutionStep(self.model_part.ProcessInfo); - ####################################################################### + ####################################################################### def CalculateExplicitViscosityContribution(self): self.model_part.ProcessInfo.SetValue(FRACTIONAL_STEP, 0) #explicit contribution by viscosity is defined as fract step = 0 (self.ExplicitStrategy).InitializeSolutionStep(self.model_part.ProcessInfo); (self.ExplicitStrategy).AssembleLoop(self.model_part.ProcessInfo); (self.ExplicitStrategy).FinalizeSolutionStep(self.model_part.ProcessInfo); - ####################################################################### + ####################################################################### def SetEchoLevel(self,level): (self.solver).SetEchoLevel(level) diff --git a/applications/PFEM2Application/python_scripts/pfem_2_solver_fsi.py b/applications/PFEM2Application/python_scripts/pfem_2_solver_fsi.py index 659da164868d..722aee95fa9d 100644 --- a/applications/PFEM2Application/python_scripts/pfem_2_solver_fsi.py +++ b/applications/PFEM2Application/python_scripts/pfem_2_solver_fsi.py @@ -26,16 +26,16 @@ def AddVariables(model_part): model_part.AddNodalSolutionStepVariable(RHS); model_part.AddNodalSolutionStepVariable(MESH_VELOCITY); #model_part.AddNodalSolutionStepVariable(MESH_PRESSURE); - model_part.AddNodalSolutionStepVariable(NORMAL); - #model_part.AddNodalSolutionStepVariable(DENSITY); + model_part.AddNodalSolutionStepVariable(NORMAL); + #model_part.AddNodalSolutionStepVariable(DENSITY); model_part.AddNodalSolutionStepVariable(TEMP_CONV_PROJ); model_part.AddNodalSolutionStepVariable(PREVIOUS_ITERATION_PRESSURE); #model_part.AddNodalSolutionStepVariable(FIRST_ITERATION_PRESSURE); - model_part.AddNodalSolutionStepVariable(DELTA_VELOCITY) - model_part.AddNodalSolutionStepVariable(PRESS_PROJ_NO_RO) - model_part.AddNodalSolutionStepVariable(MEAN_SIZE) - model_part.AddNodalSolutionStepVariable(NODAL_AREA) - model_part.AddNodalSolutionStepVariable(NODAL_MASS) + model_part.AddNodalSolutionStepVariable(DELTA_VELOCITY) + model_part.AddNodalSolutionStepVariable(PRESS_PROJ_NO_RO) + model_part.AddNodalSolutionStepVariable(MEAN_SIZE) + model_part.AddNodalSolutionStepVariable(NODAL_AREA) + model_part.AddNodalSolutionStepVariable(NODAL_MASS) model_part.AddNodalSolutionStepVariable(FORCE) model_part.AddNodalSolutionStepVariable(TAU) model_part.AddNodalSolutionStepVariable(TEMPERATURE) @@ -66,37 +66,37 @@ class PFEM2Solver: #def __init__(self,model_part,linea_model_part,domain_size): def __init__(self,model_part,domain_size): self.model_part = model_part - + self.time_scheme = ResidualBasedIncrementalUpdateStaticScheme() - + #definition of the solvers gmres_size = 50 tol = 1e-6 verbosity = 1 smoother = AMGCLSmoother.ILU0 - self.monolitic_linear_solver = AMGCLSolver(smoother,AMGCLIterativeSolverType.CG,tol,5000,verbosity,gmres_size) #BICGSTABSolver(1e-7, 5000) # SkylineLUFactorizationSolver() - self.conv_criteria = DisplacementCriteria(1e-6,1e-12) #tolerance for the solver + self.monolitic_linear_solver = AMGCLSolver(smoother,AMGCLIterativeSolverType.CG,tol,5000,verbosity,gmres_size) #BICGSTABSolver(1e-7, 5000) # SkylineLUFactorizationSolver() + self.conv_criteria = DisplacementCriteria(1e-6,1e-12) #tolerance for the solver self.domain_size = domain_size self.neighbour_search = FindNodalNeighboursProcess(model_part) (self.neighbour_search).Execute() self.neighbour_elements_search= GenericFindElementalNeighboursProcess(model_part) - (self.neighbour_elements_search).ExecuteInitialize() + (self.neighbour_elements_search).Execute() ##calculate normals self.normal_tools = BodyNormalCalculationUtils() - - + + ####################################################################### ####################################################################### def Initialize(self): #creating the solution strategy CalculateReactionFlag = False - ReformDofSetAtEachStep = False + ReformDofSetAtEachStep = False MoveMeshFlag = False pDiagPrecond = DiagonalPreconditioner() #build the edge data structure #if self.domain_size==2: # self.matrix_container = MatrixContainer2D() - #else: + #else: # self.matrix_container = MatrixContainer3D() #maximum_number_of_particles= 10*self.domain_size maximum_number_of_particles= 12*self.domain_size @@ -104,7 +104,7 @@ def Initialize(self): self.ExplicitStrategy=PFEM2_Explicit_Strategy(self.model_part,self.domain_size, MoveMeshFlag) self.VariableUtils = VariableUtils() - + if self.domain_size==2: self.moveparticles = MoveParticleUtilityDiff2D(self.model_part,maximum_number_of_particles) else: @@ -113,7 +113,7 @@ def Initialize(self): print("self.domain_size = ", self.domain_size) if self.domain_size==2: self.calculatewatervolume = CalculateWaterFraction2D(self.model_part) - else: + else: self.calculatewatervolume = CalculateWaterFraction3D(self.model_part) self.moveparticles.MountBinDiff() @@ -122,9 +122,9 @@ def Initialize(self): self.water_initial_volume_flag=True #we initialize it at zero self.mass_correction_factor=0.0 - self.normal_tools.CalculateBodyNormals(self.model_part,self.domain_size); + self.normal_tools.CalculateBodyNormals(self.model_part,self.domain_size); condition_number=1 - ''' + ''' if self.domain_size==2: self.addBC = AddMonolithicFixedVelocityCondition2D(self.model_part) else: @@ -136,21 +136,21 @@ def Initialize(self): self.monolitic_solver = strategy_python.SolvingStrategyPython(self.model_part,self.time_scheme,self.monolitic_linear_solver,self.conv_criteria,CalculateReactionFlag,ReformDofSetAtEachStep,MoveMeshFlag) - #to measure time spent in solving + #to measure time spent in solving self.total=0.0 self.implicit_tasks=0.0 - - - - ####################################################################### + + + + ####################################################################### def Solve(self): add_gravity=False #in the monolitic solver we do not add the gravity, it is added directly in the implicit monolitic system viscosity_streamline_integrate=False; #True means explicit integration! False means we will have to solve the fractional velocity system implicetely later, once information has been passed to mesh t1 = timer.time() - #calculating RHS by viscous forces using information of the previous time step: + #calculating RHS by viscous forces using information of the previous time step: #self.CalculateExplicitViscosityContribution(); t2 = timer.time() @@ -159,9 +159,9 @@ def Solve(self): t2a = timer.time() #streamline integration: - #(self.moveparticles).MoveParticlesDiff(viscosity_streamline_integrate,add_gravity); + #(self.moveparticles).MoveParticlesDiff(viscosity_streamline_integrate,add_gravity); t3 = timer.time() - + #Reseeding using streamlines in inverse way in case there are too few particles. Not very accurate since particles follow streamlines, no matter if it's water or air. #(for 1 fluid should be accurate though pre_minimum_number_of_particles=self.domain_size*1; @@ -170,15 +170,15 @@ def Solve(self): transfer_pressure=True (self.moveparticles).TransferLagrangianToEulerian(transfer_pressure); - (self.VariableUtils).CopyVectorVar(VELOCITY,MESH_VELOCITY,self.model_part.Nodes) - (self.VariableUtils).CopyScalarVar(EXTERNAL_PRESSURE,PRESSURE,self.model_part.Nodes) - - (self.VariableUtils).CopyVectorVar(MESH_VELOCITY,VELOCITY,self.model_part.Nodes) - (self.moveparticles).ResetBoundaryConditions(True) - (self.VariableUtils).CopyScalarVar(PRESSURE,SOLID_PRESSURE,self.model_part.Nodes) - (self.VariableUtils).CopyScalarVar(PRESSURE,PRESSUREAUX,self.model_part.Nodes) - (self.VariableUtils).CopyScalarVar(DISTANCE,CORRECTED_DISTANCE,self.model_part.Nodes) - + (self.VariableUtils).CopyVectorVar(VELOCITY,MESH_VELOCITY,self.model_part.Nodes) + (self.VariableUtils).CopyScalarVar(EXTERNAL_PRESSURE,PRESSURE,self.model_part.Nodes) + + (self.VariableUtils).CopyVectorVar(MESH_VELOCITY,VELOCITY,self.model_part.Nodes) + (self.moveparticles).ResetBoundaryConditions(True) + (self.VariableUtils).CopyScalarVar(PRESSURE,SOLID_PRESSURE,self.model_part.Nodes) + (self.VariableUtils).CopyScalarVar(PRESSURE,PRESSUREAUX,self.model_part.Nodes) + (self.VariableUtils).CopyScalarVar(DISTANCE,CORRECTED_DISTANCE,self.model_part.Nodes) + (self.moveparticles).CopyVectorVarToPreviousTimeStep(VELOCITY,self.model_part.Nodes) (self.moveparticles).CopyScalarVarToPreviousTimeStep(PRESSURE,self.model_part.Nodes) @@ -199,30 +199,30 @@ def Solve(self): (self.monolitic_solver).Solve() #implicit resolution of the system. All the other tasks are explicit self.CalculatePressureProjection() full_reset=True; - (self.moveparticles).ResetBoundaryConditions(full_reset) - - (self.moveparticles).UpdateParticleStresses() + (self.moveparticles).ResetBoundaryConditions(full_reset) + + (self.moveparticles).UpdateParticleStresses() #finally we save the last pressure for future iterations. No need to do it for the velocity since it is saved in delta_velocity (self.VariableUtils).CopyScalarVar(PRESSURE,PRESSUREAUX,self.model_part.Nodes) #we save the pressure of this iteration in order to have the delta_pressure in the next one - non_linear_iteration_number = non_linear_iteration_number +1 - - (self.VariableUtils).CopyScalarVar(PRESSURE,EXTERNAL_PRESSURE,self.model_part.Nodes) + non_linear_iteration_number = non_linear_iteration_number +1 + + (self.VariableUtils).CopyScalarVar(PRESSURE,EXTERNAL_PRESSURE,self.model_part.Nodes) t11 = timer.time() self.implicit_tasks = self.implicit_tasks + t11-t6 - + #delta_velocity= Velocity(final) - MeshVelocity(from the particles), so we add to the particles the correction done in the mesh. - (self.moveparticles).CalculateDeltaVelocity(); - + (self.moveparticles).CalculateDeltaVelocity(); + #transfering the information to the particles: (self.moveparticles).AccelerateParticlesWithoutMovingUsingDeltaVelocity(add_gravity); t12 = timer.time() #reseeding in elements that have few particles to avoid having problems in next iterations: post_minimum_number_of_particles=self.domain_size*2; - #(self.moveparticles).PostReseed(post_minimum_number_of_particles,self.mass_correction_factor); + #(self.moveparticles).PostReseed(post_minimum_number_of_particles,self.mass_correction_factor); self.water_volume = (self.calculatewatervolume).Calculate() - if (self.water_initial_volume_flag): + if (self.water_initial_volume_flag): print("calculated water volume for the first time") self.water_initial_volume=self.water_volume self.water_initial_volume_flag=False @@ -233,22 +233,22 @@ def Solve(self): print("current mass loss is : " , (1.0 - water_fraction) * 100.0 , " % ") t13 = timer.time() - self.total = self.total + t13-t1 - + self.total = self.total + t13-t1 + print("----------TIMES----------") print("self.implicit_tasks " , self.implicit_tasks , "in % = ", 100.0*(self.implicit_tasks)/(self.total)) print("TOTAL ----- " , self.total) - - ####################################################################### + + ####################################################################### def CalculateExplicitViscosityContribution(self): self.model_part.ProcessInfo.SetValue(FRACTIONAL_STEP, 0) #explicit contribution by viscosity is defined as fract step = 0 (self.ExplicitStrategy).InitializeSolutionStep(self.model_part.ProcessInfo); (self.ExplicitStrategy).AssembleLoop(self.model_part.ProcessInfo); (self.ExplicitStrategy).FinalizeSolutionStep(self.model_part.ProcessInfo); - ####################################################################### + ####################################################################### def CalculatePressureProjection(self): self.model_part.ProcessInfo.SetValue(FRACTIONAL_STEP, 3) #explicit contribution by viscosity is defined as fract step = 0 (self.ExplicitStrategy).InitializeSolutionStep(self.model_part.ProcessInfo); @@ -256,6 +256,6 @@ def CalculatePressureProjection(self): self.model_part.ProcessInfo.SetValue(FRACTIONAL_STEP, 10) (self.ExplicitStrategy).FinalizeSolutionStep(self.model_part.ProcessInfo); - ####################################################################### + ####################################################################### def SetEchoLevel(self,level): (self.solver).SetEchoLevel(level) diff --git a/applications/PFEM2Application/python_scripts/pfem_2_solver_fsi_2resolutions.py b/applications/PFEM2Application/python_scripts/pfem_2_solver_fsi_2resolutions.py index 1d90b49af60a..e25d9bd5aa2c 100644 --- a/applications/PFEM2Application/python_scripts/pfem_2_solver_fsi_2resolutions.py +++ b/applications/PFEM2Application/python_scripts/pfem_2_solver_fsi_2resolutions.py @@ -22,17 +22,17 @@ def AddVariables(model_part,topographic_model_part): model_part.AddNodalSolutionStepVariable(ACCELERATION); model_part.AddNodalSolutionStepVariable(PRESS_PROJ); model_part.AddNodalSolutionStepVariable(MESH_VELOCITY); - model_part.AddNodalSolutionStepVariable(NORMAL); - model_part.AddNodalSolutionStepVariable(DELTA_VELOCITY) - model_part.AddNodalSolutionStepVariable(NODAL_AREA) - model_part.AddNodalSolutionStepVariable(NODAL_MASS) + model_part.AddNodalSolutionStepVariable(NORMAL); + model_part.AddNodalSolutionStepVariable(DELTA_VELOCITY) + model_part.AddNodalSolutionStepVariable(NODAL_AREA) + model_part.AddNodalSolutionStepVariable(NODAL_MASS) model_part.AddNodalSolutionStepVariable(TEMPERATURE) model_part.AddNodalSolutionStepVariable(TEMPERATURE_OLD_IT) model_part.AddNodalSolutionStepVariable(PRESSUREAUX) model_part.AddNodalSolutionStepVariable(DISPLACEMENT); model_part.AddNodalSolutionStepVariable(RHS); model_part.AddNodalSolutionStepVariable(PRESS_PROJ); - + topographic_model_part.AddNodalSolutionStepVariable(PRESSURE); topographic_model_part.AddNodalSolutionStepVariable(VELOCITY); topographic_model_part.AddNodalSolutionStepVariable(DISPLACEMENT); @@ -61,42 +61,42 @@ class PFEM2Solver: def __init__(self,model_part,topographic_model_part,domain_size): self.model_part = model_part self.topographic_model_part = topographic_model_part - + self.time_scheme = ResidualBasedIncrementalUpdateStaticScheme() #definition of the solvers gmres_size = 50 tol = 1e-5 verbosity = 1 - #self.monolitic_linear_solver = SkylineLUFactorizationSolver() - #self.monolitic_linear_solver = BICGSTABSolver(1e-5, 1000,pDiagPrecond) # SkylineLUFactorizationSolver() - #self.monolitic_linear_solver= ViennaCLSolver(tol,10000,OpenCLPrecision.Double,OpenCLSolverType.CG,OpenCLPreconditionerType.AMG_DAMPED_JACOBI) - self.topographic_monolitic_linear_solver= AMGCLSolver(AMGCLSmoother.ILU0,AMGCLIterativeSolverType.CG,tol,1000,verbosity,gmres_size) - self.monolitic_linear_solver = AMGCLSolver(AMGCLSmoother.ILU0,AMGCLIterativeSolverType.CG,tol,1000,verbosity,gmres_size) #BICGSTABSolver(1e-7, 5000) # SkylineLUFactorizationSolver() - self.conv_criteria = DisplacementCriteria(1e-2,1e-6) #tolerance for the solver - + #self.monolitic_linear_solver = SkylineLUFactorizationSolver() + #self.monolitic_linear_solver = BICGSTABSolver(1e-5, 1000,pDiagPrecond) # SkylineLUFactorizationSolver() + #self.monolitic_linear_solver= ViennaCLSolver(tol,10000,OpenCLPrecision.Double,OpenCLSolverType.CG,OpenCLPreconditionerType.AMG_DAMPED_JACOBI) + self.topographic_monolitic_linear_solver= AMGCLSolver(AMGCLSmoother.ILU0,AMGCLIterativeSolverType.CG,tol,1000,verbosity,gmres_size) + self.monolitic_linear_solver = AMGCLSolver(AMGCLSmoother.ILU0,AMGCLIterativeSolverType.CG,tol,1000,verbosity,gmres_size) #BICGSTABSolver(1e-7, 5000) # SkylineLUFactorizationSolver() + self.conv_criteria = DisplacementCriteria(1e-2,1e-6) #tolerance for the solver + self.domain_size = domain_size self.neighbour_search = FindNodalNeighboursProcess(model_part) (self.neighbour_search).Execute() self.neighbour_elements_search= GenericFindElementalNeighboursProcess(model_part) - (self.neighbour_elements_search).ExecuteInitialize() + (self.neighbour_elements_search).Execute() ##calculate normals self.normal_tools = BodyNormalCalculationUtils() - - + + ####################################################################### ####################################################################### def Initialize(self,initial_offset): #creating the solution strategy CalculateReactionFlag = False - ReformDofSetAtEachStep = False + ReformDofSetAtEachStep = False MoveMeshFlag = False maximum_number_of_particles= 10*self.domain_size - + self.ExplicitStrategy=PFEM2_Explicit_Strategy(self.model_part,self.domain_size, MoveMeshFlag) - + self.VariableUtils = VariableUtils() - + if self.domain_size==2: self.moveparticles = MoveParticleUtilityDiff2D(self.model_part,maximum_number_of_particles) else: @@ -105,10 +105,10 @@ def Initialize(self,initial_offset): print("self.domain_size = ", self.domain_size) if self.domain_size==2: self.calculatewatervolume = CalculateWaterFraction2D(self.model_part) - else: + else: self.calculatewatervolume = CalculateWaterFraction3D(self.model_part) - - #to search particles. + + #to search particles. self.moveparticles.MountBinDiff() self.water_volume=0.0 #we initialize it at zero self.water_initial_volume=0.0 #we initialize it at zero @@ -116,12 +116,12 @@ def Initialize(self,initial_offset): self.mass_correction_factor=0.0 - + #body normals, useful for boundary (inlet) conditions - self.normal_tools.CalculateBodyNormals(self.model_part,self.domain_size); + self.normal_tools.CalculateBodyNormals(self.model_part,self.domain_size); condition_number=1 - - + + #solvers: import strategy_python_nonlinear #implicit solver import strategy_python #implicit solver @@ -140,13 +140,13 @@ def Initialize(self,initial_offset): for step in range(0,nsteps): (self.topographic_monolitic_solver).Solve() (self.moveparticles).CalculateElementalMeanStress(self.topographic_model_part) - + overwrite_particle_data=True #this is the position where we place the calculation domain (self.moveparticles).InitializeTransferTool(self.topographic_model_part, initial_offset,overwrite_particle_data) - - - ####################################################################### + + + ####################################################################### def Solve(self,fluid_free_bounding_box_lower_corner,fluid_free_bounding_box_upper_corner): t1 = timer.time() @@ -159,66 +159,66 @@ def Solve(self,fluid_free_bounding_box_lower_corner,fluid_free_bounding_box_uppe t2 = timer.time() #streamline integration: - (self.moveparticles).MoveParticlesDiff(viscosity_streamline_integrate,add_gravity); + (self.moveparticles).MoveParticlesDiff(viscosity_streamline_integrate,add_gravity); t3 = timer.time() - + #Reseeding using streamlines in inverse way in case there are too few particles. Not very accurate since particles follow streamlines, no matter if it's water or air. #we want at least 2 (or 3 in 3d) per element) pre_minimum_number_of_particles=self.domain_size; (self.moveparticles).PreReseedUsingTopographicDomain(pre_minimum_number_of_particles) t4 = timer.time() - + #transfering data from the particles to the mesh: transfer_pressure=True (self.moveparticles).TransferLagrangianToEulerian(transfer_pressure); - + #storing variables in the right places #for node in self.model_part.Nodes: # node.SetSolutionStepValue(VELOCITY,node.GetSolutionStepValue(MESH_VELOCITY)) # node.SetSolutionStepValue(MESH_VELOCITY,node.GetSolutionStepValue(VELOCITY)) - (self.VariableUtils).CopyVectorVar(MESH_VELOCITY,VELOCITY,self.model_part.Nodes) - #(self.VariableUtils).CopyVectorVar(VELOCITY,MESH_VELOCITY,self.model_part.Nodes) - (self.moveparticles).ResetBoundaryConditions(True) - #(self.VariableUtils).CopyScalarVar(SOLID_PRESSURE,PRESSURE,self.model_part.Nodes) - #(self.VariableUtils).CopyScalarVar(SOLID_PRESSURE,PRESSUREAUX,self.model_part.Nodes) - (self.VariableUtils).CopyScalarVar(PRESSURE,SOLID_PRESSURE,self.model_part.Nodes) - #(self.VariableUtils).CopyScalarVar(CORRECTED_DISTANCE,DISTANCE,self.model_part.Nodes) + (self.VariableUtils).CopyVectorVar(MESH_VELOCITY,VELOCITY,self.model_part.Nodes) + #(self.VariableUtils).CopyVectorVar(VELOCITY,MESH_VELOCITY,self.model_part.Nodes) + (self.moveparticles).ResetBoundaryConditions(True) + #(self.VariableUtils).CopyScalarVar(SOLID_PRESSURE,PRESSURE,self.model_part.Nodes) + #(self.VariableUtils).CopyScalarVar(SOLID_PRESSURE,PRESSUREAUX,self.model_part.Nodes) + (self.VariableUtils).CopyScalarVar(PRESSURE,SOLID_PRESSURE,self.model_part.Nodes) + #(self.VariableUtils).CopyScalarVar(CORRECTED_DISTANCE,DISTANCE,self.model_part.Nodes) (self.moveparticles).CopyVectorVarToPreviousTimeStep(VELOCITY,self.model_part.Nodes) (self.moveparticles).CopyScalarVarToPreviousTimeStep(PRESSURE,self.model_part.Nodes) - (self.VariableUtils).CopyScalarVar(PRESSURE,PRESSUREAUX,self.model_part.Nodes) - + (self.VariableUtils).CopyScalarVar(PRESSURE,PRESSUREAUX,self.model_part.Nodes) + t5 = timer.time() - + full_reset=False; - #(self.moveparticles).ResetBoundaryConditions(full_reset) - + #(self.moveparticles).ResetBoundaryConditions(full_reset) + #implicit solver! self.model_part.ProcessInfo.SetValue(FRACTIONAL_STEP, 20) #(self.monolitic_solver).Solve() #implicit resolution of the pressure system. All the other tasks are explicit - + max_iter=20 (self.monolitic_solver).Solve(self.model_part,self.moveparticles,(self.VariableUtils),max_iter) - + t11 = timer.time() self.implicit_tasks = self.implicit_tasks + t11-t5 full_reset=True; - (self.moveparticles).ResetBoundaryConditions(full_reset) + (self.moveparticles).ResetBoundaryConditions(full_reset) #transfering the information to the mesh: modify_particle_pressure=True #delta_velocity= Velocity(final) - MeshVelocity(from the particles), so we add to the particles the correction done in the mesh. - (self.moveparticles).CalculateDeltaVelocity(); + (self.moveparticles).CalculateDeltaVelocity(); (self.moveparticles).AccelerateParticlesWithoutMovingUsingDeltaVelocity(add_gravity); t12 = timer.time() - + #reseeding in elements that have few particles to avoid having problems in next iterations: post_minimum_number_of_particles=self.domain_size*2; self.water_volume = (self.calculatewatervolume).Calculate() - if (self.water_initial_volume_flag): + if (self.water_initial_volume_flag): print("calculated water volume for the first time") self.water_initial_volume=self.water_volume self.water_initial_volume_flag=False @@ -227,20 +227,20 @@ def Solve(self,fluid_free_bounding_box_lower_corner,fluid_free_bounding_box_uppe self.mass_correction_factor = (1.0 - water_fraction) * 100.0 * 0.0 print("mass correction factor: ", self.mass_correction_factor) print("current mass loss is : " , (1.0 - water_fraction) * 100.0 , " % ") - #(self.moveparticles).PostReseed(post_minimum_number_of_particles,self.mass_correction_factor); - #(self.moveparticles).PostReseedOnlyInBoundingBox(post_minimum_number_of_particles,self.mass_correction_factor,bounding_box_lower_corner,bounding_box_upper_corner); - max_nodal_distance=0.7 #we have to move the domain to include the nodes that have nodal_distance>0.0 and 0.0 and self.frequency: + self.time_counter = 0.0 + input_time_list = self.data["TIME"] + + # Nodal values + for node in self.__get_nodes(): + compute = self.__check_flag(node) + + if compute: + node_identifier = "NODE_" + self.__get_node_identifier(node) + + for i in range(self.params["check_variables"].size()): + out = self.params["check_variables"][i] + variable_name = out.GetString() + variable = KratosMultiphysics.KratosGlobals.GetVariable( variable_name ) + variable_type = KratosMultiphysics.KratosGlobals.GetVariableType(variable_name) + + if self.historical_value: + value = node.GetSolutionStepValue(variable, 0) + else: + value = node.GetValue(variable) + + # Scalar variable + if variable_type == "Double": + values_json = self.data[node_identifier][variable_name] + value_json = self.__linear_interpolation(time, input_time_list, values_json) + self.__check_values(node.Id, "Node", value, value_json, variable_name) + # Array variable + elif variable_type == "Array": + if KratosMultiphysics.KratosGlobals.GetVariableType(variable_name + "_X") == "Double": + for component_index, component in enumerate(["_X", "_Y", "_Z"]): + values_json = self.data[node_identifier][variable_name+component] + value_json = self.__linear_interpolation(time, input_time_list, values_json) + self.__check_values(node.Id, "Node", value[component_index], value_json, variable_name+component) + else: + values_json = self.data[node_identifier][variable_name][self.step_counter] + for index in range(len(value)): + value_json = values_json[index] # self.__linear_interpolation(time, input_time_list, values_json[index]) + self.__check_values(node.Id, "Node", value[index], value_json, variable_name) + # Vector variable + elif variable_type == "Vector": + values_json = self.data[node_identifier][variable_name][self.step_counter] + for index in range(len(value)): + value_json = values_json[index] # self.__linear_interpolation(time, input_time_list, values_json[index]) + self.__check_values(node.Id, "Node", value[index], value_json, variable_name) + # Nodal values + for elem in self.__get_elements(): + compute = self.__check_flag(elem) + + if compute is True: + for i in range(self.params["gauss_points_check_variables"].size()): + out = self.params["gauss_points_check_variables"][i] + variable_name = out.GetString() + variable = KratosMultiphysics.KratosGlobals.GetVariable( variable_name ) + variable_type = KratosMultiphysics.KratosGlobals.GetVariableType(variable_name) + + value = elem.CalculateOnIntegrationPoints(variable, self.model_part.ProcessInfo) + + gauss_point_number = len(value) + + # Scalar variable + if variable_type == "Double": + for gp in range(gauss_point_number): + values_json = self.data["ELEMENT_"+str(elem.Id)][variable_name][str(gp)] + value_json = self.__linear_interpolation(time, input_time_list, values_json) + self.__check_values(elem.Id, "Element", value[gp], value_json, variable_name) + # Array variable + elif variable_type == "Array": + if (KratosMultiphysics.KratosGlobals.GetVariableType(variable_name + "_X") == "Double"): + for gp in range(gauss_point_number): + for component_index, component in enumerate(["_X", "_Y", "_Z"]): + values_json = self.data["ELEMENT_" + str(elem.Id)][variable_name+component][str(gp)] + value_json = self.__linear_interpolation(time, input_time_list, values_json) + self.__check_values(elem.Id, "Element", value[gp][component_index], value_json, variable_name+component) + else: + for gp in range(gauss_point_number): + values_json = self.data["ELEMENT_" + str(elem.Id)][variable_name][str(gp)][self.step_counter] + for index in range(len(value[gp])): + value_json = values_json[index] # self.__linear_interpolation(time, input_time_list, values_json[index]) + self.__check_values(elem.Id, "Element", value[gp][index], value_json, variable_name) + # Vector variable + elif variable_type == "Vector": + for gp in range(gauss_point_number): + values_json = self.data["ELEMENT_" + str(elem.Id)][variable_name][str(gp)][self.step_counter] + for index in range(len(value[gp])): + value_json = values_json[index] # self.__linear_interpolation(time, input_time_list, values_json[index]) + self.__check_values(elem.Id, "Element", value[gp][index], value_json, variable_name) + + # TODO: Add pending classes + + self.step_counter += 1 + + def __linear_interpolation(self, x, x_list, y_list): + """ This method is defined to interpolate values of a + list using the PiecewiseLinearTable from Kratos + + Keyword arguments: + self -- It signifies an instance of a class. + x -- The value to interpolate + x_list -- Values in X axis + y_list -- Values in Y axis + """ + + tb = KratosMultiphysics.PiecewiseLinearTable() + for i in range(len(x_list)): + tb.AddRow(x_list[i], y_list[i]) + + return tb.GetNearestValue(x) + + def __generate_variable_list_from_input(self,param): + """ Parse a list of variables from input. + + Keyword arguments: + self -- It signifies an instance of a class. + value -- The Kratos vector to transform + """ + + # At least verify that the input is a string + if not param.IsArray(): + raise Exception("{0} Error: Variable list is unreadable".format(self.__class__.__name__)) + + # Retrieve variable name from input (a string) and request the corresponding C++ object to the kernel + return [ KratosMultiphysics.KratosGlobals.GetVariable( param[i].GetString() ) for i in range( 0,param.size() ) ] + + def __check_flag(self, component): + """ Checks the flag over a component + + Keyword arguments: + self -- It signifies an instance of a class. + component -- The Kratos node or element to check + """ + + if self.flag is not None: + if component.Is(self.flag) == False: + return False + + return True + + def __check_values(self, entity_id, entity_type, value_entity, value_json, variable_name): + """ Checks if two values are the same and issues a detailed error message + in case they do not match up to the specified tolerance + + Keyword arguments: + self -- It signifies an instance of a class. + entity_id -- The Kratos node or element to check + entity_type -- The type of the entity + value_entity -- The value on the entity + value_json -- The reference value from the json + variable_name -- The name of the variable + """ + relevant_digits = int(max(self.rel_tol_digits, self.abs_tol_digits))+1 # +1 for one more digit of output + isclosethis = t_isclose(value_entity, value_json, rel_tol=self.rel_tol, abs_tol=self.abs_tol) + msg = 'Error checking {} #{} for variable {} results:\n'.format(entity_type, entity_id, variable_name) + msg += '%.*f != %.*f; rel_tol=%.*f, abs_tol=%.*f' % (relevant_digits, value_entity, relevant_digits, value_json, self.rel_tol_digits, self.rel_tol, self.abs_tol_digits, self.abs_tol) + self.assertTrue(isclosethis, msg=msg) + + def __get_node_identifier(self, node): + """ returns the identifier/key for saving nodal results in the json + this can be either the node Id or its coordinates + The coordinates can be used to check the nodal results in MPI + + Keyword arguments: + self -- It signifies an instance of a class. + node -- The Kratos node to get the identifier for + """ + if self.use_node_coordinates: + digits = 6 + return 'X_%.*f_Y_%.*f_Z_%.*f' % (digits, node.X0, digits, node.Y0, digits, node.Z0) + else: + return str(node.Id) + + def __get_nodes(self): + """ returns the nodes to be checked + Either only local or all (local and ghost) + This is ONLY relevant in MPI + + Keyword arguments: + self -- It signifies an instance of a class. + node -- The Kratos node to get the identifier for + """ + if self.check_only_local_entities: + return self.model_part.GetCommunicator().LocalMesh().Nodes + else: + return self.model_part.Nodes + + def __get_elements(self): + """ returns the elements to be checked + Either only local or all (local and ghost) + This is ONLY relevant in MPI + + Keyword arguments: + self -- It signifies an instance of a class. + node -- The Kratos node to get the identifier for + """ + if self.check_only_local_entities: + return self.model_part.GetCommunicator().LocalMesh().Elements + else: + return self.model_part.Elements + +def ComputeRelevantDigits(number): + """ Computes the relevant digits + + Keyword arguments: + self -- It signifies an instance of a class. + """ + return int(ceil(abs(log10(number)))) +class ParticleFromJsonCheckResultProcess(LegacyFromJsonCheckResultProcess, KratosUnittest.TestCase): # TODO: This must be updated to the new C++ version def __init__(self, model_part, params): super(ParticleFromJsonCheckResultProcess, self).__init__(model_part, params) diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/three_step_second_order_pspg_updated_lagrangian_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/three_step_second_order_pspg_updated_lagrangian_element.cpp index c37c8c1898b3..65e7bee933bb 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/three_step_second_order_pspg_updated_lagrangian_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/three_step_second_order_pspg_updated_lagrangian_element.cpp @@ -138,7 +138,7 @@ namespace Kratos dynamicRHSi += rDN_DX(i, 0) * rN[j] * (this->GetGeometry()[j].FastGetSolutionStepValue(VELOCITY_X, 0) - this->GetGeometry()[j].FastGetSolutionStepValue(VELOCITY_X, 1)) / TimeStep; dynamicRHSi += rDN_DX(i, 1) * rN[j] * (this->GetGeometry()[j].FastGetSolutionStepValue(VELOCITY_Y, 0) - this->GetGeometry()[j].FastGetSolutionStepValue(VELOCITY_Y, 1)) / TimeStep; - if (TDim == 3) + if constexpr (TDim == 3) { dynamicRHSi += rDN_DX(i, 2) * rN[j] * (this->GetGeometry()[j].FastGetSolutionStepValue(VELOCITY_Z, 0) - this->GetGeometry()[j].FastGetSolutionStepValue(VELOCITY_Z, 1)) / TimeStep; } diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/three_step_updated_lagrangian_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/three_step_updated_lagrangian_element.cpp index a9da35e1fad7..e1e7e65a9bea 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/three_step_updated_lagrangian_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/three_step_updated_lagrangian_element.cpp @@ -1155,7 +1155,7 @@ namespace Kratos KRATOS_TRY; unsigned int voigtsize = 3; - if (TDim == 3) + if constexpr (TDim == 3) { voigtsize = 6; } diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_DEM_coupling_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_DEM_coupling_element.cpp index 8ab85d15f670..c8ff5973902c 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_DEM_coupling_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_DEM_coupling_element.cpp @@ -13,7 +13,7 @@ // Project includes #include "custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_DEM_coupling_element.h" #include "includes/cfd_variables.h" -#include +#include namespace Kratos { @@ -611,7 +611,7 @@ namespace Kratos // this->ComputeBulkMatrix(BulkAccMatrix,N,BulkStabCoeff); double BoundLHSCoeff = Tau * 4.0 * GaussWeight / (ElemSize * ElemSize); - // if(TDim==3){ + // if constexpr (TDim==3){ // BoundLHSCoeff=Tau*2*GaussWeight/(0.81649658*ElemSize*ElemSize); // } diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_FIC_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_FIC_element.cpp index 8e68409c62c3..ed610cc41787 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_FIC_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_FIC_element.cpp @@ -13,7 +13,7 @@ // Project includes #include "custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_FIC_element.h" #include "includes/cfd_variables.h" -#include +#include namespace Kratos { @@ -898,7 +898,7 @@ namespace Kratos // this->ComputeBulkMatrix(BulkAccMatrix,N,BulkStabCoeff); double BoundLHSCoeff = Tau * 4.0 * GaussWeight / (ElemSize * ElemSize); - // if(TDim==3){ + // if constexpr (TDim==3){ // BoundLHSCoeff=Tau*2*GaussWeight/(0.81649658*ElemSize*ElemSize); // } diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_PSPG_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_PSPG_element.cpp index d062925dd399..3afbee42da04 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_PSPG_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_PSPG_element.cpp @@ -13,7 +13,7 @@ // Project includes #include "custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_PSPG_element.h" #include "includes/cfd_variables.h" -#include +#include namespace Kratos { diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_element.cpp index cae3d10a1f91..f628cd2f5a4e 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_element.cpp @@ -13,7 +13,7 @@ // Project includes #include "custom_elements/two_step_updated_lagrangian_V_P_implicit_fluid_element.h" #include "includes/cfd_variables.h" -#include +#include namespace Kratos { @@ -476,7 +476,7 @@ namespace Kratos KRATOS_TRY; unsigned int voigtsize = 3; - if (TDim == 3) + if constexpr (TDim == 3) { voigtsize = 6; } diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_nodally_integrated_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_nodally_integrated_element.cpp index 9a242e6b4bed..39c3ede7e46b 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_nodally_integrated_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_nodally_integrated_element.cpp @@ -55,11 +55,11 @@ namespace Kratos double meanElementEdgesLength = this->ElementSize(); double elementVolume = 0; - if (TDim == 3) + if constexpr (TDim == 3) { elementVolume = rGeom.Volume() * 0.25; } - else if (TDim == 2) + else if constexpr (TDim == 2) { elementVolume = rGeom.Area() / 3.0; } @@ -92,7 +92,7 @@ namespace Kratos // { // rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[solidSFDposition] += rDN_DX(j,0)*elementVolume/solidNodalVolume; // rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[solidSFDposition+1] += rDN_DX(j,1)*elementVolume/solidNodalVolume; - // if(TDim==3){ + // if constexpr (TDim==3){ // rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[solidSFDposition+2] += rDN_DX(j,2)*elementVolume/solidNodalVolume; // } // break; @@ -135,7 +135,7 @@ namespace Kratos { rGeom[i].FastGetSolutionStepValue(SOLID_NODAL_SFD_NEIGHBOURS)[solidSFDposition] += rDN_DX(j, 0) * elementVolume / solidNodalVolume; rGeom[i].FastGetSolutionStepValue(SOLID_NODAL_SFD_NEIGHBOURS)[solidSFDposition + 1] += rDN_DX(j, 1) * elementVolume / solidNodalVolume; - if (TDim == 3) + if constexpr (TDim == 3) { rGeom[i].FastGetSolutionStepValue(SOLID_NODAL_SFD_NEIGHBOURS)[solidSFDposition + 2] += rDN_DX(j, 2) * elementVolume / solidNodalVolume; } @@ -189,7 +189,7 @@ namespace Kratos { rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition] += rDN_DX(j, 0) * elementVolume / nodalVolume; rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition + 1] += rDN_DX(j, 1) * elementVolume / nodalVolume; - if (TDim == 3) + if constexpr (TDim == 3) { rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition + 2] += rDN_DX(j, 2) * elementVolume / nodalVolume; } @@ -239,7 +239,7 @@ namespace Kratos // { // rGeom[i].FastGetSolutionStepValue(SOLID_NODAL_SFD_NEIGHBOURS)[solidSFDposition] += rDN_DX(j,0)*elementVolume/solidNodalVolume; // rGeom[i].FastGetSolutionStepValue(SOLID_NODAL_SFD_NEIGHBOURS)[solidSFDposition+1] += rDN_DX(j,1)*elementVolume/solidNodalVolume; - // if(TDim==3){ + // if constexpr (TDim==3){ // rGeom[i].FastGetSolutionStepValue(SOLID_NODAL_SFD_NEIGHBOURS)[solidSFDposition+2] += rDN_DX(j,2)*elementVolume/solidNodalVolume; // } // break; @@ -286,7 +286,7 @@ namespace Kratos // { // rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition] += rDN_DX(j,0)*elementVolume/nodalVolume; // rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition+1] += rDN_DX(j,1)*elementVolume/nodalVolume; - // if(TDim==3){ + // if constexpr (TDim==3){ // rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition+2] += rDN_DX(j,2)*elementVolume/nodalVolume; // } // break; @@ -355,7 +355,7 @@ namespace Kratos // { // rGeom[i].FastGetSolutionStepValue(SOLID_NODAL_SFD_NEIGHBOURS)[solidSFDposition] += rDN_DX(j,0)*elementVolume/solidNodalVolume; // rGeom[i].FastGetSolutionStepValue(SOLID_NODAL_SFD_NEIGHBOURS)[solidSFDposition+1] += rDN_DX(j,1)*elementVolume/solidNodalVolume; - // if(TDim==3){ + // if constexpr (TDim==3){ // rGeom[i].FastGetSolutionStepValue(SOLID_NODAL_SFD_NEIGHBOURS)[solidSFDposition+2] += rDN_DX(j,2)*elementVolume/solidNodalVolume; // } // break; @@ -377,7 +377,7 @@ namespace Kratos // { // rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition] += rDN_DX(j,0)*elementVolume/nodalVolume; // rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition+1] += rDN_DX(j,1)*elementVolume/nodalVolume; - // if(TDim==3){ + // if constexpr (TDim==3){ // rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition+2] += rDN_DX(j,2)*elementVolume/nodalVolume; // } // break; @@ -991,11 +991,11 @@ namespace Kratos double volumetricDefRate = rGeom[0].GetSolutionStepValue(NODAL_VOLUMETRIC_DEF_RATE); double elementalNormalProjDefRate = 0; - if (TDim == 2) + if constexpr (TDim == 2) { elementalNormalProjDefRate += Normal[0] * SpatialDefRate[0] * Normal[0] + Normal[1] * SpatialDefRate[1] * Normal[1] + 2 * Normal[0] * SpatialDefRate[2] * Normal[1]; } - else if (TDim == 3) + else if constexpr (TDim == 3) { elementalNormalProjDefRate += Normal[0] * SpatialDefRate[0] * Normal[0] + Normal[1] * SpatialDefRate[1] * Normal[1] + Normal[2] * SpatialDefRate[2] * Normal[2] + 2 * Normal[0] * SpatialDefRate[3] * Normal[1] + 2 * Normal[0] * SpatialDefRate[4] * Normal[2] + 2 * Normal[1] * SpatialDefRate[5] * Normal[2]; @@ -1011,11 +1011,11 @@ namespace Kratos VolumetricCoeff += TimeStep * rGeom[i].FastGetSolutionStepValue(BULK_MODULUS); volumetricDefRate += rGeom[i].GetSolutionStepValue(NODAL_VOLUMETRIC_DEF_RATE); - if (TDim == 2) + if constexpr (TDim == 2) { elementalNormalProjDefRate += Normal[0] * SpatialDefRate[0] * Normal[0] + Normal[1] * SpatialDefRate[1] * Normal[1] + 2 * Normal[0] * SpatialDefRate[2] * Normal[1]; } - else if (TDim == 3) + else if constexpr (TDim == 3) { elementalNormalProjDefRate += Normal[0] * SpatialDefRate[0] * Normal[0] + Normal[1] * SpatialDefRate[1] * Normal[1] + Normal[2] * SpatialDefRate[2] * Normal[2] + 2 * Normal[0] * SpatialDefRate[3] * Normal[1] + 2 * Normal[0] * SpatialDefRate[4] * Normal[2] + 2 * Normal[1] * SpatialDefRate[5] * Normal[2]; @@ -1946,9 +1946,9 @@ namespace Kratos // unsigned int SFDposition=0; // double elementVolume=0; - // if(TDim==3){ + // if constexpr (TDim==3){ // elementVolume=rGeom.Volume()*0.25; - // }else if(TDim==2){ + // }else if constexpr (TDim==2){ // elementVolume=rGeom.Area()/3.0; // } @@ -1962,7 +1962,7 @@ namespace Kratos // double nodal_dNdXi=rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[0]; // double nodal_dNdYi=rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[1]; // double nodal_dNdZi=0; - // if(TDim==3){ + // if constexpr (TDim==3){ // nodal_dNdZi=rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[2]; // } // double elemental_dNdXi=0; @@ -1983,7 +1983,7 @@ namespace Kratos // elemental_dNdYi+=rGeom[i].FastGetSolutionStepValue(NODAL_SFD_NEIGHBOURS)[SFDposition+1]/(double(NumNodes)); // // std::cout<<" elemental_dNdXi:"< +#include namespace Kratos { @@ -114,7 +114,7 @@ namespace Kratos KRATOS_TRY; unsigned int voigtsize = 3; - if (TDim == 3) + if constexpr (TDim == 3) { voigtsize = 6; } diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_nodally_integrated_solid_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_nodally_integrated_solid_element.cpp index c007f12c49f0..6a7feeca6796 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_nodally_integrated_solid_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_nodally_integrated_solid_element.cpp @@ -87,7 +87,7 @@ namespace Kratos this->mUpdatedDeviatoricCauchyStress.resize(integration_points_number); unsigned int voigtsize = 3; - if (TDim == 3) + if constexpr (TDim == 3) { voigtsize = 6; } @@ -214,7 +214,7 @@ namespace Kratos void TwoStepUpdatedLagrangianVPImplicitNodallyIntegratedSolidElement::InitializeElementalVariables(ElementalVariables &rElementalVariables) { unsigned int voigtsize = 3; - if (TDim == 3) + if constexpr (TDim == 3) { voigtsize = 6; } diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_solid_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_solid_element.cpp index f48282028598..bf7f01c3b505 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_solid_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/two_step_updated_lagrangian_V_P_implicit_solid_element.cpp @@ -86,7 +86,7 @@ namespace Kratos this->mUpdatedDeviatoricCauchyStress.resize(integration_points_number); unsigned int voigtsize = 3; - if (TDim == 3) + if constexpr (TDim == 3) { voigtsize = 6; } @@ -306,7 +306,7 @@ namespace Kratos void TwoStepUpdatedLagrangianVPImplicitSolidElement::InitializeElementalVariables(ElementalVariables &rElementalVariables) { unsigned int voigtsize = 3; - if (TDim == 3) + if constexpr (TDim == 3) { voigtsize = 6; } diff --git a/applications/PfemFluidDynamicsApplication/custom_elements/updated_lagrangian_element.cpp b/applications/PfemFluidDynamicsApplication/custom_elements/updated_lagrangian_element.cpp index b181b2f73b22..3e361e584a18 100644 --- a/applications/PfemFluidDynamicsApplication/custom_elements/updated_lagrangian_element.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_elements/updated_lagrangian_element.cpp @@ -617,11 +617,11 @@ namespace Kratos noalias(invFgrad) = ZeroMatrix(TDim, TDim); FJacobian = 1; - if (TDim == 2) + if constexpr (TDim == 2) { MathUtils::InvertMatrix2(Fgrad, invFgrad, FJacobian); } - else if (TDim == 3) + else if constexpr (TDim == 3) { MathUtils::InvertMatrix3(Fgrad, invFgrad, FJacobian); } @@ -724,11 +724,11 @@ namespace Kratos noalias(invFgradVel) = ZeroMatrix(TDim, TDim); FVelJacobian = 1; - if (TDim == 2) + if constexpr (TDim == 2) { MathUtils::InvertMatrix2(FgradVel, invFgradVel, FVelJacobian); } - else if (TDim == 3) + else if constexpr (TDim == 3) { MathUtils::InvertMatrix3(FgradVel, invFgradVel, FVelJacobian); } diff --git a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/nodal_two_step_v_p_strategy.h b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/nodal_two_step_v_p_strategy.h index 8681d027f722..3b45ec15d109 100644 --- a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/nodal_two_step_v_p_strategy.h +++ b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/nodal_two_step_v_p_strategy.h @@ -34,7 +34,7 @@ #include "pfem_fluid_dynamics_application_variables.h" #include -#include +#include #include #include diff --git a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/nodal_two_step_v_p_strategy_for_FSI.h b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/nodal_two_step_v_p_strategy_for_FSI.h index b1cb638284d8..a1f1eb1c2644 100644 --- a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/nodal_two_step_v_p_strategy_for_FSI.h +++ b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/nodal_two_step_v_p_strategy_for_FSI.h @@ -36,7 +36,7 @@ #include "nodal_two_step_v_p_strategy.h" #include -#include +#include #include #include diff --git a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/three_step_v_p_strategy.h b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/three_step_v_p_strategy.h index 9572362738be..8361fa5e4dd8 100644 --- a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/three_step_v_p_strategy.h +++ b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/three_step_v_p_strategy.h @@ -34,7 +34,7 @@ #include "v_p_strategy.h" #include -#include +#include namespace Kratos { diff --git a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/two_step_v_p_DEM_coupling_strategy.h b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/two_step_v_p_DEM_coupling_strategy.h index c4c165f703f6..8c258a4b40d7 100644 --- a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/two_step_v_p_DEM_coupling_strategy.h +++ b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/two_step_v_p_DEM_coupling_strategy.h @@ -34,7 +34,7 @@ #include "two_step_v_p_DEM_coupling_strategy.h" #include -#include +#include namespace Kratos { diff --git a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/two_step_v_p_strategy.h b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/two_step_v_p_strategy.h index 792dc319331d..c1a30b38465d 100644 --- a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/two_step_v_p_strategy.h +++ b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/two_step_v_p_strategy.h @@ -34,7 +34,7 @@ #include "v_p_strategy.h" #include -#include +#include namespace Kratos { diff --git a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/v_p_strategy.h b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/v_p_strategy.h index fc5d6f34d054..4b089bc69496 100644 --- a/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/v_p_strategy.h +++ b/applications/PfemFluidDynamicsApplication/custom_strategies/strategies/v_p_strategy.h @@ -24,7 +24,7 @@ #include "pfem_fluid_dynamics_application_variables.h" #include -#include +#include namespace Kratos { diff --git a/applications/PfemFluidDynamicsApplication/custom_utilities/calculate_wave_height_utility.cpp b/applications/PfemFluidDynamicsApplication/custom_utilities/calculate_wave_height_utility.cpp index 3d26dd20f5a7..eac5df16ccce 100644 --- a/applications/PfemFluidDynamicsApplication/custom_utilities/calculate_wave_height_utility.cpp +++ b/applications/PfemFluidDynamicsApplication/custom_utilities/calculate_wave_height_utility.cpp @@ -21,6 +21,8 @@ #include "utilities/math_utils.h" #include "utilities/parallel_utilities.h" #include "utilities/reduction_utilities.h" + +// Application utilities #include "calculate_wave_height_utility.h" @@ -33,61 +35,176 @@ CalculateWaveHeightUtility::CalculateWaveHeightUtility( ) : mrModelPart(rThisModelPart) { Parameters default_parameters(R"({ - "model_part_name" : "", "mean_water_level" : 0.0, "relative_search_radius" : 2.0, - "search_tolerance" : 1e-6 + "search_tolerance" : 1e-6, + "use_local_element_size" : false, + "use_nearest_node" : false })"); ThisParameters.ValidateAndAssignDefaults(default_parameters); const array_1d gravity = mrModelPart.GetProcessInfo()[GRAVITY]; mDirection = -gravity / norm_2(gravity); + mUseLocalElementSize = ThisParameters["use_local_element_size"].GetBool(); + mUseNearestNode = ThisParameters["use_nearest_node"].GetBool(); mMeanWaterLevel = ThisParameters["mean_water_level"].GetDouble(); - double search_tolerance = ThisParameters["search_tolerance"].GetDouble(); - double relative_search_radius = ThisParameters["relative_search_radius"].GetDouble(); - double mean_elem_size = block_for_each>( + mAbsoluteRadius = ThisParameters["search_tolerance"].GetDouble(); + mRelativeRadius = ThisParameters["relative_search_radius"].GetDouble(); + + // The average element size is an initial guess for computing the average height + mMeanElementSize = block_for_each>( mrModelPart.Elements(), [](Element& rElement) { return rElement.GetGeometry().Length(); }); - mean_elem_size /= mrModelPart.NumberOfElements(); - mSearchRadius = relative_search_radius * mean_elem_size + search_tolerance; + mMeanElementSize /= mrModelPart.NumberOfElements(); } + double CalculateWaveHeightUtility::Calculate(const array_1d& rCoordinates) const +{ + if (mUseNearestNode) { + return CalculateNearest(rCoordinates); + } else { + if (mUseLocalElementSize) { + return CalculateAverage(rCoordinates); + } else { + double default_search_radius = mRelativeRadius * mMeanElementSize + mAbsoluteRadius; + return CalculateAverage(rCoordinates, default_search_radius); + } + } +} + + +double CalculateWaveHeightUtility::CalculateAverage(const array_1d& rCoordinates, double SearchRadius) const { KRATOS_TRY using MultipleReduction = CombinedReduction, SumReduction>; - double counter = 0.0; + double count = 0.0; double wave_height = 0.0; - std::tie(counter, wave_height) = block_for_each( + std::tie(count, wave_height) = block_for_each( mrModelPart.Nodes(), [&](NodeType& rNode) { double local_count = 0.0; double local_wave_height = 0.0; - if (rNode.IsNot(ISOLATED) && rNode.IsNot(RIGID) && rNode.Is(FREE_SURFACE)) - { + if (rNode.Is(FREE_SURFACE) && rNode.IsNot(RIGID) && rNode.IsNot(ISOLATED)) { const array_1d relative_position = rNode.Coordinates() - rCoordinates; const array_1d horizontal_position = MathUtils::CrossProduct(mDirection, relative_position); const double distance = norm_2(horizontal_position); - if (distance < mSearchRadius) - { - local_count = 1.0; - local_wave_height = inner_prod(mDirection, rNode) - mMeanWaterLevel; + if (distance < SearchRadius) { + local_count += 1.0; + local_wave_height += inner_prod(mDirection, rNode) - mMeanWaterLevel; + } + } + return std::make_tuple(local_count, local_wave_height); + }); + + wave_height /= count; + return wave_height; + + KRATOS_CATCH(""); +} + + +double CalculateWaveHeightUtility::CalculateAverage(const array_1d& rCoordinates) const +{ + KRATOS_TRY + + using MultipleReduction = CombinedReduction, SumReduction>; + + double count = 0.0; + double wave_height = 0.0; + + std::tie(count, wave_height) = block_for_each( + mrModelPart.Elements(), [&](Element& rElement) + { + double local_count = 0.0; + double local_wave_height = 0.0; + + const double radius = mRelativeRadius * rElement.GetGeometry().Length() + mAbsoluteRadius; + + for (auto& r_node : rElement.GetGeometry()) { + if (r_node.Is(FREE_SURFACE) && r_node.IsNot(RIGID) && r_node.IsNot(ISOLATED)) { + const array_1d relative_position = r_node.Coordinates() - rCoordinates; + const array_1d horizontal_position = MathUtils::CrossProduct(mDirection, relative_position); + const double distance = norm_2(horizontal_position); + + if (distance < radius) { + local_count += 1.0; + local_wave_height += inner_prod(mDirection, r_node) - mMeanWaterLevel; + } } } return std::make_tuple(local_count, local_wave_height); }); - wave_height /= counter; + wave_height /= count; return wave_height; KRATOS_CATCH(""); } + +double CalculateWaveHeightUtility::CalculateNearest(const array_1d& rCoordinates) const +{ + KRATOS_TRY + + static array_1d direction = mDirection; // Workaround to make variables accessible to the local reducer + static double mean_water_level = mMeanWaterLevel; + static double search_radius = mRelativeRadius * mMeanElementSize + mAbsoluteRadius; + + using ReductionArguments = std::tuple*>; // {p_node, p_coordinates} + + struct CustomReducer{ + using return_type = double; + double distance = 1e16; + double wave_height = 0.0; + + return_type GetValue() + { + return wave_height; + } + + void LocalReduce(ReductionArguments node_coordinates) + { + // auto [p_node, p_coordinates] = node_coordinates; TODO: enable after migrating to c++17 + const NodeType& r_node = *std::get<0>(node_coordinates); + array_1d coordinates = *std::get<1>(node_coordinates); + if (r_node.Is(FREE_SURFACE) && r_node.IsNot(RIGID) && r_node.IsNot(ISOLATED)) + { + const array_1d relative_position = r_node.Coordinates() - coordinates; + const array_1d horizontal_position = MathUtils::CrossProduct(direction, relative_position); + const double new_distance = norm_2(horizontal_position); + + if (new_distance < search_radius && new_distance < this->distance) { + this->distance = new_distance; + this->wave_height = inner_prod(direction, r_node) - mean_water_level; + } + } + } + + void ThreadSafeReduce(CustomReducer& rOther) + { + #pragma omp critical + { + if (rOther.distance < this->distance) { + this->distance = rOther.distance; + this->wave_height = rOther.wave_height; + } + } + } + }; + + return block_for_each(mrModelPart.Nodes(),[&,this](NodeType& rNode) -> ReductionArguments { + return std::make_tuple(&rNode, &rCoordinates); + }); + + KRATOS_CATCH("") +} + } // namespace Kratos. diff --git a/applications/PfemFluidDynamicsApplication/custom_utilities/calculate_wave_height_utility.h b/applications/PfemFluidDynamicsApplication/custom_utilities/calculate_wave_height_utility.h index 92cbe00934b0..d10dd3a61569 100644 --- a/applications/PfemFluidDynamicsApplication/custom_utilities/calculate_wave_height_utility.h +++ b/applications/PfemFluidDynamicsApplication/custom_utilities/calculate_wave_height_utility.h @@ -5,8 +5,7 @@ // Multi-Physics PfemFluidDynamics Application // // License: BSD License -// Kratos default license: -// kratos/license.txt +// Kratos default license: kratos/license.txt // // Main authors: Alejandro Cornejo Velazquez // Miguel Maso Sotomayor @@ -49,6 +48,8 @@ class KRATOS_API(PFEM_FLUID_DYNAMICS_APPLICATION) CalculateWaveHeightUtility typedef Node<3> NodeType; + typedef Geometry GeometryType; + ///@} ///@name Life Cycle ///@{ @@ -124,12 +125,31 @@ class KRATOS_API(PFEM_FLUID_DYNAMICS_APPLICATION) CalculateWaveHeightUtility array_1d mDirection; array_1d mCoordinates; double mMeanWaterLevel; - double mSearchRadius; + bool mUseLocalElementSize; + bool mUseNearestNode; + double mRelativeRadius; + double mAbsoluteRadius; + double mMeanElementSize; ///@} ///@name Private Operations ///@{ + /** + * @brief Calculate the averaged wave height from the nearest nodes with a given search radius. + */ + double CalculateAverage(const array_1d& rCoordinates, double SearchRadius) const; + + + /** + * @brief Calculate the averaged wave height from the nearest nodes. + */ + double CalculateAverage(const array_1d& rCoordinates) const; + + /** + * @brief Calculate the wave height from the nearest node. + */ + double CalculateNearest(const array_1d& rCoordinates) const; ///@} ///@name Private Access diff --git a/applications/PfemFluidDynamicsApplication/python_scripts/wave_height_output_process.py b/applications/PfemFluidDynamicsApplication/python_scripts/wave_height_output_process.py index 4abd09ae325e..f379c38a3c73 100644 --- a/applications/PfemFluidDynamicsApplication/python_scripts/wave_height_output_process.py +++ b/applications/PfemFluidDynamicsApplication/python_scripts/wave_height_output_process.py @@ -21,9 +21,12 @@ class WaveHeightOutputProcess(KM.OutputProcess): - 'file_name' : 'gauge_' or - 'file_name' : 'gauge_' or - 'file_name' : 'gauge_' - - wave_calculation_settings: a parameters according to 'CalculateWaveHeightOutputProcess' + - wave_calculation_settings: parameters according to 'CalculateWaveHeightUtility' - 'mean_water_level' - - 'relative_search_tolerance' + - 'relative_search_radius' + - 'search_tolerance' + - 'use_local_element_size' + - 'use_nearest_node' """ def GetDefaultParameters(self): @@ -64,16 +67,16 @@ def Check(self): def ExecuteBeforeSolutionLoop(self): """Initialize the files and the utility to calculate the water height""" + # The cpp utility goes first, since it validates the 'wave_calculation_settings' + self.wave_height_utility = PFEM.CalculateWaveHeightUtility(self.model_part, self.settings["wave_calculation_settings"]) + self.files = [] for i, coordinate in enumerate(self.coordinates_list, start=1): file_settings = self.settings["output_file_settings"].Clone() self._ExecuteReplacement(i, coordinate, file_settings["file_name"]) - header = "# Wave height at coordinate {}\n".format(list(coordinate)) - header += "#Time \t\tHeight\n" + header = self._GetHeader(coordinate) self.files.append(TimeBasedAsciiFileWriterUtility(self.model_part, file_settings, header).file) - self.wave_height_utility = PFEM.CalculateWaveHeightUtility(self.model_part, self.settings["wave_calculation_settings"]) - def IsOutputStep(self): """The output control is time based""" time = self.model_part.ProcessInfo[KM.TIME] @@ -118,3 +121,10 @@ def _ExecuteReplacement(i, coord, param): name = name.replace("", str(coord[2])) name = name.replace("", str(i)) param.SetString(name) + + def _GetHeader(self, coordinates): + header = f'# Wave height at coordinates {list(coordinates)}\n' + header += f'# "model_part_name": {self.model_part.Name}\n' + header += f'# "wave_calculation_settings": {"# ".join(self.settings["wave_calculation_settings"].PrettyPrintJsonString().splitlines(True))}\n' + header += '#Time\tHeight\n' + return header diff --git a/applications/PoromechanicsApplication/custom_elements/U_Pw_element.cpp b/applications/PoromechanicsApplication/custom_elements/U_Pw_element.cpp index 4e33fc8ed6e1..d5d0287a9ae0 100644 --- a/applications/PoromechanicsApplication/custom_elements/U_Pw_element.cpp +++ b/applications/PoromechanicsApplication/custom_elements/U_Pw_element.cpp @@ -179,7 +179,7 @@ void UPwElement::GetDofList( DofsVectorType& rElementalDofList, { rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_X); rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_Y); - if(TDim>2) + if constexpr (TDim>2) rElementalDofList[index++] = rGeom[i].pGetDof(DISPLACEMENT_Z); rElementalDofList[index++] = rGeom[i].pGetDof(WATER_PRESSURE); } diff --git a/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_element.cpp b/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_element.cpp index a16229fcb379..8d9522137503 100644 --- a/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_element.cpp +++ b/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_element.cpp @@ -59,7 +59,7 @@ int UPwSmallStrainElement::Check( const ProcessInfo& rCurrentPro KRATOS_THROW_ERROR( std::invalid_argument,"PERMEABILITY_YY has Key zero, is not defined or has an invalid value at element", this->Id() ) if ( PERMEABILITY_XY.Key() == 0 || Prop.Has( PERMEABILITY_XY ) == false || Prop[PERMEABILITY_XY] < 0.0 ) KRATOS_THROW_ERROR( std::invalid_argument,"PERMEABILITY_XY has Key zero, is not defined or has an invalid value at element", this->Id() ) - if(TDim > 2) + if constexpr (TDim > 2) { if ( PERMEABILITY_ZZ.Key() == 0 || Prop.Has( PERMEABILITY_ZZ ) == false || Prop[PERMEABILITY_ZZ] < 0.0 ) KRATOS_THROW_ERROR( std::invalid_argument,"PERMEABILITY_ZZ has Key zero, is not defined or has an invalid value at element", this->Id() ) diff --git a/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.cpp b/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.cpp index 3c4df098ddfe..2524115cae39 100644 --- a/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.cpp +++ b/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_interface_element.cpp @@ -389,7 +389,8 @@ void UPwSmallStrainInterfaceElement::CalculateOnIntegrationPoint { //Variables computed on Lobatto points const GeometryType& Geom = this->GetGeometry(); - + const PropertiesType& Prop = this->GetProperties(); + const double& MinimumJointWidth = Prop[MINIMUM_JOINT_WIDTH]; const unsigned int NumGPoints = Geom.IntegrationPointsNumber( mThisIntegrationMethod ); std::vector> GPAuxValues(NumGPoints); this->CalculateOnIntegrationPoints(LOCAL_RELATIVE_DISPLACEMENT_VECTOR, GPAuxValues, rCurrentProcessInfo); @@ -399,6 +400,11 @@ void UPwSmallStrainInterfaceElement::CalculateOnIntegrationPoint for(unsigned int i=0; i < NumGPoints; i++) { GPValues[i] = mInitialGap[i] + GPAuxValues[i][TDim-1]; + + if(GPValues[i] < MinimumJointWidth) + { + GPValues[i] = MinimumJointWidth; + } } //Printed on standard GiD Gauss points @@ -428,7 +434,7 @@ template< unsigned int TDim, unsigned int TNumNodes > void UPwSmallStrainInterfaceElement::CalculateOnIntegrationPoints(const Variable>& rVariable, std::vector>& rValues,const ProcessInfo& rCurrentProcessInfo) { - if(rVariable == FLUID_FLUX_VECTOR || rVariable == LOCAL_STRESS_VECTOR || rVariable == LOCAL_RELATIVE_DISPLACEMENT_VECTOR || rVariable == LOCAL_FLUID_FLUX_VECTOR) + if(rVariable == FLUID_FLUX_VECTOR || rVariable == CONTACT_STRESS_VECTOR || rVariable == LOCAL_STRESS_VECTOR || rVariable == LOCAL_RELATIVE_DISPLACEMENT_VECTOR || rVariable == LOCAL_FLUID_FLUX_VECTOR) { //Variables computed on Lobatto points const GeometryType& Geom = this->GetGeometry(); @@ -500,6 +506,65 @@ void UPwSmallStrainInterfaceElement::CalculateOnIntegrationPoint PoroElementUtilities::FillArray1dOutput(GPValues[GPoint],FluidFlux); } } + else if(rVariable == CONTACT_STRESS_VECTOR) + { + //Defining necessary variables + const PropertiesType& Prop = this->GetProperties(); + const GeometryType& Geom = this->GetGeometry(); + const Matrix& NContainer = Geom.ShapeFunctionsValues( mThisIntegrationMethod ); + array_1d DisplacementVector; + PoroElementUtilities::GetNodalVariableVector(DisplacementVector,Geom,DISPLACEMENT); + BoundedMatrix RotationMatrix; + this->CalculateRotationMatrix(RotationMatrix,Geom); + BoundedMatrix Nu = ZeroMatrix(TDim, TNumNodes*TDim); + array_1d RelDispVector; + const double& MinimumJointWidth = Prop[MINIMUM_JOINT_WIDTH]; + double JointWidth; + array_1d LocalStressVector; + array_1d ContactStressVector; + + //Create constitutive law parameters: + Vector StrainVector(TDim); + Vector StressVectorDynamic(TDim); + Matrix ConstitutiveMatrix(TDim,TDim); + Vector Np(TNumNodes); + Matrix GradNpT(TNumNodes,TDim); + Matrix F = identity_matrix(TDim); + double detF = 1.0; + ConstitutiveLaw::Parameters ConstitutiveParameters(Geom,Prop,rCurrentProcessInfo); + ConstitutiveParameters.Set(ConstitutiveLaw::COMPUTE_STRESS); + ConstitutiveParameters.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN); + ConstitutiveParameters.SetConstitutiveMatrix(ConstitutiveMatrix); + ConstitutiveParameters.SetStressVector(StressVectorDynamic); + ConstitutiveParameters.SetStrainVector(StrainVector); + ConstitutiveParameters.SetShapeFunctionsValues(Np); + ConstitutiveParameters.SetShapeFunctionsDerivatives(GradNpT); + ConstitutiveParameters.SetDeterminantF(detF); + ConstitutiveParameters.SetDeformationGradientF(F); + + //Loop over integration points + for ( unsigned int GPoint = 0; GPoint < mConstitutiveLawVector.size(); GPoint++ ) + { + InterfaceElementUtilities::CalculateNuMatrix(Nu,NContainer,GPoint); + + noalias(RelDispVector) = prod(Nu,DisplacementVector); + + noalias(StrainVector) = prod(RotationMatrix,RelDispVector); + + this->CheckAndCalculateJointWidth(JointWidth, ConstitutiveParameters, StrainVector[TDim-1], MinimumJointWidth, GPoint); + + noalias(Np) = row(NContainer,GPoint); + + //compute constitutive tensor and/or stresses + mConstitutiveLawVector[GPoint]->CalculateMaterialResponseCauchy(ConstitutiveParameters); + + noalias(LocalStressVector) = StressVectorDynamic; + + noalias(ContactStressVector) = prod(trans(RotationMatrix),LocalStressVector); + + PoroElementUtilities::FillArray1dOutput(GPValues[GPoint],ContactStressVector); + } + } else if(rVariable == LOCAL_STRESS_VECTOR) { //Defining necessary variables @@ -1163,35 +1228,13 @@ void UPwSmallStrainInterfaceElement<2,4>::CalculateRotationMatrix(BoundedMatrix< rRotationMatrix(0,0) = Vx[0]; rRotationMatrix(0,1) = Vx[1]; - // We need to determine the unitary vector in local y direction pointing towards the TOP face of the joint - - // Unitary vector in local x direction (3D) - array_1d Vx3D; - Vx3D[0] = Vx[0]; - Vx3D[1] = Vx[1]; - Vx3D[2] = 0.0; + // NOTE. Assuming that the nodes in quadrilateral_interface_2d_4 are + // ordered clockwise (GiD does so), the rotation matrix is build like follows: + rRotationMatrix(1,0) = Vx[1]; + rRotationMatrix(1,1) = -Vx[0]; - // Unitary vector in local y direction (first option) - array_1d Vy3D; - Vy3D[0] = -Vx[1]; - Vy3D[1] = Vx[0]; - Vy3D[2] = 0.0; - - // Vector in global z direction (first option) - array_1d Vz; - MathUtils::CrossProduct(Vz, Vx3D, Vy3D); - - // Vz must have the same sign as vector (0,0,1) - if(Vz[2] > 0.0) - { - rRotationMatrix(1,0) = -Vx[1]; - rRotationMatrix(1,1) = Vx[0]; - } - else - { - rRotationMatrix(1,0) = Vx[1]; - rRotationMatrix(1,1) = -Vx[0]; - } + // NOTE. In zero-thickness quadrilateral_interface_2d_4 elements we are not able to know + // whether the nodes are ordered clockwise or counter-clockwise. KRATOS_CATCH( "" ) } @@ -1324,7 +1367,7 @@ void UPwSmallStrainInterfaceElement::CheckAndCalculateJointWidth rConstitutiveParameters.Set(ConstitutiveLaw::COMPUTE_STRAIN_ENERGY); // No contact between interfaces - // Initally open joint + // Initially open joint if(mIsOpen[GPoint]==true) { if(rJointWidth < MinimumJointWidth) @@ -1334,7 +1377,7 @@ void UPwSmallStrainInterfaceElement::CheckAndCalculateJointWidth rJointWidth = MinimumJointWidth; } } - // Initally closed joint + // Initially closed joint else { if(rJointWidth < 0.0) diff --git a/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_link_interface_element.cpp b/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_link_interface_element.cpp index e27d82d61ab5..f7981bbe07ef 100644 --- a/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_link_interface_element.cpp +++ b/applications/PoromechanicsApplication/custom_elements/U_Pw_small_strain_link_interface_element.cpp @@ -96,6 +96,65 @@ void UPwSmallStrainLinkInterfaceElement::CalculateOnIntegrationP PoroElementUtilities::FillArray1dOutput(rOutput[GPoint],FluidFlux); } } + else if(rVariable == CONTACT_STRESS_VECTOR) + { + //Defining necessary variables + const PropertiesType& Prop = this->GetProperties(); + const GeometryType& Geom = this->GetGeometry(); + const Matrix& NContainer = Geom.ShapeFunctionsValues( mThisIntegrationMethod ); + array_1d DisplacementVector; + PoroElementUtilities::GetNodalVariableVector(DisplacementVector,Geom,DISPLACEMENT); + BoundedMatrix RotationMatrix; + this->CalculateRotationMatrix(RotationMatrix,Geom); + BoundedMatrix Nu = ZeroMatrix(TDim, TNumNodes*TDim); + array_1d RelDispVector; + const double& MinimumJointWidth = Prop[MINIMUM_JOINT_WIDTH]; + double JointWidth; + array_1d LocalStressVector; + array_1d ContactStressVector; + + //Create constitutive law parameters: + Vector StrainVector(TDim); + Vector StressVectorDynamic(TDim); + Matrix ConstitutiveMatrix(TDim,TDim); + Vector Np(TNumNodes); + Matrix GradNpT(TNumNodes,TDim); + Matrix F = identity_matrix(TDim); + double detF = 1.0; + ConstitutiveLaw::Parameters ConstitutiveParameters(Geom,Prop,rCurrentProcessInfo); + ConstitutiveParameters.Set(ConstitutiveLaw::COMPUTE_STRESS); + ConstitutiveParameters.Set(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN); + ConstitutiveParameters.SetConstitutiveMatrix(ConstitutiveMatrix); + ConstitutiveParameters.SetStressVector(StressVectorDynamic); + ConstitutiveParameters.SetStrainVector(StrainVector); + ConstitutiveParameters.SetShapeFunctionsValues(Np); + ConstitutiveParameters.SetShapeFunctionsDerivatives(GradNpT); + ConstitutiveParameters.SetDeterminantF(detF); + ConstitutiveParameters.SetDeformationGradientF(F); + + //Loop over integration points + for ( unsigned int GPoint = 0; GPoint < mConstitutiveLawVector.size(); GPoint++ ) + { + InterfaceElementUtilities::CalculateNuMatrix(Nu,NContainer,GPoint); + + noalias(RelDispVector) = prod(Nu,DisplacementVector); + + noalias(StrainVector) = prod(RotationMatrix,RelDispVector); + + this->CheckAndCalculateJointWidth(JointWidth, ConstitutiveParameters, StrainVector[TDim-1], MinimumJointWidth, GPoint); + + noalias(Np) = row(NContainer,GPoint); + + //compute constitutive tensor and/or stresses + mConstitutiveLawVector[GPoint]->CalculateMaterialResponseCauchy(ConstitutiveParameters); + + noalias(LocalStressVector) = StressVectorDynamic; + + noalias(ContactStressVector) = prod(trans(RotationMatrix),LocalStressVector); + + PoroElementUtilities::FillArray1dOutput(rOutput[GPoint],ContactStressVector); + } + } else if(rVariable == LOCAL_STRESS_VECTOR) { //Defining necessary variables diff --git a/applications/PoromechanicsApplication/custom_python/poromechanics_python_application.cpp b/applications/PoromechanicsApplication/custom_python/poromechanics_python_application.cpp index 17ce1412d6e9..706e3b93bdff 100644 --- a/applications/PoromechanicsApplication/custom_python/poromechanics_python_application.cpp +++ b/applications/PoromechanicsApplication/custom_python/poromechanics_python_application.cpp @@ -50,6 +50,7 @@ PYBIND11_MODULE(KratosPoromechanicsApplication, m) KRATOS_REGISTER_IN_PYTHON_3D_VARIABLE_WITH_COMPONENTS( m, FLUID_FLUX_VECTOR ) KRATOS_REGISTER_IN_PYTHON_3D_VARIABLE_WITH_COMPONENTS( m, LOCAL_FLUID_FLUX_VECTOR ) + KRATOS_REGISTER_IN_PYTHON_3D_VARIABLE_WITH_COMPONENTS( m, CONTACT_STRESS_VECTOR ) KRATOS_REGISTER_IN_PYTHON_3D_VARIABLE_WITH_COMPONENTS( m, LOCAL_STRESS_VECTOR ) KRATOS_REGISTER_IN_PYTHON_3D_VARIABLE_WITH_COMPONENTS( m, LOCAL_RELATIVE_DISPLACEMENT_VECTOR ) KRATOS_REGISTER_IN_PYTHON_VARIABLE( m, PERMEABILITY_MATRIX ) diff --git a/applications/PoromechanicsApplication/poromechanics_application.cpp b/applications/PoromechanicsApplication/poromechanics_application.cpp index e00975cec9eb..b11aaaed73a4 100644 --- a/applications/PoromechanicsApplication/poromechanics_application.cpp +++ b/applications/PoromechanicsApplication/poromechanics_application.cpp @@ -234,6 +234,7 @@ void KratosPoromechanicsApplication::Register() KRATOS_REGISTER_VARIABLE( TRANSVERSAL_PERMEABILITY ) KRATOS_REGISTER_3D_VARIABLE_WITH_COMPONENTS( FLUID_FLUX_VECTOR ) KRATOS_REGISTER_3D_VARIABLE_WITH_COMPONENTS( LOCAL_FLUID_FLUX_VECTOR ) + KRATOS_REGISTER_3D_VARIABLE_WITH_COMPONENTS( CONTACT_STRESS_VECTOR ) KRATOS_REGISTER_3D_VARIABLE_WITH_COMPONENTS( LOCAL_STRESS_VECTOR ) KRATOS_REGISTER_3D_VARIABLE_WITH_COMPONENTS( LOCAL_RELATIVE_DISPLACEMENT_VECTOR ) KRATOS_REGISTER_VARIABLE( PERMEABILITY_MATRIX ) diff --git a/applications/PoromechanicsApplication/poromechanics_application_variables.cpp b/applications/PoromechanicsApplication/poromechanics_application_variables.cpp index 240f42fa45db..a16368a8fb8a 100644 --- a/applications/PoromechanicsApplication/poromechanics_application_variables.cpp +++ b/applications/PoromechanicsApplication/poromechanics_application_variables.cpp @@ -37,6 +37,7 @@ KRATOS_CREATE_VARIABLE( double, MINIMUM_JOINT_WIDTH ) KRATOS_CREATE_VARIABLE( double, TRANSVERSAL_PERMEABILITY ) KRATOS_CREATE_3D_VARIABLE_WITH_COMPONENTS( FLUID_FLUX_VECTOR ) KRATOS_CREATE_3D_VARIABLE_WITH_COMPONENTS( LOCAL_FLUID_FLUX_VECTOR ) +KRATOS_CREATE_3D_VARIABLE_WITH_COMPONENTS( CONTACT_STRESS_VECTOR ) KRATOS_CREATE_3D_VARIABLE_WITH_COMPONENTS( LOCAL_STRESS_VECTOR ) KRATOS_CREATE_3D_VARIABLE_WITH_COMPONENTS( LOCAL_RELATIVE_DISPLACEMENT_VECTOR ) KRATOS_CREATE_VARIABLE( Matrix, PERMEABILITY_MATRIX ) diff --git a/applications/PoromechanicsApplication/poromechanics_application_variables.h b/applications/PoromechanicsApplication/poromechanics_application_variables.h index 4ac27b2dc203..1ed3eed76f86 100644 --- a/applications/PoromechanicsApplication/poromechanics_application_variables.h +++ b/applications/PoromechanicsApplication/poromechanics_application_variables.h @@ -50,6 +50,7 @@ KRATOS_DEFINE_APPLICATION_VARIABLE( POROMECHANICS_APPLICATION, double, MINIMUM_J KRATOS_DEFINE_APPLICATION_VARIABLE( POROMECHANICS_APPLICATION, double, TRANSVERSAL_PERMEABILITY ) KRATOS_DEFINE_3D_APPLICATION_VARIABLE_WITH_COMPONENTS( POROMECHANICS_APPLICATION, FLUID_FLUX_VECTOR ) KRATOS_DEFINE_3D_APPLICATION_VARIABLE_WITH_COMPONENTS( POROMECHANICS_APPLICATION, LOCAL_FLUID_FLUX_VECTOR ) +KRATOS_DEFINE_3D_APPLICATION_VARIABLE_WITH_COMPONENTS( POROMECHANICS_APPLICATION, CONTACT_STRESS_VECTOR ) KRATOS_DEFINE_3D_APPLICATION_VARIABLE_WITH_COMPONENTS( POROMECHANICS_APPLICATION, LOCAL_STRESS_VECTOR ) KRATOS_DEFINE_3D_APPLICATION_VARIABLE_WITH_COMPONENTS( POROMECHANICS_APPLICATION, LOCAL_RELATIVE_DISPLACEMENT_VECTOR ) KRATOS_DEFINE_APPLICATION_VARIABLE( POROMECHANICS_APPLICATION, Matrix, PERMEABILITY_MATRIX ) diff --git a/applications/RomApplication/python_scripts/auxiliary_functions_workflow.py b/applications/RomApplication/python_scripts/auxiliary_functions_workflow.py new file mode 100644 index 000000000000..c4fb0f164ba9 --- /dev/null +++ b/applications/RomApplication/python_scripts/auxiliary_functions_workflow.py @@ -0,0 +1,20 @@ +import dislib as ds +from dislib.data.array import Array + +def load_blocks_array(blocks, shape, block_size): + if shape[0] < block_size[0] or shape[1] < block_size[1]: + raise ValueError("The block size is greater than the ds-array") + return Array(blocks, shape=shape, top_left_shape=block_size, + reg_shape=block_size, sparse=False) + +def load_blocks_rechunk(blocks, shape, block_size, new_block_size): + if shape[0] < new_block_size[0] or shape[1] < new_block_size[1]: + raise ValueError("The block size requested for rechunk" + "is greater than the ds-array") + final_blocks = [[]] + # Este bucle lo puse por si los Future objects se guardan en una lista, en caso de que la forma de guardarlos cambie, también cambiará un poco este bucle. + # Si blocks se pasa ya como (p. ej) [[Future_object, Future_object]] no hace falta. + for block in blocks: + final_blocks[0].append(block) + arr = load_blocks_array(final_blocks, shape, block_size) + return arr.rechunk(new_block_size) diff --git a/applications/RomApplication/python_scripts/fluid_dynamics_analysis_rom.py b/applications/RomApplication/python_scripts/fluid_dynamics_analysis_rom.py index 68805c9a8da7..260da6a2fc7a 100644 --- a/applications/RomApplication/python_scripts/fluid_dynamics_analysis_rom.py +++ b/applications/RomApplication/python_scripts/fluid_dynamics_analysis_rom.py @@ -2,21 +2,36 @@ import KratosMultiphysics.FluidDynamicsApplication import KratosMultiphysics.RomApplication as romapp from KratosMultiphysics.RomApplication import python_solvers_wrapper_rom as solver_wrapper +from KratosMultiphysics.RomApplication.empirical_cubature_method import EmpiricalCubatureMethod from KratosMultiphysics.FluidDynamicsApplication.fluid_dynamics_analysis import FluidDynamicsAnalysis import json +import numpy as np class FluidDynamicsAnalysisROM(FluidDynamicsAnalysis): - def __init__(self,model,project_parameters): + def __init__(self,model,project_parameters, path = '.', hyper_reduction_element_selector = None): KratosMultiphysics.Logger.PrintWarning('\x1b[1;31m[DEPRECATED CLASS] \x1b[0m',"\'FluidDynamicsAnalysisROM\'", "class is deprecated. Use the \'RomAnalysis\' one instead.") + self.path = path super().__init__(model,project_parameters) + if hyper_reduction_element_selector != None : + if hyper_reduction_element_selector == "EmpiricalCubature": + self.hyper_reduction_element_selector = EmpiricalCubatureMethod() + self.time_step_residual_matrix_container = [] + else: + err_msg = "The requested element selection method \"" + hyper_reduction_element_selector + "\" is not in the rom application\n" + err_msg += "Available options are: \"EmpiricalCubature\"" + raise Exception(err_msg) + else: + self.hyper_reduction_element_selector = None + + #### Internal functions #### def _CreateSolver(self): """ Create the Solver (and create and import the ModelPart if it is not alread in the model) """ ## Solver construction - with open('RomParameters.json') as rom_parameters: + with open(self.path +'/RomParameters.json') as rom_parameters: rom_settings = KratosMultiphysics.Parameters(rom_parameters.read()) self.project_parameters["solver_settings"].AddValue("rom_settings", rom_settings["rom_settings"]) return solver_wrapper.CreateSolverByParameters(self.model, self.project_parameters["solver_settings"],self.project_parameters["problem_data"]["parallel_type"].GetString()) @@ -28,7 +43,7 @@ def ModifyAfterSolverInitialize(self): """Here is where the ROM_BASIS is imposed to each node""" super().ModifyAfterSolverInitialize() computing_model_part = self._solver.GetComputingModelPart() - with open('RomParameters.json') as f: + with open(self.path + '/RomParameters.json') as f: data = json.load(f) nodal_dofs = len(data["rom_settings"]["nodal_unknowns"]) nodal_modes = data["nodal_modes"] @@ -42,3 +57,31 @@ def ModifyAfterSolverInitialize(self): aux[j,i] = nodal_modes[Counter][j][i] node.SetValue(romapp.ROM_BASIS, aux ) # ROM basis counter+=1 + if self.hyper_reduction_element_selector != None: + if self.hyper_reduction_element_selector.Name == "EmpiricalCubature": + self.ResidualUtilityObject = romapp.RomResidualsUtility(self._GetSolver().GetComputingModelPart(), self.project_parameters["solver_settings"]["rom_settings"], self._GetSolver()._GetScheme()) + + + def FinalizeSolutionStep(self): + if self.hyper_reduction_element_selector != None: + if self.hyper_reduction_element_selector.Name == "EmpiricalCubature": + print('\n\n\n\nGenerating matrix of residuals') + ResMat = self.ResidualUtilityObject.GetResiduals() + NP_ResMat = np.array(ResMat, copy=False) + self.time_step_residual_matrix_container.append(NP_ResMat) + super().FinalizeSolutionStep() + + def Finalize(self): + super().Finalize() + if self.hyper_reduction_element_selector != None: + if self.hyper_reduction_element_selector.Name == "EmpiricalCubature": + self.residuals_snapshots = self._ObtainBasis() + + def _ObtainBasis(self): + ### Building the Snapshot matrix #### + for i in range (len(self.time_step_residual_matrix_container)): + if i == 0: + SnapshotMatrix = self.time_step_residual_matrix_container[i] + else: + SnapshotMatrix = np.c_[SnapshotMatrix, self.time_step_residual_matrix_container[i]] + return SnapshotMatrix \ No newline at end of file diff --git a/applications/RomApplication/python_scripts/parallel_svd.py b/applications/RomApplication/python_scripts/parallel_svd.py new file mode 100644 index 000000000000..dd8fe374a2e3 --- /dev/null +++ b/applications/RomApplication/python_scripts/parallel_svd.py @@ -0,0 +1,88 @@ +import dislib as ds +import numpy as np +from pycompss.api.task import task +from pycompss.api.constraint import constraint +from pycompss.api.api import compss_wait_on +from pycompss.api.parameter import Type, COLLECTION_IN, Depth +from dislib.data.array import Array + +from KratosMultiphysics.RomApplication.auxiliary_functions_workflow import load_blocks_array, load_blocks_rechunk + + +@constraint(computingUnits=2) +@task(Y_blocks={Type: COLLECTION_IN, Depth: 2}, returns=2) +def my_qr(Y_blocks): + Y = np.block(Y_blocks) + Q,R = np.linalg.qr(Y, mode='reduced') + return Q,R + + +@constraint(computingUnits=1) +@task(B_blocks={Type: COLLECTION_IN, Depth: 2}, returns=2) +def my_svd(B_blocks): + B = np.block(B_blocks) + U_hat, s, _ = np.linalg.svd(B, full_matrices=False) + return U_hat, s + + + + +def rsvd(A,desired_rank,oversampling=10,row_splits=10,column_splits=1): + +#-----Dimensions-------- + k = desired_rank + p = k + oversampling + n = A.shape[0] + m = A.shape[1] + A_row_chunk_size = int( n / row_splits) + A_column_chunk_size = int( m / column_splits) + A = A.rechunk((A_row_chunk_size,A_column_chunk_size)) +#-----Matrix Omega Initialization-------- + omega_column_chunk_size = p + omega_row_chunk_size = A_column_chunk_size + Omega = ds.random_array(shape=(m, p), block_size=(omega_row_chunk_size, omega_column_chunk_size) ) # Create a random projection matrix Omega of size mxp, for this test, p is of 110. +#---------------------------------- + +# STEP 1 (DISTRIBUTED): Sample the column space of A. Y results into an nxp matrix. + Y = A @ Omega + +# STEP 2 (SERIAL): Serial QR, to be done in distributed. Q results into a matrix of nxp + Q,_ = my_qr(Y._blocks) + Q=load_blocks_rechunk([Q], shape = (n, p), block_size= (n, p), new_block_size=(A_row_chunk_size, omega_column_chunk_size)) + +#"SERIAL STEPS FINISH" + B = Q.T @ A +# STEP 3 (DISTRIBUTED): Project A into the orthonormal basis. B results into a matrix of pxm. + +#""""SERIAL STEPS START""" + U_hat, s = my_svd(B._blocks) + U_hat = load_blocks_rechunk([U_hat], shape = (p, m), block_size = (p, m), new_block_size=(omega_column_chunk_size, omega_column_chunk_size)) + +#""""SERIAL STEPS FINISH""" + U_hat = U_hat[:,:k] #U_hat results into a matrix of pxk. + U = Q @ U_hat #STEP 5 (DISTRIBUTED): Project the reduced basis into Q. U results into a matrix of nxk. + U = U.collect() #STEP 6 (collecting the required basis): + s = compss_wait_on(s) + s = s[:k] + return U, s + +def truncated_svd(Matrix, epsilon=0): + Matrix = compss_wait_on(Matrix) + M,N=np.shape(Matrix) + dimMATRIX = max(M,N) + U, s, V = np.linalg.svd(Matrix, full_matrices=False) #U --> M xN, V --> N x N + V = V.T + tol = dimMATRIX*np.finfo(float).eps*max(s)/2 + R = np.sum(s > tol) # Definition of numerical rank + if epsilon == 0: + K = R + else: + SingVsq = np.multiply(s,s) + SingVsq.sort() + normEf2 = np.sqrt(np.cumsum(SingVsq)) + epsilon = epsilon*normEf2[-1] #relative tolerance + T = (sum(normEf2 1: + blevel = 1 << (nlevels - 1) + mask = blevel - 1 + for ilevel in reversed(range(nlevels)): + if MPI_RANK & mask == 0: + # Obtain Q2i for this level - use C as buffer + C = Q2l[2 * n * ilevel:2 * n * ilevel + 2 * n, :] + # Multiply by QW either set to identity or allocated to a value + # Store into Q2i + Q2i = C @ QW # matmul(C, QW) + # Communications scheme + prank = MPI_RANK ^ blevel + if MPI_RANK & blevel: + if prank < MPI_SIZE: + C = MPI_COMM.recv(source=prank, tag=0) + # Recover R from the upper part of C and QW from the lower + # part + R = C[:n, :] + QW = C[n:, :] + else: + if prank < MPI_SIZE: + # Set up C matrix for sending + # Store R in the upper part and Q2i on the lower part + # Store Q2i of this rank to QW + C[:n, :] = R + C[n:, :] = Q2i[n:, :] + QW = Q2i[:n, :] + MPI_COMM.send(C, prank, tag=0) + blevel >>= 1 + mask >>= 1 + # Multiply Q1i and QW to obtain Qi + Qi = Q1i @ QW # matmul(Q1i, QW) + return Qi + + + +def randomized_orthogonalization(Ai, comm, mu=0, R=0): + Mlocal, N = Ai.shape # C has dimensions M by N + + #obtain M as the total size + mlocal = np.array([Mlocal]) + mtotal = np.array([0]) + comm.Allreduce([mlocal, MPI.INT], [mtotal, MPI.INT], op=MPI.SUM) + M = mtotal[0] + + c = nC = TotalNorm(Ai, comm) # Norm of the initial residual + + if mu == 0: + mu = max(M, N) * np.finfo(float).eps * nC / 2 # Machine precision parameter + else: + mu = nC*mu #it is relative to the initial norm + + dRmax = np.ceil(0.25 * (min(M, N))) + dRmin = min(1, min(M, N)) + dRmin = max(dRmin, np.ceil(0.05 * min(M, N))) + + if(R==0): + R = np.ceil(0.005 * (min(M, N))) # Initial guess for the rank of C + dR = int(R) + TypeRankEstimate = 1 # Exponential + i = 1 # iteration counter + nC_old = c + R_old = 0 + + Q = None + B = None + + while nC > mu: + Qi = tsqr(Randomize(Ai, dR, comm)) + if Q is not None: + for j in range(4): # repeat application of projector to avoid numeric cancellation + OrthogonalProjector(Qi, Q, comm) # Qi=qr(Qi - Q @(Q.T @ Qi)) + Qi = tsqr(Qi) + Bi = distributed_transpose_mult(Qi, Ai, comm, 0) + Bi = comm.bcast(Bi, 0) # broadcast Bi to all nodes + + Ai -= Qi @ Bi + if i == 1: + Q = Qi + if comm.Get_rank()==0: + B = Bi + else: + Q = np.c_[Q, Qi] # da.concatenate([Q,Qi], axis=1) #how to make this concatenation??? + if comm.Get_rank()==0: + B = np.r_[B, Bi] # da.concatenate([B,Bi], axis=0) + nC = TotalNorm(Ai, comm) + if(comm.Get_rank() == 0): + print('iter = ', i, ' nC = ', nC, ' dR = ', dR, ' R = ', Q.shape[1]) + R_new = Q.shape[1] + if TypeRankEstimate == 0: + Rest = R_old + (R_new - R_old) / (nC - nC_old) * \ + (mu - nC_old) # Estimated rank (linear) + elif TypeRankEstimate == 1: + Rest = R_old + (R_new - R_old) / (np.log(nC) - np.log(nC_old)) * ( + np.log(mu) - np.log(nC_old)) # Logarithmic Rank Estimation + else: + Rest = R_old + dRmin + dR = np.ceil(Rest - R_new) + dR = min(dR, dRmax) + dR = max(dR, dRmin) + Rest = R_new + dR + dR = int(dR) + if Rest >= N: + print("FULL") + Q = 'FULL' + B = np.array([]) + # break + i += 1 + R_old = R + nC_old = nC + R = Rest + + return Q, B + + + +def svd_parallel(Q, B, comm, epsilon=0): + + if(comm.rank == 0): + # u, s, _ = np.linalg.svd(B, full_matrices=False) + M,N=np.shape(B) + dimMATRIX = max(M,N) + u, s, v = np.linalg.svd(B, full_matrices=False) #U --> M xN, V --> N x N + v = v.T + tol = dimMATRIX*np.finfo(float).eps*max(s)/2 + R = np.sum(s > tol) # Definition of numerical rank + if epsilon == 0: + K = R + else: + SingVsq = np.multiply(s,s) + SingVsq.sort() + normEf2 = np.sqrt(np.cumsum(SingVsq)) + epsilon = epsilon*normEf2[-1] #relative tolerance + T = (sum(normEf2 -int SWE::Check(const ProcessInfo& rCurrentProcessInfo) const -{ - // Base class checks for positive Jacobian and Id > 0 - int err = Element::Check(rCurrentProcessInfo); - if(err != 0) return err; - - // Check that the element's nodes contain all required SolutionStepData and Degrees of freedom - for ( size_t i = 0; i < TNumNodes; i++ ) - { - const Node<3>& node = this->GetGeometry()[i]; - - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(MOMENTUM, node) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(VELOCITY, node) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(FREE_SURFACE_ELEVATION, node) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(TOPOGRAPHY, node) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(MANNING, node) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(RAIN, node) - - KRATOS_CHECK_DOF_IN_NODE(MOMENTUM_X, node) - KRATOS_CHECK_DOF_IN_NODE(MOMENTUM_Y, node) - KRATOS_CHECK_DOF_IN_NODE(FREE_SURFACE_ELEVATION, node) - } - - return err; -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::EquationIdVector(EquationIdVectorType& rResult, const ProcessInfo& rCurrentProcessInfo) const -{ - const size_t element_size = TNumNodes*3; - if(rResult.size() != element_size) - rResult.resize(element_size,false); // False says not to preserve existing storage!! - - const GeometryType& rGeom = GetGeometry(); - - int counter=0; - for (size_t i = 0; i < TNumNodes; i++) - { - rResult[counter++] = rGeom[i].GetDof(MOMENTUM_X).EquationId(); - rResult[counter++] = rGeom[i].GetDof(MOMENTUM_Y).EquationId(); - rResult[counter++] = rGeom[i].GetDof(FREE_SURFACE_ELEVATION).EquationId(); - } -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::GetDofList(DofsVectorType& rElementalDofList, const ProcessInfo& rCurrentProcessInfo) const -{ - const size_t element_size = TNumNodes*3; - if(rElementalDofList.size() != element_size) - rElementalDofList.resize(element_size); - - const GeometryType& rGeom = GetGeometry(); - - int counter=0; - for (size_t i = 0; i < TNumNodes; i++) - { - rElementalDofList[counter++] = rGeom[i].pGetDof(MOMENTUM_X); - rElementalDofList[counter++] = rGeom[i].pGetDof(MOMENTUM_Y); - rElementalDofList[counter++] = rGeom[i].pGetDof(FREE_SURFACE_ELEVATION); - } -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::CalculateLocalSystem( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - const ProcessInfo& rCurrentProcessInfo) -{ - // Resize of the Left and Right Hand side - constexpr size_t element_size = TNumNodes*3; - if(rLeftHandSideMatrix.size1() != element_size) - rLeftHandSideMatrix.resize(element_size,element_size,false); // False says not to preserve existing storage!! - - if(rRightHandSideVector.size() != element_size) - rRightHandSideVector.resize(element_size,false); // False says not to preserve existing storage!! - - const GeometryType& Geom = this->GetGeometry(); - - ElementVariables variables; - this->InitializeElementVariables(variables, rCurrentProcessInfo); - - const BoundedMatrix NContainer = Geom.ShapeFunctionsValues( GeometryData::IntegrationMethod::GI_GAUSS_2 ); // In this case, number of Gauss points and number of nodes coincides - - BoundedMatrix DN_DX; // Shape function gradients are constant since we are using linear functions - array_1d N; - double Area; - this->CalculateGeometry(DN_DX,Area); - - this->GetNodalValues(variables); - this->CalculateElementValues(DN_DX, variables); - - rLeftHandSideMatrix = ZeroMatrix(element_size, element_size); - rRightHandSideVector = ZeroVector(element_size); - - for (size_t i_gauss = 0; i_gauss < TNumNodes; ++i_gauss) - { - N = row(NContainer, i_gauss); - - this->BuildAuxiliaryMatrices(N, DN_DX, variables); - - this->AddInertiaTerms(rLeftHandSideMatrix, rRightHandSideVector, variables); - this->AddConvectiveTerms(rLeftHandSideMatrix, rRightHandSideVector, variables); - this->AddWaveTerms(rLeftHandSideMatrix, rRightHandSideVector, variables); - this->AddFrictionTerms(rLeftHandSideMatrix, rRightHandSideVector, variables); - this->AddStabilizationTerms(rLeftHandSideMatrix, rRightHandSideVector, variables); - this->AddSourceTerms(rRightHandSideVector, variables); - } - - // Substracting the Dirichlet term (since we use a residualbased approach) - rRightHandSideVector -= prod(rLeftHandSideMatrix, variables.unknown); - - rRightHandSideVector *= Area * variables.lumping_factor; - rLeftHandSideMatrix *= Area * variables.lumping_factor; - - double residual = norm_1(rRightHandSideVector); - this->SetValue(RESIDUAL_NORM, residual); -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::CalculateRightHandSide( - VectorType& rRightHandSideVector, - const ProcessInfo& rCurrentProcessInfo) -{ - KRATOS_THROW_ERROR(std::logic_error, "method not implemented" , ""); -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::CalculateOnIntegrationPoints( - const Variable& rVariable, - std::vector& rValues, - const ProcessInfo& rCurrentProcessInfo) -{ - if (rVariable == VEL_ART_VISC || rVariable == PR_ART_VISC || rVariable == RESIDUAL_NORM) - { - if (rValues.size() != TNumNodes) - rValues.resize(TNumNodes); - - for (size_t PointNumber = 0; PointNumber < TNumNodes; PointNumber++) - rValues[PointNumber] = this->GetValue(rVariable); - } -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::InitializeElementVariables( - ElementVariables& rVariables, - const ProcessInfo& rCurrentProcessInfo) -{ - const double delta_t = rCurrentProcessInfo[DELTA_TIME]; - rVariables.epsilon = rCurrentProcessInfo[DRY_HEIGHT]; - rVariables.dt_inv = 1.0 / delta_t; - rVariables.lumping_factor = 1.0 / static_cast(TNumNodes); - rVariables.stab_factor = rCurrentProcessInfo[STABILIZATION_FACTOR]; - rVariables.gravity = rCurrentProcessInfo[GRAVITY_Z]; - rVariables.manning2 = 0.0; - rVariables.porosity = 0.0; - rVariables.permeability = 1e-4; // This is Legacy. The variable PERMEABILITY has been removed to avoid conflict with other applications - rVariables.discharge_penalty = rCurrentProcessInfo[DRY_DISCHARGE_PENALTY]; - - const GeometryType& rGeom = GetGeometry(); - for (size_t i = 0; i < TNumNodes; i++) - { - const double f = rGeom[i].FastGetSolutionStepValue(FREE_SURFACE_ELEVATION); - const double z = rGeom[i].FastGetSolutionStepValue(TOPOGRAPHY); - const double n = rGeom[i].FastGetSolutionStepValue(MANNING); - const double h = f - z; - if (h > rVariables.epsilon) { - rVariables.manning2 += n; - rVariables.porosity += 1.0; - } else { - const double beta = 1e4; - rVariables.manning2 += n * (1 - beta * (h - rVariables.epsilon)); - rVariables.porosity += 0.0; - } - } - rVariables.manning2 *= rVariables.lumping_factor; - rVariables.manning2 = std::pow(rVariables.manning2, 2); - - rVariables.porosity *= rVariables.lumping_factor; - if (rVariables.porosity < 1.0) { - rVariables.porosity = 0.0; - } -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::CalculateGeometry(BoundedMatrix& rDN_DX, double& rArea) -{ - const GeometryType& rGeom = this->GetGeometry(); - - // We select GI_GAUSS_1 due to we are computing at the barycenter. - const GeometryType::IntegrationPointsArrayType& integration_points = rGeom.IntegrationPoints(GeometryData::IntegrationMethod::GI_GAUSS_1); - const size_t NumGPoints = integration_points.size(); - rArea = rGeom.Area(); - GeometryType::ShapeFunctionsGradientsType DN_DXContainer( NumGPoints ); - rGeom.ShapeFunctionsIntegrationPointsGradients(DN_DXContainer, GeometryData::IntegrationMethod::GI_GAUSS_1); - - rDN_DX = DN_DXContainer[0]; -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::GetNodalValues(ElementVariables& rVariables) -{ - const GeometryType& rGeom = GetGeometry(); - size_t counter = 0; - for (size_t i = 0; i < TNumNodes; i++) - { - rVariables.rain[counter] = 0; - rVariables.unknown[counter] = rGeom[i].FastGetSolutionStepValue(MOMENTUM_X); - rVariables.prev_unk[counter] = rGeom[i].FastGetSolutionStepValue(MOMENTUM_X, 1); - counter++; - - rVariables.rain[counter] = 0; - rVariables.unknown[counter] = rGeom[i].FastGetSolutionStepValue(MOMENTUM_Y); - rVariables.prev_unk[counter] = rGeom[i].FastGetSolutionStepValue(MOMENTUM_Y, 1); - counter++; - - rVariables.rain[counter] = rGeom[i].FastGetSolutionStepValue(RAIN); - rVariables.unknown[counter] = rGeom[i].FastGetSolutionStepValue(FREE_SURFACE_ELEVATION); - rVariables.prev_unk[counter] = rGeom[i].FastGetSolutionStepValue(FREE_SURFACE_ELEVATION, 1); - counter++; - } -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::CalculateElementValues( - const BoundedMatrix& rDN_DX, - ElementVariables& rVariables) -{ - // Initialize outputs - rVariables.projected_momentum = ZeroVector(3); - rVariables.height = 0.0; - rVariables.surface_grad = ZeroVector(2); - rVariables.velocity = ZeroVector(3); - rVariables.momentum_div = 0.0; - rVariables.velocity_div = 0.0; - - const GeometryType& rGeom = GetGeometry(); - - // integrate over the element - for (size_t i = 0; i < TNumNodes; i++) - { - rVariables.velocity += rGeom[i].FastGetSolutionStepValue(VELOCITY); - const double z = rGeom[i].FastGetSolutionStepValue(TOPOGRAPHY); - const double f = rGeom[i].FastGetSolutionStepValue(FREE_SURFACE_ELEVATION); - rVariables.height += f - z; - rVariables.surface_grad[0] += rDN_DX(i,0) * f; - rVariables.surface_grad[1] += rDN_DX(i,1) * f; - rVariables.momentum_div += rDN_DX(i,0) * rGeom[i].FastGetSolutionStepValue(MOMENTUM_X); - rVariables.momentum_div += rDN_DX(i,1) * rGeom[i].FastGetSolutionStepValue(MOMENTUM_Y); - rVariables.velocity_div += rDN_DX(i,0) * rGeom[i].FastGetSolutionStepValue(VELOCITY_X); - rVariables.velocity_div += rDN_DX(i,1) * rGeom[i].FastGetSolutionStepValue(VELOCITY_Y); - rVariables.projected_momentum += rGeom[i].FastGetSolutionStepValue(MOMENTUM, 1); - } - - rVariables.velocity *= rVariables.lumping_factor; - rVariables.height *= rVariables.lumping_factor; - rVariables.height = std::max(rVariables.height, 0.0); - rVariables.projected_momentum *= rVariables.lumping_factor; - - rVariables.wave_vel_2 = rVariables.gravity * rVariables.height; -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::ComputeStabilizationParameters( - const ElementVariables& rVariables, - double& rTauU, - double& rTauF) -{ - // Get element values - const double elem_size = this->GetGeometry().Length(); - const double CTau = rVariables.stab_factor; // 0.005 ~ 0.002 - - // Wave mixed form stabilization - rTauU = CTau * elem_size * std::sqrt(rVariables.wave_vel_2); - rTauF = CTau * elem_size / (std::sqrt(rVariables.wave_vel_2) + rVariables.epsilon); - - // Discontinuity capturing - const double mom_div_norm = std::abs(rVariables.momentum_div); - const double surface_grad_norm = norm_2(rVariables.surface_grad); - rTauU += 0.5 * 0.1 * elem_size * mom_div_norm; - rTauF += 0.5 * 0.1 * elem_size * surface_grad_norm; -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::ComputeConvectionStabilizationParameters( - const ElementVariables& rVariables, - double& rTau) -{ - // Get element values - const double elem_size = this->GetGeometry().Length(); - const double CTau = rVariables.stab_factor; // 0.005 ~ 0.002 - - // Convective stabilization - if (TFramework == Eulerian) - { - const double vel_modulus = norm_2(rVariables.velocity) + rVariables.epsilon; - rTau = CTau * elem_size / vel_modulus; - } - else - { - rTau = 0.0; - } -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::BuildAuxiliaryMatrices( - const array_1d& rN, - const BoundedMatrix& rDN_DX, - ElementVariables& rVariables) -{ - rVariables.N_q = ZeroMatrix(2, rVariables.LocalSize); // Momentum balance test functions - rVariables.N_h = ZeroVector(rVariables.LocalSize); // Mass balance test functions - rVariables.DN_DX_q = ZeroVector(rVariables.LocalSize); - rVariables.DN_DX_h = ZeroMatrix(2, rVariables.LocalSize); - rVariables.Grad_q1 = ZeroMatrix(2, rVariables.LocalSize); - rVariables.Grad_q2 = ZeroMatrix(2, rVariables.LocalSize); - - // Build the shape and derivatives functions at the Gauss point - for(size_t node = 0; node < TNumNodes; ++node) - { - // Momentum balance test functions - rVariables.N_q(0, node*3) = rN[node]; - rVariables.N_q(1, 1+node*3) = rN[node]; - // Mass balance test funtions - rVariables.N_h[2+node*3] = rN[node]; - // Momentum balance test functions divergence - rVariables.DN_DX_q[ node*3] = rDN_DX(node,0); - rVariables.DN_DX_q[1+node*3] = rDN_DX(node,1); - // Mass balance test functions gradients - rVariables.DN_DX_h(0, 2+node*3) = rDN_DX(node,0); - rVariables.DN_DX_h(1, 2+node*3) = rDN_DX(node,1); - // Momentum balance test functions gradients - rVariables.Grad_q1(0, node*3) = rDN_DX(node,0); - rVariables.Grad_q1(1, 1+node*3) = rDN_DX(node,0); - rVariables.Grad_q2(0, node*3) = rDN_DX(node,1); - rVariables.Grad_q2(1, 1+node*3) = rDN_DX(node,1); - } -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::AddInertiaTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables) -{ - LocalMatrixType mass_matrix; - mass_matrix = prod(trans(rVariables.N_q), rVariables.N_q); - mass_matrix += outer_prod(rVariables.N_h, rVariables.N_h); - rLeftHandSideMatrix += rVariables.dt_inv * rVariables.porosity * mass_matrix; - rRightHandSideVector += rVariables.dt_inv * rVariables.porosity * prod(mass_matrix, rVariables.prev_unk); -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::AddConvectiveTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables) -{ - if (TFramework == Eulerian) - { - BoundedMatrix convection_operator; - convection_operator = rVariables.velocity[0] * rVariables.Grad_q1; - convection_operator += rVariables.velocity[1] * rVariables.Grad_q2; - - // Convective term - rLeftHandSideMatrix += prod(trans(rVariables.N_q), convection_operator); // q * u * grad_q - rLeftHandSideMatrix += rVariables.velocity_div * prod(trans(rVariables.N_q), rVariables.N_q); // q * div_u * q - - // Convection stabilization term - double tau; - this->ComputeConvectionStabilizationParameters(rVariables, tau); - rLeftHandSideMatrix += tau * prod(trans(convection_operator), convection_operator); - rLeftHandSideMatrix += tau * rVariables.velocity_div * prod(trans(convection_operator), rVariables.N_q); - } -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::AddWaveTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables) -{ - const double p = rVariables.porosity; - rLeftHandSideMatrix += p * rVariables.wave_vel_2 * prod(trans(rVariables.N_q), rVariables.DN_DX_h); // q * grad_h (momentum balance) - rLeftHandSideMatrix += p * outer_prod(rVariables.N_h, rVariables.DN_DX_q); // h * div_q (mass balance) -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::AddFrictionTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables) -{ - const double q = norm_2(rVariables.projected_momentum) + rVariables.epsilon; - const double h73 = std::pow(rVariables.height, 2.333333333333333) + rVariables.epsilon; - LocalMatrixType vector_mass_matrix = prod(trans(rVariables.N_q), rVariables.N_q); - rLeftHandSideMatrix += rVariables.gravity * rVariables.manning2 * q / h73 * vector_mass_matrix; -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::AddStabilizationTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables) -{ - double tau_u; - double tau_f; - this->ComputeStabilizationParameters(rVariables, tau_u, tau_f); - - // Wave term stabilization - LocalMatrixType vector_diffusion = outer_prod(rVariables.DN_DX_q, rVariables.DN_DX_q); - LocalMatrixType scalar_diffusion = prod(trans(rVariables.DN_DX_h), rVariables.DN_DX_h); - const double p = rVariables.porosity; - rLeftHandSideMatrix += p * tau_u * vector_diffusion; - rLeftHandSideMatrix += p * tau_f * rVariables.wave_vel_2 * scalar_diffusion; - - // Dry domain stabilization - LocalMatrixType vector_lumped_mass = ZeroMatrix(rVariables.LocalSize, rVariables.LocalSize); - for (size_t i = 0; i < TNumNodes; ++i) - { - vector_lumped_mass( 3*i, 3*i) = 1.0; - vector_lumped_mass(1+3*i,1+3*i) = 1.0; - } - vector_lumped_mass *= rVariables.lumping_factor; - rLeftHandSideMatrix += (1 - p) * rVariables.discharge_penalty * vector_lumped_mass; - rLeftHandSideMatrix += (1 - p) * rVariables.permeability * scalar_diffusion; - - bool full_subscales = false; - if (full_subscales) { - // Friction stabilization - const double q = norm_2(rVariables.projected_momentum) + rVariables.epsilon; - const double h73 = std::pow(rVariables.height, 2.333333333333333) + rVariables.epsilon; - LocalMatrixType friction_stab = prod(trans(rVariables.DN_DX_h), rVariables.N_q); - rLeftHandSideMatrix += p * tau_f * rVariables.gravity * rVariables.manning2 * q / h73 * friction_stab; - - // Dynamic stabilization - const double dt_inv = rVariables.dt_inv; - LocalMatrixType vector_dyn_stab = prod(trans(rVariables.DN_DX_h), rVariables.N_q); - LocalMatrixType scalar_dyn_stab = outer_prod(rVariables.DN_DX_q, rVariables.N_h); - rLeftHandSideMatrix += p * tau_f * dt_inv * vector_dyn_stab; - rLeftHandSideMatrix += p * tau_f * dt_inv * scalar_dyn_stab; - rRightHandSideVector += p * tau_f * dt_inv * prod(vector_dyn_stab, rVariables.prev_unk); - rRightHandSideVector += p * tau_f * dt_inv * prod(scalar_dyn_stab, rVariables.prev_unk); - } -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::AddSourceTerms( - VectorType& rRightHandSideVector, - ElementVariables& rVariables) -{ - LocalMatrixType scalar_mass_matrix = outer_prod(rVariables.N_h, rVariables.N_h); - rRightHandSideVector += prod(scalar_mass_matrix, rVariables.rain); -} - - -template< size_t TNumNodes, ElementFramework TFramework > -void SWE::CalculateLumpedMassMatrix(LocalMatrixType& rMassMatrix) -{ - constexpr size_t local_size = 3 * TNumNodes; - rMassMatrix = IdentityMatrix(local_size, local_size); - rMassMatrix /= static_cast(TNumNodes); -} - - -template class SWE<3, Eulerian>; -template class SWE<4, Eulerian>; -template class SWE<3, PFEM2>; -template class SWE<4, PFEM2>; - -} // namespace Kratos diff --git a/applications/ShallowWaterApplication/custom_elements/swe.h b/applications/ShallowWaterApplication/custom_elements/swe.h deleted file mode 100644 index d1899b660f91..000000000000 --- a/applications/ShallowWaterApplication/custom_elements/swe.h +++ /dev/null @@ -1,364 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Miguel Maso Sotomayor -// - -#ifndef KRATOS_SWE_H_INCLUDED -#define KRATOS_SWE_H_INCLUDED - -// System includes - - -// External includes - - -// Project includes -#include "includes/define.h" -#include "includes/element.h" -#include "includes/serializer.h" -#include "custom_utilities/element_framework.h" - -namespace Kratos -{ -///@addtogroup ShallowWaterApplication -///@{ - -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/// Implementation of a linear element for shallow water problems -template< size_t TNumNodes, ElementFramework TFramework > -class SWE : public Element -{ -public: - ///@name Type Definitions - ///@{ - - /// Pointer definition - KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(SWE); - - typedef std::size_t IndexType; - - typedef Node<3> NodeType; - - typedef array_1d LocalVectorType; - - typedef BoundedMatrix LocalMatrixType; - - ///@} - ///@name Life Cycle - ///@{ - - /// Default constructor. - SWE() : Element(){} - - /// Constructor using a Geometry instance - SWE(IndexType NewId, GeometryType::Pointer pGeometry) : Element(NewId, pGeometry){} - - /// Constructor using geometry and properties - SWE(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties) : Element(NewId, pGeometry, pProperties){} - - /// Destructor. - virtual ~ SWE(){} - - ///@} - ///@name Operators - ///@{ - - - ///@} - ///@name Operations - ///@{ - - Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override - { - return Kratos::make_intrusive< SWE >(NewId, this->GetGeometry().Create(ThisNodes), pProperties); - } - - Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override - { - return Kratos::make_intrusive< SWE >(NewId, pGeom, pProperties); - } - - /** - * It clones the selected element variables, creating a new one - * @param NewId the ID of the new element - * @param rThisNodes the nodes of the new element - * @return a Pointer to the new element - */ - Element::Pointer Clone(IndexType NewId, NodesArrayType const& ThisNodes) const override - { - Element::Pointer p_new_elem = Create(NewId, this->GetGeometry().Create(ThisNodes), this->pGetProperties()); - p_new_elem->SetData(this->GetData()); - p_new_elem->Set(Flags(*this)); - return p_new_elem; - } - - - /// Check that all required data containers are properly initialized and registered in Kratos - /** - * @return 0 if no errors are detected. - */ - int Check(const ProcessInfo& rCurrentProcessInfo) const override; - - /// Fill given vector with the linear system row index for the element's degrees of freedom - /** - * @param rResult - * @param rCurrentProcessInfo - */ - void EquationIdVector(EquationIdVectorType& rResult, const ProcessInfo& rCurrentProcessInfo) const override; - - /// Fill given array with containing the element's degrees of freedom - /** - * @param rElementalDofList - * @param rCurrentProcessInfo - */ - void GetDofList(DofsVectorType& rElementalDofList, const ProcessInfo& rCurrentProcessInfo) const override; - - /// Evaluate the elemental contribution to the problem for turbulent viscosity. - /** - * @param rLeftHandSideMatrix Elemental left hand side matrix - * @param rRightHandSideVector Elemental right hand side vector - * @param rCurrentProcessInfo Reference to the ProcessInfo from the ModelPart containg the element - */ - void CalculateLocalSystem(MatrixType& rLeftHandSideMatrix, VectorType& rRightHandSideVector, const ProcessInfo& rCurrentProcessInfo) override; - - void CalculateRightHandSide(VectorType& rRightHandSideVector, const ProcessInfo& rCurrentProcessInfo) override; - - void CalculateOnIntegrationPoints(const Variable& rVariable, std::vector& rValues, const ProcessInfo& rCurrentProcessInfo) override; - - ///@} - ///@name Access - ///@{ - - - ///@} - ///@name Inquiry - ///@{ - - - ///@} - ///@name Input and output - ///@{ - - - ///@} - ///@name Friends - ///@{ - - - ///@} - -protected: - ///@name Protected static Member Variables - ///@{ - - - ///@} - ///@name Protected member Variables - ///@{ - - - ///@} - ///@name Protected Operators - ///@{ - - - ///@} - ///@name Protected Operations - ///@{ - - struct ElementVariables - { - // Constants - static constexpr size_t LocalSize = TNumNodes * 3; - - // Element values - double epsilon; - double dt_inv; - double lumping_factor; - double stab_factor; - double gravity; - double manning2; - double porosity; - double height_units; - double permeability; - double discharge_penalty; - - // Element variables - array_1d projected_momentum; // It is used to compute friction terms - double momentum_div; // It is used to compute shock capturing - double velocity_div; // It is used to compute the convective term - double height; - double wave_vel_2; - array_1d surface_grad; // Is used to compute shock capturing - array_1d velocity; // It is used to compute the convective stabilization - - // Unknowns and nodal values - LocalVectorType rain; - LocalVectorType unknown; - LocalVectorType prev_unk; - - // Shape functions and derivatives - BoundedMatrix N_q; - array_1d N_h; - array_1d DN_DX_q; - BoundedMatrix DN_DX_h; - BoundedMatrix Grad_q1; - BoundedMatrix Grad_q2; - }; - - void InitializeElementVariables(ElementVariables& rVariables, const ProcessInfo& rCurrentProcessInfo); - - void CalculateGeometry(BoundedMatrix& rDN_DX, double& rArea); - - void GetNodalValues(ElementVariables& rVariables); - - void CalculateElementValues(const BoundedMatrix& rDN_DX, ElementVariables& rVariables); - - void ComputeStabilizationParameters( - const ElementVariables& rVariables, - double& rTauU, - double& rTauF); - - void ComputeConvectionStabilizationParameters( - const ElementVariables& rVariables, - double& rTau); - - void BuildAuxiliaryMatrices( - const array_1d& rN, - const BoundedMatrix& rDN_DX, - ElementVariables& rVariables); - - void AddInertiaTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables); - - void AddConvectiveTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables); - - void AddWaveTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables); - - void AddFrictionTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables); - - void AddStabilizationTerms( - MatrixType& rLeftHandSideMatrix, - VectorType& rRightHandSideVector, - ElementVariables& rVariables); - - void AddSourceTerms( - VectorType& rRightHandSideVector, - ElementVariables& rVariables); - - void CalculateLumpedMassMatrix(LocalMatrixType& rMassMatrix); - - ///@} - ///@name Protected Access - ///@{ - - - ///@} - ///@name Protected Inquiry - ///@{ - - - ///@} - ///@name Protected LifeCycle - ///@{ - - - ///@} - -private: - ///@name Static Member Variables - ///@{ - - - ///@} - ///@name Member Variables - ///@{ - - - ///@} - ///@name Serialization - ///@{ - - friend class Serializer; - - ///@} - ///@name Private Operators - ///@{ - - - ///@} - ///@name Private Operations - ///@{ - - ///@} - ///@name Private Access - ///@{ - - - ///@} - ///@name Private Inquiry - ///@{ - - - ///@} - ///@name Un accessible methods - ///@{ - - - ///@} - -}; // Class SWE - -///@} -///@name Type Definitions -///@{ - - -///@} -///@name Input and output -///@{ - - -///@} - -///@} addtogroup block - -} // namespace Kratos. - -#endif // KRATOS_SWE_H_INCLUDED defined diff --git a/applications/ShallowWaterApplication/custom_processes/elemental_refining_criteria_process.h b/applications/ShallowWaterApplication/custom_processes/elemental_refining_criteria_process.h deleted file mode 100644 index f4b6a2c00715..000000000000 --- a/applications/ShallowWaterApplication/custom_processes/elemental_refining_criteria_process.h +++ /dev/null @@ -1,311 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Miguel Maso Sotomayor -// - -#ifndef KRATOS_ELEMENTAL_REFINING_CRITERIA_PROCESS_H_INCLUDED -#define KRATOS_ELEMENTAL_REFINING_CRITERIA_PROCESS_H_INCLUDED - -// System includes - - -// External includes - - -// Project includes -#include "processes/process.h" -#include "includes/model_part.h" -#include "includes/kratos_parameters.h" -#include "utilities/parallel_utilities.h" -#include "shallow_water_application_variables.h" - - -namespace Kratos -{ -///@addtogroup ShallowWaterApplication -///@{ - -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/// Short class definition. -/** Detail class definition. -*/ -class ElementalRefiningCriteriaProcess : public Process -{ -public: - ///@name Type Definitions - ///@{ - - typedef Node<3> NodeType; - - /// Pointer definition of ElementalRefiningCriteriaProcess - KRATOS_CLASS_POINTER_DEFINITION(ElementalRefiningCriteriaProcess); - - ///@} - ///@name Life Cycle - ///@{ - - /// Constructor - ElementalRefiningCriteriaProcess( - ModelPart& rThisModelPart, - const Variable& rThisVariable, - double Threshold, - bool OnlyRefineWetDomain - ) : mrModelPart(rThisModelPart) - , mpVariable(&rThisVariable) - , mThreshold(Threshold) - , mOnlyRefineWetDomain(OnlyRefineWetDomain) - {} - - /// Constructor with parameters - ElementalRefiningCriteriaProcess( - ModelPart& rThisModelPart, - Parameters ThisParameters = Parameters(R"({})") - ) : mrModelPart(rThisModelPart) - { - - Parameters default_parameters = Parameters(R"( - { - "error_variable" : "RESIDUAL_NORM", - "variable_threshold" : 1e-2, - "only_refine_wet_domain" : true - })"); - ThisParameters.ValidateAndAssignDefaults(default_parameters); - - mpVariable = &KratosComponents< Variable >::Get(ThisParameters["error_variable"].GetString()); - mThreshold = ThisParameters["variable_threshold"].GetDouble(); - mOnlyRefineWetDomain = ThisParameters["only_refine_wet_domain"].GetBool(); - - } - - /// Destructor. - virtual ~ElementalRefiningCriteriaProcess() {} - - ///@} - ///@name Operators - ///@{ - - void Execute() override - { - EvaluateCondition(); - } - - ///@} - ///@name Operations - ///@{ - - - ///@} - ///@name Access - ///@{ - - - ///@} - ///@name Inquiry - ///@{ - - - ///@} - ///@name Input and output - ///@{ - - /// Turn back information as a string. - virtual std::string Info() const override - { - return "ElementalRefiningCriteriaProcess"; - } - - /// Print information about this object. - virtual void PrintInfo(std::ostream& rOStream) const override - { - rOStream << Info(); - } - - /// Print object's data. - virtual void PrintData(std::ostream& rOStream) const override - {} - - - ///@} - ///@name Friends - ///@{ - - - ///@} - -protected: - ///@name Protected static Member Variables - ///@{ - - - ///@} - ///@name Protected member Variables - ///@{ - - - ///@} - ///@name Protected Operators - ///@{ - - - ///@} - ///@name Protected Operations - ///@{ - - void EvaluateCondition() - { - // Reset the flag - block_for_each(mrModelPart.Nodes(), [&](NodeType& rNode){ - rNode.Set(TO_REFINE, false); - }); - - // Evaluate the condition - block_for_each(mrModelPart.Elements(), [&](Element& rElem){ - if (rElem.GetValue(*mpVariable) > mThreshold) - { - bool active_elem = true; - if (mOnlyRefineWetDomain) - { - bool element_is_wet = false; - for (NodeType& node : rElem.GetGeometry()) - { - if (node.FastGetSolutionStepValue(HEIGHT) > 0.0) - element_is_wet = true; - } - active_elem = element_is_wet; - } - if (active_elem) - { - for (NodeType& node : rElem.GetGeometry()) - { - node.SetLock(); - node.Set(TO_REFINE, true); - node.UnSetLock(); - } - } - } - }); - } - - ///@} - ///@name Protected Access - ///@{ - - - ///@} - ///@name Protected Inquiry - ///@{ - - - ///@} - ///@name Protected LifeCycle - ///@{ - - - ///@} - -private: - ///@name Static Member Variables - ///@{ - - - ///@} - ///@name Member Variables - ///@{ - - ModelPart& mrModelPart; - const Variable* mpVariable; - double mThreshold; - bool mOnlyRefineWetDomain; - - ///@} - ///@name Private Operators - ///@{ - - - ///@} - ///@name Private Operations - ///@{ - - - ///@} - ///@name Private Access - ///@{ - - - ///@} - ///@name Private Inquiry - ///@{ - - - ///@} - ///@name Un accessible methods - ///@{ - - /// Assignment operator. - ElementalRefiningCriteriaProcess& operator=(ElementalRefiningCriteriaProcess const& rOther); - - /// Copy constructor. - ElementalRefiningCriteriaProcess(ElementalRefiningCriteriaProcess const& rOther); - - - ///@} - -}; // Class ElementalRefiningCriteriaProcess - -///@} - -///@name Type Definitions -///@{ - - -///@} -///@name Input and output -///@{ - - -/// input stream function -inline std::istream& operator >> (std::istream& rIStream, - ElementalRefiningCriteriaProcess& rThis); - -/// output stream function -inline std::ostream& operator << (std::ostream& rOStream, - const ElementalRefiningCriteriaProcess& rThis) -{ - rThis.PrintInfo(rOStream); - rOStream << std::endl; - rThis.PrintData(rOStream); - - return rOStream; -} -///@} - -///@} addtogroup block - -} // namespace Kratos. - -#endif // KRATOS_ELEMENTAL_REFINING_CRITERIA_PROCESS_H_INCLUDED defined diff --git a/applications/ShallowWaterApplication/custom_python/add_custom_processes_to_python.cpp b/applications/ShallowWaterApplication/custom_python/add_custom_processes_to_python.cpp index b6d8324de73b..01cb2ae43c1c 100644 --- a/applications/ShallowWaterApplication/custom_python/add_custom_processes_to_python.cpp +++ b/applications/ShallowWaterApplication/custom_python/add_custom_processes_to_python.cpp @@ -20,7 +20,6 @@ #include "includes/define_python.h" #include "processes/process.h" #include "custom_python/add_custom_processes_to_python.h" -#include "custom_processes/elemental_refining_criteria_process.h" #include "custom_processes/apply_perturbation_function_process.h" #include "custom_processes/apply_sinusoidal_function_process.h" #include "custom_processes/calculate_distance_to_boundary_process.h" @@ -37,13 +36,6 @@ namespace Python { namespace py = pybind11; - py::class_ - (m, "ElementalRefiningCriteriaProcess") - .def(py::init()) - .def(py::init()) - .def(py::init&, double, bool>()) - ; - typedef ApplyPerturbationFunctionProcess> ApplyPerturbationScalarFunctionProcess; py::class_ (m, "ApplyPerturbationFunctionToScalar") diff --git a/applications/ShallowWaterApplication/custom_python/add_custom_utilities_to_python.cpp b/applications/ShallowWaterApplication/custom_python/add_custom_utilities_to_python.cpp index ff145ed7535d..6c714f55fe50 100644 --- a/applications/ShallowWaterApplication/custom_python/add_custom_utilities_to_python.cpp +++ b/applications/ShallowWaterApplication/custom_python/add_custom_utilities_to_python.cpp @@ -18,10 +18,8 @@ // Project includes #include "add_custom_utilities_to_python.h" -#include "custom_utilities/move_shallow_water_particle_utility.h" #include "custom_utilities/estimate_dt_utility.h" #include "custom_utilities/shallow_water_utilities.h" -#include "custom_utilities/bfecc_convection_utility.h" #include "custom_utilities/move_shallow_mesh_utility.h" #include "custom_utilities/derivatives_recovery_utility.h" @@ -63,22 +61,6 @@ void AddCustomUtilitiesToPython(pybind11::module& m) { namespace py = pybind11; - py::class_< MoveShallowWaterParticleUtility<2> > (m, "MoveShallowWaterParticleUtility") - .def(py::init()) - .def("MountBin", &MoveShallowWaterParticleUtility<2>::MountBin) - .def("MoveParticles", &MoveShallowWaterParticleUtility<2>::MoveParticles) - .def("CorrectParticlesWithoutMovingUsingDeltaVariables", &MoveShallowWaterParticleUtility<2>::CorrectParticlesWithoutMovingUsingDeltaVariables) - .def("PreReseed", &MoveShallowWaterParticleUtility<2>::PreReseed) - .def("PostReseed", &MoveShallowWaterParticleUtility<2>::PostReseed) - .def("ResetBoundaryConditions", &MoveShallowWaterParticleUtility<2>::ResetBoundaryConditions) - .def("TransferLagrangianToEulerian",&MoveShallowWaterParticleUtility<2>::TransferLagrangianToEulerian) - .def("CalculateVelOverElemSize", &MoveShallowWaterParticleUtility<2>::CalculateVelOverElemSize) - .def("CalculateDeltaVariables", &MoveShallowWaterParticleUtility<2>::CalculateDeltaVariables) - .def("CopyScalarVarToPreviousTimeStep", &MoveShallowWaterParticleUtility<2>::CopyScalarVarToPreviousTimeStep) - .def("CopyVectorVarToPreviousTimeStep", &MoveShallowWaterParticleUtility<2>::CopyVectorVarToPreviousTimeStep) - .def("ExecuteParticlesPrintingTool", &MoveShallowWaterParticleUtility<2>::ExecuteParticlesPrintingTool) - ; - py::class_< ShallowWaterUtilities > (m, "ShallowWaterUtilities") .def(py::init<>()) .def("ComputeFreeSurfaceElevation", &ShallowWaterUtilities::ComputeFreeSurfaceElevation) @@ -131,17 +113,6 @@ void AddCustomUtilitiesToPython(pybind11::module& m) .def("Execute", &EstimateTimeStepUtility::Execute) ; - py::class_< BFECCConvectionUtility<2> > (m, "BFECCConvectionUtility") - .def(py::init()) - .def(py::init()) - .def("Convect", &BFECCConvectionUtility<2>::Convect,double>) - .def("Convect", &BFECCConvectionUtility<2>::Convect>,array_1d>) - .def("UpdateSearchDatabase", &BFECCConvectionUtility<2>::UpdateSearchDatabase) - .def("ResetBoundaryConditions", &BFECCConvectionUtility<2>::ResetBoundaryConditions>) - .def("CopyVariableToPreviousTimeStep", &BFECCConvectionUtility<2>::CopyVariableToPreviousTimeStep>) - .def("CopyVariableToPreviousTimeStep", &BFECCConvectionUtility<2>::CopyVariableToPreviousTimeStep>>) - ; - py::class_(m, "MoveShallowMeshUtility") .def(py::init()) .def("Check", &MoveShallowMeshUtility::Check) diff --git a/applications/ShallowWaterApplication/custom_utilities/bfecc_convection_utility.h b/applications/ShallowWaterApplication/custom_utilities/bfecc_convection_utility.h deleted file mode 100644 index 6a7134b6363a..000000000000 --- a/applications/ShallowWaterApplication/custom_utilities/bfecc_convection_utility.h +++ /dev/null @@ -1,321 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Miguel Maso Sotomayor -// - - -#ifndef KRATOS_BFECC_CONVECTION_UTILITY_H_INCLUDED -#define KRATOS_BFECC_CONVECTION_UTILITY_H_INCLUDED - -// System includes - - -// External includes - - -// Project includes -#include "includes/model_part.h" -#include "includes/kratos_parameters.h" -#include "includes/variables.h" -#include "spatial_containers/spatial_containers.h" -#include "utilities/binbased_fast_point_locator.h" -#include "geometries/tetrahedra_3d_4.h" -#include "utilities/parallel_utilities.h" - - -namespace Kratos -{ -///@addtogroup ShallowWaterApplication -///@{ - -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/// Explicit convection utility -/** Convection of scalars and vectors for shallow water equations using BFECC correction -*/ -template class BFECCConvectionUtility -{ - -public: - ///@name Type Definitions - ///@{ - - typedef Node<3> NodeType; - - KRATOS_CLASS_POINTER_DEFINITION(BFECCConvectionUtility); - - ///@} - ///@name Life Cycle - ///@{ - - BFECCConvectionUtility(ModelPart& rThisModelPart, Parameters ThisParameters = Parameters()) : - mrModelPart(rThisModelPart), - mSearchStructure(mrModelPart) - { - Parameters default_parameters(R"({ - "maximum_results" : 10000 - })"); - - ThisParameters.ValidateAndAssignDefaults(default_parameters); - mMaxResults = ThisParameters["maximum_results"].GetDouble(); - - mSearchStructure.UpdateSearchDatabase(); - } - - - ~BFECCConvectionUtility() = default; - - ///@} - ///@name Operators - ///@{ - - - ///@} - ///@name Operations - ///@{ - - /** - * @brief This method sets at Tn+1 the material value from Tn, using the velocity variable to convect - * @param rVar The variable to convect - * @param rConvVar The velocity variable - */ - template - void Convect(const TVarType& rVar, const Variable>& rConvVar) - { - const double dt = mrModelPart.GetProcessInfo()[DELTA_TIME]; - const int n_particles = mrModelPart.Nodes().size(); - - PointerVector< Element > elem_backward(mrModelPart.Nodes().size()); - std::vector< Vector > Ns(mrModelPart.Nodes().size()); - std::vector< bool > found(mrModelPart.Nodes().size()); - - struct TLS { - Vector N; - typename BinBasedFastPointLocator::ResultContainerType results; - }; - TLS tls; - tls.N.resize(TDim + 1); - tls.results.resize(mMaxResults); - - IndexPartition(n_particles).for_each(tls, [&](int i, TLS& rTLS){ - auto i_particle = mrModelPart.NodesBegin() + i; - auto result_begin = rTLS.results.begin(); - Element::Pointer p_element; - - array_1d bck_pos = i_particle->Coordinates(); - const array_1d& vel = i_particle->FastGetSolutionStepValue(rConvVar); - bool is_found = RK2Convect(dt, bck_pos, vel, rTLS.N, p_element, result_begin, -1, rConvVar); - found[i] = is_found; - - if(is_found) { - //save position backwards - elem_backward(i) = p_element; - Ns[i] = rTLS.N; - - Geometry< Node < 3 > >& geom = p_element->GetGeometry(); - TType phi1 = rTLS.N[0] * ( geom[0].FastGetSolutionStepValue(rVar,1)); - for (unsigned int k = 1; k < geom.size(); k++) { - phi1 += rTLS.N[k] * ( geom[k].FastGetSolutionStepValue(rVar,1) ); - } - - i_particle->FastGetSolutionStepValue(rVar) = phi1; - } - }); - - // Second loop: obtain the value at time step N by taking it from N+1 - IndexPartition(n_particles).for_each(tls, [&](int i, TLS& rTLS){ - auto i_particle = mrModelPart.NodesBegin() + i; - auto result_begin = rTLS.results.begin(); - Element::Pointer p_element; - - array_1d fwd_pos = i_particle->Coordinates(); - const array_1d& vel = i_particle->FastGetSolutionStepValue(rConvVar,1); - bool is_found = RK2Convect(dt, fwd_pos, vel, rTLS.N, p_element, result_begin, 1, rConvVar); - - if(is_found) { - Geometry< Node < 3 > >& geom = p_element->GetGeometry(); - TType phi_old = rTLS.N[0] * ( geom[0].FastGetSolutionStepValue(rVar)); - - for (unsigned int k = 1; k < geom.size(); k++) { - phi_old += rTLS.N[k] * ( geom[k].FastGetSolutionStepValue(rVar) ); - } - - // Store the correction - i_particle->SetValue(rVar, 1.5*i_particle->FastGetSolutionStepValue(rVar,1) - 0.5 * phi_old); - } - else - { - i_particle->SetValue(rVar, i_particle->FastGetSolutionStepValue(rVar,1)); - } - }); - - // Third loop: apply the correction - IndexPartition(n_particles).for_each([&](int i){ - auto i_particle = mrModelPart.NodesBegin() + i; - bool is_found = found[i]; - if(is_found) { - Vector N = Ns[i]; - Geometry< Node < 3 > >& geom = elem_backward[i].GetGeometry(); - TType phi1 = N[0] * ( geom[0].GetValue(rVar)); - for (unsigned int k = 1; k < geom.size(); k++) { - phi1 += N[k] * ( geom[k].GetValue(rVar) ); - } - - i_particle->FastGetSolutionStepValue(rVar) = phi1; - } - }); - } - - /** - * @brief This method updates the search structure if the mesh has been modified - */ - void UpdateSearchDatabase() - { - mSearchStructure.UpdateSearchDatabase(); - } - - /** - * @brief This method copy the value from Tn to Tn+1 if the variable is fixed - * @param The variable to reset if is fixed - */ - template - void ResetBoundaryConditions(const TVarType& rVar) - { - block_for_each(mrModelPart.Nodes(), [&](NodeType& rNode){ - if (rNode.IsFixed(rVar)) - rNode.FastGetSolutionStepValue(rVar) = rNode.FastGetSolutionStepValue(rVar,1); - }); - } - - /** - * This method copies the variable from Tn+1 to Tn - * @param rVar The variable to copy to the previous time step - */ - template - void CopyVariableToPreviousTimeStep(const TVarType& rVar) - { - block_for_each(mrModelPart.Nodes(), [&](NodeType& rNode){ - rNode.FastGetSolutionStepValue(rVar,1) = rNode.FastGetSolutionStepValue(rVar); - }); - } - - ///@} - ///@name Access - ///@{ - - - ///@} - ///@name Inquiry - ///@{ - - - ///@} - ///@name Input and output - ///@{ - - - ///@} - ///@name Friends - ///@{ - - - ///@} - -private: - ///@name Static Member Variables - ///@{ - - - ///@} - ///@name Member Variables - ///@{ - - ModelPart& mrModelPart; - BinBasedFastPointLocator mSearchStructure; - int mMaxResults; - - ///@} - ///@name Private Operators - ///@{ - - - ///@} - ///@name Private Operations - ///@{ - - bool RK2Convect( - const double Dt, - array_1d& rPosition, - const array_1d& rInitialVelocity, - Vector& rN, - Element::Pointer& pElement, - typename BinBasedFastPointLocator::ResultIteratorType& rResultBegin, - const int VelocitySign, - const Variable >& rConvVar) - { - bool is_found = false; - array_1d pos_step1 = rPosition + 0.5 * Dt * VelocitySign * rInitialVelocity; - is_found = mSearchStructure.FindPointOnMesh(pos_step1, rN, pElement, rResultBegin, mMaxResults); - if (is_found) - { - Geometry>& geom = pElement->GetGeometry(); - array_1d vel_step1 = 0.5 * rN[0] * (geom[0].FastGetSolutionStepValue(rConvVar) + geom[0].FastGetSolutionStepValue(rConvVar,1)); - for (std::size_t i = 1; i < geom.size(); ++i) { - vel_step1 += 0.5 * rN[i] * (geom[i].FastGetSolutionStepValue(rConvVar) + geom[i].FastGetSolutionStepValue(rConvVar,1)); - } - rPosition += Dt * VelocitySign * vel_step1; - is_found = mSearchStructure.FindPointOnMesh(rPosition, rN, pElement, rResultBegin, mMaxResults); - } - return is_found; - } - - ///@} - ///@name Private Access - ///@{ - - - ///@} - ///@name Private Inquiry - ///@{ - - - ///@} - ///@name Un accessible methods - ///@{ - - - ///@} - -}; - -///@} - -///@} addtogroup block - -} // namespace Kratos. - -#endif // KRATOS_BFECC_CONVECTION_UTILITY_H_INCLUDED defined \ No newline at end of file diff --git a/applications/ShallowWaterApplication/custom_utilities/convection_operator.h b/applications/ShallowWaterApplication/custom_utilities/convection_operator.h deleted file mode 100644 index 0a560c361968..000000000000 --- a/applications/ShallowWaterApplication/custom_utilities/convection_operator.h +++ /dev/null @@ -1,338 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Miguel Masó Sotomayor -// - - -#ifndef KRATOS_CONVECTION_OPERATOR_H_INCLUDED -#define KRATOS_CONVECTION_OPERATOR_H_INCLUDED - - -// System includes -#include -#include - - -// External includes - - -// Project includes -#include "includes/define.h" -#include "includes/model_part.h" -#include "includes/variables.h" -#include "spatial_containers/spatial_containers.h" -#include "utilities/binbased_fast_point_locator.h" - - -namespace Kratos -{ -///@addtogroup ShallowWaterOperator -///@{ - -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/// Short class definition. -/** Detail class definition. -*/ -template -class ConvectionOperator -{ -public: - ///@name Type Definitions - ///@{ - - typedef Point PointType; - typedef Geometry> GeometryType; - - /// Pointer definition of ConvectionOperator - KRATOS_CLASS_POINTER_DEFINITION(ConvectionOperator); - - ///@} - ///@name Life Cycle - ///@{ - - /// Default constructor - ConvectionOperator(ModelPart& rModelPart) - : mrModelPart(rModelPart) - , mSearchStructure(rModelPart) - { - UpdateSearchDatabase(); - } - - /// Destructor - virtual ~ConvectionOperator(){} - - ///@} - ///@name Operators - ///@{ - - - ///@} - ///@name Operations - ///@{ - - virtual void SetMaxResults(size_t MaxResults) - { - mMaxResults = MaxResults; - } - - /** - * @brief This method updates the search structure if the mesh has been modified - */ - virtual void UpdateSearchDatabase() - { - mSearchStructure.UpdateSearchDatabase(); - } - - virtual void InitializeSearch() - { - mResults = typename BinBasedFastPointLocator::ResultContainerType(mMaxResults); - miResultBegin = mResults.begin(); - } - - /** - * @brief This method convects a point with RK2 and substepping - */ - virtual bool Convect( - const double Dt, - PointType& rPosition, - Element::Pointer& pElement, - Vector& rN, - const int Substeps = 1) - { - bool is_found = false; - is_found = mSearchStructure.FindPointOnMesh(rPosition, rN, pElement, miResultBegin, mMaxResults); - if (is_found) - { - GeometryType geom = pElement->GetGeometry(); - array_1d vel = 0.5 * rN[0] * (geom[0].FastGetSolutionStepValue(VELOCITY) + geom[0].FastGetSolutionStepValue(VELOCITY,1)); - Convect(Dt, rPosition, pElement, rN, vel, Substeps); - } - return is_found; - } - - /** - * @brief This method convects a point starting from a known location with RK2 and substepping - */ - virtual bool Convect( - const double Dt, - PointType& rPosition, - Element::Pointer& pElement, - Vector& rN, - const array_1d& rInitialVelocity, - const int Substeps = 1) - { - bool is_found = false; - int sub_steps = std::abs(Substeps); - const double sub_dt = Dt / static_cast(Substeps); - for (int i = 0; i < sub_steps; ++i) - { - is_found = ConvectSingleStep(sub_dt, rPosition, pElement, rN, rInitialVelocity); - if (!is_found) break; - } - return is_found; - } - - /** - * @brief This method convects a point starting from a known location with RK2 - */ - virtual bool ConvectSingleStep( - const double Dt, - PointType& rPosition, - Element::Pointer& pElement, - Vector& rN, - const array_1d& rInitialVelocity) - { - bool is_found = false; - array_1d pos_step1 = rPosition + 0.5 * Dt * rInitialVelocity; - is_found = mSearchStructure.FindPointOnMesh(pos_step1, rN, pElement, miResultBegin, mMaxResults); - if (is_found) - { - Geometry>& geom = pElement->GetGeometry(); - array_1d vel_step1 = 0.5 * rN[0] * (geom[0].FastGetSolutionStepValue(VELOCITY) + geom[0].FastGetSolutionStepValue(VELOCITY,1)); - for (std::size_t i = 1; i < geom.size(); ++i) { - vel_step1 += 0.5 * rN[i] * (geom[i].FastGetSolutionStepValue(VELOCITY) + geom[i].FastGetSolutionStepValue(VELOCITY,1)); - } - rPosition += Dt * vel_step1; - is_found = mSearchStructure.FindPointOnMesh(rPosition, rN, pElement, miResultBegin, mMaxResults); - } - return is_found; - } - - ///@} - ///@name Access - ///@{ - - - ///@} - ///@name Inquiry - ///@{ - - - ///@} - ///@name Input and output - ///@{ - - /// Turn back information as a string. - virtual std::string Info() const - { - std::stringstream buffer; - buffer << "ConvectionOperator" ; - return buffer.str(); - } - - /// Print information about this object. - virtual void PrintInfo(std::ostream& rOStream) const {rOStream << "ConvectionOperator";} - - /// Print object's data. - virtual void PrintData(std::ostream& rOStream) const {} - - ///@} - ///@name Friends - ///@{ - - - ///@} - -protected: - ///@name Protected static Member Variables - ///@{ - - - ///@} - ///@name Protected member Variables - ///@{ - - ModelPart& mrModelPart; - BinBasedFastPointLocator mSearchStructure; - typename BinBasedFastPointLocator::ResultContainerType mResults; - typename BinBasedFastPointLocator::ResultIteratorType miResultBegin; - size_t mMaxResults; - - ///@} - ///@name Protected Operators - ///@{ - - - ///@} - ///@name Protected Operations - ///@{ - - - ///@} - ///@name Protected Access - ///@{ - - - ///@} - ///@name Protected Inquiry - ///@{ - - - ///@} - ///@name Protected LifeCycle - ///@{ - - - ///@} - -private: - ///@name Static Member Variables - ///@{ - - - ///@} - ///@name Member Variables - ///@{ - - - ///@} - ///@name Private Operators - ///@{ - - - ///@} - ///@name Private Operations - ///@{ - - - ///@} - ///@name Private Access - ///@{ - - - ///@} - ///@name Private Inquiry - ///@{ - - - ///@} - ///@name Un accessible methods - ///@{ - - /// Assignment operator. - ConvectionOperator& operator=(ConvectionOperator const& rOther){} - - /// Copy constructor. - ConvectionOperator(ConvectionOperator const& rOther){} - - ///@} - -}; // Class ConvectionOperator - -///@} - -///@name Type Definitions -///@{ - - -///@} -///@name Input and output -///@{ - -/// input stream function -// inline std::istream& operator >> (std::istream& rIStream, -// ConvectionOperator& rThis){} - -/// output stream function -// inline std::ostream& operator << (std::ostream& rOStream, -// const ConvectionOperator& rThis) -// { -// rThis.PrintInfo(rOStream); -// rOStream << std::endl; -// rThis.PrintData(rOStream); - -// return rOStream; -// } - -///@} - -///@} addtogroup block - -} // namespace Kratos. - -#endif // KRATOS_CONVECTION_OPERATOR_H_INCLUDED defined diff --git a/applications/ShallowWaterApplication/custom_utilities/derivatives_recovery_utility.cpp b/applications/ShallowWaterApplication/custom_utilities/derivatives_recovery_utility.cpp index 3a6ef39f855b..8069fbf38a21 100644 --- a/applications/ShallowWaterApplication/custom_utilities/derivatives_recovery_utility.cpp +++ b/applications/ShallowWaterApplication/custom_utilities/derivatives_recovery_utility.cpp @@ -52,7 +52,7 @@ void DerivativesRecoveryUtility::CheckRequiredNeighborsPatch(ModelPart& rM { std::size_t space_degree = 1; std::size_t required_neighbors = (space_degree + TDim) * (space_degree + TDim + 1) / 2; - if (TDim == 3) { + if constexpr (TDim == 3) { required_neighbors += 1; //NOTE: the extra node is required for accuracy in the faces for the 3D case } DerivativesRecoveryUtility::ExtendNeighborsPatch(rModelPart, required_neighbors); @@ -218,7 +218,7 @@ void DerivativesRecoveryUtility::RecoverLaplacian( for (unsigned int d = 0; d < TDim; ++d) { laplacian[d] += nodal_weights[d] * first_value[d]; } - if (TDim == 2) { + if constexpr (TDim == 2) { laplacian[0] += nodal_weights[TDim] * first_value[1]; laplacian[1] += nodal_weights[TDim] * first_value[0]; } @@ -239,7 +239,7 @@ void DerivativesRecoveryUtility::RecoverLaplacian( for (unsigned int d = 0; d < TDim; ++d) { laplacian[d] += nodal_weights[n_terms * (n+1) + d] * value[d]; } - if (TDim == 2) { + if constexpr (TDim == 2) { laplacian[0] += nodal_weights[n_terms * (n+1) + TDim] * value[1]; laplacian[1] += nodal_weights[n_terms * (n+1) + TDim] * value[0]; } @@ -330,7 +330,7 @@ bool DerivativesRecoveryUtility::CalculateNodalPolynomialWeights(NodeType& A(n+1,i_first_order) = rel_coordinates[i]; A(n+1,i_second_order) = rel_coordinates[i] * rel_coordinates[i]; } - if (TDim == 2) { + if constexpr (TDim == 2) { A(n+1,n_poly_terms-1) = rel_coordinates[0] * rel_coordinates[1]; } else { @@ -353,7 +353,7 @@ bool DerivativesRecoveryUtility::CalculateNodalPolynomialWeights(NodeType& constexpr std::size_t n_second_order_terms = n_poly_terms - first_order_terms; // x^2, y^2, xy... std::array first_derivative_terms; std::array second_derivative_terms; - if (TDim == 2) { + if constexpr (TDim == 2) { first_derivative_terms[0] = 1; first_derivative_terms[1] = 2; second_derivative_terms[0] = 3; diff --git a/applications/ShallowWaterApplication/custom_utilities/element_framework.h b/applications/ShallowWaterApplication/custom_utilities/element_framework.h deleted file mode 100644 index 2f322a95deb3..000000000000 --- a/applications/ShallowWaterApplication/custom_utilities/element_framework.h +++ /dev/null @@ -1,65 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Miguel Maso Sotomayor -// - -#ifndef KRATOS_ELEMENT_FRAMEWORK_H_INCLUDED -#define KRATOS_ELEMENT_FRAMEWORK_H_INCLUDED - -// System includes - - -// External includes - - -// Project includes - -namespace Kratos -{ -///@addtogroup ShallowWaterApplication -///@{ - -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - -///@} -///@name Enum's -///@{ - -enum ElementFramework {Eulerian = 0, PFEM2 = 1}; - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -///@} -///@name Type Definitions -///@{ - - -///@} -///@name Input and output -///@{ - - -///@} - -///@} addtogroup block -} // namespace Kratos. - -#endif // KRATOS_ELEMENT_FRAMEWORK_H_INCLUDED defined \ No newline at end of file diff --git a/applications/ShallowWaterApplication/custom_utilities/move_shallow_water_particle_utility.h b/applications/ShallowWaterApplication/custom_utilities/move_shallow_water_particle_utility.h deleted file mode 100644 index 3d0f94b28fa8..000000000000 --- a/applications/ShallowWaterApplication/custom_utilities/move_shallow_water_particle_utility.h +++ /dev/null @@ -1,1925 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Miguel Maso Sotomayor -// Pablo Becker -// - -#ifndef KRATOS_MOVE_SHALLOW_WATER_PARTICLE_UTILITY_H_INCLUDED -#define KRATOS_MOVE_SHALLOW_WATER_PARTICLE_UTILITY_H_INCLUDED - -///@defgroup MoveShallowWaterParticleUtility -///@brief Utility to move particles on the eulerian mesh with an -/// explicit scheme. This is the basic tool of the pfem2 framework - - -// System includes -#include -#include -#include - -// External includes - - -// Project includes -#include "includes/define.h" -#include "includes/checks.h" - -#include "includes/variables.h" -#include "includes/cfd_variables.h" -#include "utilities/math_utils.h" -#include "includes/global_pointer_variables.h" -#include "processes/node_erase_process.h" - -#include "utilities/geometry_utilities.h" - -#include "includes/model_part.h" -#include "includes/kratos_parameters.h" - -#include "spatial_containers/bins_dynamic_objects.h" -#include "utilities/spatial_containers_configure.h" - -#include "geometries/triangle_2d_3.h" -#include "geometries/triangle_3d_3.h" - -#include "shallow_water_application_variables.h" -#include "shallow_water_particle.h" - -#include "utilities/parallel_utilities.h" - -#include "time.h" - - -namespace Kratos -{ - -template< unsigned int TDim> -class MoveShallowWaterParticleUtility -{ -public: - - typedef Node<3> NodeType; - typedef Geometry GeometryType; - typedef SpatialContainersConfigure Configure; - typedef typename Configure::PointType PointType; - typedef typename Configure::ContainerType ContainerType; - typedef typename Configure::IteratorType IteratorType; - typedef typename Configure::ResultContainerType ResultContainerType; - typedef typename Configure::ResultIteratorType ResultIteratorType; - typedef PointerVector< ShallowParticle, ShallowParticle*, std::vector > ParticlePointerVector; - - KRATOS_CLASS_POINTER_DEFINITION(MoveShallowWaterParticleUtility); - - - MoveShallowWaterParticleUtility(ModelPart& rModelPart, Parameters rParameters) : - mrModelPart(rModelPart), - mScalarVar1(&KratosComponents< Variable >::Get( rParameters["convection_scalar_variable"].GetString() ) ), - mVectorVar1(&KratosComponents< Variable > >::Get( rParameters["convection_vector_variable"].GetString() ) ) - { - KRATOS_TRY - - std::cout << "Initializing moveparticle utility for scalar transport" << std::endl; - - Parameters default_parameters( R"( - { - "convection_scalar_variable" : "HEIGHT", - "convection_vector_variable" : "VELOCITY", - "maximum_number_of_particles" : 16 - } )" ); - - // Now validate agains defaults -- this also ensures no type mismatch - rParameters.ValidateAndAssignDefaults(default_parameters); - - m_scalar_var1_name = rParameters["convection_scalar_variable"].GetString(); - m_vector_var1_name = rParameters["convection_vector_variable"].GetString(); - mMaxNumberOfParticles = rParameters["maximum_number_of_particles"].GetDouble(); - - Check(); - //storing water and air density and their inverses, just in case it is needed for the streamline integration - //loop in elements to change their ID to their position in the array. Easier to get information later. - //DO NOT PARALELIZE THIS! IT MUST BE SERIAL!!!!!!!!!!!!!!!!!!!!!! - ModelPart::ElementsContainerType::iterator ielembegin = mrModelPart.ElementsBegin(); - for(unsigned int ii=0; iiSetId(ii+1); - } - mLastNodeId = (mrModelPart.NodesEnd() - 1)->Id(); - - - //matrix containing the position of the 4/15/45 particles that we will seed at the beggining - BoundedMatrix pos; - BoundedMatrix N; - - int particle_id=0; - mNElems = mrModelPart.Elements().size(); - - std::cout << " about to resize vectors" << std::endl; - - //setting the right size to the vector containing the particles assigned to each element - //particles vector. this vector contains ALL the particles in the simulation. - mParticlesVector.resize(mNElems*mMaxNumberOfParticles); - - //and this vector contains the current number of particles that are in each element (currently zero) - mNumOfParticlesInElems.resize(mNElems); - mNumOfParticlesInElems=ZeroVector(mNElems); - - //when moving the particles, an auxiliary vector is necessary (to store the previous number) - mNumOfParticlesInElemsAux.resize(mNElems); - - //each element will have a list of pointers to all the particles that are inside. - //this vector contains the pointers to the vector of (particle) pointers of each element. - mVectorOfParticlePointersVectors.resize(mNElems); - //int artz; - //std::cin >> artz; - int i_int=0; //careful! it's not the id, but the position inside the array! - std::cout << " about to create particles" << std::endl; - //now we seed: LOOP IN ELEMENTS - //using loop index, DO NOT parallelize this! - mOffset=0; - for(unsigned int ii=0; iiGetGeometry(); - ComputeGaussPointPositions_initial(geom, pos, N); //we also have the standard (4), and 45 - //now we seed the particles in the current element - for (unsigned int j = 0; j < pos.size1(); j++) - { - ++particle_id; - - ShallowParticle& p_particle = mParticlesVector[particle_id-1]; - p_particle.Coordinates() = row(pos,j); - - p_particle.GetEraseFlag()=false; - - array_1d & vector1 = p_particle.GetVector1(); - double & scalar1 = p_particle.GetScalar1(); - noalias(vector1) = ZeroVector(3); - scalar1=0.0; - - for (unsigned int k = 0; k < (TDim+1); k++) - { - scalar1 += N(j, k) * geom[k].FastGetSolutionStepValue(*mScalarVar1); - noalias(vector1) += N(j, k) * geom[k].FastGetSolutionStepValue(*mVectorVar1); - } - - particle_pointers(j) = &p_particle; - number_of_particles++ ; - - } - ++i_int; - } - - mNParticles=particle_id; //we save the last particle created as the total number of particles we have. For the moment this is true. - std::cout << " [Creating particles : " << mNParticles << " particles created]" << std::endl; - - mParticlePrintingToolInitialized=false; - - KRATOS_CATCH("") - } - - - ~MoveShallowWaterParticleUtility() - {} - - - void MountBin() - { - KRATOS_TRY - - //copy the elements to a new container, as the list will - //be shuffled duringthe construction of the tree - ContainerType& rElements = mrModelPart.ElementsArray(); - IteratorType it_begin = rElements.begin(); - IteratorType it_end = rElements.end(); - //const int number_of_elem = rElements.size(); - - typename BinsObjectDynamic::Pointer paux = typename BinsObjectDynamic::Pointer(new BinsObjectDynamic(it_begin, it_end ) ); - paux.swap(mpBinsObjectDynamic); - //BinsObjectDynamic mpBinsObjectDynamic(it_begin, it_end ); - - std::cout << " finished mounting Bins" << std::endl; - - KRATOS_CATCH("") - } - - - /// Calculates the mean velocity - /** This function computes the mean velocity within an element and the CFL - * This variable keeps the courant number aprox 0.1 in each substep - * - * @see MoveParticle - * @see MoveParticleInverseWay - */ - void CalculateVelOverElemSize() - { - KRATOS_TRY - - const double nodal_weight = 1.0/ (1.0 + double (TDim) ); - const double dt = mrModelPart.GetProcessInfo()[DELTA_TIME]; - - block_for_each(mrModelPart.Elements(), [&](Element& rElem){ - const GeometryType& geom = rElem.GetGeometry(); - - array_1dmean_velocity=ZeroVector(3); - - for (unsigned int i=0; i != (TDim+1) ; i++) - mean_velocity += geom[i].FastGetSolutionStepValue(VELOCITY); - mean_velocity *= nodal_weight; - - double cfl_number = dt * norm_2(mean_velocity) / rElem.GetGeometry().Length(); - rElem.SetValue(CFL_NUMBER, cfl_number); - }); - KRATOS_CATCH("") - } - - - /// Reset the boundary conditions - /** When a variable is fixed this function resets the nodal values - * with the previous time step - */ - void ResetBoundaryConditions() - { - KRATOS_TRY - - const auto& vector_var_x = KratosComponents>::Get(m_vector_var1_name+std::string("_X")); - const auto& vector_var_y = KratosComponents>::Get(m_vector_var1_name+std::string("_Y")); - const auto& vector_var_z = KratosComponents>::Get(m_vector_var1_name+std::string("_Z")); - - block_for_each(mrModelPart.Nodes(), [&](NodeType& rNode){ - if (rNode.IsFixed(*mScalarVar1)) { - rNode.FastGetSolutionStepValue(*mScalarVar1)=rNode.GetSolutionStepValue(*mScalarVar1,1); - } - if (rNode.IsFixed(vector_var_x)) { - rNode.FastGetSolutionStepValue(vector_var_x)=rNode.GetSolutionStepValue(vector_var_x,1); - } - if (rNode.IsFixed(vector_var_y)) { - rNode.FastGetSolutionStepValue(vector_var_y)=rNode.GetSolutionStepValue(vector_var_y,1); - } - if (rNode.IsFixed(vector_var_z)) { - rNode.FastGetSolutionStepValue(vector_var_z)=rNode.GetSolutionStepValue(vector_var_z,1); - } - }); - - KRATOS_CATCH("") - } - - - /// Auxiliary function to compute the "delta variables" - /** Delta variables are the difference between two time steps. - * It's value is used to update particles info - * - * @see CorrectParticlesWithoutMovingUsingDeltaVariables - */ - void CalculateDeltaVariables() - { - KRATOS_TRY - block_for_each(mrModelPart.Nodes(), [&](NodeType& rNode){ - rNode.FastGetSolutionStepValue(DELTA_SCALAR) = rNode.FastGetSolutionStepValue(*mScalarVar1) - rNode.FastGetSolutionStepValue(PROJECTED_SCALAR); - noalias(rNode.FastGetSolutionStepValue(DELTA_VECTOR)) = rNode.FastGetSolutionStepValue(*mVectorVar1) - rNode.FastGetSolutionStepValue(PROJECTED_VECTOR); - }); - KRATOS_CATCH("") - } - - - /// Auxiliary function - /** This function copy a scalar variable value to the previous time step - */ - void CopyScalarVarToPreviousTimeStep(const Variable& OriginVariable, - ModelPart::NodesContainerType& rNodes) - { - KRATOS_TRY - block_for_each(mrModelPart.Nodes(), [&](NodeType& rNode){ - rNode.GetSolutionStepValue(OriginVariable,1) = rNode.FastGetSolutionStepValue(OriginVariable); - }); - KRATOS_CATCH("") - } - - - /// Auxiliary function - /** This function copy a vector variable value to the previous time step - */ - void CopyVectorVarToPreviousTimeStep(const Variable>& OriginVariable, - ModelPart::NodesContainerType& rNodes) - { - KRATOS_TRY - block_for_each(mrModelPart.Nodes(), [&](NodeType& rNode){ - noalias(rNode.GetSolutionStepValue(OriginVariable,1)) = rNode.FastGetSolutionStepValue(OriginVariable); - }); - KRATOS_CATCH("") - } - - - /// Move all the particles - /** This function moves the particles across the streamlines - * according to the velocity given by VELOCITY variable. The - * movement is performed in nsubsteps, during a total time - * of DELTA_TIME - * - * @see Moveparticle - */ - void MoveParticles() - { - KRATOS_TRY - - const ProcessInfo& CurrentProcessInfo = mrModelPart.GetProcessInfo(); - - const int offset = mOffset; //the array of pointers for each element has twice the required size so that we use a part in odd timesteps and the other in even ones. - //moveparticlesdiff reads from the pointers of one part (ie odd) and saves into the other part (ie even part) - //since it is the only function in the whole procedure that does this, it must use alternatively one part and the other. - - bool even_timestep; - if (offset!=0) even_timestep=false; - else even_timestep=true; - - const int post_offset = mMaxNumberOfParticles * static_cast(even_timestep); //and we also save the offset to know the location in which we will save the pointers after we've moved the particles - - double delta_t = CurrentProcessInfo[DELTA_TIME]; - - array_1d N; - const unsigned int max_results = 10000; - - mMaxSubSteps = 10; - mMaxSubStepDt = delta_t / static_cast(mMaxSubSteps); - - unsigned int num_elems = mrModelPart.Elements().size(); - - IndexPartition(num_elems).for_each([&](unsigned int ii){ - int & number_of_particles = mNumOfParticlesInElems[ii]; - mNumOfParticlesInElemsAux[ii] = number_of_particles; - mNumOfParticlesInElems[ii] = 0; - }); - - std::cout << "convecting particles" << std::endl; - //We move the particles across the fixed mesh and saving change data into them (using the function MoveParticle) - - #pragma omp barrier - - struct TLS { - ResultContainerType results; - GlobalPointersVector elements_in_trajectory; - }; - TLS tls; - tls.results.resize(max_results); - tls.elements_in_trajectory.resize(20); - - IndexPartition(num_elems).for_each(tls, [&](unsigned int i, TLS& rTLS){ - auto it_old_element = mrModelPart.ElementsBegin() + i; - - ParticlePointerVector& old_element_particle_pointers = mVectorOfParticlePointersVectors[i]; - - if ( (rTLS.results.size()) != max_results ) - rTLS.results.resize(max_results); - - unsigned int number_of_elements_in_trajectory = 0; //excluding the origin one (current one, ielem) - - for (int ii = 0; ii < mNumOfParticlesInElemsAux[i]; ii++) - { - ShallowParticle& p_particle = old_element_particle_pointers[offset+ii]; - - Element::Pointer p_current_element(*it_old_element.base()); - ResultIteratorType result_begin = rTLS.results.begin(); - bool & erase_flag = p_particle.GetEraseFlag(); - if (erase_flag == false){ - MoveParticle(p_particle,p_current_element,rTLS.elements_in_trajectory,number_of_elements_in_trajectory,result_begin,max_results); //saqué N de los argumentos, no lo necesito ya q empieza SIEMPRE en un nodo y no me importa donde termina - - const int current_element_id = p_current_element->Id(); - - int & number_of_particles_in_current_elem = mNumOfParticlesInElems[current_element_id-1]; - - if (number_of_particles_in_current_elem < mMaxNumberOfParticles && erase_flag == false) - { - ParticlePointerVector& current_element_particle_pointers = mVectorOfParticlePointersVectors[current_element_id-1]; - - #pragma omp critical - { - if (number_of_particles_in_current_elem < mMaxNumberOfParticles) // we cant go over this node, there's no room. otherwise we would be in the position of the first particle of the next element!! - { - current_element_particle_pointers(post_offset+number_of_particles_in_current_elem) = &p_particle; - number_of_particles_in_current_elem++ ; - KRATOS_ERROR_IF( number_of_particles_in_current_elem > mMaxNumberOfParticles ) << - "In move shallow water particle utility: exceeded maximum number of particles" << std::endl; - } - else - { - p_particle.GetEraseFlag()=true; //so we just delete it! - } - } - } - else - { - p_particle.GetEraseFlag()=true; //so we just delete it! - } - } - } - }); - - // After having changed everything we change the status of the mOddTimeStep flag: - mOffset = post_offset; - - KRATOS_CATCH("") - } - - - /// Transfer particles information to the mesh nodes - /** This function explicitly projects data from particles (lagrangian) - * onto the eulerian mesh. Shape functions of the elements determine - * the particle location within the element and its contribution to - * each node as a weighting function. - */ - void TransferLagrangianToEulerian() //explicit - { - KRATOS_TRY - - const double threshold = 1e-10 / (static_cast(TDim)+1.0); - - std::cout << "projecting info to mesh" << std::endl; - - const int offset = mOffset; - // the array of pointers for each element has twice the required size so that - // we use a part in odd timesteps and the other in even ones. - //(flag managed only by MoveParticles) - - // We must project data from the particles (lagrangian) onto the mesh (eulerian) - - // We save data from previous time step of the eulerian mesh in case we must reuse it later - // cos no particle was found around the nodes though we could've use a bigger buffer, to be changed later! - // after having saved data, we reset them to zero, this way it's easier to add the contribution - // of the surrounding particles. - - block_for_each(mrModelPart.Nodes(), [&](NodeType& rNode){ - rNode.FastGetSolutionStepValue(PROJECTED_SCALAR)=0.0; - noalias(rNode.FastGetSolutionStepValue(PROJECTED_VECTOR))=ZeroVector(3); - rNode.FastGetSolutionStepValue(INTEGRATION_WEIGHT)=0.0; - }); - - // Adding contribution, loop on elements, since each element has stored the particles found inside of it - IndexPartition(mrModelPart.NumberOfElements()).for_each([&](unsigned int ii){ - array_1d nodes_positions; - array_1d nodes_added_vector1 = ZeroVector(3*(TDim+1)); - array_1d nodes_added_scalar1 = ZeroVector((TDim+1)); - array_1d nodes_added_weights = ZeroVector((TDim+1)); - - auto i_elem = mrModelPart.ElementsBegin() + ii; - GeometryType& geom = i_elem->GetGeometry(); - - for (int i=0 ; i!=(TDim+1) ; ++i) - { - nodes_positions[i*3+0]=geom[i].X(); - nodes_positions[i*3+1]=geom[i].Y(); - nodes_positions[i*3+2]=geom[i].Z(); - } - - int & number_of_particles_in_elem = mNumOfParticlesInElems[ii]; - ParticlePointerVector& element_particle_pointers = mVectorOfParticlePointersVectors[ii]; - - for (int iii=0; iii < number_of_particles_in_elem; iii++ ) - { - if (iii == mMaxNumberOfParticles) // It means we are out of our portion of the array, abort loop! - break; - - ShallowParticle& p_particle = element_particle_pointers[offset+iii]; - - if (p_particle.GetEraseFlag() == false) - { - array_1d & position = p_particle.Coordinates(); - const double& particle_scalar1 = p_particle.GetScalar1(); - const array_1d& particle_vector1 = p_particle.GetVector1(); - - array_1d N; - bool is_found = CalculatePosition(nodes_positions,position[0],position[1],position[2],N); - if (is_found == false) // Something went wrong. if it was close enough to the edge we simply send it inside the element. - { - KRATOS_INFO("MoveShallowWaterParticleUtility") << N << std::endl; - for (int j=0 ; j!=(TDim+1); j++) - if (N[j] < 0.0 && N[j] > -1e-5) - N[j] = 1e-10; - } - - for (int j = 0 ; j != TDim+1; j++) //going through the 3/4 nodes of the element - { - // These lines for a weighting function based on the distance (or square distance) from the node insteadof the shape functions - double weight = N(j)*N(j); - if (weight < threshold) weight=1e-10; - - nodes_added_weights[j] += weight; - nodes_added_scalar1[j] += weight*static_cast(particle_scalar1); - for (int k = 0 ; k != TDim; k++) //x,y,(z) - { - nodes_added_vector1[j*3+k] += weight * static_cast(particle_vector1[k]); - } - } - } - } - - for (int i = 0 ; i != TDim+1; ++i) { - geom[i].SetLock(); - geom[i].FastGetSolutionStepValue(PROJECTED_SCALAR) += nodes_added_scalar1[i]; - - geom[i].FastGetSolutionStepValue(PROJECTED_VECTOR_X) += nodes_added_vector1[3*i+0]; - geom[i].FastGetSolutionStepValue(PROJECTED_VECTOR_Y) += nodes_added_vector1[3*i+1]; - geom[i].FastGetSolutionStepValue(PROJECTED_VECTOR_Z) += nodes_added_vector1[3*i+2]; - - geom[i].FastGetSolutionStepValue(INTEGRATION_WEIGHT) += nodes_added_weights[i]; - geom[i].UnSetLock(); - } - }); - - block_for_each(mrModelPart.Nodes(), [&](NodeType& rNode){ - double sum_weights = rNode.FastGetSolutionStepValue(INTEGRATION_WEIGHT); - if (sum_weights > 0.00001) - { - double & scalar = rNode.FastGetSolutionStepValue(PROJECTED_SCALAR); - array_1d & vector = rNode.FastGetSolutionStepValue(PROJECTED_VECTOR); - scalar /= sum_weights; - vector /= sum_weights; - } - else // This should never happen because other ways to recover the information have been executed before, but leaving it just in case.. - { - rNode.FastGetSolutionStepValue(PROJECTED_SCALAR)=rNode.FastGetSolutionStepValue(*mScalarVar1,1); - noalias(rNode.FastGetSolutionStepValue(PROJECTED_VECTOR))=rNode.FastGetSolutionStepValue(*mVectorVar1,1); - } - }); - - KRATOS_CATCH("") - } - - - /// Update all the particles without moving them - /** This function updates all the particles variables using the - * "delta variables" from the nodal database. - * - * @see CorrectParticleUsingDeltaVariables - */ - void CorrectParticlesWithoutMovingUsingDeltaVariables() - { - KRATOS_TRY - - const int offset = mOffset; //the array of pointers for each element has twice the required size so that we use a part in odd timesteps and the other in even ones. - //(flag managed only by MoveParticles) - auto i_elem_begin = mrModelPart.ElementsBegin(); - IndexPartition(mrModelPart.NumberOfElements()).for_each([&](unsigned int i){ - auto ielem = i_elem_begin + i; - Element::Pointer p_element(*ielem.base()); - GeometryType& geom = ielem->GetGeometry(); - - int & number_of_particles_in_elem= mNumOfParticlesInElems[i]; - ParticlePointerVector& element_particle_pointers = mVectorOfParticlePointersVectors[i]; - - for (int iii = 0; iii < number_of_particles_in_elem ; iii++) - { - if (iii > mMaxNumberOfParticles) //it means we are out of our portion of the array, abort loop! - break; - - ShallowParticle& p_particle = element_particle_pointers[offset+iii]; - - bool erase_flag= p_particle.GetEraseFlag(); - if (erase_flag == false) - { - CorrectParticleUsingDeltaVariables(p_particle, p_element, geom); //'lite' version, we pass by reference the geometry, so much cheaper - } - } - }); - KRATOS_CATCH("") - } - - - /// Fill an element with particles - /** This function is to be executed after moving particles and - * before tranferring data from lagrangian particles to eulerian mesh - * If an element finishes with less particles than "minimum number - * of particles", then PreReseed adds particles inside it. - * A minimal reseed is performed in order to not disturb the projection - * from lagrangian to eulerian. - * - * @see MinimumNumberOfParticles - * - * @see MoveParticles - * @see MoveParticleInverseWay: is called to get the particle values - */ - void PreReseed(int MinimumNumberOfParticles) - { - KRATOS_TRY - - const int offset = mOffset; - const int max_results = 1000; - - struct TLS { - ResultContainerType results; - unsigned int free_particle = 0; //we start with the first position in the particles array - }; - TLS tls; - tls.results.resize(max_results); - - auto it_elem_begin = mrModelPart.ElementsBegin(); - unsigned int num_elems = mrModelPart.NumberOfElements(); - - IndexPartition(num_elems).for_each(tls, [&](unsigned int ii, TLS& rTLS){ - auto it_elem = it_elem_begin + ii; - - if (rTLS.results.size() != max_results) - rTLS.results.resize(max_results); - - int & number_of_particles_in_elem = mNumOfParticlesInElems[ii]; - ParticlePointerVector& element_particle_pointers = mVectorOfParticlePointersVectors[ii]; - if (number_of_particles_in_elem < (MinimumNumberOfParticles)) // && (it_elem->GetGeometry())[0].Y()<0.10 ) - { - BoundedMatrix pos; - BoundedMatrix N; - GeometryType& geom = it_elem->GetGeometry(); - ComputeGaussPointPositionsForPreReseed(geom, pos, N); - - for (unsigned int j = 0; j < (pos.size1()); j++) // I am dropping the last one, the one in the middle of the element - { - bool keep_looking = true; - while(keep_looking) - { - if (mParticlesVector[rTLS.free_particle].GetEraseFlag()==true) - { - #pragma omp critical - { - if (mParticlesVector[rTLS.free_particle].GetEraseFlag()==true) - { - mParticlesVector[rTLS.free_particle].GetEraseFlag()=false; - keep_looking=false; - } - } - if (keep_looking==false) - break; - else - rTLS.free_particle++; - } - else - rTLS.free_particle++; - } - - ShallowParticle p_particle(pos(j,0), pos(j,1), pos(j,2)); - - array_1d aux_N; - bool is_found = CalculatePosition(geom, pos(j,0), pos(j,1), pos(j,2), aux_N); - KRATOS_ERROR_IF_NOT( is_found ) << - "In move shallow water particle utility: particle not found in domain" << std::endl; - - p_particle.GetEraseFlag()=false; - - ResultIteratorType result_begin = rTLS.results.begin(); - Element::Pointer p_element(*it_elem.base()); - MoveParticleInverseWay(p_particle, p_element, result_begin, max_results); - - //and we copy it to the array: - mParticlesVector[rTLS.free_particle] = p_particle; - - element_particle_pointers(offset+number_of_particles_in_elem) = &mParticlesVector[rTLS.free_particle]; - p_particle.GetEraseFlag()=false; - - number_of_particles_in_elem++; - } - } - }); - - KRATOS_CATCH("") - } - - - /// Fill an element with particles - /** This function is to be executed after the mesh stage solver is - * called and the particles are updated. - * If an element contains less particles than "minimum number of - * particles", then PostReseed adds particles inside it. - * A full reseed is performed and the particle gets it's convected - * variables directly from the eulerian mesh - * - * @param MinimumNumberOfParticles - * - * @see PreReseed - */ - void PostReseed(int MinimumNumberOfParticles) //pooyan's way - { - KRATOS_TRY - - const int offset = mOffset; - - unsigned int free_particle = 0; //we start by the first position; - - auto it_elem_begin = mrModelPart.ElementsBegin(); - unsigned int num_elems = mrModelPart.NumberOfElements(); - - IndexPartition(num_elems).for_each(free_particle, [&](unsigned int ii, unsigned int FreeParticleTLS){ - auto it_elem = it_elem_begin + ii; - - int & number_of_particles_in_elem = mNumOfParticlesInElems[ii]; - ParticlePointerVector& element_particle_pointers = mVectorOfParticlePointersVectors[ii]; - - GeometryType& geom = it_elem->GetGeometry(); - if (number_of_particles_in_elem < (MinimumNumberOfParticles)) // && (geom[0].Y()<0.10) ) || (number_of_water_particles_in_elem>2 && number_of_particles_in_elem<(MinimumNumberOfParticles) ) ) - { - BoundedMatrix pos; //7 particles (2D) or 9 particles (3D) - BoundedMatrix N; - - ComputeGaussPointPositionsForPostReseed(geom, pos, N); - unsigned int number_of_reseeded_particles = 3 + 2*TDim; - for (unsigned int j = 0; j < number_of_reseeded_particles; j++) - { - // Now we have to find an empty space (a particle that was about to be deleted) in the - // particles model part. once found. there will be our renewed particle: - bool keep_looking = true; - while(keep_looking) - { - if (mParticlesVector[FreeParticleTLS].GetEraseFlag()==true) - { - #pragma omp critical - { - if (mParticlesVector[FreeParticleTLS].GetEraseFlag()==true) - { - mParticlesVector[FreeParticleTLS].GetEraseFlag()=false; - keep_looking=false; - } - } - if (keep_looking==false) - break; - - else - FreeParticleTLS++; - } - else - FreeParticleTLS++; - } - - ShallowParticle p_particle(pos(j,0), pos(j,1), pos(j,2)); - - array_1d aux_N; - bool is_found = CalculatePosition(geom, pos(j,0), pos(j,1), pos(j,2), aux_N); - KRATOS_ERROR_IF_NOT(is_found) << - "In move shallow water particle utility: particle not found in domain" << std::endl; - - double mesh_scalar1 = 0.0; - array_1d mesh_vector1 = ZeroVector(3); - - for (unsigned int l = 0; l < (TDim+1); l++) - { - mesh_scalar1 += N(j,l) * geom[l].FastGetSolutionStepValue(*mScalarVar1); - noalias(mesh_vector1) += N(j, l) * geom[l].FastGetSolutionStepValue(*mVectorVar1); - } - p_particle.GetScalar1() = mesh_scalar1; - p_particle.GetVector1() = mesh_vector1; - p_particle.GetEraseFlag() = false; - - mParticlesVector[FreeParticleTLS] = p_particle; - element_particle_pointers(offset + number_of_particles_in_elem) = &mParticlesVector[FreeParticleTLS]; - number_of_particles_in_elem++; - - KRATOS_ERROR_IF(keep_looking) << - "In move shallow water particle utility: Finished the list and couldnt find a free cell for the new particle!" << std::endl; - } - } - }); - KRATOS_CATCH("") - } - - - /// Fill a model part with particles - /** This function prints the particles to a model part - * - * @param rLagrangianModelPart: empty model part to print particles - * @param FilterFactor: the function will print one particle of every "filter factor" - */ - void ExecuteParticlesPrintingTool( ModelPart& rLagrangianModelPart, unsigned int FilterFactor ) - { - KRATOS_TRY - // We will only print one out of every "filter factor" particles of the total particle list - - if (mParticlePrintingToolInitialized == false) - { - KRATOS_ERROR_IF( rLagrangianModelPart.NodesBegin() - rLagrangianModelPart.NodesEnd() > 0 ) << - "In move shallow water particle utility: an empty model part is required for the particles printing tool" << std::endl; - - rLagrangianModelPart.AddNodalSolutionStepVariable(*mScalarVar1); - rLagrangianModelPart.AddNodalSolutionStepVariable(DISPLACEMENT); - - for (unsigned int i = 0; i != ((mMaxNumberOfParticles*mNElems)/FilterFactor) + FilterFactor; i++) - { - Node < 3 > ::Pointer pnode = rLagrangianModelPart.CreateNewNode( i+mLastNodeId+1 , 0.0, 0.0, 0.0); //recordar que es el nueevo model part!! - pnode->SetBufferSize(1); - } - mParticlePrintingToolInitialized=true; - } - - // Resetting data of the unused particles - const double inactive_particle_position = -10.0; - array_1dinactive_particle_position_vector; - inactive_particle_position_vector(0)=inactive_particle_position; - inactive_particle_position_vector(1)=inactive_particle_position; - inactive_particle_position_vector(2)=inactive_particle_position; - ModelPart::NodesContainerType::iterator inodebegin = rLagrangianModelPart.NodesBegin(); - for(unsigned int ii = 0; ii < rLagrangianModelPart.Nodes().size(); ii++) - { - ModelPart::NodesContainerType::iterator inode = inodebegin+ii; - inode->FastGetSolutionStepValue(*mScalarVar1) = 0.0; - inode->FastGetSolutionStepValue(DISPLACEMENT) = inactive_particle_position_vector; - } - - int counter = 0; - for (int i = 0; i != mMaxNumberOfParticles*mNElems; i++) - { - ShallowParticle& p_particle = mParticlesVector[i]; - if(p_particle.GetEraseFlag() == false && i%FilterFactor == 0) - { - ModelPart::NodesContainerType::iterator inode = inodebegin + counter; //copying info from the particle to the (printing) node. - inode->FastGetSolutionStepValue(*mScalarVar1) = p_particle.GetScalar1(); - inode->FastGetSolutionStepValue(DISPLACEMENT) = p_particle.Coordinates(); - counter++; - } - } - - KRATOS_CATCH("") - } - - -protected: - - -private: - - - /// Move a particle - /** this function moves a particle according to the velocity given - * by VELOCITY variable. The movement is performed in nsubsteps, - * during a total time of DELTA_TIME - * - * @param pParticle - * @param pElement - * @param rElementsInTrajectory - * @param rNumberOfElementsInTrajectory - * @param ResultBegin - * @param MaxNumberOfResults - * - * @see MoveParticles - */ - void MoveParticle(ShallowParticle & pParticle, - Element::Pointer & pElement, - GlobalPointersVector< Element >& rElementsInTrajectory, - unsigned int & rNumberOfElementsInTrajectory, - ResultIteratorType ResultBegin, - const unsigned int MaxNumberOfResults) - { - const ProcessInfo& CurrentProcessInfo = mrModelPart.GetProcessInfo(); - double delta_t = CurrentProcessInfo[DELTA_TIME]; - unsigned int nsubsteps; - double substep_dt; - - bool keep_integrating = false; - bool is_found; - - array_1d vel; - array_1d vel_without_other_phase_nodes = ZeroVector(3); - array_1d position; - array_1d mid_position; - array_1d N; - - //we start with the first position, then it will enter the loop. - position = pParticle.Coordinates(); //initial coordinates - - double only_integral = 0.0 ; - - is_found = FindNodeOnMesh(position, N, pElement, ResultBegin, MaxNumberOfResults); //good, now we know where this point is: - if(is_found == true) - { - keep_integrating = true; - GeometryType& geom = pElement->GetGeometry();//the element we're in - vel = ZeroVector(3); - - for(unsigned int j = 0; j< TDim+1; j++) - { - noalias(vel) += geom[j].FastGetSolutionStepValue(VELOCITY)*N[j]; - } - - //calculating substep to get +- courant(substep) = 0.1 - nsubsteps = 10.0 * pElement->GetValue(CFL_NUMBER); - if (nsubsteps < 1) - nsubsteps = 1; - substep_dt = delta_t / double(nsubsteps); - - only_integral = 1.0;// weight;//*double(nsubsteps); - position += vel*substep_dt;//weight; - - // DONE THE FIRST LOCATION OF THE PARTICLE, NOW WE PROCEED TO STREAMLINE INTEGRATION USING THE MESH VELOCITY - unsigned int check_from_element_number = 0; - - for(unsigned int i=0; i<(nsubsteps-1); i++)// this is for the substeps n+1. in the first one we already knew the position of the particle. - { - if (keep_integrating == true) - { - is_found = FindNodeOnMesh(position, N, pElement, rElementsInTrajectory, rNumberOfElementsInTrajectory, check_from_element_number, ResultBegin, MaxNumberOfResults); //good, now we know where this point is: - if(is_found == true) - { - GeometryType& geom = pElement->GetGeometry();//the element we're in - - vel = ZeroVector(3); - for(unsigned int j=0; j<(TDim+1); j++) - { - noalias(vel) += geom[j].FastGetSolutionStepValue(VELOCITY)*N[j]; - } - - only_integral += 1.0; //values saved for the current time step - - position += vel * substep_dt;//weight; - - } - else - { - keep_integrating = false; - break; - } - } - else - break; - } - } - - if (keep_integrating == false) (pParticle.GetEraseFlag()=true); - else is_found = FindNodeOnMesh(position, N ,pElement,ResultBegin,MaxNumberOfResults); //we must save the pointer of the last element that we're in (inside the pointervector pElement) - - if (is_found == false) ( pParticle.GetEraseFlag()=true); - - pParticle.Coordinates() = position; - } - - - /// This function updates a particle - /** This function updates a particle variables using the "delta - * variables" from the nodal database. - * - * @param pParticle - * @param pElement - * @param rGeom - * - * @see CorrectParticlesWithoutMovingUsingDeltaVariables - */ - void CorrectParticleUsingDeltaVariables(ShallowParticle & pParticle, - Element::Pointer & pElement, - GeometryType& rGeom) - { - array_1d N; - - //we start with the first position, then it will enter the loop. - array_1d coords = pParticle.Coordinates(); - double & particle_scalar1 = pParticle.GetScalar1(); - array_1d & particle_vector1 = pParticle.GetVector1(); - - //double distance=0.0; - double delta_scalar1 = 0.0; - array_1d delta_vector1 = ZeroVector(3); - - bool is_found = CalculatePosition(rGeom,coords[0],coords[1],coords[2],N); - if(is_found == false) - { - KRATOS_INFO("MoveShallowWaterParticleUtility") << N << std::endl; - for (int j = 0 ; j != TDim+1; j++) - if (N[j] < 0.0 ) - N[j] = 1e-10; - } - - for(unsigned int j=0; j<(TDim+1); j++) - { - delta_scalar1 += rGeom[j].FastGetSolutionStepValue(DELTA_SCALAR)*N[j]; - noalias(delta_vector1) += rGeom[j].FastGetSolutionStepValue(DELTA_VECTOR)*N[j]; - } - particle_scalar1 = particle_scalar1 + delta_scalar1; - particle_vector1 = particle_vector1 + delta_vector1; - } - - - /// Move a particle in the inverse way - /** this function moves a particle according to the -velocity given - * by VELOCITY variable. The movement is performed by a backward - * integration in nsubsteps, during a total time of DELTA_TIME - * Before the particle goes out of the element, gets the value - * of the eulerian mesh and stores it - * - * @param pParticle - * @param pElement - * @param ResultBegin - * @param MaxNumberOfResults - * - * @see PreReseed - */ - void MoveParticleInverseWay(ShallowParticle & pParticle, - Element::Pointer & pElement, //NOT A REFERENCE!! WE SHALL NOT OVERWRITE THE ELEMENT IT BELONGS TO! - ResultIteratorType ResultBegin, - const unsigned int MaxNumberOfResults) - { - const ProcessInfo& CurrentProcessInfo = mrModelPart.GetProcessInfo(); - double delta_t = CurrentProcessInfo[DELTA_TIME]; - unsigned int nsubsteps; - double substep_dt; - - bool keep_integrating = false; - bool is_found; - - double scalar1 = 0.0; - array_1d vector1; - array_1d vel; - array_1d position; - array_1d mid_position; - array_1d N; - - //we start with the first position, then it will enter the loop. - position = pParticle.Coordinates(); // + (pParticle)->FastGetSolutionStepValue(DISPLACEMENT); //initial coordinates - - double only_integral = 0.0 ; - - is_found = FindNodeOnMesh(position, N, pElement, ResultBegin, MaxNumberOfResults); //good, now we know where this point is: - if(is_found == true) - { - keep_integrating = true; - GeometryType& geom = pElement->GetGeometry(); //the element we're in - - scalar1 = 0.0; - vector1 = ZeroVector(3); - vel = ZeroVector(3); - - for(unsigned int j = 0; j < TDim+1; j++) - { - scalar1 += geom[j].FastGetSolutionStepValue(*mScalarVar1) * N[j]; - noalias(vector1) += geom[j].FastGetSolutionStepValue(*mVectorVar1) * N[j]; - noalias(vel) += geom[j].FastGetSolutionStepValue(VELOCITY) * N[j]; - } - //calculating substep to get +- courant(substep) = 1/4 - nsubsteps = 10.0 * pElement->GetValue(CFL_NUMBER); - if (nsubsteps < 1) - nsubsteps = 1; - substep_dt = delta_t / double(nsubsteps); - - only_integral = 1.0; // weight;//*double(nsubsteps); - position -= vel*substep_dt; //weight; - - for(unsigned int i = 0; i < nsubsteps-1; i++) // this is for the substeps n+1. in the first one we already knew the position of the particle. - { - if (keep_integrating == true) - { - is_found = FindNodeOnMesh(position, N, pElement, ResultBegin, MaxNumberOfResults); //good, now we know where this point is: - if (is_found == true) - { - GeometryType& geom = pElement->GetGeometry();//the element we're in - - scalar1 = 0.0; - vector1 = ZeroVector(3); - vel = ZeroVector(3); - - for(unsigned int j=0; j<(TDim+1); j++) - { - scalar1 += geom[j].FastGetSolutionStepValue(*mScalarVar1)*N(j); - noalias(vector1) += geom[j].FastGetSolutionStepValue(*mVectorVar1)*N[j]; - noalias(vel) += geom[j].FastGetSolutionStepValue(VELOCITY)*N[j]; - } - - only_integral += 1.0; //weight ; //values saved for the current time step - position -= vel*substep_dt; //weight; - } - else keep_integrating = false; - } - } - - pParticle.GetScalar1() = scalar1; - pParticle.GetVector1() = vector1; - } - } - - - /// Find the element into which a given node is located - /** This function should find the element into which a given node - * is located and return a pointer to the element and the vector - * containing the shape functions that define the positions within - * the element. - * If false is returned the element is not found - * - * @param position of the node - * @param N return shape functions that define the positions within the elem - * @param pElement: return a pointer to the element - * @param ResultBegin - * @param MaxNumberOfResults - * @return FindNodeOnMesh if the element is found of not - * - * @see CalculatePosition - */ - bool FindNodeOnMesh( const array_1d& rPosition, - array_1d& N, - Element::Pointer & pElement, - ResultIteratorType ResultBegin, - const unsigned int MaxNumberOfResults) - { - typedef std::size_t SizeType; - - array_1d aux_N; - //before using the bin to search for possible elements we check first the last element in which the particle was. - GeometryType& geom_default = pElement->GetGeometry(); //(*(i))->GetGeometry(); - bool is_found_1 = CalculatePosition(geom_default,rPosition[0],rPosition[1],rPosition[2],N); - if (is_found_1) //that was easy! - { - return true; - } - - // To begin with we check the neighbour elements; it is a bit more expensive - GlobalPointersVector& neighb_elems = pElement->GetValue(NEIGHBOUR_ELEMENTS); - for (unsigned int i = 0; i != neighb_elems.size(); i++) - { - if(neighb_elems(i).get()!=nullptr) - { - GeometryType& geom = neighb_elems[i].GetGeometry(); - bool is_found_2 = CalculatePosition(geom, rPosition[0], rPosition[1], rPosition[2], N); - if (is_found_2) - { - pElement = neighb_elems[i].shared_from_this(); - return true; - } - } - } - - // If checking all the neighbour elements did not work, we have to use the bins - // ask to the container for the list of candidate elements - SizeType results_found = mpBinsObjectDynamic->SearchObjectsInCell(Point{rPosition}, ResultBegin, MaxNumberOfResults ); - - if (results_found>0) - { - //loop over the candidate elements and check if the particle falls within - for(SizeType i = 0; i < results_found; i++) - { - GeometryType& geom = (*(ResultBegin + i))->GetGeometry(); - - //find local position - bool is_found_3 = CalculatePosition(geom,rPosition[0],rPosition[1],rPosition[2],N); - - if (is_found_3) - { - pElement = (*(ResultBegin + i))->shared_from_this(); - return true; - } - } - } - - //if nothing worked, then: - //not found case - return false; - } - - - /// Find the element into which a given node is located - /** This function should find the element into which a given node - * is located and return a pointer to the element and the vector - * containing the shape functions that define the positions within - * the element. - * If false is returned the element is not found - * This version includes predefined elements following a trajectory - * - * @param rPosition of the node - * @param N Output shape functions that define the positions within the elem - * @param pElement Output a pointer to the element - * @param rElementsInTrajectory - * @param rNumberOfElementsInTrajectory Output - * @param CheckFromElementNumber - * @param ResultBegin - * @param MaxNumberOfResults - * @return FindNodeOnMesh if the element is found of not - * - * @see CalculatePosition - */ - bool FindNodeOnMesh( const array_1d& rPosition, - array_1d& N, - Element::Pointer & pElement, - GlobalPointersVector< Element >& rElementsInTrajectory, - unsigned int & rNumberOfElementsInTrajectory, - unsigned int & rCheckFromElementNumber, - ResultIteratorType ResultBegin, - const unsigned int MaxNumberOfResults) - { - typedef std::size_t SizeType; - - //~ const array_1d& coords = rPosition; - array_1d aux_N; - //before using the bin to search for possible elements we check first the last element in which the particle was. - GeometryType& geom_default = pElement->GetGeometry(); //(*(i))->GetGeometry(); - bool is_found_1 = CalculatePosition(geom_default, rPosition[0], rPosition[1], rPosition[2], N); - if(is_found_1 == true) - { - return true; //that was easy! - } - - // If it was not found in the first element, we can proceed to check in the following elements (in the trajectory defined by previous particles that started from the same element. - for (unsigned int i=(rCheckFromElementNumber);i!=rNumberOfElementsInTrajectory;i++) - { - GeometryType& geom = rElementsInTrajectory[i].GetGeometry(); - bool is_found_2 = CalculatePosition(geom, rPosition[0], rPosition[1], rPosition[2], aux_N); - if (is_found_2) - { - pElement = rElementsInTrajectory[i].shared_from_this(); - N = aux_N; - rCheckFromElementNumber = i+1 ; //now i element matches pElement, so to avoid cheching twice the same element we send the counter to the following element. - return true; - } - } - - // Now we check the neighbour elements: - GlobalPointersVector< Element >& neighb_elems = pElement->GetValue(NEIGHBOUR_ELEMENTS); - for (unsigned int i=0;i!=(neighb_elems.size());i++) - { - if(neighb_elems(i).get()!=nullptr) - { - GeometryType& geom = neighb_elems[i].GetGeometry(); - bool is_found_2 = CalculatePosition(geom, rPosition[0], rPosition[1], rPosition[2], N); - if (is_found_2) - { - pElement = neighb_elems[i].shared_from_this(); - if (rNumberOfElementsInTrajectory < 20) - { - rElementsInTrajectory(rNumberOfElementsInTrajectory) = pElement; - rNumberOfElementsInTrajectory++; - rCheckFromElementNumber = rNumberOfElementsInTrajectory; //we do it after doing the ++ to the counter, so we woudlnt enter the loop that searches in the rElementsInTrajectory list. we are the particle that is adding elements to the list - } - return true; - } - } - } - - // If checking all the neighbour elements did not work, we have to use the bins - // ask to the container for the list of candidate elements - SizeType results_found = mpBinsObjectDynamic->SearchObjectsInCell(Point{rPosition}, ResultBegin, MaxNumberOfResults ); - - if(results_found>0) - { - //loop over the candidate elements and check if the particle falls within - for(SizeType i = 0; i< results_found; i++) - { - GeometryType& geom = (*(ResultBegin + i))->GetGeometry(); - - //find local position - bool is_found = CalculatePosition(geom,rPosition[0],rPosition[1],rPosition[2],N); - - if (is_found) - { - pElement = (*(ResultBegin + i))->shared_from_this(); - if (rNumberOfElementsInTrajectory < 20) - { - rElementsInTrajectory(rNumberOfElementsInTrajectory) = pElement; - rNumberOfElementsInTrajectory++; - rCheckFromElementNumber = rNumberOfElementsInTrajectory; //we do it after doing the ++ to the counter, so we woudlnt enter the loop that searches in the rElementsInTrajectory list. we are the particle that is adding elements to the list - } - return true; - } - } - } - - //not found case - return false; - } - - - /// Calculate the position of a given particle inside an element - /** This function calculates the position of a given particle inside - * an element and returns the shape functions that define it position - * within the element and returns false if the particle is otuside - * the element - * - * @param rGeom: the element (a triangle) - * @param xc: the postition of the particle - * @param yc: the postition of the particle - * @param zc: the postition of the particle - * @param N: the shape functions to define the particle position - * - * @return CalculatePosition - */ - inline bool CalculatePosition( const Geometry >&rGeom, - const double xc, - const double yc, - const double zc, - array_1d & N ) - { - double x0 = rGeom[0].X(); - double y0 = rGeom[0].Y(); - double x1 = rGeom[1].X(); - double y1 = rGeom[1].Y(); - double x2 = rGeom[2].X(); - double y2 = rGeom[2].Y(); - - double area = CalculateVol(x0, y0, x1, y1, x2, y2); - KRATOS_ERROR_IF( area == 0.0 ) << "In move shallow water particle utility: element with zero area found" << std::endl; - double inv_area = 1.0 / area; - - N[0] = CalculateVol(x1, y1, x2, y2, xc, yc) * inv_area; - N[1] = CalculateVol(x2, y2, x0, y0, xc, yc) * inv_area; - N[2] = CalculateVol(x0, y0, x1, y1, xc, yc) * inv_area; - - if (N[0] >= 0.0 && N[1] >= 0.0 && N[2] >= 0.0 && N[0] <= 1.0 && N[1] <= 1.0 && N[2] <= 1.0) - //if the xc yc is inside the triangle return true - return true; - - return false; - } - - - /// Calculate the position of a given particle inside an element - /** This function calculates the position of a given particle inside - * an element and returns the shape functions that define it position - * within the element and returns false if the particle is otuside - * the element - * - * @param rNodesPositions of the element (a triangle) - * @param xc: the postition of the particle - * @param yc: the postition of the particle - * @param zc: the postition of the particle - * @param N: the shape functions to define the particle position - * - * @return CalculatePosition - */ - inline bool CalculatePosition( const array_1d& rNodesPositions, - const double xc, - const double yc, - const double zc, - array_1d & N ) - { - const double& x0 = rNodesPositions[0]; - const double& y0 = rNodesPositions[1]; - const double& x1 = rNodesPositions[3]; - const double& y1 = rNodesPositions[4]; - const double& x2 = rNodesPositions[6]; - const double& y2 = rNodesPositions[7]; - - double area = CalculateVol(x0, y0, x1, y1, x2, y2); - KRATOS_ERROR_IF( area == 0.0 ) << "In move shallow water particle utility: element with zero area found" << std::endl; - double inv_area = 1.0 / area; - - N[0] = CalculateVol(x1, y1, x2, y2, xc, yc) * inv_area; - N[1] = CalculateVol(x2, y2, x0, y0, xc, yc) * inv_area; - N[2] = CalculateVol(x0, y0, x1, y1, xc, yc) * inv_area; - - if (N[0] >= 0.0 && N[1] >= 0.0 && N[2] >= 0.0 && N[0] <= 1.0 && N[1] <= 1.0 && N[2] <= 1.0) - //if the xc yc is inside the triangle return true - return true; - - return false; - } - - - /// Calculate the position of a given particle inside an element - /** This function calculates the position of a given particle inside - * an element and returns the shape functions that define it position - * within the element and returns false if the particle is otuside - * the element - * - * @param rGeom: the element (a tetrahedron) - * @param xc: the postition of the particle - * @param yc: the postition of the particle - * @param zc: the postition of the particle - * @param N: the shape functions to define the particle position - * - * @return CalculatePosition - */ - inline bool CalculatePosition( const Geometry >&rGeom, - const double xc, - const double yc, - const double zc, - array_1d & N ) - { - double x0 = rGeom[0].X(); - double y0 = rGeom[0].Y(); - double z0 = rGeom[0].Z(); - double x1 = rGeom[1].X(); - double y1 = rGeom[1].Y(); - double z1 = rGeom[1].Z(); - double x2 = rGeom[2].X(); - double y2 = rGeom[2].Y(); - double z2 = rGeom[2].Z(); - double x3 = rGeom[3].X(); - double y3 = rGeom[3].Y(); - double z3 = rGeom[3].Z(); - - double vol = CalculateVol(x0, y0, z0, x1, y1, z1, x2, y2, z2, x3, y3, z3); - KRATOS_ERROR_IF( vol == 0.0 ) << "In move shallow water particle utility: element with zero vol found" << std::endl; - double inv_vol = 1.0 / vol; - - N[0] = CalculateVol(x1, y1, z1, x3, y3, z3, x2, y2, z2, xc, yc, zc) * inv_vol; - N[1] = CalculateVol(x0, y0, z0, x1, y1, z1, x2, y2, z2, xc, yc, zc) * inv_vol; - N[2] = CalculateVol(x3, y3, z3, x1, y1, z1, x0, y0, z0, xc, yc, zc) * inv_vol; - N[3] = CalculateVol(x3, y3, z3, x0, y0, z0, x2, y2, z2, xc, yc, zc) * inv_vol; - - if (N[0] >= 0.0 && N[1] >= 0.0 && N[2] >= 0.0 && N[3] >= 0.0 && - N[0] <= 1.0 && N[1] <= 1.0 && N[2] <= 1.0 && N[3] <= 1.0) - //if the xc yc zc is inside the tetrahedron return true - return true; - - return false; - } - - - /// Calculate the position of a given particle inside an element - /** This function calculates the position of a given particle inside - * an element and returns the shape functions that define it position - * within the element and returns false if the particle is otuside - * the element - * - * @param rNodesPositions of the element (a tetrahedron) - * @param xc: the postition of the particle - * @param yc: the postition of the particle - * @param zc: the postition of the particle - * @param N: the shape functions to define the particle position - * - * @return CalculatePosition - */ - inline bool CalculatePosition( const array_1d& rNodesPositions, - const double xc, - const double yc, - const double zc, - array_1d & N ) - { - const double& x0 = rNodesPositions[0]; - const double& y0 = rNodesPositions[1]; - const double& z0 = rNodesPositions[2]; - const double& x1 = rNodesPositions[3]; - const double& y1 = rNodesPositions[4]; - const double& z1 = rNodesPositions[5]; - const double& x2 = rNodesPositions[6]; - const double& y2 = rNodesPositions[7]; - const double& z2 = rNodesPositions[8]; - const double& x3 = rNodesPositions[9]; - const double& y3 = rNodesPositions[10]; - const double& z3 = rNodesPositions[11]; - - double vol = CalculateVol(x0, y0, z0, x1, y1, z1, x2, y2, z2, x3, y3, z3); - KRATOS_ERROR_IF( vol == 0.0 ) << "In move shallow water particle utility: element with zero vol found" << std::endl; - double inv_vol = 1.0 / vol; - - N[0] = CalculateVol(x1, y1, z1, x3, y3, z3, x2, y2, z2, xc, yc, zc) * inv_vol; - N[1] = CalculateVol(x0, y0, z0, x1, y1, z1, x2, y2, z2, xc, yc, zc) * inv_vol; - N[2] = CalculateVol(x3, y3, z3, x1, y1, z1, x0, y0, z0, xc, yc, zc) * inv_vol; - N[3] = CalculateVol(x3, y3, z3, x0, y0, z0, x2, y2, z2, xc, yc, zc) * inv_vol; - - if (N[0] >= 0.0 && N[1] >= 0.0 && N[2] >= 0.0 && N[3] >= 0.0 && - N[0] <= 1.0 && N[1] <= 1.0 && N[2] <= 1.0 && N[3] <= 1.0) - //if the xc yc zc is inside the tetrahedron return true - return true; - - return false; - } - - - /// Calculate the volume - /** This function computes the area of a triangle - */ - inline double CalculateVol( const double x0, const double y0, - const double x1, const double y1, - const double x2, const double y2 ) - { - return 0.5 * ((x1 - x0)*(y2 - y0)- (y1 - y0)*(x2 - x0)); - } - - - /// Calculate the volume - /** This function computes the volume of a tetrahedron - */ - inline double CalculateVol( const double x0, const double y0, const double z0, - const double x1, const double y1, const double z1, - const double x2, const double y2, const double z2, - const double x3, const double y3, const double z3 ) - { - double x10 = x1 - x0; - double y10 = y1 - y0; - double z10 = z1 - z0; - - double x20 = x2 - x0; - double y20 = y2 - y0; - double z20 = z2 - z0; - - double x30 = x3 - x0; - double y30 = y3 - y0; - double z30 = z3 - z0; - - double detJ = x10 * y20 * z30 - x10 * y30 * z20 + y10 * z20 * x30 - y10 * x20 * z30 + z10 * x20 * y30 - z10 * y20 * x30; - return detJ * 0.1666666666666666666667; - } - - - /// Compute the Gauss points - /** - */ - void ComputeGaussPointPositions_4( Geometry< Node < 3 > >& geom, - BoundedMatrix & pos, - BoundedMatrix & N ) - { - double one_third = 1.0 / 3.0; - double one_sixt = 0.15; //1.0 / 6.0; - double two_third = 0.7; //2.0 * one_third; - - N(0, 0) = one_sixt; - N(0, 1) = one_sixt; - N(0, 2) = two_third; - N(1, 0) = two_third; - N(1, 1) = one_sixt; - N(1, 2) = one_sixt; - N(2, 0) = one_sixt; - N(2, 1) = two_third; - N(2, 2) = one_sixt; - N(3, 0) = one_third; - N(3, 1) = one_third; - N(3, 2) = one_third; - - //first - pos(0, 0) = one_sixt * geom[0].X() + one_sixt * geom[1].X() + two_third * geom[2].X(); - pos(0, 1) = one_sixt * geom[0].Y() + one_sixt * geom[1].Y() + two_third * geom[2].Y(); - pos(0, 2) = one_sixt * geom[0].Z() + one_sixt * geom[1].Z() + two_third * geom[2].Z(); - - //second - pos(1, 0) = two_third * geom[0].X() + one_sixt * geom[1].X() + one_sixt * geom[2].X(); - pos(1, 1) = two_third * geom[0].Y() + one_sixt * geom[1].Y() + one_sixt * geom[2].Y(); - pos(1, 2) = two_third * geom[0].Z() + one_sixt * geom[1].Z() + one_sixt * geom[2].Z(); - - //third - pos(2, 0) = one_sixt * geom[0].X() + two_third * geom[1].X() + one_sixt * geom[2].X(); - pos(2, 1) = one_sixt * geom[0].Y() + two_third * geom[1].Y() + one_sixt * geom[2].Y(); - pos(2, 2) = one_sixt * geom[0].Z() + two_third * geom[1].Z() + one_sixt * geom[2].Z(); - - //fourth - pos(3, 0) = one_third * geom[0].X() + one_third * geom[1].X() + one_third * geom[2].X(); - pos(3, 1) = one_third * geom[0].Y() + one_third * geom[1].Y() + one_third * geom[2].Y(); - pos(3, 2) = one_third * geom[0].Z() + one_third * geom[1].Z() + one_third * geom[2].Z(); - } - - - /// Compute the Gauss points - /** For a triangle - * - * @see PostReseed - */ - void ComputeGaussPointPositionsForPostReseed( Geometry< Node < 3 > >& geom, - BoundedMatrix & pos, - BoundedMatrix & N ) //2d - { - double one_third = 1.0 / 3.0; - double one_eight = 0.12; //1.0 / 6.0; - double three_quarters = 0.76; //2.0 * one_third; - - N(0, 0) = one_eight; - N(0, 1) = one_eight; - N(0, 2) = three_quarters; - - N(1, 0) = three_quarters; - N(1, 1) = one_eight; - N(1, 2) = one_eight; - - N(2, 0) = one_eight; - N(2, 1) = three_quarters; - N(2, 2) = one_eight; - - N(3, 0) = one_third; - N(3, 1) = one_third; - N(3, 2) = one_third; - - N(4, 0) = one_eight; - N(4, 1) = 0.44; - N(4, 2) = 0.44; - - N(5, 0) = 0.44; - N(5, 1) = one_eight; - N(5, 2) = 0.44; - - N(6, 0) = 0.44; - N(6, 1) = 0.44; - N(6, 2) = one_eight; - - //first - pos(0, 0) = one_eight * geom[0].X() + one_eight * geom[1].X() + three_quarters * geom[2].X(); - pos(0, 1) = one_eight * geom[0].Y() + one_eight * geom[1].Y() + three_quarters * geom[2].Y(); - pos(0, 2) = one_eight * geom[0].Z() + one_eight * geom[1].Z() + three_quarters * geom[2].Z(); - - //second - pos(1, 0) = three_quarters * geom[0].X() + one_eight * geom[1].X() + one_eight * geom[2].X(); - pos(1, 1) = three_quarters * geom[0].Y() + one_eight * geom[1].Y() + one_eight * geom[2].Y(); - pos(1, 2) = three_quarters * geom[0].Z() + one_eight * geom[1].Z() + one_eight * geom[2].Z(); - - //third - pos(2, 0) = one_eight * geom[0].X() + three_quarters * geom[1].X() + one_eight * geom[2].X(); - pos(2, 1) = one_eight * geom[0].Y() + three_quarters * geom[1].Y() + one_eight * geom[2].Y(); - pos(2, 2) = one_eight * geom[0].Z() + three_quarters * geom[1].Z() + one_eight * geom[2].Z(); - - //fourth - pos(3, 0) = one_third * geom[0].X() + one_third * geom[1].X() + one_third * geom[2].X(); - pos(3, 1) = one_third * geom[0].Y() + one_third * geom[1].Y() + one_third * geom[2].Y(); - pos(3, 2) = one_third * geom[0].Z() + one_third * geom[1].Z() + one_third * geom[2].Z(); - - //fifth - pos(4, 0) = one_eight * geom[0].X() + 0.44 * geom[1].X() + 0.44 * geom[2].X(); - pos(4, 1) = one_eight * geom[0].Y() + 0.44 * geom[1].Y() + 0.44 * geom[2].Y(); - pos(4, 2) = one_eight * geom[0].Z() + 0.44 * geom[1].Z() + 0.44 * geom[2].Z(); - - //sixth - pos(5, 0) = 0.44 * geom[0].X() + one_eight * geom[1].X() + 0.44 * geom[2].X(); - pos(5, 1) = 0.44 * geom[0].Y() + one_eight * geom[1].Y() + 0.44 * geom[2].Y(); - pos(5, 2) = 0.44 * geom[0].Z() + one_eight * geom[1].Z() + 0.44 * geom[2].Z(); - - //seventh - pos(6, 0) = 0.44 * geom[0].X() + 0.44 * geom[1].X() + one_eight * geom[2].X(); - pos(6, 1) = 0.44 * geom[0].Y() + 0.44 * geom[1].Y() + one_eight * geom[2].Y(); - pos(6, 2) = 0.44 * geom[0].Z() + 0.44 * geom[1].Z() + one_eight * geom[2].Z(); - } - - - /// Compute the Gauss points - /** For a tetrahedron - * - * @see PostReseed - */ - void ComputeGaussPointPositionsForPostReseed( Geometry< Node < 3 > >& geom, - BoundedMatrix & pos, - BoundedMatrix & N ) //3D - { - double one_quarter = 0.25; - double small_fraction = 0.1; //1.0 / 6.0; - double big_fraction = 0.7; //2.0 * one_third; - double mid_fraction = 0.3; //2.0 * one_third; - - N(0, 0) = big_fraction; - N(0, 1) = small_fraction; - N(0, 2) = small_fraction; - N(0, 3) = small_fraction; - - N(1, 0) = small_fraction; - N(1, 1) = big_fraction; - N(1, 2) = small_fraction; - N(1, 3) = small_fraction; - - N(2, 0) = small_fraction; - N(2, 1) = small_fraction; - N(2, 2) = big_fraction; - N(2, 3) = small_fraction; - - N(3, 0) = small_fraction; - N(3, 1) = small_fraction; - N(3, 2) = small_fraction; - N(3, 3) = big_fraction; - - N(4, 0) = one_quarter; - N(4, 1) = one_quarter; - N(4, 2) = one_quarter; - N(4, 3) = one_quarter; - - N(5, 0) = small_fraction; - N(5, 1) = mid_fraction; - N(5, 2) = mid_fraction; - N(5, 3) = mid_fraction; - - N(6, 0) = mid_fraction; - N(6, 1) = small_fraction; - N(6, 2) = mid_fraction; - N(6, 3) = mid_fraction; - - N(7, 0) = mid_fraction; - N(7, 1) = mid_fraction; - N(7, 2) = small_fraction; - N(7, 3) = mid_fraction; - - N(8, 0) = mid_fraction; - N(8, 1) = mid_fraction; - N(8, 2) = mid_fraction; - N(8, 3) = small_fraction; - - pos=ZeroMatrix(9,3); - for (unsigned int i=0; i!=4; i++) //going through the 4 nodes - { - array_1d & coordinates = geom[i].Coordinates(); - for (unsigned int j=0; j!=9; j++) //going through the 9 particles - { - for (unsigned int k=0; k!=3; k++) //x,y,z - pos(j,k) += N(j,i) * coordinates[k]; - } - } - } - - - /// Compute the Gauss points - /** For a triangle - * - * @see PreReseed - */ - void ComputeGaussPointPositionsForPreReseed( Geometry< Node < 3 > >& geom, - BoundedMatrix & pos, - BoundedMatrix & N ) //2D - { - N(0, 0) = 0.5; - N(0, 1) = 0.25; - N(0, 2) = 0.25; - - N(1, 0) = 0.25; - N(1, 1) = 0.5; - N(1, 2) = 0.25; - - N(2, 0) = 0.25; - N(2, 1) = 0.25; - N(2, 2) = 0.5; - - //first - pos(0, 0) = 0.5 * geom[0].X() + 0.25 * geom[1].X() + 0.25 * geom[2].X(); - pos(0, 1) = 0.5 * geom[0].Y() + 0.25 * geom[1].Y() + 0.25 * geom[2].Y(); - pos(0, 2) = 0.5 * geom[0].Z() + 0.25 * geom[1].Z() + 0.25 * geom[2].Z(); - - //second - pos(1, 0) = 0.25 * geom[0].X() + 0.5 * geom[1].X() + 0.25 * geom[2].X(); - pos(1, 1) = 0.25 * geom[0].Y() + 0.5 * geom[1].Y() + 0.25 * geom[2].Y(); - pos(1, 2) = 0.25 * geom[0].Z() + 0.5 * geom[1].Z() + 0.25 * geom[2].Z(); - - //third - pos(2, 0) = 0.25 * geom[0].X() + 0.25 * geom[1].X() + 0.5 * geom[2].X(); - pos(2, 1) = 0.25 * geom[0].Y() + 0.25 * geom[1].Y() + 0.5 * geom[2].Y(); - pos(2, 2) = 0.25 * geom[0].Z() + 0.25 * geom[1].Z() + 0.5 * geom[2].Z(); - } - - - /// Compute the Gauss points - /** For a tetrahedron - * - * @see PreReseed - */ - void ComputeGaussPointPositionsForPreReseed( Geometry< Node < 3 > >& geom, - BoundedMatrix & pos, - BoundedMatrix & N ) //3D - { - //creating 4 particles, each will be closer to a node and equidistant to the other nodes - - N(0, 0) = 0.4; - N(0, 1) = 0.2; - N(0, 2) = 0.2; - N(0, 3) = 0.2; - - N(1, 0) = 0.2; - N(1, 1) = 0.4; - N(1, 2) = 0.2; - N(1, 3) = 0.2; - - N(2, 0) = 0.2; - N(2, 1) = 0.2; - N(2, 2) = 0.4; - N(2, 3) = 0.2; - - N(3, 0) = 0.2; - N(3, 1) = 0.2; - N(3, 2) = 0.2; - N(3, 3) = 0.4; - - pos=ZeroMatrix(4,3); - for (unsigned int i=0; i!=4; i++) //going through the 4 nodes - { - array_1d & coordinates = geom[i].Coordinates(); - for (unsigned int j=0; j!=4; j++) //going through the 4 particles - { - for (unsigned int k=0; k!=3; k++) //x,y,z - pos(j,k) += N(j,i) * coordinates[k]; - } - } - - } - - - /// Compute the Gauss points - /** - */ - void ComputeGaussPointPositions_45( Geometry< Node < 3 > >& geom, - BoundedMatrix & pos, - BoundedMatrix & N ) - { - unsigned int counter=0; - for (unsigned int i=0; i!=9;i++) - { - for (unsigned int j=0; j!=(9-i);j++) - { - N(counter,0)=0.05+double(i)*0.1; - N(counter,1)=0.05+double(j)*0.1; - N(counter,2)=1.0 - ( N(counter,1)+ N(counter,0) ) ; - pos(counter, 0) = N(counter,0) * geom[0].X() + N(counter,1) * geom[1].X() + N(counter,2) * geom[2].X(); - pos(counter, 1) = N(counter,0) * geom[0].Y() + N(counter,1) * geom[1].Y() + N(counter,2) * geom[2].Y(); - pos(counter, 2) = N(counter,0) * geom[0].Z() + N(counter,1) * geom[1].Z() + N(counter,2) * geom[2].Z(); - - counter++; - } - } - } - - - /// Compute the Gauss points - /** - */ - void ComputeGaussPointPositions_initial( Geometry< Node < 3 > >& geom, - BoundedMatrix & pos, - BoundedMatrix & N ) //2D - { - unsigned int counter=0; - for (unsigned int i=0; i!=5;i++) - { - for (unsigned int j=0; j!=(5-i);j++) - { - N(counter,0)=0.05+double(i)*0.2; - N(counter,1)=0.05+double(j)*0.2; - N(counter,2)=1.0 - ( N(counter,1)+ N(counter,0) ) ; - pos(counter, 0) = N(counter,0) * geom[0].X() + N(counter,1) * geom[1].X() + N(counter,2) * geom[2].X(); - pos(counter, 1) = N(counter,0) * geom[0].Y() + N(counter,1) * geom[1].Y() + N(counter,2) * geom[2].Y(); - pos(counter, 2) = N(counter,0) * geom[0].Z() + N(counter,1) * geom[1].Z() + N(counter,2) * geom[2].Z(); - - counter++; - } - } - } - - - /// Compute the Gauss points - /** - */ - void ComputeGaussPointPositions_initial( Geometry< Node < 3 > >& geom, - BoundedMatrix & pos, - BoundedMatrix & N ) //3D - { - double fraction_increment; - unsigned int counter=0; - for (unsigned int i=0; i!=4;i++) //going to build a particle "pyramid"(tetrahedra) by layers. the first layer will be made by a triangle of 4 base X 4 height. since it is a triangle, it means it will have 10 particles - { - for (unsigned int j=0; j!=(4-i);j++) - { - for (unsigned int k=0; k!=(4-i-j);k++) - { - N(counter,0)= 0.27 * ( 0.175 + double(i) ) ; //this is our "surface" in which we will build each layer, so we must construct a triangle using what's left of the shape functions total (a total of 1) - - //total = 1.0 - N(counter,0); - fraction_increment = 0.27; // - - N(counter,1)=fraction_increment * (0.175 + double(j)); - N(counter,2)=fraction_increment * (0.175 + double(k)); - N(counter,3)=1.0 - ( N(counter,0)+ N(counter,1) + N(counter,2) ) ; - pos(counter, 0) = N(counter,0) * geom[0].X() + N(counter,1) * geom[1].X() + N(counter,2) * geom[2].X() + N(counter,3) * geom[3].X(); - pos(counter, 1) = N(counter,0) * geom[0].Y() + N(counter,1) * geom[1].Y() + N(counter,2) * geom[2].Y() + N(counter,3) * geom[3].Y(); - pos(counter, 2) = N(counter,0) * geom[0].Z() + N(counter,1) * geom[1].Z() + N(counter,2) * geom[2].Z() + N(counter,3) * geom[3].Z(); - - counter++; - } - - } - } - } - - - /// check function - int Check() - { - KRATOS_TRY - - NodeType& rnode = *mrModelPart.NodesBegin(); - - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA((*mVectorVar1), rnode) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA((*mScalarVar1), rnode) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(VELOCITY, rnode) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(DELTA_VECTOR, rnode) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(DELTA_SCALAR, rnode) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(PROJECTED_VECTOR, rnode) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(PROJECTED_SCALAR, rnode) - KRATOS_CHECK_VARIABLE_IN_NODAL_DATA(INTEGRATION_WEIGHT, rnode) - - return 0; - - KRATOS_CATCH("") - } - - - /// Member variables - ModelPart& mrModelPart; - int mNParticles; - int mNElems; - int mOffset; - int mMaxSubSteps; - double mMaxSubStepDt; - int mMaxNumberOfParticles; - std::vector< ShallowParticle > mParticlesVector; - bool mOddTimeStep; - bool mParticlePrintingToolInitialized; - unsigned int mLastNodeId; - - DenseVector mNumOfParticlesInElems; - DenseVector mNumOfParticlesInElemsAux; - DenseVector mVectorOfParticlePointersVectors; - - typename BinsObjectDynamic::Pointer mpBinsObjectDynamic; - - const Variable* mScalarVar1; - const Variable>* mVectorVar1; - std::string m_scalar_var1_name; - std::string m_vector_var1_name; - -}; // class MoveShallowWaterParticleUtility - -} // namespace Kratos. - -#endif // KRATOS_MOVE_SHALLOW_WATER_PARTICLE_UTILITY_H_INCLUDED defined diff --git a/applications/ShallowWaterApplication/custom_utilities/shallow_water_particle.h b/applications/ShallowWaterApplication/custom_utilities/shallow_water_particle.h deleted file mode 100644 index f1e6bf6ea343..000000000000 --- a/applications/ShallowWaterApplication/custom_utilities/shallow_water_particle.h +++ /dev/null @@ -1,138 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Miguel Maso Sotomayor -// Pablo Becker -// - -#ifndef KRATOS_SHALLOW_WATER_PARTICLE_H_INCLUDED -#define KRATOS_SHALLOW_WATER_PARTICLE_H_INCLUDED - - -// System includes - - -// External includes - - -// Project includes -#include "includes/define.h" -#include "geometries/point.h" -#include "includes/model_part.h" - - -namespace Kratos -{ - -///@name Kratos Globals -///@{ - -///@} -///@name Type Definitions -///@{ - -///@} -///@name Enum's -///@{ - -///@} -///@name Functions -///@{ - -///@} -///@name Kratos Classes -///@{ - -/// PFEM Particle class. - -/* -@see Geometry -@see Node -@see IntegrationPoint -*/ -//template //always size 3! -class ShallowParticle : public Point -{ -public: - ///@name Type Definitions - ///@{ - - /// Pointer definition of Point - typedef ShallowParticle* Pointer; - - typedef double TDataType; - - typedef array_1d BaseType; - - typedef Point Type; - - typedef BaseType CoordinatesArrayType; - - typedef std::size_t SizeType; - - typedef std::size_t IndexType; - - ///@} - ///@name Constants - ///@{ - - ///@} - ///@name Life Cycle - ///@{ - - /// Default constructor. - ShallowParticle(TDataType const& NewX, TDataType const& NewY, TDataType const& NewZ) : Point(NewX, NewY, NewZ) - { - this->mEraseFlag = true; //initializing as useless particle - this->mScalar1 = 0.0; - this->mVector1 = ZeroVector(3); - } - - ShallowParticle() : Point(0.0, 0.0, 0.0) - { - this->mEraseFlag = true; - this->mScalar1 = 0.0; - this->mVector1 = ZeroVector(3); - } - - ~ShallowParticle() - { - } - - // Returning references - double& GetScalar1() - { - return this->mScalar1; - } - - double& GetVector1(const unsigned int i) - { - return this->mVector1[i]; - } - - array_1d& GetVector1() - { - return this->mVector1; - } - - bool& GetEraseFlag() - { - return this->mEraseFlag; - } - -private: - double mScalar1; - array_1d mVector1; - bool mEraseFlag; - -}; - -} //namespace Kratos - -#endif //KRATOS_SHALLOW_WATER_PARTICLE_H_INCLUDED defined diff --git a/applications/ShallowWaterApplication/python_scripts/legacy/free_surface_shallow_water_solver.py b/applications/ShallowWaterApplication/python_scripts/legacy/free_surface_shallow_water_solver.py deleted file mode 100644 index bafeeb249f50..000000000000 --- a/applications/ShallowWaterApplication/python_scripts/legacy/free_surface_shallow_water_solver.py +++ /dev/null @@ -1,69 +0,0 @@ -# importing the Kratos Library -import KratosMultiphysics as KM -import KratosMultiphysics.ShallowWaterApplication as SW - -## Import base class file -from KratosMultiphysics.ShallowWaterApplication.shallow_water_base_solver import ShallowWaterBaseSolver - -def CreateSolver(model, custom_settings): - return FreeSurfaceShallowWaterSolver(model, custom_settings) - -class FreeSurfaceShallowWaterSolver(ShallowWaterBaseSolver): - def __init__(self, model, settings): - super().__init__(model, settings) - - # Set the element and condition names for the replace settings - self.element_name = "SWE" - self.condition_name = "LineCondition" - self.min_buffer_size = 2 - - def AddDofs(self): - KM.VariableUtils().AddDof(KM.MOMENTUM_X, self.main_model_part) - KM.VariableUtils().AddDof(KM.MOMENTUM_Y, self.main_model_part) - KM.VariableUtils().AddDof(SW.FREE_SURFACE_ELEVATION, self.main_model_part) - - KM.Logger.PrintInfo(self.__class__.__name__, "Shallow water solver DOFs added correctly.") - - def InitializeSolutionStep(self): - self._GetSolutionStrategy().InitializeSolutionStep() - - def FinalizeSolutionStep(self): - super().FinalizeSolutionStep() - SW.ShallowWaterUtilities().ComputeHeightFromFreeSurface(self.GetComputingModelPart()) - SW.ShallowWaterUtilities().ComputeVelocity(self.GetComputingModelPart(), True) - - @classmethod - def GetDefaultParameters(cls): - default_settings = KM.Parameters(""" - { - "permeability" : 1.0e-4, - "dry_height_threshold" : 1e-3, - "dry_discharge_penalty" : 1.0e+2, - "stabilization_factor" : 0.005, - "relative_dry_height" : 0.1 - }""") - default_settings.AddMissingParameters(super().GetDefaultParameters()) - return default_settings - - def PrepareModelPart(self): - super().PrepareModelPart() - permeability = self.settings["permeability"].GetDouble() - dry_height = self.settings["dry_height_threshold"].GetDouble() - relative_dry_height = self.settings["relative_dry_height"].GetDouble() - discharge_penalty = self.settings["dry_discharge_penalty"].GetDouble() - stabilization_factor = self.settings["stabilization_factor"].GetDouble() - - # Checks - if permeability == 0.0: - KM.Logger.PrintWarning(self.__class__.__name__, "Detected permeability == 0.0") - if discharge_penalty == 0.0: - KM.Logger.PrintWarning(self.__class__.__name__, "Detected dry_discharge_penalty == 0.0") - - self.main_model_part.ProcessInfo.SetValue(SW.DRY_HEIGHT, dry_height) - self.main_model_part.ProcessInfo.SetValue(SW.RELATIVE_DRY_HEIGHT, relative_dry_height) - self.main_model_part.ProcessInfo.SetValue(SW.DRY_DISCHARGE_PENALTY, discharge_penalty) - self.main_model_part.ProcessInfo.SetValue(KM.STABILIZATION_FACTOR, stabilization_factor) - - def _CreateScheme(self): - time_scheme = KM.ResidualBasedIncrementalUpdateStaticScheme() - return time_scheme diff --git a/applications/ShallowWaterApplication/python_scripts/legacy/multigrid_solver.py b/applications/ShallowWaterApplication/python_scripts/legacy/multigrid_solver.py deleted file mode 100644 index 4e2a4d2c0820..000000000000 --- a/applications/ShallowWaterApplication/python_scripts/legacy/multigrid_solver.py +++ /dev/null @@ -1,88 +0,0 @@ -# importing the Kratos Library -import KratosMultiphysics as KM -import KratosMultiphysics.ShallowWaterApplication as SW -import KratosMultiphysics.MeshingApplication as MSH - -## Import base class file -from KratosMultiphysics.ShallowWaterApplication.eulerian_primitive_var_solver import EulerianPrimitiveVarSolver -from KratosMultiphysics.MeshingApplication.multiscale_refining_process import MultiscaleRefiningProcess - -def CreateSolver(model, custom_settings): - return MultigridSolver(model, custom_settings) - -class MultigridSolver(EulerianPrimitiveVarSolver): - - def __init__(self, model, settings): - settings = self._ValidateSettings(settings) - - self.model = model # TODO: inherit from PythonSolver and use super - self.settings = settings - self.echo_level = self.settings["echo_level"].GetInt() - - # There is only a single rank in OpenMP, we always print - self._is_printing_rank = True - - ## Set the element and condition names for the replace settings - ## These should be defined in derived classes - self.element_name = "EulerPrimVarElement" - self.condition_name = "LineCondition" - self.min_buffer_size = 2 - - # Initialize the multigrid process. It creates the model part - self.multigrid = MultiscaleRefiningProcess(model, settings["multigrid_settings"]) - self.main_model_part = self.multigrid.GetRefinedModelPart() - - domain_size = self.settings["domain_size"].GetInt() - self.main_model_part.ProcessInfo.SetValue(KM.DOMAIN_SIZE, domain_size) - - ## Construct the linear solver - import KratosMultiphysics.python_linear_solver_factory as linear_solver_factory - self.linear_solver = linear_solver_factory.ConstructSolver(self.settings["linear_solver_settings"]) - - def ImportModelPart(self): - if self.main_model_part.ProcessInfo[MSH.SUBSCALE_INDEX] == 0: - # Default implementation in the base class - self._ImportModelPart(self.main_model_part,self.settings["model_import_settings"]) - - def PrepareModelPart(self): - if self.main_model_part.ProcessInfo[MSH.SUBSCALE_INDEX] == 0: - super().PrepareModelPart() - self.multigrid.PrepareModelPart() # It creates the cpp utility instance - - def AdvanceInTime(self, current_time): - divisions = 2**(self.GetComputingModelPart().GetValue(MSH.SUBSCALE_INDEX) * self.multigrid.number_of_divisions_at_subscale) - dt = self._ComputeDeltaTime() / divisions - new_time = current_time + dt - - self.GetComputingModelPart().CloneTimeStep(new_time) - self.GetComputingModelPart().ProcessInfo[KM.STEP] += 1 - - self.multigrid.ExecuteInitializeSolutionStep() - - KM.Logger.PrintInfo("::[Multigrid solver]::", "Subscale Index:", self.GetComputingModelPart().GetValue(MSH.SUBSCALE_INDEX)) - - return new_time - - def GetComputingModelPart(self): - return self.multigrid.GetRefinedModelPart() - - def InitializeSolutionStep(self): - if self.GetComputingModelPart().NumberOfElements() != 0: - super().InitializeSolutionStep() - - def Predict(self): - if self.GetComputingModelPart().NumberOfElements() != 0: - super().Predict() - - # def SolveSolutionStep(self): - # if self._TimeBufferIsInitialized(): - # # if self.GetComputingModelPart().NumberOfElements() != 0: - # is_converged = self.solver.SolveSolutionStep() - # return is_converged - - def FinalizeSolutionStep(self): - if self.GetComputingModelPart().NumberOfElements() != 0: - super().FinalizeSolutionStep() - - def Finalize(self): - self.multigrid.ExecuteFinalize() diff --git a/applications/ShallowWaterApplication/python_scripts/legacy/residual_based_refining_condition_process.py b/applications/ShallowWaterApplication/python_scripts/legacy/residual_based_refining_condition_process.py deleted file mode 100644 index bd4fc80e1eb6..000000000000 --- a/applications/ShallowWaterApplication/python_scripts/legacy/residual_based_refining_condition_process.py +++ /dev/null @@ -1,45 +0,0 @@ -# Importing the Kratos Library -import KratosMultiphysics as KM -import KratosMultiphysics.ShallowWaterApplication as SW -import KratosMultiphysics.MeshingApplication as MSH - -def Factory(settings, Model): - if not isinstance(settings, KM.Parameters): - raise Exception("expected input shall be a Parameters object, encapsulating a json string") - return ResidualBasedRefiningConditionProcess(Model, settings["Parameters"]) - -class ResidualBasedRefiningConditionProcess(KM.Process): - def __init__(self, model, settings ): - - ## Settings string in json format - default_parameters = KM.Parameters(""" - { - "model_part_name" : "model_part", - "error_variable" : "RESIDUAL_NORM", - "variable_threshold" : 1e-3, - "increase_threshold" : true, - "only_refine_wet_domain" : true - } - """) - - # Overwrite the default settings with user-provided parameters - settings.ValidateAndAssignDefaults(default_parameters) - - model_part = model[settings["model_part_name"].GetString()] - - # Creation of the parameters for the c++ process - criteria_parameters = KM.Parameters("""{}""") - criteria_parameters.AddValue("error_variable", settings["error_variable"]) - criteria_parameters.AddValue("only_refine_wet_domain", settings["only_refine_wet_domain"]) - criteria_parameters.AddValue("variable_threshold", settings["variable_threshold"]) - - if settings["increase_threshold"].GetBool(): - variable_threshold = settings["variable_threshold"].GetDouble() - next_subscale_index = model_part.ProcessInfo[MSH.SUBSCALE_INDEX] + 1 - variable_threshold *= next_subscale_index - criteria_parameters["variable_threshold"].SetDouble(variable_threshold) - - self.process = SW.ElementalRefiningCriteriaProcess(model_part, criteria_parameters) - - def Execute(self): - self.process.Execute() diff --git a/applications/ShallowWaterApplication/python_scripts/legacy/semi_lagrangian_shallow_water_solver.py b/applications/ShallowWaterApplication/python_scripts/legacy/semi_lagrangian_shallow_water_solver.py deleted file mode 100644 index 8bf0a1ff879b..000000000000 --- a/applications/ShallowWaterApplication/python_scripts/legacy/semi_lagrangian_shallow_water_solver.py +++ /dev/null @@ -1,29 +0,0 @@ -# importing the Kratos Library -import KratosMultiphysics as KM -import KratosMultiphysics.ShallowWaterApplication as SW - -## Import base class file -from KratosMultiphysics.ShallowWaterApplication.legacy.free_surface_shallow_water_solver import FreeSurfaceShallowWaterSolver - -def CreateSolver(model, custom_settings): - return SemiLagrangianShallowWaterSolver(model, custom_settings) - -class SemiLagrangianShallowWaterSolver(FreeSurfaceShallowWaterSolver): - def __init__(self, model, settings): - super().__init__(model, settings) - self.min_buffer_size = 2 - self.element_name = "LagrangianSWE" - self.condition_name = "LineCondition" - - def AddVariables(self): - super().AddVariables() - self.main_model_part.AddNodalSolutionStepVariable(SW.PROJECTED_SCALAR) - - def Initialize(self): - super().Initialize() - self.bfecc = SW.BFECCConvectionUtility(self.GetComputingModelPart()) - - def InitializeSolutionStep(self): - self.bfecc.Convect(KM.MOMENTUM, KM.VELOCITY) - self.bfecc.CopyVariableToPreviousTimeStep(KM.MOMENTUM) - super().InitializeSolutionStep() diff --git a/applications/ShallowWaterApplication/python_scripts/legacy/shallow_water_multigrid_analysis.py b/applications/ShallowWaterApplication/python_scripts/legacy/shallow_water_multigrid_analysis.py deleted file mode 100644 index a2ec6eb57b9b..000000000000 --- a/applications/ShallowWaterApplication/python_scripts/legacy/shallow_water_multigrid_analysis.py +++ /dev/null @@ -1,74 +0,0 @@ -# Importing Kratos -import KratosMultiphysics as KM -import KratosMultiphysics.MeshingApplication as MSH - -from KratosMultiphysics.ShallowWaterApplication.shallow_water_analysis import ShallowWaterAnalysis -# from multiscale_refining_process import MultiscaleRefiningProcess - -class ShallowWaterMultigridAnalysis(ShallowWaterAnalysis): - ''' Main script for shallow water simulations ''' - - def __init__(self, model, project_parameters): - super().__init__(model, project_parameters) - - self.maximum_subgrids = 0 - if self.project_parameters["solver_settings"]["multigrid_settings"].Has("maximum_number_of_subscales"): - self.maximum_subgrids = self.project_parameters["solver_settings"]["multigrid_settings"]["maximum_number_of_subscales"].GetInt() - - self.current_subscale = self._GetSolver().GetComputingModelPart().ProcessInfo[MSH.SUBSCALE_INDEX] - - if self.current_subscale < self.maximum_subgrids: - self.new_parameters = self.project_parameters.Clone() # Create a copy before modifying the parameters - self._ModifySubAnalysisParameters(self.new_parameters) - self.sub_analysis = ShallowWaterMultigridAnalysis(self.model, self.new_parameters) - - self._UpdateModelPartNamesInParameters() - - def Initialize(self): - super().Initialize() - if self.current_subscale < self.maximum_subgrids: - self.sub_analysis.Initialize() - - def RunSolutionLoop(self): - while self.time < self.end_time: - self.time = self._GetSolver().AdvanceInTime(self.time) - self.InitializeSolutionStep() - self._GetSolver().Predict() - self._GetSolver().SolveSolutionStep() - if self.current_subscale < self.maximum_subgrids: - self.sub_analysis._GetSolver().GetComputingModelPart().ProcessInfo[KratosMultiphysics.STEP] = 0 - self.sub_analysis.end_time = self.time - self.sub_analysis.InitializeMultigridSolver() - self.sub_analysis.RunSolutionLoop() - self.sub_analysis.Finalize() - self.FinalizeSolutionStep() - self.OutputSolutionStep() - - def InitializeMultigridSolver(self): - self._GetSolver().multigrid.ExecuteInitialize() - self._GetSolver().Initialize() - for process in self._GetListOfProcesses(): - process.ExecuteBeforeSolutionLoop() - - def _UpdateModelPartNamesInParameters(self): - # Update the model part name in the processes parameters - old_model_part_name = self.project_parameters["solver_settings"]["model_part_name"].GetString() - new_model_part_name = self._GetSolver().GetComputingModelPart().Name - for name, process_list in self.project_parameters["processes"].items(): - for i in range(0,process_list.size()): - process = process_list[i] - if process.Has("Parameters"): - if process["Parameters"].Has("model_part_name"): - name = process["Parameters"]["model_part_name"].GetString() - name = name.replace(old_model_part_name, new_model_part_name) - process["Parameters"]["model_part_name"].SetString(name) - - def _ModifySubAnalysisParameters(self, sub_parameters): - # Increase the current subscale index - sub_parameters["solver_settings"]["multigrid_settings"]["current_subscale"].SetInt(self.current_subscale + 1) - # Remove the output processes (there are only output processes on the first level) - if sub_parameters.Has("output_processes"): - sub_parameters.RemoveValue("output_processes") - - def _GetSimulationName(self): - return "Shallow Water Multigrid Analysis" diff --git a/applications/ShallowWaterApplication/python_scripts/shallow_water_base_solver.py b/applications/ShallowWaterApplication/python_scripts/shallow_water_base_solver.py index 4bd082b254ca..456f7ba95aa9 100644 --- a/applications/ShallowWaterApplication/python_scripts/shallow_water_base_solver.py +++ b/applications/ShallowWaterApplication/python_scripts/shallow_water_base_solver.py @@ -158,7 +158,7 @@ def _SetProcessInfo(self): self.main_model_part.ProcessInfo.SetValue(KM.GRAVITY_Z, self.settings["gravity"].GetDouble()) def _ImportMaterials(self): - # Add the properties from json file to model parts. + # Add the properties from json file to model parts. materials_filename = self.settings["material_import_settings"]["materials_filename"].GetString() if (materials_filename != ""): material_settings = KM.Parameters("""{"Parameters": {} }""") diff --git a/applications/ShallowWaterApplication/python_scripts/stabilized_shallow_water_solver.py b/applications/ShallowWaterApplication/python_scripts/stabilized_shallow_water_solver.py index 3e53304a0a04..425fbc46526c 100644 --- a/applications/ShallowWaterApplication/python_scripts/stabilized_shallow_water_solver.py +++ b/applications/ShallowWaterApplication/python_scripts/stabilized_shallow_water_solver.py @@ -38,7 +38,7 @@ def Initialize(self): self.main_model_part.ProcessInfo.SetValue(KM.DENSITY, 1e3) self.main_model_part.ProcessInfo.SetValue(SW.INTEGRATE_BY_PARTS, False) if self.compute_neighbours: - KM.GenericFindElementalNeighboursProcess(self.main_model_part).ExecuteInitialize() + KM.GenericFindElementalNeighboursProcess(self.main_model_part).Execute() def FinalizeSolutionStep(self): super().FinalizeSolutionStep() diff --git a/applications/ShallowWaterApplication/shallow_water_application.cpp b/applications/ShallowWaterApplication/shallow_water_application.cpp index 3dc9d41d3125..5614b1fa0d55 100644 --- a/applications/ShallowWaterApplication/shallow_water_application.cpp +++ b/applications/ShallowWaterApplication/shallow_water_application.cpp @@ -31,12 +31,6 @@ namespace Kratos KratosShallowWaterApplication::KratosShallowWaterApplication(): KratosApplication("ShallowWaterApplication"), - mSWE2D3N(0, Element::GeometryType::Pointer( new Triangle2D3> ( Element::GeometryType::PointsArrayType (3) ) ) ), - mSWE2D4N(0, Element::GeometryType::Pointer( new Quadrilateral2D4 >( Element::GeometryType::PointsArrayType (4) ) ) ), - - mLagrangianSWE2D3N(0, Element::GeometryType::Pointer( new Triangle2D3> ( Element::GeometryType::PointsArrayType (3) ) ) ), - mLagrangianSWE2D4N(0, Element::GeometryType::Pointer( new Quadrilateral2D4 >( Element::GeometryType::PointsArrayType (4) ) ) ), - mWaveElement2D3N(0, Element::GeometryType::Pointer(new Triangle2D3>(Element::GeometryType::PointsArrayType(3)))), mWaveElement2D6N(0, Element::GeometryType::Pointer(new Triangle2D6>(Element::GeometryType::PointsArrayType(6)))), mWaveElement2D4N(0, Element::GeometryType::Pointer(new Quadrilateral2D4>(Element::GeometryType::PointsArrayType(4)))), @@ -49,8 +43,6 @@ namespace Kratos mConservativeElementRV2D3N(0, Element::GeometryType::Pointer(new Triangle2D3>(Element::GeometryType::PointsArrayType(3)))), mConservativeElementFC2D3N(0, Element::GeometryType::Pointer(new Triangle2D3>(Element::GeometryType::PointsArrayType(3)))), - mShallowWater2D3N(0, Element::GeometryType::Pointer(new Triangle2D3>(Element::GeometryType::PointsArrayType(3)))), - mWaveCondition2D2N(0, Element::GeometryType::Pointer(new Line2D2>(Element::GeometryType::PointsArrayType(2)))), mWaveCondition2D3N(0, Element::GeometryType::Pointer(new Line2D3>(Element::GeometryType::PointsArrayType(3)))), mBoussinesqCondition2D2N(0, Element::GeometryType::Pointer(new Line2D2>(Element::GeometryType::PointsArrayType(2)))), @@ -124,12 +116,6 @@ namespace Kratos KRATOS_REGISTER_3D_VARIABLE_WITH_COMPONENTS(MOMENTUM_ERROR) // Registering elements and conditions here - KRATOS_REGISTER_ELEMENT("SWE2D3N", mSWE2D3N) // TODO: remove - KRATOS_REGISTER_ELEMENT("SWE2D4N", mSWE2D4N) // TODO: remove - - KRATOS_REGISTER_ELEMENT("LagrangianSWE2D3N", mLagrangianSWE2D3N) // TODO: remove - KRATOS_REGISTER_ELEMENT("LagrangianSWE2D4N", mLagrangianSWE2D4N) // TODO: remove - KRATOS_REGISTER_ELEMENT("WaveElement2D3N", mWaveElement2D3N) KRATOS_REGISTER_ELEMENT("WaveElement2D6N", mWaveElement2D6N) KRATOS_REGISTER_ELEMENT("WaveElement2D4N", mWaveElement2D4N) @@ -142,8 +128,6 @@ namespace Kratos KRATOS_REGISTER_ELEMENT("ConservativeElementRV2D3N", mConservativeElementRV2D3N) KRATOS_REGISTER_ELEMENT("ConservativeElementFC2D3N", mConservativeElementFC2D3N) - KRATOS_REGISTER_ELEMENT("ShallowWater2D3N", mShallowWater2D3N) // TODO: move to ConservativeElement - KRATOS_REGISTER_CONDITION("WaveCondition2D2N", mWaveCondition2D2N) KRATOS_REGISTER_CONDITION("WaveCondition2D3N", mWaveCondition2D3N) KRATOS_REGISTER_CONDITION("BoussinesqCondition2D2N", mBoussinesqCondition2D2N) diff --git a/applications/ShallowWaterApplication/shallow_water_application.h b/applications/ShallowWaterApplication/shallow_water_application.h index 430db8628499..90dde5d4d9a4 100644 --- a/applications/ShallowWaterApplication/shallow_water_application.h +++ b/applications/ShallowWaterApplication/shallow_water_application.h @@ -31,14 +31,12 @@ #include "includes/kratos_application.h" // Shallow water includes -#include "custom_elements/swe.h" #include "custom_elements/wave_element.h" #include "custom_elements/crank_nicolson_wave_element.h" #include "custom_elements/boussinesq_element.h" #include "custom_elements/conservative_element.h" #include "custom_elements/conservative_element_rv.h" #include "custom_elements/conservative_element_fc.h" -#include "custom_elements/shallow_water_2d_3.h" #include "custom_conditions/wave_condition.h" #include "custom_conditions/boussinesq_condition.h" #include "custom_conditions/conservative_condition.h" @@ -162,10 +160,6 @@ namespace Kratos ///@{ // Elements - const SWE<3, Eulerian> mSWE2D3N; - const SWE<4, Eulerian> mSWE2D4N; - const SWE<3, PFEM2> mLagrangianSWE2D3N; - const SWE<4, PFEM2> mLagrangianSWE2D4N; const WaveElement<3> mWaveElement2D3N; const WaveElement<6> mWaveElement2D6N; const WaveElement<4> mWaveElement2D4N; @@ -177,7 +171,6 @@ namespace Kratos const ConservativeElement<3> mConservativeElementGJ2D3N; const ConservativeElementRV<3> mConservativeElementRV2D3N; const ConservativeElementFC<3> mConservativeElementFC2D3N; - const ShallowWater2D3 mShallowWater2D3N; // Conditions const WaveCondition<2> mWaveCondition2D2N; const WaveCondition<3> mWaveCondition2D3N; diff --git a/applications/ShallowWaterApplication/tests/cpp_tests/test_shallow_element.cpp b/applications/ShallowWaterApplication/tests/cpp_tests/test_shallow_element.cpp deleted file mode 100644 index 5ab9e7a5225b..000000000000 --- a/applications/ShallowWaterApplication/tests/cpp_tests/test_shallow_element.cpp +++ /dev/null @@ -1,268 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ ` -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Miguel Maso Sotomayor -// -// - -// System includes - -// External includes - -// Project includes -#include "testing/testing.h" -#include "containers/model.h" -#include "includes/properties.h" -#include "custom_elements/swe.h" -#include "custom_elements/shallow_water_2d_3.h" -#include "shallow_water_application_variables.h" -#include "includes/mesh_moving_variables.h" - -namespace Kratos { - -namespace Testing { - -typedef ModelPart::IndexType IndexType; -typedef ModelPart::NodeIterator NodeIteratorType; - -/** - * Checks the ShallowWater2D3N element - */ -KRATOS_TEST_CASE_IN_SUITE(SWE2D3N, ShallowWaterApplicationFastSuite) -{ - Model model; - ModelPart& model_part = model.CreateModelPart("main", 2); - - // Variables addition - model_part.AddNodalSolutionStepVariable(VELOCITY); - model_part.AddNodalSolutionStepVariable(MOMENTUM); - model_part.AddNodalSolutionStepVariable(HEIGHT); - model_part.AddNodalSolutionStepVariable(FREE_SURFACE_ELEVATION); - model_part.AddNodalSolutionStepVariable(TOPOGRAPHY); - model_part.AddNodalSolutionStepVariable(PROJECTED_VECTOR); - model_part.AddNodalSolutionStepVariable(PROJECTED_SCALAR); - model_part.AddNodalSolutionStepVariable(RAIN); - model_part.AddNodalSolutionStepVariable(MANNING); - - // Process info creation - const double delta_time = 0.1; - const double stab_factor = 0.005; - const double gravity = 9.81; - model_part.GetProcessInfo().SetValue(DELTA_TIME, delta_time); - model_part.GetProcessInfo().SetValue(STABILIZATION_FACTOR, stab_factor); - model_part.GetProcessInfo().SetValue(GRAVITY_Z, gravity); - model_part.GetProcessInfo().SetValue(DRY_HEIGHT, 0.1); - model_part.GetProcessInfo().SetValue(DRY_DISCHARGE_PENALTY, 0.1); - - // Set the element properties - Properties::Pointer property = model_part.CreateNewProperties(0); - double manning = 0.004; - property->SetValue(MANNING, manning); - - // Geometry creation - model_part.CreateNewNode(1, 0.0, 0.0, 0.0); - model_part.CreateNewNode(2, 1.0, 0.0, 0.0); - model_part.CreateNewNode(3, 0.0, 1.0, 0.0); - std::vector elem_nodes {1, 2, 3}; - model_part.CreateNewElement("SWE2D3N", 1, elem_nodes, property); - - Element::Pointer element = model_part.pGetElement(1); - - array_1d free_surface; - array_1d topography; - free_surface(0) = 0.0; - free_surface(1) = 1.0; - free_surface(2) = 0.0; - topography(0) = -7.0; - topography(1) = -8.0; - topography(2) = -6.0; - // Set the nodal values - for (IndexType i = 0; i < 3; i++) - { - element->GetGeometry()[i].FastGetSolutionStepValue(FREE_SURFACE_ELEVATION) = free_surface(i); - element->GetGeometry()[i].FastGetSolutionStepValue(FREE_SURFACE_ELEVATION, 1) = free_surface(i) + 1; - element->GetGeometry()[i].FastGetSolutionStepValue(PROJECTED_SCALAR ) = free_surface(i) + 1; - element->GetGeometry()[i].FastGetSolutionStepValue(TOPOGRAPHY) = topography(i); - element->GetGeometry()[i].FastGetSolutionStepValue(MANNING) = manning; - } - - // Compute RHS and LHS - Vector RHS = ZeroVector(9); - Matrix LHS = ZeroMatrix(9,9); - - const ProcessInfo& r_process_info = model_part.GetProcessInfo(); - element->CalculateLocalSystem(LHS, RHS, r_process_info); - - // Check the RHS values (the RHS is computed as the LHS x previous_solution, - // hence, it is assumed that if the RHS is correct, the LHS is correct as well) - double tolerance = 1e-5; - KRATOS_CHECK_NEAR(RHS(0),-11.99000, tolerance); - KRATOS_CHECK_NEAR(RHS(1), 0.00000, tolerance); - KRATOS_CHECK_NEAR(RHS(2), 3.11838, tolerance); - KRATOS_CHECK_NEAR(RHS(3),-11.99000, tolerance); - KRATOS_CHECK_NEAR(RHS(4), 0.00000, tolerance); - KRATOS_CHECK_NEAR(RHS(5), 0.21495, tolerance); - KRATOS_CHECK_NEAR(RHS(6),-11.99000, tolerance); - KRATOS_CHECK_NEAR(RHS(7), 0.00000, tolerance); - KRATOS_CHECK_NEAR(RHS(8), 1.66667, tolerance); -} - -void PerformSteadyStateTest( - const double& rManning, - const double& rHeight, - const array_1d& rMomentum, - const array_1d& rTopographySlope, - const array_1d& rHeightGradient = ZeroVector(3), - const double& rTolerance = 1e-12) -{ - Model model; - ModelPart& model_part = model.CreateModelPart("main", 2); - - // Variables addition - model_part.AddNodalSolutionStepVariable(VELOCITY); - model_part.AddNodalSolutionStepVariable(MOMENTUM); - model_part.AddNodalSolutionStepVariable(HEIGHT); - model_part.AddNodalSolutionStepVariable(TOPOGRAPHY); - model_part.AddNodalSolutionStepVariable(RAIN); - model_part.AddNodalSolutionStepVariable(MANNING); - model_part.AddNodalSolutionStepVariable(WIND); - model_part.AddNodalSolutionStepVariable(ATMOSPHERIC_PRESSURE); - model_part.AddNodalSolutionStepVariable(ACCELERATION); - model_part.AddNodalSolutionStepVariable(VERTICAL_VELOCITY); - model_part.AddNodalSolutionStepVariable(MESH_ACCELERATION); - - // Process info creation - const double gravity = 9.81; - const double stab_factor = 0.005; - const double shock_stab_factor = 1.0; - const double relative_dry_height = 0.1; - const double density_water = 1000.0; - const double density_air = 1.0; - model_part.GetProcessInfo().SetValue(GRAVITY_Z, gravity); - model_part.GetProcessInfo().SetValue(STABILIZATION_FACTOR, stab_factor); - model_part.GetProcessInfo().SetValue(SHOCK_STABILIZATION_FACTOR, shock_stab_factor); - model_part.GetProcessInfo().SetValue(RELATIVE_DRY_HEIGHT, relative_dry_height); - model_part.GetProcessInfo().SetValue(DENSITY, density_water); - model_part.GetProcessInfo().SetValue(DENSITY_AIR, density_air); - - // Geometry creation - model_part.CreateNewNode(1, 0.0, 0.0, 0.0); - model_part.CreateNewNode(2, 1.0, 0.0, 0.0); - model_part.CreateNewNode(3, 0.0, 1.0, 0.0); - std::vector elem_nodes {1, 2, 3}; - Properties::Pointer property = model_part.CreateNewProperties(0); - Element::Pointer element = model_part.CreateNewElement("ShallowWater2D3N", 1, elem_nodes, property); - auto r_geom = element->GetGeometry(); - - // Set the nodal values - for (IndexType i = 0; i < 3; i++) - { - const array_1d coords = r_geom[i].Coordinates(); - const auto height = rHeight + inner_prod(coords, rHeightGradient); - const auto velocity = rMomentum / height; - const auto topography = inner_prod(coords, rTopographySlope); - - r_geom[i].FastGetSolutionStepValue(HEIGHT) = height; - r_geom[i].FastGetSolutionStepValue(VELOCITY) = velocity; - r_geom[i].FastGetSolutionStepValue(MOMENTUM) = rMomentum; - r_geom[i].FastGetSolutionStepValue(MANNING) = rManning; - r_geom[i].FastGetSolutionStepValue(TOPOGRAPHY) = topography; - } - - // Compute RHS and LHS - Vector rhs = ZeroVector(9); - Matrix lhs = ZeroMatrix(9,9); - const ProcessInfo& r_process_info = model_part.GetProcessInfo(); - element->CalculateLocalSystem(lhs, rhs, r_process_info); - - // Check the RHS values. Since it is a steady solution the RHS must be zero - KRATOS_CHECK_VECTOR_RELATIVE_NEAR(rhs, ZeroVector(9), rTolerance); -} - -/** - * @brief Check the ShallowWater2D3N element with still free surface - */ -KRATOS_TEST_CASE_IN_SUITE(SteadyStillSurfaceShallowWater2D3N, ShallowWaterApplicationFastSuite) -{ - const double manning = 0.0; - const double height = 5.0; - const array_1d momentum = ZeroVector(3); - const array_1d slope = ZeroVector(3); - - PerformSteadyStateTest(manning, height, momentum, slope); -} - -/** - * @brief Check the ShallowWater2D3N element with subcritical x-aligned flow - */ -KRATOS_TEST_CASE_IN_SUITE(SteadySubcriticalShallowWater2D3N, ShallowWaterApplicationFastSuite) -{ - const double manning = 0.0328; - const double height = 5.0; - array_1d momentum = ZeroVector(3); - momentum[0] = 5.0; - const array_1d slope = -std::pow(manning, 2.) * norm_2(momentum) * momentum / std::pow(height, 10./3.); - - PerformSteadyStateTest(manning, height, momentum, slope); -} - -/** - * @brief Check the ShallowWater2D3N element with subcritical flow - */ -KRATOS_TEST_CASE_IN_SUITE(SteadySubcriticalSkewShallowWater2D3N, ShallowWaterApplicationFastSuite) -{ - const double manning = 0.0328; - const double height = 5.0; - array_1d momentum = ZeroVector(3); - momentum[0] = -3.0; - momentum[1] = 4.0; - const array_1d slope = -std::pow(manning, 2.) * norm_2(momentum) * momentum / std::pow(height, 10./3.); - - PerformSteadyStateTest(manning, height, momentum, slope); -} - -/** - * @brief Check the ShallowWater2D3N element with supercritical flow (Froude = 2.72789) - */ -KRATOS_TEST_CASE_IN_SUITE(SteadySupercriticalShallowWater2D3N, ShallowWaterApplicationFastSuite) -{ - const double manning = 0.0328; - const double height = 1.0; - array_1d momentum = ZeroVector(3); - momentum[0] = 3.0; - momentum[1] = 8.0; - const array_1d slope = -std::pow(manning, 2.) * norm_2(momentum) * momentum / std::pow(height, 10./3.); - - PerformSteadyStateTest(manning, height, momentum, slope); -} - -/** - * @brief Check the ShallowWater2D3N element with variable free surface - * @detail A linear element can not pass this parcel test analytically, since the velocity is not linear. - */ -KRATOS_TEST_CASE_IN_SUITE(SteadyVariableFreeSurfaceShallowWater2D3N, ShallowWaterApplicationFastSuite) -{ - const double manning = 0.01; - const double height = 5.0; - array_1d height_grad = ZeroVector(3); - array_1d momentum = ZeroVector(3); - height_grad[0] = .05; - momentum[0] = 5.0; - const double gravity = 9.81; - const double central_height = height + height_grad[0] / 3.; // at the barycenter of the element - const array_1d friction = std::pow(manning, 2.) * norm_2(momentum) * momentum / std::pow(central_height, 10./3.); - const array_1d slope = (inner_prod(momentum, momentum) / (gravity * std::pow(central_height, 3.)) -1.) * height_grad - friction; - const double tolerance = 1e-6; - - PerformSteadyStateTest(manning, height, momentum, slope, height_grad, tolerance); -} - -} // namespace Testing - -} // namespace Kratos diff --git a/applications/ShallowWaterApplication/tests/elements_tests/swe_parameters.json b/applications/ShallowWaterApplication/tests/elements_tests/swe_parameters.json deleted file mode 100644 index 69b6194333ba..000000000000 --- a/applications/ShallowWaterApplication/tests/elements_tests/swe_parameters.json +++ /dev/null @@ -1,140 +0,0 @@ -{ - "problem_data" : { - "echo_level" : 0, - "start_time" : 0.0, - "end_time" : 0.5, - "parallel_type" : "OpenMP" - }, - "solver_settings" : { - "solver_type" : "legacy.free_surface_shallow_water_solver", - "model_part_name" : "main_model_part", - "domain_size" : 2, - "gravity" : 9.81, - "model_import_settings" : { - "input_type" : "mdpa", - "input_filename" : "square_domain" - }, - "echo_level" : 0, - "stabilization_factor" : 0.01, - "relative_tolerance" : 1.0E-6, - "absolute_tolerance" : 1.0E-9, - "maximum_iterations" : 20, - "compute_reactions" : false, - "reform_dofs_at_each_step" : false, - "move_mesh_flag" : false, - "linear_solver_settings" : { - "solver_type" : "amgcl" - }, - "time_stepping" : { - "automatic_time_step" : false, - "time_step" : 0.1 - } - }, - "_output_processes" : { - "output_process_list" : [{ - "kratos_module" : "KratosMultiphysics", - "python_module" : "gid_output_process", - "process_name" : "GidOutputProcess", - "Parameters" : { - "model_part_name" : "main_model_part", - "output_name" : "swe", - "postprocess_parameters" : { - "result_file_configuration" : { - "gidpost_flags" : { - "GiDPostMode" : "GiD_PostBinary", - "WriteDeformedMeshFlag" : "WriteDeformed", - "WriteConditionsFlag" : "WriteElementsOnly", - "MultiFileFlag" : "SingleFile" - }, - "output_control_type" : "step", - "output_interval" : 1, - "body_output" : true, - "node_output" : false, - "skin_output" : false, - "plane_output" : [], - "nodal_results" : ["MOMENTUM","VELOCITY","HEIGHT","FREE_SURFACE_ELEVATION","BATHYMETRY"], - "gauss_point_results" : [] - }, - "point_data_configuration" : [] - } - } - }] - }, - "processes" : { - "initial_conditions_process_list" : [{ - "python_module" : "set_initial_water_level_process", - "kratos_module" : "KratosMultiphysics.ShallowWaterApplication", - "Parameters" : { - "model_part_name" : "main_model_part.Initial_water_level-auto-1", - "variable_name" : "HEIGHT", - "value" : "0.1" - } - }], - "boundary_conditions_process_list" : [{ - "python_module" : "process_factory", - "kratos_module" : "KratosMultiphysics", - "process_name" : "ApplyConstantVectorValueProcess", - "Parameters" : { - "model_part_name" : "main_model_part.Imposed_flux-auto-1", - "variable_name" : "MOMENTUM", - "modulus" : 0.0, - "direction" : [1.0, 0.0, 0.0], - "is_fixed_x" : true, - "is_fixed_y" : false - } - },{ - "python_module" : "process_factory", - "kratos_module" : "KratosMultiphysics", - "process_name" : "ApplyConstantVectorValueProcess", - "Parameters" : { - "model_part_name" : "main_model_part.Imposed_flux-auto-2", - "variable_name" : "MOMENTUM", - "modulus" : 0.0, - "direction" : [0.0, 1.0, 0.0], - "is_fixed_x" : false, - "is_fixed_y" : true - } - }], - "topography_process_list" : [{ - "python_module" : "set_topography_process", - "kratos_module" : "KratosMultiphysics.ShallowWaterApplication", - "Parameters" : { - "model_part_name" : "main_model_part.Body_Part-auto-1", - "value" : "z" - } - }], - "json_output_and_check_process" : [{ - "kratos_module" : "KratosMultiphysics", - "python_module" : "from_json_check_result_process", - "Parameters" : { - "model_part_name" : "main_model_part", - "check_variables" : ["HEIGHT"], - "input_file_name" : "swe_reference.json", - "time_frequency" : 0.49, - "tolerance" : 1e-5 - } - }] - }, - "copy_the_process_into___processes___to_generate_or check_the_results_file" : { - "json_output_and_check_process" : [{ - "kratos_module" : "KratosMultiphysics", - "python_module" : "json_output_process", - "Parameters" : { - "model_part_name" : "main_model_part", - "output_variables" : ["HEIGHT"], - "output_file_name" : "swe_reference.json", - "time_frequency" : 0.49 - } - },{ - "kratos_module" : "KratosMultiphysics", - "python_module" : "from_json_check_result_process", - "Parameters" : { - "model_part_name" : "main_model_part", - "check_variables" : ["HEIGHT"], - "input_file_name" : "swe_reference.json", - "time_frequency" : 0.49, - "tolerance" : 1e-5 - } - }] - } -} diff --git a/applications/ShallowWaterApplication/tests/elements_tests/swe_reference.json b/applications/ShallowWaterApplication/tests/elements_tests/swe_reference.json deleted file mode 100644 index 9c2f02afe85b..000000000000 --- a/applications/ShallowWaterApplication/tests/elements_tests/swe_reference.json +++ /dev/null @@ -1 +0,0 @@ -{"NODE_34": {"HEIGHT": [0.0991607332268295]}, "ELEMENT_27": {}, "NODE_24": {"HEIGHT": [0.10012037254426696]}, "ELEMENT_20": {}, "NODE_28": {"HEIGHT": [0.10899231642933827]}, "NODE_4": {"HEIGHT": [0.09493852934274606]}, "ELEMENT_7": {}, "ELEMENT_2": {}, "NODE_36": {"HEIGHT": [0.09844631431979685]}, "ELEMENT_3": {}, "ELEMENT_42": {}, "ELEMENT_29": {}, "ELEMENT_11": {}, "ELEMENT_12": {}, "ELEMENT_36": {}, "ELEMENT_1": {}, "ELEMENT_18": {}, "NODE_31": {"HEIGHT": [0.10052361591940365]}, "ELEMENT_37": {}, "NODE_17": {"HEIGHT": [0.10681041408001342]}, "NODE_5": {"HEIGHT": [0.09395632329584494]}, "NODE_12": {"HEIGHT": [0.098134751036952]}, "NODE_15": {"HEIGHT": [0.10100023241989982]}, "ELEMENT_22": {}, "ELEMENT_24": {}, "NODE_3": {"HEIGHT": [0.0934065209827127]}, "ELEMENT_34": {}, "ELEMENT_4": {}, "ELEMENT_45": {}, "NODE_22": {"HEIGHT": [0.1037330413826746]}, "ELEMENT_49": {}, "ELEMENT_32": {}, "ELEMENT_19": {}, "NODE_16": {"HEIGHT": [0.09908104598823363]}, "ELEMENT_40": {}, "NODE_19": {"HEIGHT": [0.10512583301407918]}, "ELEMENT_26": {}, "NODE_27": {"HEIGHT": [0.10120548203335564]}, "ELEMENT_28": {}, "NODE_29": {"HEIGHT": [0.10069809345619193]}, "ELEMENT_41": {}, "NODE_14": {"HEIGHT": [0.09953699945679659]}, "NODE_1": {"HEIGHT": [0.08891377239013614]}, "ELEMENT_9": {}, "NODE_25": {"HEIGHT": [0.10221117988282444]}, "ELEMENT_8": {}, "NODE_11": {"HEIGHT": [0.10224983895514317]}, "ELEMENT_17": {}, "ELEMENT_5": {}, "ELEMENT_46": {}, "ELEMENT_13": {}, "NODE_7": {"HEIGHT": [0.09639370617307111]}, "ELEMENT_35": {}, "NODE_35": {"HEIGHT": [0.10115813262802656]}, "NODE_33": {"HEIGHT": [0.10349553780228052]}, "ELEMENT_38": {}, "ELEMENT_48": {}, "NODE_26": {"HEIGHT": [0.11136018071058222]}, "ELEMENT_39": {}, "ELEMENT_47": {}, "NODE_9": {"HEIGHT": [0.09907518485146358]}, "ELEMENT_21": {}, "NODE_32": {"HEIGHT": [0.09940594391014122]}, "ELEMENT_33": {}, "ELEMENT_23": {}, "NODE_21": {"HEIGHT": [0.1000947726022962]}, "ELEMENT_31": {}, "ELEMENT_30": {}, "ELEMENT_44": {}, "NODE_18": {"HEIGHT": [0.09963076440331489]}, "NODE_23": {"HEIGHT": [0.10141106705145282]}, "ELEMENT_43": {}, "NODE_2": {"HEIGHT": [0.09149497535937315]}, "ELEMENT_6": {}, "ELEMENT_25": {}, "NODE_13": {"HEIGHT": [0.10168232720674142]}, "NODE_6": {"HEIGHT": [0.09785959340745089]}, "NODE_20": {"HEIGHT": [0.100457695582276]}, "ELEMENT_10": {}, "NODE_30": {"HEIGHT": [0.10657741225328692]}, "NODE_10": {"HEIGHT": [0.09651234697064952]}, "ELEMENT_14": {}, "ELEMENT_16": {}, "ELEMENT_15": {}, "NODE_8": {"HEIGHT": [0.09839753538698086]}, "ELEMENT_50": {}, "TIME": [0.5]} diff --git a/applications/ShallowWaterApplication/tests/shallow_water_test_factory.py b/applications/ShallowWaterApplication/tests/shallow_water_test_factory.py index caa5bbe33589..1b571ed8aeb8 100644 --- a/applications/ShallowWaterApplication/tests/shallow_water_test_factory.py +++ b/applications/ShallowWaterApplication/tests/shallow_water_test_factory.py @@ -30,14 +30,6 @@ def test_execution(self): test = ShallowWaterAnalysis(model, ProjectParameters) test.Run() -class TestSemiLagrangianShallowWaterElement(ShallowWaterTestFactory): - execution_directory = "elements_tests" - execution_file = "semi_lagrangian_swe" - -class TestShallowWaterElement(ShallowWaterTestFactory): - execution_directory = "elements_tests" - execution_file = "swe" - class TestConservativeResidualViscosity2D3NElement(ShallowWaterTestFactory): execution_directory = "elements_tests" execution_file = "conservative_residual_viscosity_2d_3n" diff --git a/applications/ShallowWaterApplication/tests/test_ShallowWaterApplication.py b/applications/ShallowWaterApplication/tests/test_ShallowWaterApplication.py index ceab22e72ca7..3951bba0451c 100644 --- a/applications/ShallowWaterApplication/tests/test_ShallowWaterApplication.py +++ b/applications/ShallowWaterApplication/tests/test_ShallowWaterApplication.py @@ -6,8 +6,6 @@ from KratosMultiphysics.KratosUnittest import TestLoader # Small tests -from shallow_water_test_factory import TestShallowWaterElement -from shallow_water_test_factory import TestSemiLagrangianShallowWaterElement from shallow_water_test_factory import TestConservativeResidualViscosity2D3NElement from shallow_water_test_factory import TestConservativeGradientJump2D3NElement from shallow_water_test_factory import TestConservativeFluxCorrected2D3NElement @@ -60,8 +58,6 @@ def AssembleTestSuites(): # Create a test suit with the selected tests plus all small tests nightlySuite = suites['nightly'] nightlySuite.addTests(smallSuite) - nightlySuite.addTests(TestLoader().loadTestsFromTestCase(TestShallowWaterElement)) - nightlySuite.addTests(TestLoader().loadTestsFromTestCase(TestSemiLagrangianShallowWaterElement)) nightlySuite.addTests(TestLoader().loadTestsFromTestCase(TestMeshMovingStrategy)) # Create a test suit that contains all the tests: diff --git a/applications/StatisticsApplication/python_scripts/method_utilities.py b/applications/StatisticsApplication/python_scripts/method_utilities.py index 5fd85fd9c7fd..fa7ad2205edd 100644 --- a/applications/StatisticsApplication/python_scripts/method_utilities.py +++ b/applications/StatisticsApplication/python_scripts/method_utilities.py @@ -4,8 +4,7 @@ def GetNormTypeContainer(item_container, norm_type): else: return item_container.NormMethods - -def GetMethod(item_norm_container, method_name): +def GetAvailableMethods(item_norm_container): method_info_list = [] for method in dir(item_norm_container): if (not method.startswith("__")): @@ -14,8 +13,13 @@ def GetMethod(item_norm_container, method_name): method_names_list = [method_info[0] for method_info in method_info_list] method_list = [method_info[1] for method_info in method_info_list] + return method_names_list, method_list + +def GetMethod(item_norm_container, method_name): + method_names_list, method_list = GetAvailableMethods(item_norm_container) + if method_name not in method_names_list: - msg = "Unknown method name [ \"method_name\" = \"" + method_name + "\" ]\n" + msg = "Unknown method name requested for the container " + str(item_norm_container) + ". [ \"method_name\" = \"" + method_name + "\" ]\n" msg += "Allowed method names are:\n " msg += "\n ".join(sorted(method_names_list)) raise Exception(msg) diff --git a/applications/StatisticsApplication/python_scripts/spatial_statistics_process.py b/applications/StatisticsApplication/python_scripts/spatial_statistics_process.py index 8680c6666ecd..b332b110aba0 100644 --- a/applications/StatisticsApplication/python_scripts/spatial_statistics_process.py +++ b/applications/StatisticsApplication/python_scripts/spatial_statistics_process.py @@ -1,13 +1,14 @@ import KratosMultiphysics as Kratos +from KratosMultiphysics.process_factory import KratosProcessFactory +from KratosMultiphysics.StatisticsApplication.method_utilities import GetAvailableMethods from KratosMultiphysics.StatisticsApplication.method_utilities import GetNormTypeContainer -from KratosMultiphysics.StatisticsApplication.method_utilities import GetMethod - from KratosMultiphysics.StatisticsApplication.spatial_utilities import GetItemContainer -from KratosMultiphysics.StatisticsApplication.spatial_utilities import GetMethodHeaders -from KratosMultiphysics.StatisticsApplication.spatial_utilities import GetMethodValues -from KratosMultiphysics.StatisticsApplication.spatial_utilities import GetVariableHeaders +from KratosMultiphysics.StatisticsApplication.spatial_utilities import GetFormattedValue from KratosMultiphysics.time_based_ascii_file_writer_utility import TimeBasedAsciiFileWriterUtility + +import KratosMultiphysics.StatisticsApplication.spatial_utilities as SpatialUtilities + from datetime import datetime @@ -39,23 +40,38 @@ def __init__(self, model, settings): default_parameters = Kratos.Parameters(""" { - "model_part_name" : "PLEASE_SPECIFY_MODEL_PART_NAME", + "model_part_name" : "PLEASE_SPECIFY_MODEL_PART_NAME", + "echo_level" : 0, + "computation_processes" : [], + "computation_points" : [ + "ExecuteInitialize", + "ExecuteInitializeSolutionStep", + "Execute", + "ExecuteFinalizeSolutionStep" + ], "input_variable_settings" : [ { - "method_name" : "sum", - "norm_type" : "none", - "container" : "nodal_historical", "variable_names" : [], + "norm_type" : "none", + "container" : "nodal_historical" + } + ], + "statistics_methods": [ + { + "method_name" : "", "method_settings": {} } ], "output_settings" : { + "interval" : [0.0, "End"], "output_control_variable": "STEP", "output_time_interval" : 1, - "write_kratos_version" : true, - "write_time_stamp" : true, + "write_kratos_version" : false, + "write_time_stamp" : false, + "output_value_precision" : 5, + "output_value_length" : 14, "output_file_settings" : { - "file_name" : "___.dat", + "file_name" : ".dat", "output_path": "spatial_statistics_output", "write_buffer_size" : -1 } @@ -66,191 +82,233 @@ def __init__(self, model, settings): self.settings = settings self.settings.ValidateAndAssignDefaults(default_parameters) self.variables_settings_list = self.settings["input_variable_settings"] + + self.echo_level = self.settings["echo_level"].GetInt() + self.output_settings = self.settings["output_settings"] + self.output_settings["output_file_settings"].ValidateAndAssignDefaults(default_parameters["output_settings"]["output_file_settings"]) self.output_settings.RecursivelyValidateAndAssignDefaults(default_parameters["output_settings"]) - for variable_settings in self.variables_settings_list: + self.model_part_name = self.settings["model_part_name"].GetString() + + ## set the input variavle x methods operations list + self.list_of_operations = [] + + spatial_output_method_info = [] + for spatial_method_output in dir(SpatialUtilities): + if (spatial_method_output.startswith("Spatial") and spatial_method_output.endswith("Output")): + spatial_output_method_info.append([spatial_method_output.lower()[7:-6], spatial_method_output]) + + spatial_method_output_names_ = [method_info[0] for method_info in spatial_output_method_info] + spatial_method_output = [method_info[1] for method_info in spatial_output_method_info] + + for variable_settings in self.settings["input_variable_settings"]: variable_settings.ValidateAndAssignDefaults(default_parameters["input_variable_settings"][0]) - container_name = variable_settings["container"].GetString() + + container_type = variable_settings["container"].GetString() norm_type = variable_settings["norm_type"].GetString() - method_name = variable_settings["method_name"].GetString() - item_container = GetItemContainer(container_name) - item_norm_container = GetNormTypeContainer(item_container, norm_type) - GetMethod(item_norm_container, method_name) + container = GetItemContainer(container_type) + norm_container = GetNormTypeContainer(container, norm_type) + available_methods, _ = GetAvailableMethods(norm_container) - self.model_part_name = self.settings["model_part_name"].GetString() + for variable_name in variable_settings["variable_names"].GetStringArray(): + if (not Kratos.KratosGlobals.HasVariable(variable_name)): + raise RuntimeError("Variable not found. [ variable_name = " + variable_name + " ]") + + for method_settings in self.settings["statistics_methods"]: + method_settings.ValidateAndAssignDefaults(default_parameters["statistics_methods"][0]) + + method_name = method_settings["method_name"].GetString() + if method_name == "": + raise RuntimeError("Found an empty method name. {:s}".format(method_settings)) - output_control_variable_name = self.settings["output_settings"]["output_control_variable"].GetString() + if method_name not in spatial_method_output_names_: + msg = "Unknown method name [ \"method_name\" = \"" + method_name + "\" ]\n" + msg += "Allowed method names are:\n " + msg += "\n ".join(sorted(spatial_method_output_names_)) + raise RuntimeError(msg) + + + if not method_name in available_methods: + Kratos.Logger.PrintInfo(self.__class__.__name__, "Skipping statistics output for {:s} method for {:s} in {:s} because {:s} norm type does not support it.".format(method_name, variable_name, container_type, norm_type)) + else: + operation_type = getattr(SpatialUtilities, spatial_method_output[spatial_method_output_names_.index(method_name)]) + self.list_of_operations.append(operation_type(container_type, norm_type, variable_name, method_settings["method_settings"])) + + ## set the output controller settings + self.interval_utility = Kratos.IntervalUtility(self.output_settings) + output_control_variable_name = self.output_settings["output_control_variable"].GetString() if (not Kratos.KratosGlobals.HasVariable(output_control_variable_name)): - raise Exception("Unknown output control variable. [ \"output_control_variable\" = \"" + output_control_variable_name + "\" ]") + raise RuntimeError("Unknown output control variable. [ \"output_control_variable\" = \"" + output_control_variable_name + "\" ]") + output_control_variable_type = Kratos.KratosGlobals.GetVariableType(output_control_variable_name) + if (output_control_variable_type not in ["Integer", "Double"]): + raise RuntimeError("Unsupported output control variable type for " + output_control_variable_name + " of " + output_control_variable_type + " type. Supported types are Integer and Double only") + self.output_control_variable = Kratos.KratosGlobals.GetVariable(output_control_variable_name) + self.output_interval = self.output_settings["output_time_interval"].GetDouble() + self.output_value_precision = self.output_settings["output_value_precision"].GetInt() + self.output_value_length = self.output_settings["output_value_length"].GetInt() + + ## set the execution process + self.computation_points = self.settings["computation_points"].GetStringArray() + if self.settings["computation_processes"].size() == 0 or len(self.computation_points) == 0: + self.statistics_computation_processeses = None + else: + self.statistics_computation_processeses = KratosProcessFactory(self.model).ConstructListOfProcesses(self.settings["computation_processes"]) + Kratos.Logger.PrintInfo(self.__class__.__name__, "Created statistics computation processes with following parameters: \n{:s}".format(self.settings["computation_processes"].PrettyPrintJsonString())) + + self.is_headers_written = False Kratos.Logger.PrintInfo("SpatialStatisticsProcess", "Initialized statistics process.") def Check(self): if (not self.model.HasModelPart(self.model_part_name)): - raise Exception(self.model_part_name + " not found.") + raise RuntimeError(self.model_part_name + " not found.") for variable_settings in self.variables_settings_list: variable_names_list = variable_settings["variable_names"].GetStringArray() - for variable_name in variable_names_list: - if (not Kratos.KratosGlobals.HasVariable(variable_name)): - raise Exception("Variable not found. [ variable_name = " + variable_name + " ]") container = variable_settings["container"].GetString() if (container == "nodal_historical"): for variable_name in variable_names_list: variable = Kratos.KratosGlobals.GetVariable(variable_name) if (not self.__get_model_part().HasNodalSolutionStepVariable(variable)): - raise Exception("Variable " + variable_name + " not found in nodal solution step data of " + self.__get_model_part().Name) - - process_info = self.__get_model_part().ProcessInfo - output_settings = self.settings["output_settings"] - output_control_variable_name = output_settings["output_control_variable"].GetString() - output_control_variable = Kratos.KratosGlobals.GetVariable(output_control_variable_name) - output_control_variable_type = Kratos.KratosGlobals.GetVariableType(output_control_variable_name) - - if (not Kratos.KratosGlobals.HasVariable(output_control_variable_name)): - raise Exception("Unknown output control variable " + output_control_variable_name) + raise RuntimeError("Variable " + variable_name + " not found in nodal solution step data of " + self.__get_model_part().Name) - if (output_control_variable_type not in ["Integer", "Double"]): - raise Exception("Unsupported output control variable type for " + output_control_variable_name + " of " + output_control_variable_type + " type. Supported types are Integer and Double only") - - process_info_value = process_info[output_control_variable] - self.output_control_counter = process_info_value - self.previous_process_info_value = process_info_value + if self.statistics_computation_processeses is not None: + for process in self.statistics_computation_processeses: + process.Check() def ExecuteInitialize(self): - kratos_version = "not_given" - if (self.output_settings["write_kratos_version"].GetBool()): - kratos_version = str(Kratos.KratosGlobals.Kernel.Version()) + ## set output file path + self.output_settings["output_file_settings"]["file_name"].SetString(self.output_settings["output_file_settings"]["file_name"].GetString().replace("", self.__get_model_part().FullName())) + self.output_settings["output_file_settings"]["output_path"].SetString(self.output_settings["output_file_settings"]["output_path"].GetString().replace("", self.__get_model_part().FullName())) - time_stamp = "not_specified" - if (self.output_settings["write_time_stamp"].GetBool()): - time_stamp = str(datetime.now()) + self.__write_headers() - output_control_variable_name = self.output_settings["output_control_variable"].GetString() + if self.echo_level > 0: + Kratos.Logger.PrintInfo(self.__class__.__name__, "List of output operations:\n\t" + "\n\t".join([str(operation) for operation in self.list_of_operations])) - self.output_files = [] - for variable_settings in self.variables_settings_list: - container_name = variable_settings["container"].GetString() - norm_type = variable_settings["norm_type"].GetString() - method_name = variable_settings["method_name"].GetString() - - msg_header = "" - msg_header += "# Spatial statistics process output\n" - msg_header += "# Kratos version : " + kratos_version + "\n" - msg_header += "# Timestamp : " + time_stamp + "\n" - msg_header += "# Method Name : " + method_name + "\n" - msg_header += "# Norm type : " + norm_type + "\n" - msg_header += "# Container type : " + container_name + "\n" - msg_header += "# Modelpart name : " + self.model_part_name + "\n" - msg_header += "# Output control variable name : " + output_control_variable_name + "\n" - msg_header += "# ----------------------------------------------------------------------\n" - msg_header += "# Headers:\n" - - output_file_settings = self.output_settings["output_file_settings"] - output_file_name_syntax = output_file_settings["file_name"].GetString() - output_file_name = output_file_name_syntax.replace("", self.model_part_name) - output_file_name = output_file_name.replace("", container_name) - output_file_name = output_file_name.replace("", norm_type) - output_file_name = output_file_name.replace("", method_name) - - current_output_file_settings = Kratos.Parameters("""{}""") - current_output_file_settings.AddEmptyValue("file_name") - current_output_file_settings["file_name"].SetString(output_file_name) - current_output_file_settings.AddEmptyValue("output_path") - current_output_file_settings["output_path"].SetString(output_file_settings["output_path"].GetString()) - # restarting is not supported if STEP is used as the control variable - if (self.__is_writing_process()): - self.output_files.append(TimeBasedAsciiFileWriterUtility(self.__get_model_part(), current_output_file_settings, msg_header)) - else: - self.output_files.append("dummy") + self.previous_process_info_value = self.__get_model_part().ProcessInfo[self.output_control_variable] def ExecuteFinalizeSolutionStep(self): - output_settings = self.settings["output_settings"] - output_control_variable_name = output_settings["output_control_variable"].GetString() - output_control_variable = Kratos.KratosGlobals.GetVariable(output_control_variable_name) - output_control_variable_type = Kratos.KratosGlobals.GetVariableType(output_control_variable_name) + output_control_counter = self.__get_model_part().ProcessInfo[self.output_control_variable] - if (output_control_variable_type == "Integer"): - current_output_control_variable_value = output_settings["output_time_interval"].GetInt() - elif (output_control_variable_type == "Double"): - current_output_control_variable_value = output_settings["output_time_interval"].GetDouble() + if self.interval_utility.IsInInterval(output_control_counter): + if (output_control_counter - self.previous_process_info_value) >= self.output_interval: - self.process_info_value = self.__get_model_part().ProcessInfo[output_control_variable] + # execute the statistics computation process + if self.statistics_computation_processeses is not None: + for process in self.statistics_computation_processeses: + for computation_point in self.computation_points: + getattr(process, computation_point)() - self.output_control_counter += (self.process_info_value - self.previous_process_info_value) + for operation in self.list_of_operations: + operation.Evaluate(self.model_part) - if (self.output_control_counter >= current_output_control_variable_value): - self.CalculateOutput() - self.output_control_counter = 0 - if (self.__is_writing_process()): - for output_file in self.output_files: - output_file.file.write("\n") - output_file.file.flush() + self.__write_values() - self.previous_process_info_value = self.process_info_value + if self.echo_level > 1: + Kratos.Logger.PrintInfo(self.__class__.__name__, "Calculated statistics on {:s}.".format(self.__get_model_part().FullName())) + + self.previous_process_info_value = output_control_counter def ExecuteFinalize(self): if (self.__is_writing_process()): - for output_file in self.output_files: - output_file.file.write("# End of file\n") - output_file.file.close() - - def CalculateOutput(self): - for variable_settings, output_file in zip(self.variables_settings_list, self.output_files): - self.is_output_control_variable_value_written = False - container_name = variable_settings["container"].GetString() - norm_type = variable_settings["norm_type"].GetString() - method_name = variable_settings["method_name"].GetString() + self.output_file.file.write("# End of file.") + self.output_file.file.close() - item_container = GetItemContainer(container_name) - item_norm_container = GetNormTypeContainer(item_container, norm_type) - method = GetMethod(item_norm_container, method_name) + def __write_headers(self): + if (self.__is_writing_process()): + kratos_version = "not_given" + if (self.output_settings["write_kratos_version"].GetBool()): + kratos_version = str(Kratos.KratosGlobals.Kernel.Version()) - variable_list = [] - variable_names_list = variable_settings["variable_names"].GetStringArray() - for variable_name in variable_names_list: - variable_list.append(Kratos.KratosGlobals.GetVariable(variable_name)) - - if (norm_type == "none"): - for index, variable in enumerate(variable_list): - output = method(self.__get_model_part(), variable) - method_headers = GetMethodHeaders(method_name, variable_settings["method_settings"]) - self.__write_output(output, variable_names_list[index], variable_names_list, norm_type, method_name, method_headers, output_file) + time_stamp = "not_specified" + if (self.output_settings["write_time_stamp"].GetBool()): + time_stamp = str(datetime.now()) + + method_name = "" + variable_info = "" + for operation in self.list_of_operations: + if operation.method_name not in method_name: + method_name += operation.method_name + ", " + current_variable_info = "{:s}[{:s}, {:s}], ".format(operation.variable_name, operation.norm_type, operation.container_type) + if current_variable_info not in variable_info: + variable_info += current_variable_info + + self.headers, self.header_lengths = self.__get_headers() + + msg_header = "" + msg_header += "# Spatial statistics process output\n" + msg_header += "# Kratos version : " + kratos_version + "\n" + msg_header += "# Timestamp : " + time_stamp + "\n" + msg_header += "# Method name(s) : " + method_name[:-2] + "\n" + msg_header += "# Variable info(s) : " + variable_info[:-2] + "\n" + msg_header += "# Modelpart name : " + self.model_part_name + "\n" + msg_header += "# Output control variable name : " + self.output_control_variable.Name() + "\n" + msg_header += "# ----------------------------------------------------------------------\n" + msg_header += "# Headers:\n" + msg_header += "#" + " ".join([("{:>" + str(header_length) + "s}").format(header) for header, header_length in zip(self.headers, self.header_lengths)]) + "\n" + + self.output_file = TimeBasedAsciiFileWriterUtility(self.__get_model_part(), self.output_settings["output_file_settings"], msg_header) + + self.is_headers_written = True + + def __get_headers(self): + # check whether only one variable with one + variable_info = "" + for operation in self.list_of_operations: + current_variable_info = "{:s}[{:s}, {:s}], ".format(operation.variable_name, operation.norm_type, operation.container_type) + if current_variable_info not in variable_info: + variable_info += current_variable_info + + headers = ["\"TIME\""] + header_lengths = [max(6, self.output_value_length)] + if self.output_control_variable != Kratos.TIME: + headers.append("\"" + self.output_control_variable.Name() + "\"") + header_lengths.append(max(len(self.output_control_variable.Name()) + 2, self.output_value_length)) + + # found only one variable type info + if variable_info.count(",") == 2: + header_formatting_string = "\"\"" + else: + header_formatting_string = "\" [ | ] \"" + + variable_components = { + "Double": [""], + "Array" : ["_X", "_Y", "_Z"] + } + + for operation in self.list_of_operations: + if operation.norm_type == "none": + comps_list = variable_components[Kratos.KratosGlobals.GetVariableType(operation.variable.Name())] else: - for index, variable in enumerate(variable_list): - output = method(self.__get_model_part(), variable, norm_type, variable_settings["method_settings"]) - method_headers = GetMethodHeaders(method_name, variable_settings["method_settings"]) - self.__write_output(output, variable_names_list[index], variable_names_list, norm_type, method_name, method_headers, output_file) + comps_list = variable_components["Double"] + for current_header, current_header_length in zip(operation.GetHeaders(), operation.GetValueLengths(self.output_value_length)): + for comp in comps_list: + current_header_name = str(header_formatting_string) - def __write_output(self, output, variable_name, variable_names_list, norm_type, method_name, method_headers, output_file): - if (self.__is_writing_process()): - self.__write_headers(norm_type, variable_names_list, method_headers, output_file) - if (not self.is_output_control_variable_value_written): - output_file.file.write(str(self.process_info_value)) - self.is_output_control_variable_value_written = True - output_file.file.write(" ") - output_file.file.write(GetMethodValues(method_name, norm_type, variable_name, output)) + current_header_name = current_header_name.replace("", current_header) + current_header_name = current_header_name.replace("", operation.variable.Name()) + current_header_name = current_header_name.replace("", comp) + current_header_name = current_header_name.replace("", operation.norm_type) + current_header_name = current_header_name.replace("", operation.container_type) + headers.append(current_header_name) + header_lengths.append(max(len(current_header_name), current_header_length)) - def __write_headers(self, norm_type, variable_names_list, method_headers, output_file): - if (self.__is_writing_process()): - if (not hasattr(output_file, "is_variable_headers_written")): - output_file.is_variable_headers_written = False + return headers, header_lengths - if (not output_file.is_variable_headers_written): - msg = "# OutputControlVariableValue" - for variable_name in variable_names_list: - variable_sub_list = GetVariableHeaders(norm_type, variable_name) - for header in method_headers: - for variable_sub_name in variable_sub_list: - msg += " " + variable_sub_name + header - msg += "\n" - output_file.file.write(msg) - output_file.is_variable_headers_written = True + def __write_values(self): + if (self.__is_writing_process()): + values = [GetFormattedValue(self.__get_model_part().ProcessInfo[Kratos.TIME], self.output_value_length, self.output_value_precision)[0]] + if self.output_control_variable != Kratos.TIME: + values.append(GetFormattedValue(self.__get_model_part().ProcessInfo[self.output_control_variable], self.output_value_length, self.output_value_precision)[0]) + for operation in self.list_of_operations: + values.extend(operation.GetValues(self.output_value_length, self.output_value_precision)) + self.output_file.file.write(" " + " ".join([("{:>" + str(header_length) + "s}").format(value) for value, header_length in zip(values, self.header_lengths)]) + "\n") def __get_model_part(self): if (not hasattr(self, "model_part")): diff --git a/applications/StatisticsApplication/python_scripts/spatial_utilities.py b/applications/StatisticsApplication/python_scripts/spatial_utilities.py index 1db9e7129d51..91d7d298a062 100644 --- a/applications/StatisticsApplication/python_scripts/spatial_utilities.py +++ b/applications/StatisticsApplication/python_scripts/spatial_utilities.py @@ -1,6 +1,26 @@ import KratosMultiphysics as Kratos import KratosMultiphysics.StatisticsApplication as Statistics +from KratosMultiphysics.StatisticsApplication.method_utilities import GetNormTypeContainer +from KratosMultiphysics.StatisticsApplication.method_utilities import GetMethod + +def GetFormattedValue(value, length: int, precision: int) -> str: + if isinstance(value, int): + fixed_format = ("{: " + str(length) + ".0f}").format(value) + if len(fixed_format) <= length: + return [fixed_format] + else: + return [("{: " + str(length) + "." + str(precision) + "e}").format(value)] + elif isinstance(value, float): + fixed_format = ("{: " + str(length) + "." + str(precision) + "f}").format(value) + if len(fixed_format) <= length: + return [fixed_format] + else: + return [("{: " + str(length) + "." + str(precision) + "e}").format(value)] + + elif isinstance(value, Kratos.Array3): + return [GetFormattedValue(value[0], length, precision)[0], GetFormattedValue(value[1], length, precision)[0], GetFormattedValue(value[2], length, precision)[0]] + def GetItemContainer(item_container_name): item_container_types = [ ["nodal_historical", Statistics.SpatialMethods.Historical], @@ -20,67 +40,6 @@ def GetItemContainer(item_container_name): return item_container_types_list[item_container_names_list.index(item_container_name)] -def GetMethodHeaders(method_name, parameters): - method_headers = [ - ["sum", ["_Sum"]], - ["mean", ["_Mean"]], - ["rootmeansquare", ["_RootMeanSquare"]], - ["variance", ["_Mean", "_Variance"]], - ["min", ["_Min", "_Id"]], - ["max", ["_Max", "_Id"]], - ["median", ["_Median"]], - ["distribution", ["_Min", "_Max"]] - ] - - if (method_name == "distribution"): - method_headers_list = method_headers[6][1] - number_of_groups = parameters["number_of_value_groups"].GetInt() - method_headers_list.append(" < Min") - for i in range(number_of_groups-1): - method_headers_list.append(" < " + str((i+1) / number_of_groups)) - method_headers_list.append(" <= Max") - method_headers_list.append(" > Max") - - method_header_names = [ method_headers[i][0] for i in range(len(method_headers)) ] - return method_headers[method_header_names.index(method_name)][1] - -def GetMethodValues(method_name, norm_type, variable_name, output): - if norm_type == "none": - variable_sub_list = GetVariableHeaders(norm_type, variable_name) - if (method_name in ["sum", "mean", "rootmeansquare"]): - if (len(variable_sub_list) == 1): - return str(output) - else: - str_output = "" - for i in range(len(variable_sub_list)): - str_output += str(output[i]) + " " - str_output = str_output[:-1] - return str_output - elif (method_name in ["variance"]): - if (len(variable_sub_list) == 1): - return str(output[0]) + " " + str(output[1]) - else: - str_output = "" - for i in range(len(variable_sub_list)): - str_output += str(output[0][i]) + " " - for i in range(len(variable_sub_list)): - str_output += str(output[1][i]) + " " - str_output = str_output[:-1] - return str_output - else: - raise Exception("Unknown value method " + method_name) - else: - if (method_name in ["sum", "mean", "median", "rootmeansquare"]): - return str(output) - elif (method_name in ["min", "max", "variance"]): - return str(output[0]) + " " + str(output[1]) - elif (method_name == "distribution"): - msg = str(output[0]) + " " + str(output[1]) - for _v in output[4]: - msg += " " + str(_v) - return msg - else: - raise Exception("Unknown norm method " + method_name) def GetVariableHeaders(norm_type, variable_name): if (norm_type == "none"): @@ -94,3 +53,174 @@ def GetVariableHeaders(norm_type, variable_name): else: return [variable_name] +class SpatialMethodOutput: + def __init__(self, method_name, container_type, norm_type, variable_name, method_settings = Kratos.Parameters("""{}""")): + self.method_name = method_name + self.container_type = container_type + self.norm_type = norm_type + self.variable_name = variable_name + self.method_settings = method_settings + self.variable = Kratos.KratosGlobals.GetVariable(self.variable_name) + + self.container = GetItemContainer(self.container_type) + self.norm_type_container = GetNormTypeContainer(self.container, norm_type) + method = GetMethod(self.norm_type_container, self.method_name) + + if method_settings.IsEquivalentTo(Kratos.Parameters("""{}""")): + if norm_type == "none": + self.norm_type_container = self.container.ValueMethods + self.method = lambda model_part: method(model_part, self.variable) + else: + self.norm_type_container = self.container.NormMethods + self.method = lambda model_part: method(model_part, self.variable, norm_type) + else: + if norm_type == "none": + self.norm_type_container = self.container.ValueMethods + self.method = lambda model_part: method(model_part, self.variable, method_settings) + else: + self.norm_type_container = self.container.NormMethods + self.method = lambda model_part: method(model_part, self.variable, norm_type, method_settings) + + def Evaluate(self, model_part): + self.data = self.method(model_part) + + def GetValues(self, length, precision): + if isinstance(self.data, float): + return GetFormattedValue(self.data, length, precision) + else: + values = [] + for v in self.data: + values.extend(GetFormattedValue(v, length, precision)) + return values + + def GetValueLengths(self, value_length): + return [value_length] + + def __str__(self): + return self.__class__.__name__ + "(container: {:s}, norm_type: {:s}, variable: {:s})".format(self.container_type, self.norm_type, self.variable_name) + + +class SpatialSumOutput(SpatialMethodOutput): + def __init__(self, container_type, norm_type, variable_name, method_settings = Kratos.Parameters("""{}""")): + super().__init__("sum", container_type, norm_type, variable_name) + + def GetHeaders(self): + return ["sum"] + + +class SpatialMeanOutput(SpatialMethodOutput): + def __init__(self, container_type, norm_type, variable_name, method_settings = Kratos.Parameters("""{}""")): + super().__init__("mean", container_type, norm_type, variable_name) + + def GetHeaders(self): + return ["mean"] + + +class SpatialRootMeanSquareOutput(SpatialMethodOutput): + def __init__(self, container_type, norm_type, variable_name, method_settings = Kratos.Parameters("""{}""")): + super().__init__("rootmeansquare", container_type, norm_type, variable_name) + + def GetHeaders(self): + return ["rootmeansquare"] + + +class SpatialMinOutput(SpatialMethodOutput): + def __init__(self, container_type, norm_type, variable_name, method_settings = Kratos.Parameters("""{}""")): + super().__init__("min", container_type, norm_type, variable_name) + + def GetHeaders(self): + return ["min_value", "min_id"] + + def GetValueLengths(self, value_length): + return [value_length, value_length] + + +class SpatialMaxOutput(SpatialMethodOutput): + def __init__(self, container_type, norm_type, variable_name, method_settings = Kratos.Parameters("""{}""")): + super().__init__("max", container_type, norm_type, variable_name) + + def GetHeaders(self): + return ["max_value", "max_id"] + + def GetValueLengths(self, value_length): + return [value_length, value_length] + + +class SpatialMedianOutput(SpatialMethodOutput): + def __init__(self, container_type, norm_type, variable_name, method_settings = Kratos.Parameters("""{}""")): + super().__init__("median", container_type, norm_type, variable_name) + + def GetHeaders(self): + return ["median"] + + +class SpatialVarianceOutput(SpatialMethodOutput): + def __init__(self, container_type, norm_type, variable_name, method_settings = Kratos.Parameters("""{}""")): + super().__init__("variance", container_type, norm_type, variable_name) + + def GetHeaders(self): + return ["mean", "variance"] + + def GetValueLengths(self, value_length): + return [value_length, value_length] + + +class SpatialDistributionOutput(SpatialMethodOutput): + def __init__(self, container_type, norm_type, variable_name, method_settings): + super().__init__("distribution", container_type, norm_type, variable_name, method_settings) + default_parameters = Kratos.Parameters("""{ "number_of_value_groups": 10 }""") + self.method_settings.AddMissingParameters(default_parameters) + + self.write_min_value = True + if self.method_settings.Has("min_value") and self.method_settings["min_value"].IsDouble(): + self.write_min_value = False + + self.write_max_value = True + if self.method_settings.Has("max_value") and self.method_settings["max_value"].IsDouble(): + self.write_max_value = False + + def Evaluate(self, *args): + super().Evaluate(*args) + (self.min_value, self.max_value, self.group_upper_values, self.group_histogram, self.group_percentage_distribution, self.group_means, self.group_variances) = self.data + + def GetHeaders(self): + number_of_groups = self.method_settings["number_of_value_groups"].GetInt() + headers = [] + if self.write_min_value: + headers.append("min") + if self.write_max_value: + headers.append("max") + + headers.append("group_below_min {mean|variance}") + headers.extend(["group_{:d}".format(i+1) + " {mean|variance}" for i in range(number_of_groups)]) + headers.append("group_above_max {mean|variance}") + return headers + + def GetValues(self, length, precision): + values = [] + if self.write_min_value: + values.append(GetFormattedValue(self.min_value, length, precision)[0]) + if self.write_max_value: + values.append(GetFormattedValue(self.max_value, length, precision)[0]) + + def get_formatted_group_value(hist_v, percentage_v, upper_v, mean_v, variance_v): + s = "{:s} [#] = {:s} [%] < {:s}".format(GetFormattedValue(hist_v, length, precision)[0], GetFormattedValue(percentage_v * 100.0, length, precision)[0], GetFormattedValue(upper_v, length, precision)[0]) + s += " { " + GetFormattedValue(mean_v, length, precision)[0] + " | " + GetFormattedValue(variance_v, length, precision)[0] + " }" + return s + values.extend([get_formatted_group_value(hist_v, percentage_v, upper_v, mean_v, variance_v) for hist_v, percentage_v, upper_v, mean_v, variance_v in zip(self.group_histogram, self.group_percentage_distribution, self.group_upper_values, self.group_means, self.group_variances)]) + values[-1] = values[-1].replace(" <", ">=") + return values + + def GetValueLengths(self, value_length): + values_per_header = [] + if self.write_min_value: + values_per_header.append(value_length) + if self.write_max_value: + values_per_header.append(value_length) + + number_of_groups = self.method_settings["number_of_value_groups"].GetInt() + for _ in range(number_of_groups + 2): + values_per_header.append(22 + value_length * 5) + return values_per_header + + diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical.ref.dat new file mode 100644 index 000000000000..c2559229e803 --- /dev/null +++ b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical.ref.dat @@ -0,0 +1,16 @@ +# Spatial statistics process output +# Kratos version : not_given +# Timestamp : not_specified +# Method name(s) : sum, mean, variance, rootmeansquare, min, max, median, distribution +# Variable info(s) : PRESSURE[none, condition_non_historical], VELOCITY[none, condition_non_historical], PRESSURE[magnitude, condition_non_historical], VELOCITY[magnitude, condition_non_historical], LOAD_MESHES[magnitude, condition_non_historical], GREEN_LAGRANGE_STRAIN_TENSOR[magnitude, condition_non_historical] +# Modelpart name : test_model_part +# Output control variable name : STEP +# ---------------------------------------------------------------------- +# Headers: +# "TIME" "STEP" "PRESSURE [ none | condition_non_historical ] sum" "PRESSURE [ none | condition_non_historical ] mean" "PRESSURE [ none | condition_non_historical ] mean" "PRESSURE [ none | condition_non_historical ] variance" "PRESSURE [ none | condition_non_historical ] rootmeansquare" "VELOCITY_X [ none | condition_non_historical ] sum" "VELOCITY_Y [ none | condition_non_historical ] sum" "VELOCITY_Z [ none | condition_non_historical ] sum" "VELOCITY_X [ none | condition_non_historical ] mean" "VELOCITY_Y [ none | condition_non_historical ] mean" "VELOCITY_Z [ none | condition_non_historical ] mean" "VELOCITY_X [ none | condition_non_historical ] mean" "VELOCITY_Y [ none | condition_non_historical ] mean" "VELOCITY_Z [ none | condition_non_historical ] mean" "VELOCITY_X [ none | condition_non_historical ] variance" "VELOCITY_Y [ none | condition_non_historical ] variance" "VELOCITY_Z [ none | condition_non_historical ] variance" "VELOCITY_X [ none | condition_non_historical ] rootmeansquare" "VELOCITY_Y [ none | condition_non_historical ] rootmeansquare" "VELOCITY_Z [ none | condition_non_historical ] rootmeansquare" "PRESSURE [ magnitude | condition_non_historical ] sum" "PRESSURE [ magnitude | condition_non_historical ] mean" "PRESSURE [ magnitude | condition_non_historical ] mean" "PRESSURE [ magnitude | condition_non_historical ] variance" "PRESSURE [ magnitude | condition_non_historical ] rootmeansquare" "PRESSURE [ magnitude | condition_non_historical ] min_value" "PRESSURE [ magnitude | condition_non_historical ] min_id" "PRESSURE [ magnitude | condition_non_historical ] max_value" "PRESSURE [ magnitude | condition_non_historical ] max_id" "PRESSURE [ magnitude | condition_non_historical ] median" "PRESSURE [ magnitude | condition_non_historical ] min" "PRESSURE [ magnitude | condition_non_historical ] max" "PRESSURE [ magnitude | condition_non_historical ] group_below_min {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_1 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_2 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_3 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_4 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_5 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_6 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_7 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_8 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_9 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_10 {mean|variance}" "PRESSURE [ magnitude | condition_non_historical ] group_above_max {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] sum" "VELOCITY [ magnitude | condition_non_historical ] mean" "VELOCITY [ magnitude | condition_non_historical ] mean" "VELOCITY [ magnitude | condition_non_historical ] variance" "VELOCITY [ magnitude | condition_non_historical ] rootmeansquare" "VELOCITY [ magnitude | condition_non_historical ] min_value" "VELOCITY [ magnitude | condition_non_historical ] min_id" "VELOCITY [ magnitude | condition_non_historical ] max_value" "VELOCITY [ magnitude | condition_non_historical ] max_id" "VELOCITY [ magnitude | condition_non_historical ] median" "VELOCITY [ magnitude | condition_non_historical ] min" "VELOCITY [ magnitude | condition_non_historical ] max" "VELOCITY [ magnitude | condition_non_historical ] group_below_min {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_1 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_2 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_3 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_4 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_5 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_6 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_7 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_8 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_9 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_10 {mean|variance}" "VELOCITY [ magnitude | condition_non_historical ] group_above_max {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] sum" "LOAD_MESHES [ magnitude | condition_non_historical ] mean" "LOAD_MESHES [ magnitude | condition_non_historical ] mean" "LOAD_MESHES [ magnitude | condition_non_historical ] variance" "LOAD_MESHES [ magnitude | condition_non_historical ] rootmeansquare" "LOAD_MESHES [ magnitude | condition_non_historical ] min_value" "LOAD_MESHES [ magnitude | condition_non_historical ] min_id" "LOAD_MESHES [ magnitude | condition_non_historical ] max_value" "LOAD_MESHES [ magnitude | condition_non_historical ] max_id" "LOAD_MESHES [ magnitude | condition_non_historical ] median" "LOAD_MESHES [ magnitude | condition_non_historical ] min" "LOAD_MESHES [ magnitude | condition_non_historical ] max" "LOAD_MESHES [ magnitude | condition_non_historical ] group_below_min {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_1 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_2 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_3 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_4 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_5 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_6 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_7 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_8 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_9 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_10 {mean|variance}" "LOAD_MESHES [ magnitude | condition_non_historical ] group_above_max {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] sum" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] mean" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] mean" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] variance" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] rootmeansquare" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] min_value" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] min_id" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] max_value" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] max_id" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] median" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] min" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] max" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_below_min {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_1 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_2 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_3 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_4 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_5 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_6 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_7 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_8 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_9 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_10 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | condition_non_historical ] group_above_max {mean|variance}" + 2.00000 2 132.00000 16.50000 16.50000 47.25000 17.87456 264.00000 264.00000 264.00000 33.00000 33.00000 33.00000 33.00000 33.00000 33.00000 189.00000 189.00000 189.00000 35.74913 35.74913 35.74913 132.00000 16.50000 16.50000 47.25000 17.87456 6.00000 1 27.00000 8 16.50000 6.00000 27.00000 0 [#] = 0.00000 [%] < 6.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 8.10000 { 6.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 10.20000 { 9.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 12.30000 { 12.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 14.40000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 16.50000 { 15.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 18.60000 { 18.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 20.70000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 22.80000 { 21.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 24.90000 { 24.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 27.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 27.00000 { 27.00000 | 0.00000 } 457.26141 57.15768 57.15768 567.00000 61.91930 20.78461 1 93.53074 8 57.15768 20.78461 93.53074 0 [#] = 0.00000 [%] < 20.78461 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 28.05922 { 20.78461 | 0.00000 } 1 [#] = 12.50000 [%] < 35.33384 { 31.17691 | 0.00000 } 1 [#] = 12.50000 [%] < 42.60845 { 41.56922 | 0.00000 } 0 [#] = 0.00000 [%] < 49.88306 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 57.15768 { 51.96152 | 0.00000 } 1 [#] = 12.50000 [%] < 64.43229 { 62.35383 | 0.00000 } 0 [#] = 0.00000 [%] < 71.70690 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 78.98152 { 72.74613 | 0.00000 } 1 [#] = 12.50000 [%] < 86.25613 { 83.13844 | 0.00000 } 0 [#] = 0.00000 [%] < 93.53074 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 93.53074 { 93.53074 | 0.00000 } 348.82660 43.60333 43.60333 236.25000 46.23311 20.12461 1 67.08204 8 43.60333 20.12461 67.08204 0 [#] = 0.00000 [%] < 20.12461 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 24.82035 { 20.12461 | 0.00000 } 1 [#] = 12.50000 [%] < 29.51610 { 26.83282 | 0.00000 } 1 [#] = 12.50000 [%] < 34.21184 { 33.54102 | 0.00000 } 0 [#] = 0.00000 [%] < 38.90758 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 43.60333 { 40.24922 | 0.00000 } 1 [#] = 12.50000 [%] < 48.29907 { 46.95743 | 0.00000 } 0 [#] = 0.00000 [%] < 52.99481 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 57.69055 { 53.66563 | 0.00000 } 1 [#] = 12.50000 [%] < 62.38630 { 60.37384 | 0.00000 } 0 [#] = 0.00000 [%] < 67.08204 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 67.08204 { 67.08204 | 0.00000 } 1800.00000 225.00000 225.00000 4725.00000 235.26581 120.00000 1 330.00000 8 225.00000 120.00000 330.00000 0 [#] = 0.00000 [%] < 120.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 141.00000 { 120.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 162.00000 { 150.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 183.00000 { 180.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 204.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 225.00000 { 210.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 246.00000 { 240.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 267.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 288.00000 { 270.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 309.00000 { 300.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 330.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 330.00000 { 330.00000 | 0.00000 } + 4.00000 4 220.00000 27.50000 27.50000 131.25000 29.79094 440.00000 440.00000 440.00000 55.00000 55.00000 55.00000 55.00000 55.00000 55.00000 525.00000 525.00000 525.00000 59.58188 59.58188 59.58188 220.00000 27.50000 27.50000 131.25000 29.79094 10.00000 1 45.00000 8 27.50000 10.00000 45.00000 0 [#] = 0.00000 [%] < 10.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 13.50000 { 10.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 17.00000 { 15.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 20.50000 { 20.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 24.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 27.50000 { 25.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 31.00000 { 30.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 34.50000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 38.00000 { 35.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 41.50000 { 40.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 45.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 45.00000 { 45.00000 | 0.00000 } 762.10236 95.26279 95.26279 1575.00000 103.19884 34.64102 1 155.88457 8 95.26279 34.64102 155.88457 0 [#] = 0.00000 [%] < 34.64102 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 46.76537 { 34.64102 | 0.00000 } 1 [#] = 12.50000 [%] < 58.88973 { 51.96152 | 0.00000 } 1 [#] = 12.50000 [%] < 71.01408 { 69.28203 | 0.00000 } 0 [#] = 0.00000 [%] < 83.13844 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 95.26279 { 86.60254 | 0.00000 } 1 [#] = 12.50000 [%] < 107.38715 { 103.92305 | 0.00000 } 0 [#] = 0.00000 [%] < 119.51151 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 131.63586 { 121.24356 | 0.00000 } 1 [#] = 12.50000 [%] < 143.76022 { 138.56406 | 0.00000 } 0 [#] = 0.00000 [%] < 155.88457 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 155.88457 { 155.88457 | 0.00000 } 581.37767 72.67221 72.67221 656.25000 77.05518 33.54102 1 111.80340 8 72.67221 33.54102 111.80340 0 [#] = 0.00000 [%] < 33.54102 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 41.36726 { 33.54102 | 0.00000 } 1 [#] = 12.50000 [%] < 49.19350 { 44.72136 | 0.00000 } 1 [#] = 12.50000 [%] < 57.01973 { 55.90170 | 0.00000 } 0 [#] = 0.00000 [%] < 64.84597 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 72.67221 { 67.08204 | 0.00000 } 1 [#] = 12.50000 [%] < 80.49845 { 78.26238 | 0.00000 } 0 [#] = 0.00000 [%] < 88.32469 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 96.15092 { 89.44272 | 0.00000 } 1 [#] = 12.50000 [%] < 103.97716 { 100.62306 | 0.00000 } 0 [#] = 0.00000 [%] < 111.80340 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 111.80340 { 111.80340 | 0.00000 } 3000.00000 375.00000 375.00000 13125.00000 392.10968 200.00000 1 550.00000 8 375.00000 200.00000 550.00000 0 [#] = 0.00000 [%] < 200.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 235.00000 { 200.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 270.00000 { 250.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 305.00000 { 300.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 340.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 375.00000 { 350.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 410.00000 { 400.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 445.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 480.00000 { 450.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 515.00000 { 500.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 550.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 550.00000 { 550.00000 | 0.00000 } + 6.00000 6 308.00000 38.50000 38.50000 257.25000 41.70731 616.00000 616.00000 616.00000 77.00000 77.00000 77.00000 77.00000 77.00000 77.00000 1029.00000 1029.00000 1029.00000 83.41463 83.41463 83.41463 308.00000 38.50000 38.50000 257.25000 41.70731 14.00000 1 63.00000 8 38.50000 14.00000 63.00000 0 [#] = 0.00000 [%] < 14.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 18.90000 { 14.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 23.80000 { 21.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 28.70000 { 28.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 33.60000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 38.50000 { 35.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 43.40000 { 42.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 48.30000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 53.20000 { 49.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 58.10000 { 56.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 63.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 63.00000 { 63.00000 | 0.00000 } 1066.94330 133.36791 133.36791 3087.00000 144.47837 48.49742 1 218.23840 8 133.36791 48.49742 218.23840 0 [#] = 0.00000 [%] < 48.49742 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 65.47152 { 48.49742 | 0.00000 } 1 [#] = 12.50000 [%] < 82.44562 { 72.74613 | 0.00000 } 1 [#] = 12.50000 [%] < 99.41972 { 96.99485 | 0.00000 } 0 [#] = 0.00000 [%] < 116.39381 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 133.36791 { 121.24356 | 0.00000 } 1 [#] = 12.50000 [%] < 150.34201 { 145.49227 | 0.00000 } 0 [#] = 0.00000 [%] < 167.31611 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 184.29021 { 169.74098 | 0.00000 } 1 [#] = 12.50000 [%] < 201.26430 { 193.98969 | 0.00000 } 0 [#] = 0.00000 [%] < 218.23840 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 218.23840 { 218.23840 | 0.00000 } 813.92874 101.74109 101.74109 1286.25000 107.87725 46.95743 1 156.52476 8 101.74109 46.95743 156.52476 0 [#] = 0.00000 [%] < 46.95743 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 57.91416 { 46.95743 | 0.00000 } 1 [#] = 12.50000 [%] < 68.87089 { 62.60990 | 0.00000 } 1 [#] = 12.50000 [%] < 79.82763 { 78.26238 | 0.00000 } 0 [#] = 0.00000 [%] < 90.78436 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 101.74109 { 93.91486 | 0.00000 } 1 [#] = 12.50000 [%] < 112.69783 { 109.56733 | 0.00000 } 0 [#] = 0.00000 [%] < 123.65456 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 134.61129 { 125.21981 | 0.00000 } 1 [#] = 12.50000 [%] < 145.56803 { 140.87228 | 0.00000 } 0 [#] = 0.00000 [%] < 156.52476 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 156.52476 { 156.52476 | 0.00000 } 4200.00000 525.00000 525.00000 25725.00000 548.95355 280.00000 1 770.00000 8 525.00000 280.00000 770.00000 0 [#] = 0.00000 [%] < 280.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 329.00000 { 280.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 378.00000 { 350.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 427.00000 { 420.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 476.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 525.00000 { 490.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 574.00000 { 560.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 623.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 672.00000 { 630.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 721.00000 { 700.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 770.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 770.00000 { 770.00000 | 0.00000 } + 8.00000 8 396.00000 49.50000 49.50000 425.25000 53.62369 792.00000 792.00000 792.00000 99.00000 99.00000 99.00000 99.00000 99.00000 99.00000 1701.00000 1701.00000 1701.00000 107.24738 107.24738 107.24738 396.00000 49.50000 49.50000 425.25000 53.62369 18.00000 1 81.00000 8 49.50000 18.00000 81.00000 0 [#] = 0.00000 [%] < 18.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 24.30000 { 18.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 30.60000 { 27.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 36.90000 { 36.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 43.20000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 49.50000 { 45.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 55.80000 { 54.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 62.10000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 68.40000 { 63.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 74.70000 { 72.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 81.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 81.00000 { 81.00000 | 0.00000 } 1371.78424 171.47303 171.47303 5103.00000 185.75791 62.35383 1 280.59223 8 171.47303 62.35383 280.59223 0 [#] = 0.00000 [%] < 62.35383 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 84.17767 { 62.35383 | 0.00000 } 1 [#] = 12.50000 [%] < 106.00151 { 93.53074 | 0.00000 } 1 [#] = 12.50000 [%] < 127.82535 { 124.70766 | 0.00000 } 0 [#] = 0.00000 [%] < 149.64919 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 171.47303 { 155.88457 | 0.00000 } 1 [#] = 12.50000 [%] < 193.29687 { 187.06149 | 0.00000 } 0 [#] = 0.00000 [%] < 215.12071 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 236.94455 { 218.23840 | 0.00000 } 1 [#] = 12.50000 [%] < 258.76839 { 249.41532 | 0.00000 } 0 [#] = 0.00000 [%] < 280.59223 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 280.59223 { 280.59223 | 0.00000 } 1046.47981 130.80998 130.80998 2126.25000 138.69932 60.37384 1 201.24612 8 130.80998 60.37384 201.24612 0 [#] = 0.00000 [%] < 60.37384 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 74.46106 { 60.37384 | 0.00000 } 1 [#] = 12.50000 [%] < 88.54829 { 80.49845 | 0.00000 } 1 [#] = 12.50000 [%] < 102.63552 { 100.62306 | 0.00000 } 0 [#] = 0.00000 [%] < 116.72275 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 130.80998 { 120.74767 | 0.00000 } 1 [#] = 12.50000 [%] < 144.89720 { 140.87228 | 0.00000 } 0 [#] = 0.00000 [%] < 158.98443 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 173.07166 { 160.99689 | 0.00000 } 1 [#] = 12.50000 [%] < 187.15889 { 181.12151 | 0.00000 } 0 [#] = 0.00000 [%] < 201.24612 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 201.24612 { 201.24612 | 0.00000 } 5400.00000 675.00000 675.00000 42525.00000 705.79742 360.00000 1 990.00000 8 675.00000 360.00000 990.00000 0 [#] = 0.00000 [%] < 360.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 423.00000 { 360.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 486.00000 { 450.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 549.00000 { 540.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 612.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 675.00000 { 630.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 738.00000 { 720.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 801.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 864.00000 { 810.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 927.00000 { 900.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 990.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 990.00000 { 990.00000 | 0.00000 } + 10.00000 10 484.00000 60.50000 60.50000 635.25000 65.54006 968.00000 968.00000 968.00000 121.00000 121.00000 121.00000 121.00000 121.00000 121.00000 2541.00000 2541.00000 2541.00000 131.08013 131.08013 131.08013 484.00000 60.50000 60.50000 635.25000 65.54006 22.00000 1 99.00000 8 60.50000 22.00000 99.00000 0 [#] = 0.00000 [%] < 22.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 29.70000 { 22.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 37.40000 { 33.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 45.10000 { 44.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 52.80000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 60.50000 { 55.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 68.20000 { 66.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 75.90000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 83.60000 { 77.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 91.30000 { 88.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 99.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 99.00000 { 99.00000 | 0.00000 } 1676.62518 209.57815 209.57815 7623.00000 227.03744 76.21024 1 342.94606 8 209.57815 76.21024 342.94606 0 [#] = 0.00000 [%] < 76.21024 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 102.88382 { 76.21024 | 0.00000 } 1 [#] = 12.50000 [%] < 129.55740 { 114.31535 | 0.00000 } 1 [#] = 12.50000 [%] < 156.23098 { 152.42047 | 0.00000 } 0 [#] = 0.00000 [%] < 182.90457 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 209.57815 { 190.52559 | 0.00000 } 1 [#] = 12.50000 [%] < 236.25173 { 228.63071 | 0.00000 } 0 [#] = 0.00000 [%] < 262.92531 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 289.59890 { 266.73582 | 0.00000 } 1 [#] = 12.50000 [%] < 316.27248 { 304.84094 | 0.00000 } 0 [#] = 0.00000 [%] < 342.94606 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 342.94606 { 342.94606 | 0.00000 } 1279.03088 159.87886 159.87886 3176.25000 169.52139 73.79024 1 245.96748 8 159.87886 73.79024 245.96748 0 [#] = 0.00000 [%] < 73.79024 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 91.00797 { 73.79024 | 0.00000 } 1 [#] = 12.50000 [%] < 108.22569 { 98.38699 | 0.00000 } 1 [#] = 12.50000 [%] < 125.44341 { 122.98374 | 0.00000 } 0 [#] = 0.00000 [%] < 142.66114 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 159.87886 { 147.58049 | 0.00000 } 1 [#] = 12.50000 [%] < 177.09658 { 172.17723 | 0.00000 } 0 [#] = 0.00000 [%] < 194.31431 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 211.53203 { 196.77398 | 0.00000 } 1 [#] = 12.50000 [%] < 228.74975 { 221.37073 | 0.00000 } 0 [#] = 0.00000 [%] < 245.96748 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 245.96748 { 245.96748 | 0.00000 } 6600.00000 825.00000 825.00000 63525.00000 862.64129 440.00000 1 1210.00000 8 825.00000 440.00000 1210.00000 0 [#] = 0.00000 [%] < 440.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 517.00000 { 440.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 594.00000 { 550.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 671.00000 { 660.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 748.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 825.00000 { 770.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 902.00000 { 880.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 979.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 1056.00000 { 990.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 1133.00000 { 1100.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 1210.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 1210.00000 { 1210.00000 | 0.00000 } +# End of file. \ No newline at end of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_distribution.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_distribution.ref.dat deleted file mode 100644 index b3e1d04ef7de..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_distribution.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : distribution -# Norm type : magnitude -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Min PRESSURE_Max VELOCITY_Min VELOCITY_Max LOAD_MESHES_Min LOAD_MESHES_Max GREEN_LAGRANGE_STRAIN_TENSOR_Min GREEN_LAGRANGE_STRAIN_TENSOR_Max -2 6.0 27.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 20.784609690826528 93.53074360871938 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 20.12461179749811 67.08203932499369 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 120.0 330.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -4 10.0 45.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 34.64101615137755 155.88457268119896 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 33.54101966249684 111.80339887498948 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 200.0 550.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -6 14.0 63.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 48.49742261192856 218.23840175367854 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 46.95742752749558 156.52475842498527 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 280.0 770.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -8 18.0 81.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 62.353829072479584 280.59223082615813 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 60.37383539249432 201.24611797498108 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 360.0 990.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -10 22.0 99.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 76.2102355330306 342.9460598986377 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 73.79024325749306 245.96747752497686 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 440.0 1210.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_max.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_max.ref.dat deleted file mode 100644 index 688e556b4ca0..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_max.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : max -# Norm type : magnitude -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Max PRESSURE_Id VELOCITY_Max VELOCITY_Id LOAD_MESHES_Max LOAD_MESHES_Id GREEN_LAGRANGE_STRAIN_TENSOR_Max GREEN_LAGRANGE_STRAIN_TENSOR_Id -2 27.0 8 93.53074360871938 8 67.08203932499369 8 330.0 8 -4 45.0 8 155.88457268119896 8 111.80339887498948 8 550.0 8 -6 63.0 8 218.23840175367854 8 156.52475842498527 8 770.0 8 -8 81.0 8 280.59223082615813 8 201.24611797498108 8 990.0 8 -10 99.0 8 342.9460598986377 8 245.96747752497686 8 1210.0 8 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_mean.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_mean.ref.dat deleted file mode 100644 index 068359151f95..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_mean.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : mean -# Norm type : magnitude -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean VELOCITY_Mean LOAD_MESHES_Mean GREEN_LAGRANGE_STRAIN_TENSOR_Mean -2 16.5 57.15767664977295 43.603325561245896 225.0 -4 27.5 95.26279441628826 72.67220926874316 375.0 -6 38.5 133.36791218280354 101.74109297624042 525.0 -8 49.5 171.47302994931886 130.8099766837377 675.0 -10 60.5 209.57814771583415 159.87886039123495 825.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_median.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_median.ref.dat deleted file mode 100644 index f7cc462abda2..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_median.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : median -# Norm type : magnitude -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Median VELOCITY_Median LOAD_MESHES_Median GREEN_LAGRANGE_STRAIN_TENSOR_Median -2 16.5 57.15767664977295 43.603325561245896 225.0 -4 27.5 95.26279441628824 72.67220926874316 375.0 -6 38.5 133.36791218280354 101.74109297624042 525.0 -8 49.5 171.47302994931886 130.8099766837377 675.0 -10 60.5 209.57814771583415 159.87886039123498 825.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_min.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_min.ref.dat deleted file mode 100644 index c4ee664abe7e..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_min.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : min -# Norm type : magnitude -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Min PRESSURE_Id VELOCITY_Min VELOCITY_Id LOAD_MESHES_Min LOAD_MESHES_Id GREEN_LAGRANGE_STRAIN_TENSOR_Min GREEN_LAGRANGE_STRAIN_TENSOR_Id -2 6.0 1 20.784609690826528 1 20.12461179749811 1 120.0 1 -4 10.0 1 34.64101615137755 1 33.54101966249684 1 200.0 1 -6 14.0 1 48.49742261192856 1 46.95742752749558 1 280.0 1 -8 18.0 1 62.353829072479584 1 60.37383539249432 1 360.0 1 -10 22.0 1 76.2102355330306 1 73.79024325749306 1 440.0 1 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_rootmeansquare.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_rootmeansquare.ref.dat deleted file mode 100644 index 328333887a4a..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_rootmeansquare.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : rootmeansquare -# Norm type : magnitude -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_RootMeanSquare VELOCITY_RootMeanSquare LOAD_MESHES_RootMeanSquare GREEN_LAGRANGE_STRAIN_TENSOR_RootMeanSquare -2 17.874562931719478 61.91930232165088 46.233105022267324 235.26580712037182 -4 29.790938219532464 103.19883720275146 77.0551750371122 392.10967853395306 -6 41.70731350734545 144.47837208385207 107.87724505195709 548.9535499475343 -8 53.62368879515843 185.75790696495264 138.69931506680197 705.7974213611155 -10 65.54006408297141 227.0374418460532 169.52138508164686 862.6412927746967 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_sum.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_sum.ref.dat deleted file mode 100644 index 0623d7dbbcba..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_sum.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : sum -# Norm type : magnitude -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Sum VELOCITY_Sum LOAD_MESHES_Sum GREEN_LAGRANGE_STRAIN_TENSOR_Sum -2 132.0 457.2614131981836 348.82660448996717 1800.0 -4 220.0 762.102355330306 581.3776741499453 3000.0 -6 308.0 1066.9432974624283 813.9287438099235 4200.0 -8 396.0 1371.7842395945509 1046.4798134699015 5400.0 -10 484.0 1676.6251817266732 1279.0308831298796 6600.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_variance.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_variance.ref.dat deleted file mode 100644 index b4ee2b83c24a..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_magnitude_variance.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : variance -# Norm type : magnitude -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean PRESSURE_Variance VELOCITY_Mean VELOCITY_Variance LOAD_MESHES_Mean LOAD_MESHES_Variance GREEN_LAGRANGE_STRAIN_TENSOR_Mean GREEN_LAGRANGE_STRAIN_TENSOR_Variance -2 16.5 47.25 57.15767664977295 567.0 43.603325561245896 236.25000000000023 225.0 4725.0 -4 27.5 131.25 95.26279441628824 1575.0000000000018 72.67220926874317 656.2499999999991 375.0 13125.0 -6 38.5 257.25 133.36791218280354 3087.0000000000036 101.74109297624042 1286.2500000000018 525.0 25725.0 -8 49.5 425.25 171.47302994931886 5103.0 130.80997668373772 2126.2499999999964 675.0 42525.0 -10 60.5 635.25 209.57814771583415 7623.0 159.87886039123495 3176.2500000000036 825.0 63525.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_mean.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_mean.ref.dat deleted file mode 100644 index 4ed2a63682fa..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_mean.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : mean -# Norm type : none -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean VELOCITY_X_Mean VELOCITY_Y_Mean VELOCITY_Z_Mean -2 16.5 33.0 33.0 33.0 -4 27.5 55.0 55.0 55.0 -6 38.5 77.0 77.0 77.0 -8 49.5 99.0 99.0 99.0 -10 60.5 121.0 121.0 121.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_rootmeansquare.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_rootmeansquare.ref.dat deleted file mode 100644 index fa4ac629a04e..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_rootmeansquare.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : rootmeansquare -# Norm type : none -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_RootMeanSquare VELOCITY_X_RootMeanSquare VELOCITY_Y_RootMeanSquare VELOCITY_Z_RootMeanSquare -2 17.874562931719478 35.749125863438955 35.749125863438955 35.749125863438955 -4 29.790938219532464 59.58187643906493 59.58187643906493 59.58187643906493 -6 41.70731350734545 83.4146270146909 83.4146270146909 83.4146270146909 -8 53.62368879515843 107.24737759031686 107.24737759031686 107.24737759031686 -10 65.54006408297141 131.08012816594282 131.08012816594282 131.08012816594282 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_sum.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_sum.ref.dat deleted file mode 100644 index 58cffc88223f..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_sum.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : sum -# Norm type : none -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Sum VELOCITY_X_Sum VELOCITY_Y_Sum VELOCITY_Z_Sum -2 132.0 264.0 264.0 264.0 -4 220.0 440.0 440.0 440.0 -6 308.0 616.0 616.0 616.0 -8 396.0 792.0 792.0 792.0 -10 484.0 968.0 968.0 968.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_variance.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_variance.ref.dat deleted file mode 100644 index b6d52b67cfbb..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_condition_non_historical_none_variance.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : variance -# Norm type : none -# Container type : condition_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean PRESSURE_Variance VELOCITY_X_Mean VELOCITY_Y_Mean VELOCITY_Z_Mean VELOCITY_X_Variance VELOCITY_Y_Variance VELOCITY_Z_Variance -2 16.5 47.25 33.0 33.0 33.0 189.0 189.0 189.0 -4 27.5 131.25 55.0 55.0 55.0 525.0 525.0 525.0 -6 38.5 257.25 77.0 77.0 77.0 1029.0 1029.0 1029.0 -8 49.5 425.25 99.0 99.0 99.0 1701.0 1701.0 1701.0 -10 60.5 635.25 121.0 121.0 121.0 2541.0 2541.0 2541.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical.ref.dat new file mode 100644 index 000000000000..2280cab3e0c1 --- /dev/null +++ b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical.ref.dat @@ -0,0 +1,16 @@ +# Spatial statistics process output +# Kratos version : not_given +# Timestamp : not_specified +# Method name(s) : sum, mean, variance, rootmeansquare, min, max, median, distribution +# Variable info(s) : PRESSURE[none, element_non_historical], VELOCITY[none, element_non_historical], PRESSURE[magnitude, element_non_historical], VELOCITY[magnitude, element_non_historical], LOAD_MESHES[magnitude, element_non_historical], GREEN_LAGRANGE_STRAIN_TENSOR[magnitude, element_non_historical] +# Modelpart name : test_model_part +# Output control variable name : STEP +# ---------------------------------------------------------------------- +# Headers: +# "TIME" "STEP" "PRESSURE [ none | element_non_historical ] sum" "PRESSURE [ none | element_non_historical ] mean" "PRESSURE [ none | element_non_historical ] mean" "PRESSURE [ none | element_non_historical ] variance" "PRESSURE [ none | element_non_historical ] rootmeansquare" "VELOCITY_X [ none | element_non_historical ] sum" "VELOCITY_Y [ none | element_non_historical ] sum" "VELOCITY_Z [ none | element_non_historical ] sum" "VELOCITY_X [ none | element_non_historical ] mean" "VELOCITY_Y [ none | element_non_historical ] mean" "VELOCITY_Z [ none | element_non_historical ] mean" "VELOCITY_X [ none | element_non_historical ] mean" "VELOCITY_Y [ none | element_non_historical ] mean" "VELOCITY_Z [ none | element_non_historical ] mean" "VELOCITY_X [ none | element_non_historical ] variance" "VELOCITY_Y [ none | element_non_historical ] variance" "VELOCITY_Z [ none | element_non_historical ] variance" "VELOCITY_X [ none | element_non_historical ] rootmeansquare" "VELOCITY_Y [ none | element_non_historical ] rootmeansquare" "VELOCITY_Z [ none | element_non_historical ] rootmeansquare" "PRESSURE [ magnitude | element_non_historical ] sum" "PRESSURE [ magnitude | element_non_historical ] mean" "PRESSURE [ magnitude | element_non_historical ] mean" "PRESSURE [ magnitude | element_non_historical ] variance" "PRESSURE [ magnitude | element_non_historical ] rootmeansquare" "PRESSURE [ magnitude | element_non_historical ] min_value" "PRESSURE [ magnitude | element_non_historical ] min_id" "PRESSURE [ magnitude | element_non_historical ] max_value" "PRESSURE [ magnitude | element_non_historical ] max_id" "PRESSURE [ magnitude | element_non_historical ] median" "PRESSURE [ magnitude | element_non_historical ] min" "PRESSURE [ magnitude | element_non_historical ] max" "PRESSURE [ magnitude | element_non_historical ] group_below_min {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_1 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_2 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_3 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_4 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_5 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_6 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_7 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_8 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_9 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_10 {mean|variance}" "PRESSURE [ magnitude | element_non_historical ] group_above_max {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] sum" "VELOCITY [ magnitude | element_non_historical ] mean" "VELOCITY [ magnitude | element_non_historical ] mean" "VELOCITY [ magnitude | element_non_historical ] variance" "VELOCITY [ magnitude | element_non_historical ] rootmeansquare" "VELOCITY [ magnitude | element_non_historical ] min_value" "VELOCITY [ magnitude | element_non_historical ] min_id" "VELOCITY [ magnitude | element_non_historical ] max_value" "VELOCITY [ magnitude | element_non_historical ] max_id" "VELOCITY [ magnitude | element_non_historical ] median" "VELOCITY [ magnitude | element_non_historical ] min" "VELOCITY [ magnitude | element_non_historical ] max" "VELOCITY [ magnitude | element_non_historical ] group_below_min {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_1 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_2 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_3 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_4 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_5 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_6 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_7 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_8 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_9 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_10 {mean|variance}" "VELOCITY [ magnitude | element_non_historical ] group_above_max {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] sum" "LOAD_MESHES [ magnitude | element_non_historical ] mean" "LOAD_MESHES [ magnitude | element_non_historical ] mean" "LOAD_MESHES [ magnitude | element_non_historical ] variance" "LOAD_MESHES [ magnitude | element_non_historical ] rootmeansquare" "LOAD_MESHES [ magnitude | element_non_historical ] min_value" "LOAD_MESHES [ magnitude | element_non_historical ] min_id" "LOAD_MESHES [ magnitude | element_non_historical ] max_value" "LOAD_MESHES [ magnitude | element_non_historical ] max_id" "LOAD_MESHES [ magnitude | element_non_historical ] median" "LOAD_MESHES [ magnitude | element_non_historical ] min" "LOAD_MESHES [ magnitude | element_non_historical ] max" "LOAD_MESHES [ magnitude | element_non_historical ] group_below_min {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_1 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_2 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_3 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_4 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_5 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_6 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_7 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_8 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_9 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_10 {mean|variance}" "LOAD_MESHES [ magnitude | element_non_historical ] group_above_max {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] sum" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] mean" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] mean" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] variance" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] rootmeansquare" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] min_value" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] min_id" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] max_value" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] max_id" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] median" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] min" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] max" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_below_min {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_1 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_2 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_3 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_4 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_5 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_6 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_7 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_8 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_9 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_10 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | element_non_historical ] group_above_max {mean|variance}" + 2.00000 2 132.00000 16.50000 16.50000 47.25000 17.87456 264.00000 264.00000 264.00000 33.00000 33.00000 33.00000 33.00000 33.00000 33.00000 189.00000 189.00000 189.00000 35.74913 35.74913 35.74913 132.00000 16.50000 16.50000 47.25000 17.87456 6.00000 1 27.00000 8 16.50000 6.00000 27.00000 0 [#] = 0.00000 [%] < 6.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 8.10000 { 6.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 10.20000 { 9.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 12.30000 { 12.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 14.40000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 16.50000 { 15.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 18.60000 { 18.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 20.70000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 22.80000 { 21.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 24.90000 { 24.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 27.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 27.00000 { 27.00000 | 0.00000 } 457.26141 57.15768 57.15768 567.00000 61.91930 20.78461 1 93.53074 8 57.15768 20.78461 93.53074 0 [#] = 0.00000 [%] < 20.78461 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 28.05922 { 20.78461 | 0.00000 } 1 [#] = 12.50000 [%] < 35.33384 { 31.17691 | 0.00000 } 1 [#] = 12.50000 [%] < 42.60845 { 41.56922 | 0.00000 } 0 [#] = 0.00000 [%] < 49.88306 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 57.15768 { 51.96152 | 0.00000 } 1 [#] = 12.50000 [%] < 64.43229 { 62.35383 | 0.00000 } 0 [#] = 0.00000 [%] < 71.70690 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 78.98152 { 72.74613 | 0.00000 } 1 [#] = 12.50000 [%] < 86.25613 { 83.13844 | 0.00000 } 0 [#] = 0.00000 [%] < 93.53074 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 93.53074 { 93.53074 | 0.00000 } 348.82660 43.60333 43.60333 236.25000 46.23311 20.12461 1 67.08204 8 43.60333 20.12461 67.08204 0 [#] = 0.00000 [%] < 20.12461 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 24.82035 { 20.12461 | 0.00000 } 1 [#] = 12.50000 [%] < 29.51610 { 26.83282 | 0.00000 } 1 [#] = 12.50000 [%] < 34.21184 { 33.54102 | 0.00000 } 0 [#] = 0.00000 [%] < 38.90758 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 43.60333 { 40.24922 | 0.00000 } 1 [#] = 12.50000 [%] < 48.29907 { 46.95743 | 0.00000 } 0 [#] = 0.00000 [%] < 52.99481 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 57.69055 { 53.66563 | 0.00000 } 1 [#] = 12.50000 [%] < 62.38630 { 60.37384 | 0.00000 } 0 [#] = 0.00000 [%] < 67.08204 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 67.08204 { 67.08204 | 0.00000 } 1800.00000 225.00000 225.00000 4725.00000 235.26581 120.00000 1 330.00000 8 225.00000 120.00000 330.00000 0 [#] = 0.00000 [%] < 120.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 141.00000 { 120.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 162.00000 { 150.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 183.00000 { 180.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 204.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 225.00000 { 210.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 246.00000 { 240.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 267.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 288.00000 { 270.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 309.00000 { 300.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 330.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 330.00000 { 330.00000 | 0.00000 } + 4.00000 4 220.00000 27.50000 27.50000 131.25000 29.79094 440.00000 440.00000 440.00000 55.00000 55.00000 55.00000 55.00000 55.00000 55.00000 525.00000 525.00000 525.00000 59.58188 59.58188 59.58188 220.00000 27.50000 27.50000 131.25000 29.79094 10.00000 1 45.00000 8 27.50000 10.00000 45.00000 0 [#] = 0.00000 [%] < 10.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 13.50000 { 10.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 17.00000 { 15.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 20.50000 { 20.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 24.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 27.50000 { 25.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 31.00000 { 30.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 34.50000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 38.00000 { 35.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 41.50000 { 40.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 45.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 45.00000 { 45.00000 | 0.00000 } 762.10236 95.26279 95.26279 1575.00000 103.19884 34.64102 1 155.88457 8 95.26279 34.64102 155.88457 0 [#] = 0.00000 [%] < 34.64102 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 46.76537 { 34.64102 | 0.00000 } 1 [#] = 12.50000 [%] < 58.88973 { 51.96152 | 0.00000 } 1 [#] = 12.50000 [%] < 71.01408 { 69.28203 | 0.00000 } 0 [#] = 0.00000 [%] < 83.13844 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 95.26279 { 86.60254 | 0.00000 } 1 [#] = 12.50000 [%] < 107.38715 { 103.92305 | 0.00000 } 0 [#] = 0.00000 [%] < 119.51151 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 131.63586 { 121.24356 | 0.00000 } 1 [#] = 12.50000 [%] < 143.76022 { 138.56406 | 0.00000 } 0 [#] = 0.00000 [%] < 155.88457 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 155.88457 { 155.88457 | 0.00000 } 581.37767 72.67221 72.67221 656.25000 77.05518 33.54102 1 111.80340 8 72.67221 33.54102 111.80340 0 [#] = 0.00000 [%] < 33.54102 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 41.36726 { 33.54102 | 0.00000 } 1 [#] = 12.50000 [%] < 49.19350 { 44.72136 | 0.00000 } 1 [#] = 12.50000 [%] < 57.01973 { 55.90170 | 0.00000 } 0 [#] = 0.00000 [%] < 64.84597 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 72.67221 { 67.08204 | 0.00000 } 1 [#] = 12.50000 [%] < 80.49845 { 78.26238 | 0.00000 } 0 [#] = 0.00000 [%] < 88.32469 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 96.15092 { 89.44272 | 0.00000 } 1 [#] = 12.50000 [%] < 103.97716 { 100.62306 | 0.00000 } 0 [#] = 0.00000 [%] < 111.80340 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 111.80340 { 111.80340 | 0.00000 } 3000.00000 375.00000 375.00000 13125.00000 392.10968 200.00000 1 550.00000 8 375.00000 200.00000 550.00000 0 [#] = 0.00000 [%] < 200.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 235.00000 { 200.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 270.00000 { 250.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 305.00000 { 300.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 340.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 375.00000 { 350.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 410.00000 { 400.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 445.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 480.00000 { 450.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 515.00000 { 500.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 550.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 550.00000 { 550.00000 | 0.00000 } + 6.00000 6 308.00000 38.50000 38.50000 257.25000 41.70731 616.00000 616.00000 616.00000 77.00000 77.00000 77.00000 77.00000 77.00000 77.00000 1029.00000 1029.00000 1029.00000 83.41463 83.41463 83.41463 308.00000 38.50000 38.50000 257.25000 41.70731 14.00000 1 63.00000 8 38.50000 14.00000 63.00000 0 [#] = 0.00000 [%] < 14.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 18.90000 { 14.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 23.80000 { 21.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 28.70000 { 28.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 33.60000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 38.50000 { 35.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 43.40000 { 42.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 48.30000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 53.20000 { 49.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 58.10000 { 56.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 63.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 63.00000 { 63.00000 | 0.00000 } 1066.94330 133.36791 133.36791 3087.00000 144.47837 48.49742 1 218.23840 8 133.36791 48.49742 218.23840 0 [#] = 0.00000 [%] < 48.49742 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 65.47152 { 48.49742 | 0.00000 } 1 [#] = 12.50000 [%] < 82.44562 { 72.74613 | 0.00000 } 1 [#] = 12.50000 [%] < 99.41972 { 96.99485 | 0.00000 } 0 [#] = 0.00000 [%] < 116.39381 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 133.36791 { 121.24356 | 0.00000 } 1 [#] = 12.50000 [%] < 150.34201 { 145.49227 | 0.00000 } 0 [#] = 0.00000 [%] < 167.31611 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 184.29021 { 169.74098 | 0.00000 } 1 [#] = 12.50000 [%] < 201.26430 { 193.98969 | 0.00000 } 0 [#] = 0.00000 [%] < 218.23840 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 218.23840 { 218.23840 | 0.00000 } 813.92874 101.74109 101.74109 1286.25000 107.87725 46.95743 1 156.52476 8 101.74109 46.95743 156.52476 0 [#] = 0.00000 [%] < 46.95743 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 57.91416 { 46.95743 | 0.00000 } 1 [#] = 12.50000 [%] < 68.87089 { 62.60990 | 0.00000 } 1 [#] = 12.50000 [%] < 79.82763 { 78.26238 | 0.00000 } 0 [#] = 0.00000 [%] < 90.78436 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 101.74109 { 93.91486 | 0.00000 } 1 [#] = 12.50000 [%] < 112.69783 { 109.56733 | 0.00000 } 0 [#] = 0.00000 [%] < 123.65456 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 134.61129 { 125.21981 | 0.00000 } 1 [#] = 12.50000 [%] < 145.56803 { 140.87228 | 0.00000 } 0 [#] = 0.00000 [%] < 156.52476 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 156.52476 { 156.52476 | 0.00000 } 4200.00000 525.00000 525.00000 25725.00000 548.95355 280.00000 1 770.00000 8 525.00000 280.00000 770.00000 0 [#] = 0.00000 [%] < 280.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 329.00000 { 280.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 378.00000 { 350.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 427.00000 { 420.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 476.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 525.00000 { 490.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 574.00000 { 560.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 623.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 672.00000 { 630.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 721.00000 { 700.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 770.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 770.00000 { 770.00000 | 0.00000 } + 8.00000 8 396.00000 49.50000 49.50000 425.25000 53.62369 792.00000 792.00000 792.00000 99.00000 99.00000 99.00000 99.00000 99.00000 99.00000 1701.00000 1701.00000 1701.00000 107.24738 107.24738 107.24738 396.00000 49.50000 49.50000 425.25000 53.62369 18.00000 1 81.00000 8 49.50000 18.00000 81.00000 0 [#] = 0.00000 [%] < 18.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 24.30000 { 18.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 30.60000 { 27.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 36.90000 { 36.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 43.20000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 49.50000 { 45.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 55.80000 { 54.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 62.10000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 68.40000 { 63.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 74.70000 { 72.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 81.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 81.00000 { 81.00000 | 0.00000 } 1371.78424 171.47303 171.47303 5103.00000 185.75791 62.35383 1 280.59223 8 171.47303 62.35383 280.59223 0 [#] = 0.00000 [%] < 62.35383 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 84.17767 { 62.35383 | 0.00000 } 1 [#] = 12.50000 [%] < 106.00151 { 93.53074 | 0.00000 } 1 [#] = 12.50000 [%] < 127.82535 { 124.70766 | 0.00000 } 0 [#] = 0.00000 [%] < 149.64919 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 171.47303 { 155.88457 | 0.00000 } 1 [#] = 12.50000 [%] < 193.29687 { 187.06149 | 0.00000 } 0 [#] = 0.00000 [%] < 215.12071 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 236.94455 { 218.23840 | 0.00000 } 1 [#] = 12.50000 [%] < 258.76839 { 249.41532 | 0.00000 } 0 [#] = 0.00000 [%] < 280.59223 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 280.59223 { 280.59223 | 0.00000 } 1046.47981 130.80998 130.80998 2126.25000 138.69932 60.37384 1 201.24612 8 130.80998 60.37384 201.24612 0 [#] = 0.00000 [%] < 60.37384 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 74.46106 { 60.37384 | 0.00000 } 1 [#] = 12.50000 [%] < 88.54829 { 80.49845 | 0.00000 } 1 [#] = 12.50000 [%] < 102.63552 { 100.62306 | 0.00000 } 0 [#] = 0.00000 [%] < 116.72275 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 130.80998 { 120.74767 | 0.00000 } 1 [#] = 12.50000 [%] < 144.89720 { 140.87228 | 0.00000 } 0 [#] = 0.00000 [%] < 158.98443 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 173.07166 { 160.99689 | 0.00000 } 1 [#] = 12.50000 [%] < 187.15889 { 181.12151 | 0.00000 } 0 [#] = 0.00000 [%] < 201.24612 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 201.24612 { 201.24612 | 0.00000 } 5400.00000 675.00000 675.00000 42525.00000 705.79742 360.00000 1 990.00000 8 675.00000 360.00000 990.00000 0 [#] = 0.00000 [%] < 360.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 423.00000 { 360.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 486.00000 { 450.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 549.00000 { 540.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 612.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 675.00000 { 630.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 738.00000 { 720.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 801.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 864.00000 { 810.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 927.00000 { 900.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 990.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 990.00000 { 990.00000 | 0.00000 } + 10.00000 10 484.00000 60.50000 60.50000 635.25000 65.54006 968.00000 968.00000 968.00000 121.00000 121.00000 121.00000 121.00000 121.00000 121.00000 2541.00000 2541.00000 2541.00000 131.08013 131.08013 131.08013 484.00000 60.50000 60.50000 635.25000 65.54006 22.00000 1 99.00000 8 60.50000 22.00000 99.00000 0 [#] = 0.00000 [%] < 22.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 29.70000 { 22.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 37.40000 { 33.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 45.10000 { 44.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 52.80000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 60.50000 { 55.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 68.20000 { 66.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 75.90000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 83.60000 { 77.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 91.30000 { 88.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 99.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 99.00000 { 99.00000 | 0.00000 } 1676.62518 209.57815 209.57815 7623.00000 227.03744 76.21024 1 342.94606 8 209.57815 76.21024 342.94606 0 [#] = 0.00000 [%] < 76.21024 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 102.88382 { 76.21024 | 0.00000 } 1 [#] = 12.50000 [%] < 129.55740 { 114.31535 | 0.00000 } 1 [#] = 12.50000 [%] < 156.23098 { 152.42047 | 0.00000 } 0 [#] = 0.00000 [%] < 182.90457 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 209.57815 { 190.52559 | 0.00000 } 1 [#] = 12.50000 [%] < 236.25173 { 228.63071 | 0.00000 } 0 [#] = 0.00000 [%] < 262.92531 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 289.59890 { 266.73582 | 0.00000 } 1 [#] = 12.50000 [%] < 316.27248 { 304.84094 | 0.00000 } 0 [#] = 0.00000 [%] < 342.94606 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 342.94606 { 342.94606 | 0.00000 } 1279.03088 159.87886 159.87886 3176.25000 169.52139 73.79024 1 245.96748 8 159.87886 73.79024 245.96748 0 [#] = 0.00000 [%] < 73.79024 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 91.00797 { 73.79024 | 0.00000 } 1 [#] = 12.50000 [%] < 108.22569 { 98.38699 | 0.00000 } 1 [#] = 12.50000 [%] < 125.44341 { 122.98374 | 0.00000 } 0 [#] = 0.00000 [%] < 142.66114 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 159.87886 { 147.58049 | 0.00000 } 1 [#] = 12.50000 [%] < 177.09658 { 172.17723 | 0.00000 } 0 [#] = 0.00000 [%] < 194.31431 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 211.53203 { 196.77398 | 0.00000 } 1 [#] = 12.50000 [%] < 228.74975 { 221.37073 | 0.00000 } 0 [#] = 0.00000 [%] < 245.96748 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 245.96748 { 245.96748 | 0.00000 } 6600.00000 825.00000 825.00000 63525.00000 862.64129 440.00000 1 1210.00000 8 825.00000 440.00000 1210.00000 0 [#] = 0.00000 [%] < 440.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 517.00000 { 440.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 594.00000 { 550.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 671.00000 { 660.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 748.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 825.00000 { 770.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 902.00000 { 880.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 979.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 1056.00000 { 990.00000 | 0.00000 } 1 [#] = 12.50000 [%] < 1133.00000 { 1100.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 1210.00000 { 0.00000 | 0.00000 } 1 [#] = 12.50000 [%]>= 1210.00000 { 1210.00000 | 0.00000 } +# End of file. \ No newline at end of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_distribution.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_distribution.ref.dat deleted file mode 100644 index 942d6e4c8888..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_distribution.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : distribution -# Norm type : magnitude -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Min PRESSURE_Max VELOCITY_Min VELOCITY_Max LOAD_MESHES_Min LOAD_MESHES_Max GREEN_LAGRANGE_STRAIN_TENSOR_Min GREEN_LAGRANGE_STRAIN_TENSOR_Max -2 6.0 27.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 20.784609690826528 93.53074360871938 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 20.12461179749811 67.08203932499369 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 120.0 330.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -4 10.0 45.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 34.64101615137755 155.88457268119896 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 33.54101966249684 111.80339887498948 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 200.0 550.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -6 14.0 63.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 48.49742261192856 218.23840175367854 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 46.95742752749558 156.52475842498527 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 280.0 770.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -8 18.0 81.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 62.353829072479584 280.59223082615813 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 60.37383539249432 201.24611797498108 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 360.0 990.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -10 22.0 99.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 76.2102355330306 342.9460598986377 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 73.79024325749306 245.96747752497686 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 440.0 1210.0 0.0 0.125 0.125 0.125 0.0 0.125 0.125 0.0 0.125 0.125 0.0 0.125 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_max.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_max.ref.dat deleted file mode 100644 index a911d52e9489..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_max.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : max -# Norm type : magnitude -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Max PRESSURE_Id VELOCITY_Max VELOCITY_Id LOAD_MESHES_Max LOAD_MESHES_Id GREEN_LAGRANGE_STRAIN_TENSOR_Max GREEN_LAGRANGE_STRAIN_TENSOR_Id -2 27.0 8 93.53074360871938 8 67.08203932499369 8 330.0 8 -4 45.0 8 155.88457268119896 8 111.80339887498948 8 550.0 8 -6 63.0 8 218.23840175367854 8 156.52475842498527 8 770.0 8 -8 81.0 8 280.59223082615813 8 201.24611797498108 8 990.0 8 -10 99.0 8 342.9460598986377 8 245.96747752497686 8 1210.0 8 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_mean.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_mean.ref.dat deleted file mode 100644 index fbfd21b7ecd4..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_mean.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : mean -# Norm type : magnitude -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean VELOCITY_Mean LOAD_MESHES_Mean GREEN_LAGRANGE_STRAIN_TENSOR_Mean -2 16.5 57.15767664977295 43.603325561245896 225.0 -4 27.5 95.26279441628826 72.67220926874317 375.0 -6 38.5 133.36791218280354 101.74109297624042 525.0 -8 49.5 171.47302994931886 130.8099766837377 675.0 -10 60.5 209.57814771583412 159.87886039123495 825.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_median.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_median.ref.dat deleted file mode 100644 index 86c1de3685b7..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_median.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : median -# Norm type : magnitude -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Median VELOCITY_Median LOAD_MESHES_Median GREEN_LAGRANGE_STRAIN_TENSOR_Median -2 16.5 57.15767664977295 43.603325561245896 225.0 -4 27.5 95.26279441628824 72.67220926874316 375.0 -6 38.5 133.36791218280354 101.74109297624042 525.0 -8 49.5 171.47302994931886 130.8099766837377 675.0 -10 60.5 209.57814771583415 159.87886039123498 825.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_min.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_min.ref.dat deleted file mode 100644 index 6ae1670149cb..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_min.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : min -# Norm type : magnitude -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Min PRESSURE_Id VELOCITY_Min VELOCITY_Id LOAD_MESHES_Min LOAD_MESHES_Id GREEN_LAGRANGE_STRAIN_TENSOR_Min GREEN_LAGRANGE_STRAIN_TENSOR_Id -2 6.0 1 20.784609690826528 1 20.12461179749811 1 120.0 1 -4 10.0 1 34.64101615137755 1 33.54101966249684 1 200.0 1 -6 14.0 1 48.49742261192856 1 46.95742752749558 1 280.0 1 -8 18.0 1 62.353829072479584 1 60.37383539249432 1 360.0 1 -10 22.0 1 76.2102355330306 1 73.79024325749306 1 440.0 1 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_rootmeansquare.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_rootmeansquare.ref.dat deleted file mode 100644 index 3593bff6bc3b..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_rootmeansquare.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : rootmeansquare -# Norm type : magnitude -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_RootMeanSquare VELOCITY_RootMeanSquare LOAD_MESHES_RootMeanSquare GREEN_LAGRANGE_STRAIN_TENSOR_RootMeanSquare -2 17.874562931719478 61.91930232165088 46.233105022267324 235.26580712037182 -4 29.790938219532464 103.19883720275146 77.0551750371122 392.10967853395306 -6 41.70731350734545 144.47837208385207 107.87724505195709 548.9535499475343 -8 53.62368879515843 185.75790696495264 138.69931506680197 705.7974213611155 -10 65.54006408297141 227.0374418460532 169.52138508164686 862.6412927746967 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_sum.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_sum.ref.dat deleted file mode 100644 index c4d31f2d98cc..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_sum.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : sum -# Norm type : magnitude -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Sum VELOCITY_Sum LOAD_MESHES_Sum GREEN_LAGRANGE_STRAIN_TENSOR_Sum -2 132.0 457.2614131981836 348.8266044899672 1800.0 -4 220.0 762.102355330306 581.3776741499453 3000.0 -6 308.0 1066.9432974624283 813.9287438099236 4200.0 -8 396.0 1371.7842395945509 1046.4798134699017 5400.0 -10 484.0 1676.6251817266732 1279.0308831298798 6600.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_variance.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_variance.ref.dat deleted file mode 100644 index f4abede43eb7..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_magnitude_variance.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : variance -# Norm type : magnitude -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean PRESSURE_Variance VELOCITY_Mean VELOCITY_Variance LOAD_MESHES_Mean LOAD_MESHES_Variance GREEN_LAGRANGE_STRAIN_TENSOR_Mean GREEN_LAGRANGE_STRAIN_TENSOR_Variance -2 16.5 47.25 57.15767664977295 567.0 43.603325561245896 236.25000000000023 225.0 4725.0 -4 27.5 131.25 95.26279441628824 1575.0000000000018 72.67220926874317 656.2499999999991 375.0 13125.0 -6 38.5 257.25 133.36791218280356 3086.9999999999964 101.74109297624041 1286.2500000000036 525.0 25725.0 -8 49.5 425.25 171.47302994931886 5103.0 130.80997668373772 2126.2499999999964 675.0 42525.0 -10 60.5 635.25 209.57814771583415 7623.0 159.87886039123495 3176.2500000000036 825.0 63525.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_mean.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_mean.ref.dat deleted file mode 100644 index 137bd764995d..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_mean.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : mean -# Norm type : none -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean VELOCITY_X_Mean VELOCITY_Y_Mean VELOCITY_Z_Mean -2 16.5 33.0 33.0 33.0 -4 27.5 55.0 55.0 55.0 -6 38.5 77.0 77.0 77.0 -8 49.5 99.0 99.0 99.0 -10 60.5 121.0 121.0 121.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_rootmeansquare.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_rootmeansquare.ref.dat deleted file mode 100644 index c797833440bc..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_rootmeansquare.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : rootmeansquare -# Norm type : none -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_RootMeanSquare VELOCITY_X_RootMeanSquare VELOCITY_Y_RootMeanSquare VELOCITY_Z_RootMeanSquare -2 17.874562931719478 35.749125863438955 35.749125863438955 35.749125863438955 -4 29.790938219532464 59.58187643906493 59.58187643906493 59.58187643906493 -6 41.70731350734545 83.4146270146909 83.4146270146909 83.4146270146909 -8 53.62368879515843 107.24737759031686 107.24737759031686 107.24737759031686 -10 65.54006408297141 131.08012816594282 131.08012816594282 131.08012816594282 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_sum.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_sum.ref.dat deleted file mode 100644 index 2b20dc162786..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_sum.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : sum -# Norm type : none -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Sum VELOCITY_X_Sum VELOCITY_Y_Sum VELOCITY_Z_Sum -2 132.0 264.0 264.0 264.0 -4 220.0 440.0 440.0 440.0 -6 308.0 616.0 616.0 616.0 -8 396.0 792.0 792.0 792.0 -10 484.0 968.0 968.0 968.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_variance.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_variance.ref.dat deleted file mode 100644 index 2294af8acf53..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_element_non_historical_none_variance.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : variance -# Norm type : none -# Container type : element_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean PRESSURE_Variance VELOCITY_X_Mean VELOCITY_Y_Mean VELOCITY_Z_Mean VELOCITY_X_Variance VELOCITY_Y_Variance VELOCITY_Z_Variance -2 16.5 47.25 33.0 33.0 33.0 189.0 189.0 189.0 -4 27.5 131.25 55.0 55.0 55.0 525.0 525.0 525.0 -6 38.5 257.25 77.0 77.0 77.0 1029.0 1029.0 1029.0 -8 49.5 425.25 99.0 99.0 99.0 1701.0 1701.0 1701.0 -10 60.5 635.25 121.0 121.0 121.0 2541.0 2541.0 2541.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical.ref.dat new file mode 100644 index 000000000000..b8d49414b59d --- /dev/null +++ b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical.ref.dat @@ -0,0 +1,16 @@ +# Spatial statistics process output +# Kratos version : not_given +# Timestamp : not_specified +# Method name(s) : sum, mean, variance, rootmeansquare, min, max, median, distribution +# Variable info(s) : PRESSURE[none, nodal_historical], VELOCITY[none, nodal_historical], PRESSURE[magnitude, nodal_historical], VELOCITY[magnitude, nodal_historical], LOAD_MESHES[magnitude, nodal_historical], GREEN_LAGRANGE_STRAIN_TENSOR[magnitude, nodal_historical] +# Modelpart name : test_model_part +# Output control variable name : STEP +# ---------------------------------------------------------------------- +# Headers: +# "TIME" "STEP" "PRESSURE [ none | nodal_historical ] sum" "PRESSURE [ none | nodal_historical ] mean" "PRESSURE [ none | nodal_historical ] mean" "PRESSURE [ none | nodal_historical ] variance" "PRESSURE [ none | nodal_historical ] rootmeansquare" "VELOCITY_X [ none | nodal_historical ] sum" "VELOCITY_Y [ none | nodal_historical ] sum" "VELOCITY_Z [ none | nodal_historical ] sum" "VELOCITY_X [ none | nodal_historical ] mean" "VELOCITY_Y [ none | nodal_historical ] mean" "VELOCITY_Z [ none | nodal_historical ] mean" "VELOCITY_X [ none | nodal_historical ] mean" "VELOCITY_Y [ none | nodal_historical ] mean" "VELOCITY_Z [ none | nodal_historical ] mean" "VELOCITY_X [ none | nodal_historical ] variance" "VELOCITY_Y [ none | nodal_historical ] variance" "VELOCITY_Z [ none | nodal_historical ] variance" "VELOCITY_X [ none | nodal_historical ] rootmeansquare" "VELOCITY_Y [ none | nodal_historical ] rootmeansquare" "VELOCITY_Z [ none | nodal_historical ] rootmeansquare" "PRESSURE [ magnitude | nodal_historical ] sum" "PRESSURE [ magnitude | nodal_historical ] mean" "PRESSURE [ magnitude | nodal_historical ] mean" "PRESSURE [ magnitude | nodal_historical ] variance" "PRESSURE [ magnitude | nodal_historical ] rootmeansquare" "PRESSURE [ magnitude | nodal_historical ] min_value" "PRESSURE [ magnitude | nodal_historical ] min_id" "PRESSURE [ magnitude | nodal_historical ] max_value" "PRESSURE [ magnitude | nodal_historical ] max_id" "PRESSURE [ magnitude | nodal_historical ] median" "PRESSURE [ magnitude | nodal_historical ] min" "PRESSURE [ magnitude | nodal_historical ] max" "PRESSURE [ magnitude | nodal_historical ] group_below_min {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_1 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_2 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_3 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_4 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_5 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_6 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_7 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_8 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_9 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_10 {mean|variance}" "PRESSURE [ magnitude | nodal_historical ] group_above_max {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] sum" "VELOCITY [ magnitude | nodal_historical ] mean" "VELOCITY [ magnitude | nodal_historical ] mean" "VELOCITY [ magnitude | nodal_historical ] variance" "VELOCITY [ magnitude | nodal_historical ] rootmeansquare" "VELOCITY [ magnitude | nodal_historical ] min_value" "VELOCITY [ magnitude | nodal_historical ] min_id" "VELOCITY [ magnitude | nodal_historical ] max_value" "VELOCITY [ magnitude | nodal_historical ] max_id" "VELOCITY [ magnitude | nodal_historical ] median" "VELOCITY [ magnitude | nodal_historical ] min" "VELOCITY [ magnitude | nodal_historical ] max" "VELOCITY [ magnitude | nodal_historical ] group_below_min {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_1 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_2 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_3 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_4 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_5 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_6 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_7 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_8 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_9 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_10 {mean|variance}" "VELOCITY [ magnitude | nodal_historical ] group_above_max {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] sum" "LOAD_MESHES [ magnitude | nodal_historical ] mean" "LOAD_MESHES [ magnitude | nodal_historical ] mean" "LOAD_MESHES [ magnitude | nodal_historical ] variance" "LOAD_MESHES [ magnitude | nodal_historical ] rootmeansquare" "LOAD_MESHES [ magnitude | nodal_historical ] min_value" "LOAD_MESHES [ magnitude | nodal_historical ] min_id" "LOAD_MESHES [ magnitude | nodal_historical ] max_value" "LOAD_MESHES [ magnitude | nodal_historical ] max_id" "LOAD_MESHES [ magnitude | nodal_historical ] median" "LOAD_MESHES [ magnitude | nodal_historical ] min" "LOAD_MESHES [ magnitude | nodal_historical ] max" "LOAD_MESHES [ magnitude | nodal_historical ] group_below_min {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_1 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_2 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_3 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_4 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_5 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_6 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_7 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_8 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_9 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_10 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_historical ] group_above_max {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] sum" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] mean" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] mean" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] variance" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] rootmeansquare" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] min_value" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] min_id" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] max_value" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] max_id" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] median" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] min" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] max" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_below_min {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_1 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_2 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_3 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_4 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_5 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_6 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_7 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_8 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_9 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_10 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_historical ] group_above_max {mean|variance}" + 2.00000 2 162.00000 18.00000 18.00000 60.00000 19.59592 324.00000 324.00000 324.00000 36.00000 36.00000 36.00000 36.00000 36.00000 36.00000 240.00000 240.00000 240.00000 39.19184 39.19184 39.19184 162.00000 18.00000 18.00000 60.00000 19.59592 6.00000 1 30.00000 9 18.00000 6.00000 30.00000 0 [#] = 0.00000 [%] < 6.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 8.40000 { 6.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 10.80000 { 9.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 13.20000 { 12.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 15.60000 { 15.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 18.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 20.40000 { 18.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 22.80000 { 21.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 25.20000 { 24.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 27.60000 { 27.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 30.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 30.00000 { 30.00000 | 0.00000 } 561.18446 62.35383 62.35383 720.00000 67.88225 20.78461 1 103.92305 9 62.35383 20.78461 103.92305 0 [#] = 0.00000 [%] < 20.78461 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 29.09845 { 20.78461 | 0.00000 } 1 [#] = 11.11111 [%] < 37.41230 { 31.17691 | 0.00000 } 1 [#] = 11.11111 [%] < 45.72614 { 41.56922 | 0.00000 } 1 [#] = 11.11111 [%] < 54.03999 { 51.96152 | 0.00000 } 0 [#] = 0.00000 [%] < 62.35383 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 70.66767 { 62.35383 | 0.00000 } 1 [#] = 11.11111 [%] < 78.98152 { 72.74613 | 0.00000 } 1 [#] = 11.11111 [%] < 87.29536 { 83.13844 | 0.00000 } 1 [#] = 11.11111 [%] < 95.60920 { 93.53074 | 0.00000 } 0 [#] = 0.00000 [%] < 103.92305 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 103.92305 { 103.92305 | 0.00000 } 422.61685 46.95743 46.95743 300.00000 50.04998 20.12461 1 73.79024 9 46.95743 20.12461 73.79024 0 [#] = 0.00000 [%] < 20.12461 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 25.49117 { 20.12461 | 0.00000 } 1 [#] = 11.11111 [%] < 30.85774 { 26.83282 | 0.00000 } 1 [#] = 11.11111 [%] < 36.22430 { 33.54102 | 0.00000 } 1 [#] = 11.11111 [%] < 41.59086 { 40.24922 | 0.00000 } 1 [#] = 11.11111 [%] < 46.95743 { 46.95743 | 0.00000 } 0 [#] = 0.00000 [%] < 52.32399 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 57.69055 { 53.66563 | 0.00000 } 1 [#] = 11.11111 [%] < 63.05712 { 60.37384 | 0.00000 } 1 [#] = 11.11111 [%] < 68.42368 { 67.08204 | 0.00000 } 1 [#] = 11.11111 [%] < 73.79024 { 73.79024 | 0.00000 } 0 [#] = 0.00000 [%]>= 73.79024 { 0.00000 | 0.00000 } 2160.00000 240.00000 240.00000 6000.00000 252.19040 120.00000 1 360.00000 9 240.00000 120.00000 360.00000 0 [#] = 0.00000 [%] < 120.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 144.00000 { 120.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 168.00000 { 150.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 192.00000 { 180.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 216.00000 { 210.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 240.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 264.00000 { 240.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 288.00000 { 270.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 312.00000 { 300.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 336.00000 { 330.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 360.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 360.00000 { 360.00000 | 0.00000 } + 4.00000 4 270.00000 30.00000 30.00000 166.66667 32.65986 540.00000 540.00000 540.00000 60.00000 60.00000 60.00000 60.00000 60.00000 60.00000 666.66667 666.66667 666.66667 65.31973 65.31973 65.31973 270.00000 30.00000 30.00000 166.66667 32.65986 10.00000 1 50.00000 9 30.00000 10.00000 50.00000 0 [#] = 0.00000 [%] < 10.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 14.00000 { 10.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 18.00000 { 15.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 22.00000 { 20.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 26.00000 { 25.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 30.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 34.00000 { 30.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 38.00000 { 35.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 42.00000 { 40.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 46.00000 { 45.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 50.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 50.00000 { 50.00000 | 0.00000 } 935.30744 103.92305 103.92305 2000.00000 113.13708 34.64102 1 173.20508 9 103.92305 34.64102 173.20508 0 [#] = 0.00000 [%] < 34.64102 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 48.49742 { 34.64102 | 0.00000 } 1 [#] = 11.11111 [%] < 62.35383 { 51.96152 | 0.00000 } 1 [#] = 11.11111 [%] < 76.21024 { 69.28203 | 0.00000 } 1 [#] = 11.11111 [%] < 90.06664 { 86.60254 | 0.00000 } 0 [#] = 0.00000 [%] < 103.92305 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 117.77945 { 103.92305 | 0.00000 } 1 [#] = 11.11111 [%] < 131.63586 { 121.24356 | 0.00000 } 1 [#] = 11.11111 [%] < 145.49227 { 138.56406 | 0.00000 } 1 [#] = 11.11111 [%] < 159.34867 { 155.88457 | 0.00000 } 0 [#] = 0.00000 [%] < 173.20508 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 173.20508 { 173.20508 | 0.00000 } 704.36141 78.26238 78.26238 833.33333 83.41663 33.54102 1 122.98374 9 78.26238 33.54102 122.98374 0 [#] = 0.00000 [%] < 33.54102 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 42.48529 { 33.54102 | 0.00000 } 1 [#] = 11.11111 [%] < 51.42956 { 44.72136 | 0.00000 } 1 [#] = 11.11111 [%] < 60.37384 { 55.90170 | 0.00000 } 1 [#] = 11.11111 [%] < 69.31811 { 67.08204 | 0.00000 } 1 [#] = 11.11111 [%] < 78.26238 { 78.26238 | 0.00000 } 0 [#] = 0.00000 [%] < 87.20665 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 96.15092 { 89.44272 | 0.00000 } 1 [#] = 11.11111 [%] < 105.09519 { 100.62306 | 0.00000 } 1 [#] = 11.11111 [%] < 114.03947 { 111.80340 | 0.00000 } 0 [#] = 0.00000 [%] < 122.98374 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 122.98374 { 122.98374 | 0.00000 } 3600.00000 400.00000 400.00000 16666.66667 420.31734 200.00000 1 600.00000 9 400.00000 200.00000 600.00000 0 [#] = 0.00000 [%] < 200.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 240.00000 { 200.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 280.00000 { 250.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 320.00000 { 300.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 360.00000 { 350.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 400.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 440.00000 { 400.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 480.00000 { 450.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 520.00000 { 500.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 560.00000 { 550.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 600.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 600.00000 { 600.00000 | 0.00000 } + 6.00000 6 378.00000 42.00000 42.00000 326.66667 45.72381 756.00000 756.00000 756.00000 84.00000 84.00000 84.00000 84.00000 84.00000 84.00000 1306.66667 1306.66667 1306.66667 91.44762 91.44762 91.44762 378.00000 42.00000 42.00000 326.66667 45.72381 14.00000 1 70.00000 9 42.00000 14.00000 70.00000 0 [#] = 0.00000 [%] < 14.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 19.60000 { 14.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 25.20000 { 21.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 30.80000 { 28.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 36.40000 { 35.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 42.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 47.60000 { 42.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 53.20000 { 49.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 58.80000 { 56.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 64.40000 { 63.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 70.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 70.00000 { 70.00000 | 0.00000 } 1309.43041 145.49227 145.49227 3920.00000 158.39192 48.49742 1 242.48711 9 145.49227 48.49742 242.48711 0 [#] = 0.00000 [%] < 48.49742 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 67.89639 { 48.49742 | 0.00000 } 1 [#] = 11.11111 [%] < 87.29536 { 72.74613 | 0.00000 } 1 [#] = 11.11111 [%] < 106.69433 { 96.99485 | 0.00000 } 1 [#] = 11.11111 [%] < 126.09330 { 121.24356 | 0.00000 } 0 [#] = 0.00000 [%] < 145.49227 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 164.89124 { 145.49227 | 0.00000 } 1 [#] = 11.11111 [%] < 184.29021 { 169.74098 | 0.00000 } 1 [#] = 11.11111 [%] < 203.68917 { 193.98969 | 0.00000 } 1 [#] = 11.11111 [%] < 223.08814 { 218.23840 | 0.00000 } 0 [#] = 0.00000 [%] < 242.48711 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 242.48711 { 242.48711 | 0.00000 } 986.10598 109.56733 109.56733 1633.33333 116.78328 46.95743 1 172.17723 9 109.56733 46.95743 172.17723 0 [#] = 0.00000 [%] < 46.95743 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 59.47941 { 46.95743 | 0.00000 } 1 [#] = 11.11111 [%] < 72.00139 { 62.60990 | 0.00000 } 1 [#] = 11.11111 [%] < 84.52337 { 78.26238 | 0.00000 } 1 [#] = 11.11111 [%] < 97.04535 { 93.91486 | 0.00000 } 0 [#] = 0.00000 [%] < 109.56733 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 122.08931 { 109.56733 | 0.00000 } 1 [#] = 11.11111 [%] < 134.61129 { 125.21981 | 0.00000 } 1 [#] = 11.11111 [%] < 147.13327 { 140.87228 | 0.00000 } 1 [#] = 11.11111 [%] < 159.65525 { 156.52476 | 0.00000 } 0 [#] = 0.00000 [%] < 172.17723 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 172.17723 { 172.17723 | 0.00000 } 5040.00000 560.00000 560.00000 32666.66667 588.44428 280.00000 1 840.00000 9 560.00000 280.00000 840.00000 0 [#] = 0.00000 [%] < 280.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 336.00000 { 280.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 392.00000 { 350.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 448.00000 { 420.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 504.00000 { 490.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 560.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 616.00000 { 560.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 672.00000 { 630.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 728.00000 { 700.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 784.00000 { 770.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 840.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 840.00000 { 840.00000 | 0.00000 } + 8.00000 8 486.00000 54.00000 54.00000 540.00000 58.78775 972.00000 972.00000 972.00000 108.00000 108.00000 108.00000 108.00000 108.00000 108.00000 2160.00000 2160.00000 2160.00000 117.57551 117.57551 117.57551 486.00000 54.00000 54.00000 540.00000 58.78775 18.00000 1 90.00000 9 54.00000 18.00000 90.00000 0 [#] = 0.00000 [%] < 18.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 25.20000 { 18.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 32.40000 { 27.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 39.60000 { 36.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 46.80000 { 45.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 54.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 61.20000 { 54.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 68.40000 { 63.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 75.60000 { 72.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 82.80000 { 81.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 90.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 90.00000 { 90.00000 | 0.00000 } 1683.55338 187.06149 187.06149 6480.00000 203.64675 62.35383 1 311.76915 9 187.06149 62.35383 311.76915 0 [#] = 0.00000 [%] < 62.35383 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 87.29536 { 62.35383 | 0.00000 } 1 [#] = 11.11111 [%] < 112.23689 { 93.53074 | 0.00000 } 1 [#] = 11.11111 [%] < 137.17842 { 124.70766 | 0.00000 } 1 [#] = 11.11111 [%] < 162.11996 { 155.88457 | 0.00000 } 0 [#] = 0.00000 [%] < 187.06149 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 212.00302 { 187.06149 | 0.00000 } 1 [#] = 11.11111 [%] < 236.94455 { 218.23840 | 0.00000 } 1 [#] = 11.11111 [%] < 261.88608 { 249.41532 | 0.00000 } 1 [#] = 11.11111 [%] < 286.82761 { 280.59223 | 0.00000 } 0 [#] = 0.00000 [%] < 311.76915 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 311.76915 { 311.76915 | 0.00000 } 1267.85054 140.87228 140.87228 2700.00000 150.14993 60.37384 1 221.37073 9 140.87228 60.37384 221.37073 0 [#] = 0.00000 [%] < 60.37384 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 76.47352 { 60.37384 | 0.00000 } 1 [#] = 11.11111 [%] < 92.57321 { 80.49845 | 0.00000 } 1 [#] = 11.11111 [%] < 108.67290 { 100.62306 | 0.00000 } 1 [#] = 11.11111 [%] < 124.77259 { 120.74767 | 0.00000 } 0 [#] = 0.00000 [%] < 140.87228 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 156.97197 { 140.87228 | 0.00000 } 1 [#] = 11.11111 [%] < 173.07166 { 160.99689 | 0.00000 } 1 [#] = 11.11111 [%] < 189.17135 { 181.12151 | 0.00000 } 1 [#] = 11.11111 [%] < 205.27104 { 201.24612 | 0.00000 } 0 [#] = 0.00000 [%] < 221.37073 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 221.37073 { 221.37073 | 0.00000 } 6480.00000 720.00000 720.00000 54000.00000 756.57121 360.00000 1 1080.00000 9 720.00000 360.00000 1080.00000 0 [#] = 0.00000 [%] < 360.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 432.00000 { 360.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 504.00000 { 450.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 576.00000 { 540.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 648.00000 { 630.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 720.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 792.00000 { 720.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 864.00000 { 810.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 936.00000 { 900.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 1008.00000 { 990.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 1080.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 1080.00000 { 1080.00000 | 0.00000 } + 10.00000 10 594.00000 66.00000 66.00000 806.66667 71.85170 1188.00000 1188.00000 1188.00000 132.00000 132.00000 132.00000 132.00000 132.00000 132.00000 3226.66667 3226.66667 3226.66667 143.70340 143.70340 143.70340 594.00000 66.00000 66.00000 806.66667 71.85170 22.00000 1 110.00000 9 66.00000 22.00000 110.00000 0 [#] = 0.00000 [%] < 22.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 30.80000 { 22.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 39.60000 { 33.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 48.40000 { 44.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 57.20000 { 55.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 66.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 74.80000 { 66.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 83.60000 { 77.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 92.40000 { 88.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 101.20000 { 99.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 110.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 110.00000 { 110.00000 | 0.00000 } 2057.67636 228.63071 228.63071 9680.00000 248.90159 76.21024 1 381.05118 9 228.63071 76.21024 381.05118 0 [#] = 0.00000 [%] < 76.21024 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 106.69433 { 76.21024 | 0.00000 } 1 [#] = 11.11111 [%] < 137.17842 { 114.31535 | 0.00000 } 1 [#] = 11.11111 [%] < 167.66252 { 152.42047 | 0.00000 } 1 [#] = 11.11111 [%] < 198.14661 { 190.52559 | 0.00000 } 0 [#] = 0.00000 [%] < 228.63071 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 259.11480 { 228.63071 | 0.00000 } 1 [#] = 11.11111 [%] < 289.59890 { 266.73582 | 0.00000 } 1 [#] = 11.11111 [%] < 320.08299 { 304.84094 | 0.00000 } 1 [#] = 11.11111 [%] < 350.56708 { 342.94606 | 0.00000 } 0 [#] = 0.00000 [%] < 381.05118 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 381.05118 { 381.05118 | 0.00000 } 1549.59511 172.17723 172.17723 4033.33333 183.51658 73.79024 1 270.56423 9 172.17723 73.79024 270.56423 0 [#] = 0.00000 [%] < 73.79024 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 93.46764 { 73.79024 | 0.00000 } 1 [#] = 11.11111 [%] < 113.14504 { 98.38699 | 0.00000 } 1 [#] = 11.11111 [%] < 132.82244 { 122.98374 | 0.00000 } 1 [#] = 11.11111 [%] < 152.49984 { 147.58049 | 0.00000 } 0 [#] = 0.00000 [%] < 172.17723 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 191.85463 { 172.17723 | 0.00000 } 1 [#] = 11.11111 [%] < 211.53203 { 196.77398 | 0.00000 } 1 [#] = 11.11111 [%] < 231.20943 { 221.37073 | 0.00000 } 1 [#] = 11.11111 [%] < 250.88683 { 245.96748 | 0.00000 } 0 [#] = 0.00000 [%] < 270.56423 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 270.56423 { 270.56423 | 0.00000 } 7920.00000 880.00000 880.00000 80666.66667 924.69815 440.00000 1 1320.00000 9 880.00000 440.00000 1320.00000 0 [#] = 0.00000 [%] < 440.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 528.00000 { 440.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 616.00000 { 550.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 704.00000 { 660.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 792.00000 { 770.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 880.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 968.00000 { 880.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 1056.00000 { 990.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 1144.00000 { 1100.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 1232.00000 { 1210.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 1320.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 1320.00000 { 1320.00000 | 0.00000 } +# End of file. \ No newline at end of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_distribution.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_distribution.ref.dat deleted file mode 100644 index 8e4d9a9bfede..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_distribution.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : distribution -# Norm type : magnitude -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Min PRESSURE_Max VELOCITY_Min VELOCITY_Max LOAD_MESHES_Min LOAD_MESHES_Max GREEN_LAGRANGE_STRAIN_TENSOR_Min GREEN_LAGRANGE_STRAIN_TENSOR_Max -2 6.0 30.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 20.784609690826528 103.92304845413264 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 20.12461179749811 73.79024325749306 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 120.0 360.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -4 10.0 50.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 34.64101615137755 173.20508075688772 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 33.54101966249684 122.98373876248843 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 200.0 600.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -6 14.0 70.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 48.49742261192856 242.4871130596428 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 46.95742752749558 172.1772342674838 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 280.0 840.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -8 18.0 90.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 62.353829072479584 311.7691453623979 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 60.37383539249432 221.37072977247917 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 360.0 1080.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -10 22.0 110.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 76.2102355330306 381.051177665153 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 73.79024325749306 270.5642252774746 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 440.0 1320.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_max.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_max.ref.dat deleted file mode 100644 index a4d67fab386f..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_max.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : max -# Norm type : magnitude -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Max PRESSURE_Id VELOCITY_Max VELOCITY_Id LOAD_MESHES_Max LOAD_MESHES_Id GREEN_LAGRANGE_STRAIN_TENSOR_Max GREEN_LAGRANGE_STRAIN_TENSOR_Id -2 30.0 9 103.92304845413264 9 73.79024325749306 9 360.0 9 -4 50.0 9 173.20508075688772 9 122.98373876248843 9 600.0 9 -6 70.0 9 242.4871130596428 9 172.1772342674838 9 840.0 9 -8 90.0 9 311.7691453623979 9 221.37072977247917 9 1080.0 9 -10 110.0 9 381.051177665153 9 270.5642252774746 9 1320.0 9 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_mean.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_mean.ref.dat deleted file mode 100644 index 9a879ae6d99d..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_mean.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : mean -# Norm type : magnitude -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean VELOCITY_Mean LOAD_MESHES_Mean GREEN_LAGRANGE_STRAIN_TENSOR_Mean -2 18.0 62.353829072479584 46.95742752749558 240.0 -4 30.0 103.92304845413264 78.26237921249263 400.0 -6 42.0 145.49226783578567 109.5673308974897 560.0 -8 54.0 187.06148721743875 140.87228258248675 720.0 -10 66.0 228.6307065990918 172.1772342674838 880.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_median.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_median.ref.dat deleted file mode 100644 index 17bbe04efd93..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_median.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : median -# Norm type : magnitude -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Median VELOCITY_Median LOAD_MESHES_Median GREEN_LAGRANGE_STRAIN_TENSOR_Median -2 18.0 62.353829072479584 46.95742752749558 240.0 -4 30.0 103.92304845413264 78.26237921249263 400.0 -6 42.0 145.4922678357857 109.5673308974897 560.0 -8 54.0 187.06148721743875 140.87228258248675 720.0 -10 66.0 228.6307065990918 172.1772342674838 880.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_min.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_min.ref.dat deleted file mode 100644 index 14f4c5e7138e..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_min.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : min -# Norm type : magnitude -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Min PRESSURE_Id VELOCITY_Min VELOCITY_Id LOAD_MESHES_Min LOAD_MESHES_Id GREEN_LAGRANGE_STRAIN_TENSOR_Min GREEN_LAGRANGE_STRAIN_TENSOR_Id -2 6.0 1 20.784609690826528 1 20.12461179749811 1 120.0 1 -4 10.0 1 34.64101615137755 1 33.54101966249684 1 200.0 1 -6 14.0 1 48.49742261192856 1 46.95742752749558 1 280.0 1 -8 18.0 1 62.353829072479584 1 60.37383539249432 1 360.0 1 -10 22.0 1 76.2102355330306 1 73.79024325749306 1 440.0 1 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_rootmeansquare.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_rootmeansquare.ref.dat deleted file mode 100644 index 2693a06a2d29..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_rootmeansquare.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : rootmeansquare -# Norm type : magnitude -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_RootMeanSquare VELOCITY_RootMeanSquare LOAD_MESHES_RootMeanSquare GREEN_LAGRANGE_STRAIN_TENSOR_RootMeanSquare -2 19.595917942265423 67.88225099390856 50.049975024968795 252.19040425836982 -4 32.65986323710904 113.13708498984761 83.41662504161465 420.31734043061635 -6 45.723808531952656 158.39191898578665 116.78327505826051 588.4442766028629 -8 58.787753826796276 203.64675298172568 150.14992507490638 756.5712127751095 -10 71.8516991216399 248.90158697766472 183.51657509155226 924.698148947356 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_sum.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_sum.ref.dat deleted file mode 100644 index 798a4cf6640e..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_sum.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : sum -# Norm type : magnitude -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Sum VELOCITY_Sum LOAD_MESHES_Sum GREEN_LAGRANGE_STRAIN_TENSOR_Sum -2 162.0 561.1844616523163 422.6168477474602 2160.0 -4 270.0 935.3074360871937 704.3614129124337 3600.0 -6 378.0 1309.4304105220713 986.1059780774073 5040.0 -8 486.0 1683.5533849569488 1267.8505432423808 6480.0 -10 594.0 2057.6763593918263 1549.5951084073542 7920.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_variance.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_variance.ref.dat deleted file mode 100644 index c33416577813..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_magnitude_variance.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : variance -# Norm type : magnitude -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean PRESSURE_Variance VELOCITY_Mean VELOCITY_Variance LOAD_MESHES_Mean LOAD_MESHES_Variance GREEN_LAGRANGE_STRAIN_TENSOR_Mean GREEN_LAGRANGE_STRAIN_TENSOR_Variance -2 18.0 60.0 62.353829072479584 720.0 46.9574275274956 299.99999999999864 240.0 6000.0 -4 30.0 166.66666666666652 103.92304845413264 2000.0 78.26237921249263 833.3333333333339 400.0 16666.666666666657 -6 42.0 326.6666666666665 145.4922678357857 3920.0 109.5673308974897 1633.3333333333321 560.0 32666.666666666628 -8 54.0 540.0 187.06148721743875 6480.0 140.87228258248675 2700.0 720.0 54000.0 -10 66.0 806.6666666666661 228.6307065990918 9680.0 172.17723426748378 4033.3333333333358 880.0 80666.66666666663 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_mean.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_mean.ref.dat deleted file mode 100644 index 071612865255..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_mean.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : mean -# Norm type : none -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean VELOCITY_X_Mean VELOCITY_Y_Mean VELOCITY_Z_Mean -2 18.0 36.0 36.0 36.0 -4 30.0 60.0 60.0 60.0 -6 42.0 84.0 84.0 84.0 -8 54.0 108.0 108.0 108.0 -10 66.0 132.0 132.0 132.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_rootmeansquare.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_rootmeansquare.ref.dat deleted file mode 100644 index fc5479e72228..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_rootmeansquare.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : rootmeansquare -# Norm type : none -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_RootMeanSquare VELOCITY_X_RootMeanSquare VELOCITY_Y_RootMeanSquare VELOCITY_Z_RootMeanSquare -2 19.595917942265423 39.191835884530846 39.191835884530846 39.191835884530846 -4 32.659863237109036 65.31972647421807 65.31972647421807 65.31972647421807 -6 45.723808531952656 91.44761706390531 91.44761706390531 91.44761706390531 -8 58.787753826796276 117.57550765359255 117.57550765359255 117.57550765359255 -10 71.85169912163988 143.70339824327976 143.70339824327976 143.70339824327976 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_sum.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_sum.ref.dat deleted file mode 100644 index af41e837e513..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_sum.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : sum -# Norm type : none -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Sum VELOCITY_X_Sum VELOCITY_Y_Sum VELOCITY_Z_Sum -2 162.0 324.0 324.0 324.0 -4 270.0 540.0 540.0 540.0 -6 378.0 756.0 756.0 756.0 -8 486.0 972.0 972.0 972.0 -10 594.0 1188.0 1188.0 1188.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_variance.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_variance.ref.dat deleted file mode 100644 index e4ae8833a54c..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_historical_none_variance.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : variance -# Norm type : none -# Container type : nodal_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean PRESSURE_Variance VELOCITY_X_Mean VELOCITY_Y_Mean VELOCITY_Z_Mean VELOCITY_X_Variance VELOCITY_Y_Variance VELOCITY_Z_Variance -2 18.0 60.0 36.0 36.0 36.0 240.0 240.0 240.0 -4 30.0 166.66666666666652 60.0 60.0 60.0 666.6666666666661 666.6666666666661 666.6666666666661 -6 42.0 326.6666666666665 84.0 84.0 84.0 1306.666666666666 1306.666666666666 1306.666666666666 -8 54.0 540.0 108.0 108.0 108.0 2160.0 2160.0 2160.0 -10 66.0 806.6666666666661 132.0 132.0 132.0 3226.6666666666642 3226.6666666666642 3226.6666666666642 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical.ref.dat new file mode 100644 index 000000000000..065ff4e8e14e --- /dev/null +++ b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical.ref.dat @@ -0,0 +1,16 @@ +# Spatial statistics process output +# Kratos version : not_given +# Timestamp : not_specified +# Method name(s) : sum, mean, variance, rootmeansquare, min, max, median, distribution +# Variable info(s) : PRESSURE[none, nodal_non_historical], VELOCITY[none, nodal_non_historical], PRESSURE[magnitude, nodal_non_historical], VELOCITY[magnitude, nodal_non_historical], LOAD_MESHES[magnitude, nodal_non_historical], GREEN_LAGRANGE_STRAIN_TENSOR[magnitude, nodal_non_historical] +# Modelpart name : test_model_part +# Output control variable name : STEP +# ---------------------------------------------------------------------- +# Headers: +# "TIME" "STEP" "PRESSURE [ none | nodal_non_historical ] sum" "PRESSURE [ none | nodal_non_historical ] mean" "PRESSURE [ none | nodal_non_historical ] mean" "PRESSURE [ none | nodal_non_historical ] variance" "PRESSURE [ none | nodal_non_historical ] rootmeansquare" "VELOCITY_X [ none | nodal_non_historical ] sum" "VELOCITY_Y [ none | nodal_non_historical ] sum" "VELOCITY_Z [ none | nodal_non_historical ] sum" "VELOCITY_X [ none | nodal_non_historical ] mean" "VELOCITY_Y [ none | nodal_non_historical ] mean" "VELOCITY_Z [ none | nodal_non_historical ] mean" "VELOCITY_X [ none | nodal_non_historical ] mean" "VELOCITY_Y [ none | nodal_non_historical ] mean" "VELOCITY_Z [ none | nodal_non_historical ] mean" "VELOCITY_X [ none | nodal_non_historical ] variance" "VELOCITY_Y [ none | nodal_non_historical ] variance" "VELOCITY_Z [ none | nodal_non_historical ] variance" "VELOCITY_X [ none | nodal_non_historical ] rootmeansquare" "VELOCITY_Y [ none | nodal_non_historical ] rootmeansquare" "VELOCITY_Z [ none | nodal_non_historical ] rootmeansquare" "PRESSURE [ magnitude | nodal_non_historical ] sum" "PRESSURE [ magnitude | nodal_non_historical ] mean" "PRESSURE [ magnitude | nodal_non_historical ] mean" "PRESSURE [ magnitude | nodal_non_historical ] variance" "PRESSURE [ magnitude | nodal_non_historical ] rootmeansquare" "PRESSURE [ magnitude | nodal_non_historical ] min_value" "PRESSURE [ magnitude | nodal_non_historical ] min_id" "PRESSURE [ magnitude | nodal_non_historical ] max_value" "PRESSURE [ magnitude | nodal_non_historical ] max_id" "PRESSURE [ magnitude | nodal_non_historical ] median" "PRESSURE [ magnitude | nodal_non_historical ] min" "PRESSURE [ magnitude | nodal_non_historical ] max" "PRESSURE [ magnitude | nodal_non_historical ] group_below_min {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_1 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_2 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_3 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_4 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_5 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_6 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_7 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_8 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_9 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_10 {mean|variance}" "PRESSURE [ magnitude | nodal_non_historical ] group_above_max {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] sum" "VELOCITY [ magnitude | nodal_non_historical ] mean" "VELOCITY [ magnitude | nodal_non_historical ] mean" "VELOCITY [ magnitude | nodal_non_historical ] variance" "VELOCITY [ magnitude | nodal_non_historical ] rootmeansquare" "VELOCITY [ magnitude | nodal_non_historical ] min_value" "VELOCITY [ magnitude | nodal_non_historical ] min_id" "VELOCITY [ magnitude | nodal_non_historical ] max_value" "VELOCITY [ magnitude | nodal_non_historical ] max_id" "VELOCITY [ magnitude | nodal_non_historical ] median" "VELOCITY [ magnitude | nodal_non_historical ] min" "VELOCITY [ magnitude | nodal_non_historical ] max" "VELOCITY [ magnitude | nodal_non_historical ] group_below_min {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_1 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_2 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_3 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_4 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_5 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_6 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_7 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_8 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_9 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_10 {mean|variance}" "VELOCITY [ magnitude | nodal_non_historical ] group_above_max {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] sum" "LOAD_MESHES [ magnitude | nodal_non_historical ] mean" "LOAD_MESHES [ magnitude | nodal_non_historical ] mean" "LOAD_MESHES [ magnitude | nodal_non_historical ] variance" "LOAD_MESHES [ magnitude | nodal_non_historical ] rootmeansquare" "LOAD_MESHES [ magnitude | nodal_non_historical ] min_value" "LOAD_MESHES [ magnitude | nodal_non_historical ] min_id" "LOAD_MESHES [ magnitude | nodal_non_historical ] max_value" "LOAD_MESHES [ magnitude | nodal_non_historical ] max_id" "LOAD_MESHES [ magnitude | nodal_non_historical ] median" "LOAD_MESHES [ magnitude | nodal_non_historical ] min" "LOAD_MESHES [ magnitude | nodal_non_historical ] max" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_below_min {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_1 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_2 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_3 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_4 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_5 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_6 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_7 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_8 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_9 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_10 {mean|variance}" "LOAD_MESHES [ magnitude | nodal_non_historical ] group_above_max {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] sum" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] mean" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] mean" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] variance" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] rootmeansquare" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] min_value" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] min_id" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] max_value" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] max_id" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] median" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] min" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] max" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_below_min {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_1 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_2 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_3 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_4 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_5 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_6 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_7 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_8 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_9 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_10 {mean|variance}" "GREEN_LAGRANGE_STRAIN_TENSOR [ magnitude | nodal_non_historical ] group_above_max {mean|variance}" + 2.00000 2 162.00000 18.00000 18.00000 60.00000 19.59592 324.00000 324.00000 324.00000 36.00000 36.00000 36.00000 36.00000 36.00000 36.00000 240.00000 240.00000 240.00000 39.19184 39.19184 39.19184 162.00000 18.00000 18.00000 60.00000 19.59592 6.00000 1 30.00000 9 18.00000 6.00000 30.00000 0 [#] = 0.00000 [%] < 6.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 8.40000 { 6.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 10.80000 { 9.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 13.20000 { 12.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 15.60000 { 15.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 18.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 20.40000 { 18.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 22.80000 { 21.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 25.20000 { 24.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 27.60000 { 27.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 30.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 30.00000 { 30.00000 | 0.00000 } 561.18446 62.35383 62.35383 720.00000 67.88225 20.78461 1 103.92305 9 62.35383 20.78461 103.92305 0 [#] = 0.00000 [%] < 20.78461 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 29.09845 { 20.78461 | 0.00000 } 1 [#] = 11.11111 [%] < 37.41230 { 31.17691 | 0.00000 } 1 [#] = 11.11111 [%] < 45.72614 { 41.56922 | 0.00000 } 1 [#] = 11.11111 [%] < 54.03999 { 51.96152 | 0.00000 } 0 [#] = 0.00000 [%] < 62.35383 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 70.66767 { 62.35383 | 0.00000 } 1 [#] = 11.11111 [%] < 78.98152 { 72.74613 | 0.00000 } 1 [#] = 11.11111 [%] < 87.29536 { 83.13844 | 0.00000 } 1 [#] = 11.11111 [%] < 95.60920 { 93.53074 | 0.00000 } 0 [#] = 0.00000 [%] < 103.92305 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 103.92305 { 103.92305 | 0.00000 } 422.61685 46.95743 46.95743 300.00000 50.04998 20.12461 1 73.79024 9 46.95743 20.12461 73.79024 0 [#] = 0.00000 [%] < 20.12461 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 25.49117 { 20.12461 | 0.00000 } 1 [#] = 11.11111 [%] < 30.85774 { 26.83282 | 0.00000 } 1 [#] = 11.11111 [%] < 36.22430 { 33.54102 | 0.00000 } 1 [#] = 11.11111 [%] < 41.59086 { 40.24922 | 0.00000 } 1 [#] = 11.11111 [%] < 46.95743 { 46.95743 | 0.00000 } 0 [#] = 0.00000 [%] < 52.32399 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 57.69055 { 53.66563 | 0.00000 } 1 [#] = 11.11111 [%] < 63.05712 { 60.37384 | 0.00000 } 1 [#] = 11.11111 [%] < 68.42368 { 67.08204 | 0.00000 } 1 [#] = 11.11111 [%] < 73.79024 { 73.79024 | 0.00000 } 0 [#] = 0.00000 [%]>= 73.79024 { 0.00000 | 0.00000 } 2160.00000 240.00000 240.00000 6000.00000 252.19040 120.00000 1 360.00000 9 240.00000 120.00000 360.00000 0 [#] = 0.00000 [%] < 120.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 144.00000 { 120.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 168.00000 { 150.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 192.00000 { 180.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 216.00000 { 210.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 240.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 264.00000 { 240.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 288.00000 { 270.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 312.00000 { 300.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 336.00000 { 330.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 360.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 360.00000 { 360.00000 | 0.00000 } + 4.00000 4 270.00000 30.00000 30.00000 166.66667 32.65986 540.00000 540.00000 540.00000 60.00000 60.00000 60.00000 60.00000 60.00000 60.00000 666.66667 666.66667 666.66667 65.31973 65.31973 65.31973 270.00000 30.00000 30.00000 166.66667 32.65986 10.00000 1 50.00000 9 30.00000 10.00000 50.00000 0 [#] = 0.00000 [%] < 10.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 14.00000 { 10.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 18.00000 { 15.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 22.00000 { 20.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 26.00000 { 25.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 30.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 34.00000 { 30.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 38.00000 { 35.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 42.00000 { 40.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 46.00000 { 45.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 50.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 50.00000 { 50.00000 | 0.00000 } 935.30744 103.92305 103.92305 2000.00000 113.13708 34.64102 1 173.20508 9 103.92305 34.64102 173.20508 0 [#] = 0.00000 [%] < 34.64102 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 48.49742 { 34.64102 | 0.00000 } 1 [#] = 11.11111 [%] < 62.35383 { 51.96152 | 0.00000 } 1 [#] = 11.11111 [%] < 76.21024 { 69.28203 | 0.00000 } 1 [#] = 11.11111 [%] < 90.06664 { 86.60254 | 0.00000 } 0 [#] = 0.00000 [%] < 103.92305 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 117.77945 { 103.92305 | 0.00000 } 1 [#] = 11.11111 [%] < 131.63586 { 121.24356 | 0.00000 } 1 [#] = 11.11111 [%] < 145.49227 { 138.56406 | 0.00000 } 1 [#] = 11.11111 [%] < 159.34867 { 155.88457 | 0.00000 } 0 [#] = 0.00000 [%] < 173.20508 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 173.20508 { 173.20508 | 0.00000 } 704.36141 78.26238 78.26238 833.33333 83.41663 33.54102 1 122.98374 9 78.26238 33.54102 122.98374 0 [#] = 0.00000 [%] < 33.54102 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 42.48529 { 33.54102 | 0.00000 } 1 [#] = 11.11111 [%] < 51.42956 { 44.72136 | 0.00000 } 1 [#] = 11.11111 [%] < 60.37384 { 55.90170 | 0.00000 } 1 [#] = 11.11111 [%] < 69.31811 { 67.08204 | 0.00000 } 1 [#] = 11.11111 [%] < 78.26238 { 78.26238 | 0.00000 } 0 [#] = 0.00000 [%] < 87.20665 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 96.15092 { 89.44272 | 0.00000 } 1 [#] = 11.11111 [%] < 105.09519 { 100.62306 | 0.00000 } 1 [#] = 11.11111 [%] < 114.03947 { 111.80340 | 0.00000 } 0 [#] = 0.00000 [%] < 122.98374 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 122.98374 { 122.98374 | 0.00000 } 3600.00000 400.00000 400.00000 16666.66667 420.31734 200.00000 1 600.00000 9 400.00000 200.00000 600.00000 0 [#] = 0.00000 [%] < 200.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 240.00000 { 200.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 280.00000 { 250.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 320.00000 { 300.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 360.00000 { 350.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 400.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 440.00000 { 400.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 480.00000 { 450.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 520.00000 { 500.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 560.00000 { 550.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 600.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 600.00000 { 600.00000 | 0.00000 } + 6.00000 6 378.00000 42.00000 42.00000 326.66667 45.72381 756.00000 756.00000 756.00000 84.00000 84.00000 84.00000 84.00000 84.00000 84.00000 1306.66667 1306.66667 1306.66667 91.44762 91.44762 91.44762 378.00000 42.00000 42.00000 326.66667 45.72381 14.00000 1 70.00000 9 42.00000 14.00000 70.00000 0 [#] = 0.00000 [%] < 14.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 19.60000 { 14.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 25.20000 { 21.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 30.80000 { 28.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 36.40000 { 35.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 42.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 47.60000 { 42.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 53.20000 { 49.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 58.80000 { 56.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 64.40000 { 63.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 70.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 70.00000 { 70.00000 | 0.00000 } 1309.43041 145.49227 145.49227 3920.00000 158.39192 48.49742 1 242.48711 9 145.49227 48.49742 242.48711 0 [#] = 0.00000 [%] < 48.49742 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 67.89639 { 48.49742 | 0.00000 } 1 [#] = 11.11111 [%] < 87.29536 { 72.74613 | 0.00000 } 1 [#] = 11.11111 [%] < 106.69433 { 96.99485 | 0.00000 } 1 [#] = 11.11111 [%] < 126.09330 { 121.24356 | 0.00000 } 0 [#] = 0.00000 [%] < 145.49227 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 164.89124 { 145.49227 | 0.00000 } 1 [#] = 11.11111 [%] < 184.29021 { 169.74098 | 0.00000 } 1 [#] = 11.11111 [%] < 203.68917 { 193.98969 | 0.00000 } 1 [#] = 11.11111 [%] < 223.08814 { 218.23840 | 0.00000 } 0 [#] = 0.00000 [%] < 242.48711 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 242.48711 { 242.48711 | 0.00000 } 986.10598 109.56733 109.56733 1633.33333 116.78328 46.95743 1 172.17723 9 109.56733 46.95743 172.17723 0 [#] = 0.00000 [%] < 46.95743 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 59.47941 { 46.95743 | 0.00000 } 1 [#] = 11.11111 [%] < 72.00139 { 62.60990 | 0.00000 } 1 [#] = 11.11111 [%] < 84.52337 { 78.26238 | 0.00000 } 1 [#] = 11.11111 [%] < 97.04535 { 93.91486 | 0.00000 } 0 [#] = 0.00000 [%] < 109.56733 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 122.08931 { 109.56733 | 0.00000 } 1 [#] = 11.11111 [%] < 134.61129 { 125.21981 | 0.00000 } 1 [#] = 11.11111 [%] < 147.13327 { 140.87228 | 0.00000 } 1 [#] = 11.11111 [%] < 159.65525 { 156.52476 | 0.00000 } 0 [#] = 0.00000 [%] < 172.17723 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 172.17723 { 172.17723 | 0.00000 } 5040.00000 560.00000 560.00000 32666.66667 588.44428 280.00000 1 840.00000 9 560.00000 280.00000 840.00000 0 [#] = 0.00000 [%] < 280.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 336.00000 { 280.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 392.00000 { 350.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 448.00000 { 420.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 504.00000 { 490.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 560.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 616.00000 { 560.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 672.00000 { 630.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 728.00000 { 700.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 784.00000 { 770.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 840.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 840.00000 { 840.00000 | 0.00000 } + 8.00000 8 486.00000 54.00000 54.00000 540.00000 58.78775 972.00000 972.00000 972.00000 108.00000 108.00000 108.00000 108.00000 108.00000 108.00000 2160.00000 2160.00000 2160.00000 117.57551 117.57551 117.57551 486.00000 54.00000 54.00000 540.00000 58.78775 18.00000 1 90.00000 9 54.00000 18.00000 90.00000 0 [#] = 0.00000 [%] < 18.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 25.20000 { 18.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 32.40000 { 27.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 39.60000 { 36.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 46.80000 { 45.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 54.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 61.20000 { 54.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 68.40000 { 63.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 75.60000 { 72.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 82.80000 { 81.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 90.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 90.00000 { 90.00000 | 0.00000 } 1683.55338 187.06149 187.06149 6480.00000 203.64675 62.35383 1 311.76915 9 187.06149 62.35383 311.76915 0 [#] = 0.00000 [%] < 62.35383 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 87.29536 { 62.35383 | 0.00000 } 1 [#] = 11.11111 [%] < 112.23689 { 93.53074 | 0.00000 } 1 [#] = 11.11111 [%] < 137.17842 { 124.70766 | 0.00000 } 1 [#] = 11.11111 [%] < 162.11996 { 155.88457 | 0.00000 } 0 [#] = 0.00000 [%] < 187.06149 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 212.00302 { 187.06149 | 0.00000 } 1 [#] = 11.11111 [%] < 236.94455 { 218.23840 | 0.00000 } 1 [#] = 11.11111 [%] < 261.88608 { 249.41532 | 0.00000 } 1 [#] = 11.11111 [%] < 286.82761 { 280.59223 | 0.00000 } 0 [#] = 0.00000 [%] < 311.76915 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 311.76915 { 311.76915 | 0.00000 } 1267.85054 140.87228 140.87228 2700.00000 150.14993 60.37384 1 221.37073 9 140.87228 60.37384 221.37073 0 [#] = 0.00000 [%] < 60.37384 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 76.47352 { 60.37384 | 0.00000 } 1 [#] = 11.11111 [%] < 92.57321 { 80.49845 | 0.00000 } 1 [#] = 11.11111 [%] < 108.67290 { 100.62306 | 0.00000 } 1 [#] = 11.11111 [%] < 124.77259 { 120.74767 | 0.00000 } 0 [#] = 0.00000 [%] < 140.87228 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 156.97197 { 140.87228 | 0.00000 } 1 [#] = 11.11111 [%] < 173.07166 { 160.99689 | 0.00000 } 1 [#] = 11.11111 [%] < 189.17135 { 181.12151 | 0.00000 } 1 [#] = 11.11111 [%] < 205.27104 { 201.24612 | 0.00000 } 0 [#] = 0.00000 [%] < 221.37073 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 221.37073 { 221.37073 | 0.00000 } 6480.00000 720.00000 720.00000 54000.00000 756.57121 360.00000 1 1080.00000 9 720.00000 360.00000 1080.00000 0 [#] = 0.00000 [%] < 360.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 432.00000 { 360.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 504.00000 { 450.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 576.00000 { 540.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 648.00000 { 630.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 720.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 792.00000 { 720.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 864.00000 { 810.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 936.00000 { 900.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 1008.00000 { 990.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 1080.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 1080.00000 { 1080.00000 | 0.00000 } + 10.00000 10 594.00000 66.00000 66.00000 806.66667 71.85170 1188.00000 1188.00000 1188.00000 132.00000 132.00000 132.00000 132.00000 132.00000 132.00000 3226.66667 3226.66667 3226.66667 143.70340 143.70340 143.70340 594.00000 66.00000 66.00000 806.66667 71.85170 22.00000 1 110.00000 9 66.00000 22.00000 110.00000 0 [#] = 0.00000 [%] < 22.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 30.80000 { 22.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 39.60000 { 33.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 48.40000 { 44.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 57.20000 { 55.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 66.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 74.80000 { 66.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 83.60000 { 77.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 92.40000 { 88.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 101.20000 { 99.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 110.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 110.00000 { 110.00000 | 0.00000 } 2057.67636 228.63071 228.63071 9680.00000 248.90159 76.21024 1 381.05118 9 228.63071 76.21024 381.05118 0 [#] = 0.00000 [%] < 76.21024 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 106.69433 { 76.21024 | 0.00000 } 1 [#] = 11.11111 [%] < 137.17842 { 114.31535 | 0.00000 } 1 [#] = 11.11111 [%] < 167.66252 { 152.42047 | 0.00000 } 1 [#] = 11.11111 [%] < 198.14661 { 190.52559 | 0.00000 } 0 [#] = 0.00000 [%] < 228.63071 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 259.11480 { 228.63071 | 0.00000 } 1 [#] = 11.11111 [%] < 289.59890 { 266.73582 | 0.00000 } 1 [#] = 11.11111 [%] < 320.08299 { 304.84094 | 0.00000 } 1 [#] = 11.11111 [%] < 350.56708 { 342.94606 | 0.00000 } 0 [#] = 0.00000 [%] < 381.05118 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 381.05118 { 381.05118 | 0.00000 } 1549.59511 172.17723 172.17723 4033.33333 183.51658 73.79024 1 270.56423 9 172.17723 73.79024 270.56423 0 [#] = 0.00000 [%] < 73.79024 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 93.46764 { 73.79024 | 0.00000 } 1 [#] = 11.11111 [%] < 113.14504 { 98.38699 | 0.00000 } 1 [#] = 11.11111 [%] < 132.82244 { 122.98374 | 0.00000 } 1 [#] = 11.11111 [%] < 152.49984 { 147.58049 | 0.00000 } 0 [#] = 0.00000 [%] < 172.17723 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 191.85463 { 172.17723 | 0.00000 } 1 [#] = 11.11111 [%] < 211.53203 { 196.77398 | 0.00000 } 1 [#] = 11.11111 [%] < 231.20943 { 221.37073 | 0.00000 } 1 [#] = 11.11111 [%] < 250.88683 { 245.96748 | 0.00000 } 0 [#] = 0.00000 [%] < 270.56423 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 270.56423 { 270.56423 | 0.00000 } 7920.00000 880.00000 880.00000 80666.66667 924.69815 440.00000 1 1320.00000 9 880.00000 440.00000 1320.00000 0 [#] = 0.00000 [%] < 440.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 528.00000 { 440.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 616.00000 { 550.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 704.00000 { 660.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 792.00000 { 770.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 880.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 968.00000 { 880.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 1056.00000 { 990.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 1144.00000 { 1100.00000 | 0.00000 } 1 [#] = 11.11111 [%] < 1232.00000 { 1210.00000 | 0.00000 } 0 [#] = 0.00000 [%] < 1320.00000 { 0.00000 | 0.00000 } 1 [#] = 11.11111 [%]>= 1320.00000 { 1320.00000 | 0.00000 } +# End of file. \ No newline at end of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_distribution.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_distribution.ref.dat deleted file mode 100644 index dc558ab9df0d..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_distribution.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : distribution -# Norm type : magnitude -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Min PRESSURE_Max VELOCITY_Min VELOCITY_Max LOAD_MESHES_Min LOAD_MESHES_Max GREEN_LAGRANGE_STRAIN_TENSOR_Min GREEN_LAGRANGE_STRAIN_TENSOR_Max -2 6.0 30.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 20.784609690826528 103.92304845413264 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 20.12461179749811 73.79024325749306 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 120.0 360.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -4 10.0 50.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 34.64101615137755 173.20508075688772 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 33.54101966249684 122.98373876248843 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 200.0 600.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -6 14.0 70.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 48.49742261192856 242.4871130596428 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 46.95742752749558 172.1772342674838 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 280.0 840.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -8 18.0 90.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 62.353829072479584 311.7691453623979 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 60.37383539249432 221.37072977247917 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 360.0 1080.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -10 22.0 110.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 76.2102355330306 381.051177665153 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 73.79024325749306 270.5642252774746 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 440.0 1320.0 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.1111111111111111 0.0 0.1111111111111111 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_max.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_max.ref.dat deleted file mode 100644 index cf5912d9c79b..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_max.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : max -# Norm type : magnitude -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Max PRESSURE_Id VELOCITY_Max VELOCITY_Id LOAD_MESHES_Max LOAD_MESHES_Id GREEN_LAGRANGE_STRAIN_TENSOR_Max GREEN_LAGRANGE_STRAIN_TENSOR_Id -2 30.0 9 103.92304845413264 9 73.79024325749306 9 360.0 9 -4 50.0 9 173.20508075688772 9 122.98373876248843 9 600.0 9 -6 70.0 9 242.4871130596428 9 172.1772342674838 9 840.0 9 -8 90.0 9 311.7691453623979 9 221.37072977247917 9 1080.0 9 -10 110.0 9 381.051177665153 9 270.5642252774746 9 1320.0 9 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_mean.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_mean.ref.dat deleted file mode 100644 index 545153c24c46..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_mean.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : mean -# Norm type : magnitude -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean VELOCITY_Mean LOAD_MESHES_Mean GREEN_LAGRANGE_STRAIN_TENSOR_Mean -2 18.0 62.353829072479584 46.95742752749558 240.0 -4 30.0 103.92304845413264 78.26237921249263 400.0 -6 42.0 145.4922678357857 109.56733089748968 560.0 -8 54.0 187.06148721743875 140.87228258248675 720.0 -10 66.0 228.63070659909175 172.17723426748378 880.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_median.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_median.ref.dat deleted file mode 100644 index b46a710094d4..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_median.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : median -# Norm type : magnitude -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Median VELOCITY_Median LOAD_MESHES_Median GREEN_LAGRANGE_STRAIN_TENSOR_Median -2 18.0 62.353829072479584 46.95742752749558 240.0 -4 30.0 103.92304845413264 78.26237921249263 400.0 -6 42.0 145.4922678357857 109.5673308974897 560.0 -8 54.0 187.06148721743875 140.87228258248675 720.0 -10 66.0 228.6307065990918 172.1772342674838 880.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_min.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_min.ref.dat deleted file mode 100644 index f4373880072d..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_min.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : min -# Norm type : magnitude -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Min PRESSURE_Id VELOCITY_Min VELOCITY_Id LOAD_MESHES_Min LOAD_MESHES_Id GREEN_LAGRANGE_STRAIN_TENSOR_Min GREEN_LAGRANGE_STRAIN_TENSOR_Id -2 6.0 1 20.784609690826528 1 20.12461179749811 1 120.0 1 -4 10.0 1 34.64101615137755 1 33.54101966249684 1 200.0 1 -6 14.0 1 48.49742261192856 1 46.95742752749558 1 280.0 1 -8 18.0 1 62.353829072479584 1 60.37383539249432 1 360.0 1 -10 22.0 1 76.2102355330306 1 73.79024325749306 1 440.0 1 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_rootmeansquare.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_rootmeansquare.ref.dat deleted file mode 100644 index 4a8fbc015266..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_rootmeansquare.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : rootmeansquare -# Norm type : magnitude -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_RootMeanSquare VELOCITY_RootMeanSquare LOAD_MESHES_RootMeanSquare GREEN_LAGRANGE_STRAIN_TENSOR_RootMeanSquare -2 19.595917942265423 67.88225099390856 50.049975024968795 252.19040425836982 -4 32.65986323710904 113.13708498984761 83.41662504161465 420.31734043061635 -6 45.723808531952656 158.39191898578665 116.78327505826051 588.4442766028629 -8 58.787753826796276 203.64675298172568 150.14992507490638 756.5712127751095 -10 71.8516991216399 248.90158697766472 183.51657509155226 924.698148947356 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_sum.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_sum.ref.dat deleted file mode 100644 index db324e0e8368..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_sum.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : sum -# Norm type : magnitude -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Sum VELOCITY_Sum LOAD_MESHES_Sum GREEN_LAGRANGE_STRAIN_TENSOR_Sum -2 162.0 561.1844616523163 422.6168477474602 2160.0 -4 270.0 935.3074360871938 704.3614129124337 3600.0 -6 378.0 1309.4304105220713 986.1059780774074 5040.0 -8 486.0 1683.5533849569488 1267.8505432423808 6480.0 -10 594.0 2057.6763593918263 1549.5951084073542 7920.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_variance.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_variance.ref.dat deleted file mode 100644 index b5aa808a9347..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_magnitude_variance.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : variance -# Norm type : magnitude -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean PRESSURE_Variance VELOCITY_Mean VELOCITY_Variance LOAD_MESHES_Mean LOAD_MESHES_Variance GREEN_LAGRANGE_STRAIN_TENSOR_Mean GREEN_LAGRANGE_STRAIN_TENSOR_Variance -2 18.0 60.0 62.353829072479584 720.0 46.957427527495575 300.0000000000009 240.0 6000.0 -4 30.0 166.66666666666652 103.92304845413264 2000.0 78.26237921249263 833.333333333333 400.0 16666.666666666657 -6 42.0 326.6666666666665 145.4922678357857 3920.0 109.56733089748968 1633.333333333334 560.0 32666.666666666628 -8 54.0 540.0 187.06148721743875 6480.0 140.87228258248675 2700.0 720.0 54000.0 -10 66.0 806.6666666666661 228.6307065990918 9680.0 172.17723426748378 4033.3333333333358 880.0 80666.66666666663 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_mean.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_mean.ref.dat deleted file mode 100644 index c3281210df50..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_mean.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : mean -# Norm type : none -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean VELOCITY_X_Mean VELOCITY_Y_Mean VELOCITY_Z_Mean -2 18.0 36.0 36.0 36.0 -4 30.0 60.0 60.0 60.0 -6 42.0 84.0 84.0 84.0 -8 54.0 108.0 108.0 108.0 -10 66.0 132.0 132.0 132.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_rootmeansquare.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_rootmeansquare.ref.dat deleted file mode 100644 index bd7b02598a77..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_rootmeansquare.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : rootmeansquare -# Norm type : none -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_RootMeanSquare VELOCITY_X_RootMeanSquare VELOCITY_Y_RootMeanSquare VELOCITY_Z_RootMeanSquare -2 19.595917942265423 39.191835884530846 39.191835884530846 39.191835884530846 -4 32.659863237109036 65.31972647421807 65.31972647421807 65.31972647421807 -6 45.723808531952656 91.44761706390531 91.44761706390531 91.44761706390531 -8 58.787753826796276 117.57550765359255 117.57550765359255 117.57550765359255 -10 71.85169912163988 143.70339824327976 143.70339824327976 143.70339824327976 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_sum.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_sum.ref.dat deleted file mode 100644 index a1ae3aeb9793..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_sum.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : sum -# Norm type : none -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Sum VELOCITY_X_Sum VELOCITY_Y_Sum VELOCITY_Z_Sum -2 162.0 324.0 324.0 324.0 -4 270.0 540.0 540.0 540.0 -6 378.0 756.0 756.0 756.0 -8 486.0 972.0 972.0 972.0 -10 594.0 1188.0 1188.0 1188.0 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_variance.ref.dat b/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_variance.ref.dat deleted file mode 100644 index 68da1c8ee42f..000000000000 --- a/applications/StatisticsApplication/tests/spatial_statistics_process/test_model_part_nodal_non_historical_none_variance.ref.dat +++ /dev/null @@ -1,17 +0,0 @@ -# Spatial statistics process output -# Kratos version : not_given -# Timestamp : not_specified -# Method Name : variance -# Norm type : none -# Container type : nodal_non_historical -# Modelpart name : test_model_part -# Output control variable name : STEP -# ---------------------------------------------------------------------- -# Headers: -# OutputControlVariableValue PRESSURE_Mean PRESSURE_Variance VELOCITY_X_Mean VELOCITY_Y_Mean VELOCITY_Z_Mean VELOCITY_X_Variance VELOCITY_Y_Variance VELOCITY_Z_Variance -2 18.0 60.0 36.0 36.0 36.0 240.0 240.0 240.0 -4 30.0 166.66666666666652 60.0 60.0 60.0 666.6666666666661 666.6666666666661 666.6666666666661 -6 42.0 326.6666666666665 84.0 84.0 84.0 1306.666666666666 1306.666666666666 1306.666666666666 -8 54.0 540.0 108.0 108.0 108.0 2160.0 2160.0 2160.0 -10 66.0 806.6666666666661 132.0 132.0 132.0 3226.6666666666642 3226.6666666666642 3226.6666666666642 -# End of file diff --git a/applications/StatisticsApplication/tests/spatial_statistics_test_case.py b/applications/StatisticsApplication/tests/spatial_statistics_test_case.py index ea6f08ea6987..c40643d92fb5 100644 --- a/applications/StatisticsApplication/tests/spatial_statistics_test_case.py +++ b/applications/StatisticsApplication/tests/spatial_statistics_test_case.py @@ -27,6 +27,10 @@ def AddVariables(cls): cls.model_part.AddNodalSolutionStepVariable(Kratos.VISCOSITY) cls.model_part.AddNodalSolutionStepVariable(Kratos.WET_VOLUME) + def setUp(self): + self.model_part.ProcessInfo[Kratos.TIME] = 0.0 + self.model_part.ProcessInfo[Kratos.STEP] = 0 + def testSpatialStatisticsProcessNodalHistorical(self): settings = SpatialStatisticsTestCase.__GetDefaultParameters("nodal_historical") self.__TestMethod(settings) @@ -66,99 +70,52 @@ def __GetDefaultParameters(container_name): "python_module" : "spatial_statistics_process", "Parameters" : { "model_part_name" : "test_model_part", + "echo_level" : 0, "input_variable_settings" : [ { - "method_name" : "sum", - "norm_type" : "none", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY"], - "method_settings": {} - }, - { - "method_name" : "mean", - "norm_type" : "none", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY"], - "method_settings": {} - }, - { - "method_name" : "variance", - "norm_type" : "none", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY"], - "method_settings": {} - }, - { - "method_name" : "rootmeansquare", "norm_type" : "none", "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY"], - "method_settings": {} + "variable_names" : ["PRESSURE", "VELOCITY"] }, { - "method_name" : "sum", "norm_type" : "magnitude", "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY", "LOAD_MESHES", "GREEN_LAGRANGE_STRAIN_TENSOR"], - "method_settings": {} + "variable_names" : ["PRESSURE", "VELOCITY", "LOAD_MESHES", "GREEN_LAGRANGE_STRAIN_TENSOR"] + } + ], + "statistics_methods": [ + { + "method_name" : "sum" }, { - "method_name" : "mean", - "norm_type" : "magnitude", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY", "LOAD_MESHES", "GREEN_LAGRANGE_STRAIN_TENSOR"], - "method_settings": {} + "method_name" : "mean" }, { - "method_name" : "variance", - "norm_type" : "magnitude", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY", "LOAD_MESHES", "GREEN_LAGRANGE_STRAIN_TENSOR"], - "method_settings": {} + "method_name" : "variance" }, { - "method_name" : "rootmeansquare", - "norm_type" : "magnitude", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY", "LOAD_MESHES", "GREEN_LAGRANGE_STRAIN_TENSOR"], - "method_settings": {} + "method_name" : "rootmeansquare" }, { - "method_name" : "min", - "norm_type" : "magnitude", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY", "LOAD_MESHES", "GREEN_LAGRANGE_STRAIN_TENSOR"], - "method_settings": {} + "method_name" : "min" }, { - "method_name" : "max", - "norm_type" : "magnitude", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY", "LOAD_MESHES", "GREEN_LAGRANGE_STRAIN_TENSOR"], - "method_settings": {} + "method_name" : "max" }, { - "method_name" : "median", - "norm_type" : "magnitude", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY", "LOAD_MESHES", "GREEN_LAGRANGE_STRAIN_TENSOR"], - "method_settings": {} + "method_name" : "median" }, { - "method_name" : "distribution", - "norm_type" : "magnitude", - "container" : "", - "variable_names" : ["PRESSURE", "VELOCITY", "LOAD_MESHES", "GREEN_LAGRANGE_STRAIN_TENSOR"], - "method_settings": {} + "method_name" : "distribution" } ], "output_settings" : { "output_control_variable": "STEP", - "output_time_interval" : 1, + "output_time_interval" : 2, "write_kratos_version" : false, "write_time_stamp" : false, "output_file_settings" : { - "file_name" : "___.dat", + "file_name" : "_.dat", "output_path": "spatial_statistics_process", "write_buffer_size" : -1 } @@ -173,33 +130,13 @@ def __GetDefaultParameters(container_name): "help": "", "process_name": "CompareTwoFilesCheckProcess", "Parameters": { - "output_file_name": "spatial_statistics_process/", - "reference_file_name": "spatial_statistics_process/", - "comparison_type": "dat_file", + "output_file_name": "spatial_statistics_process/test_model_part_.dat", + "reference_file_name": "spatial_statistics_process/test_model_part_.ref.dat", + "comparison_type": "deterministic", "remove_output_file": true, "tolerance": 1e-16 } } ''' - final_settings_str = "[\n" + settings_str.replace("", container_name) - method_list = {} - method_list["sum"] = ["none", "magnitude"] - method_list["mean"] = ["none", "magnitude"] - method_list["variance"] = ["none", "magnitude"] - method_list["rootmeansquare"] = ["none", "magnitude"] - method_list["min"] = ["magnitude"] - method_list["max"] = ["magnitude"] - method_list["median"] = ["magnitude"] - method_list["distribution"] = ["magnitude"] - - for method, norm_types in method_list.items(): - for norm_type in norm_types: - name_prefix = "test_model_part_" + container_name + "_" + norm_type + "_" + method - file_output_name = name_prefix + ".dat" - reference_file_name = name_prefix + ".ref.dat" - current_settings = check_settings.replace("", file_output_name) - current_settings = current_settings.replace("", reference_file_name) - final_settings_str += ",\n" + current_settings - - final_settings_str += "\n]" + final_settings_str = "[\n" + settings_str.replace("", container_name) + ",\n" + check_settings.replace("", container_name) + "\n]" return Kratos.Parameters(final_settings_str) diff --git a/applications/StructuralMechanicsApplication/custom_conditions/line_load_condition.cpp b/applications/StructuralMechanicsApplication/custom_conditions/line_load_condition.cpp index 615663900607..3ccea9b02865 100644 --- a/applications/StructuralMechanicsApplication/custom_conditions/line_load_condition.cpp +++ b/applications/StructuralMechanicsApplication/custom_conditions/line_load_condition.cpp @@ -191,7 +191,7 @@ void LineLoadCondition::CalculateAll( // Pressure applied to the element itself double pressure_on_condition = 0.0; - if (TDim == 2) { + if constexpr (TDim == 2) { if( this->Has( PRESSURE ) ) { pressure_on_condition += this->GetValue( PRESSURE ); } diff --git a/applications/StructuralMechanicsApplication/custom_conditions/small_displacement_line_load_condition.cpp b/applications/StructuralMechanicsApplication/custom_conditions/small_displacement_line_load_condition.cpp index 6fa8ae0f6540..5d4b27483080 100644 --- a/applications/StructuralMechanicsApplication/custom_conditions/small_displacement_line_load_condition.cpp +++ b/applications/StructuralMechanicsApplication/custom_conditions/small_displacement_line_load_condition.cpp @@ -143,8 +143,8 @@ void SmallDisplacementLineLoadCondition::CalculateAll( Vector pressure_on_nodes = ZeroVector( number_of_nodes ); // Pressure applied to the element itself - double pressure_on_condition = 0.0; - if (TDim == 2) { + if constexpr (TDim == 2) { + double pressure_on_condition = 0.0; if( this->Has( PRESSURE ) ) { pressure_on_condition += this->GetValue( PRESSURE ); } diff --git a/applications/StructuralMechanicsApplication/custom_constitutive/axisym_elastic_isotropic.cpp b/applications/StructuralMechanicsApplication/custom_constitutive/axisym_elastic_isotropic.cpp index 16883c5043de..22340b59ae64 100644 --- a/applications/StructuralMechanicsApplication/custom_constitutive/axisym_elastic_isotropic.cpp +++ b/applications/StructuralMechanicsApplication/custom_constitutive/axisym_elastic_isotropic.cpp @@ -79,28 +79,57 @@ void AxisymElasticIsotropic::GetLawFeatures(Features& rFeatures) void AxisymElasticIsotropic::CalculateElasticMatrix(VoigtSizeMatrixType& C, ConstitutiveLaw::Parameters& rValues) { const Properties& MaterialProperties = rValues.GetMaterialProperties(); - const double& E = MaterialProperties[YOUNG_MODULUS]; - const double& NU = MaterialProperties[POISSON_RATIO]; + const double E = MaterialProperties[YOUNG_MODULUS]; + const double NU = MaterialProperties[POISSON_RATIO]; if (C.size1() != 4 || C.size2() != 4) - C.resize(4, 4); + C.resize(4, 4, false); noalias(C) = ZeroMatrix(4, 4); - const double c0 = (1.0-NU); - const double c1 = E / (( 1.00 + NU ) * ( 1 - 2 * NU ) ); - const double c2 = (1-2*NU)/(2*c0); - const double c3 = NU/c0; - - C(0, 0) = c1*c0; - C(1, 1) = C(0, 0); - C(2, 2) = C(0, 0); - C(3, 3) = C(0, 0)*c2; - C(0, 1) = C(0, 0)*c3; - C(1, 0) = C(0, 1); - C(0, 2) = C(0, 1); - C(2, 0) = C(0, 1); - C(1, 2) = C(0, 1); - C(2, 1) = C(0, 1); + const double aux_value = (1.0 - 2.0 * NU); + const double c1 = E / ((1.0 + NU) * aux_value); + const double c0 = c1 * (1.0 - NU); + const double c2 = 0.5 * c1 * aux_value; + const double c3 = NU * c1; + + C(0, 0) = c0; + C(0, 1) = c3; + C(0, 2) = c3; + + C(1, 0) = c3; + C(1, 1) = c0; + C(1, 2) = c3; + + C(2, 0) = c3; + C(2, 1) = c3; + C(2, 2) = c0; + + C(3, 3) = c2; +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void AxisymElasticIsotropic::CalculatePK2Stress( + const Vector& rStrainVector, + ConstitutiveLaw::StressVectorType& rStressVector, + ConstitutiveLaw::Parameters& rValues + ) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + const double E = r_material_properties[YOUNG_MODULUS]; + const double NU = r_material_properties[POISSON_RATIO]; + + const double aux_value = (1.0 - 2.0 * NU); + const double c1 = E / ((1.0 + NU) * aux_value); + const double c0 = c1 * (1.0 - NU); + const double c2 = 0.5 * c1 * aux_value; + const double c3 = NU * c1; + + rStressVector[0] = (c0 * rStrainVector[0] + c3 * rStrainVector[1] + c3 * rStrainVector[2]); + rStressVector[1] = (c3 * rStrainVector[0] + c0 * rStrainVector[1] + c3 * rStrainVector[2]); + rStressVector[2] = (c3 * rStrainVector[0] + c3 * rStrainVector[1] + c0 * rStrainVector[2]); + rStressVector[3] = (c2 * rStrainVector[3]); } //************************************************************************************ diff --git a/applications/StructuralMechanicsApplication/custom_constitutive/axisym_elastic_isotropic.h b/applications/StructuralMechanicsApplication/custom_constitutive/axisym_elastic_isotropic.h index 9c6a4a06cdd7..84caefeae361 100644 --- a/applications/StructuralMechanicsApplication/custom_constitutive/axisym_elastic_isotropic.h +++ b/applications/StructuralMechanicsApplication/custom_constitutive/axisym_elastic_isotropic.h @@ -156,6 +156,14 @@ class KRATOS_API(STRUCTURAL_MECHANICS_APPLICATION) AxisymElasticIsotropic : publ */ void CalculateElasticMatrix(VoigtSizeMatrixType& C, ConstitutiveLaw::Parameters& rValues) override; + /** + * It calculates the pk2 stress vector + * @param rStrainVector: The strain vector + * @param rStressVector: The stress vector + * @param rValues: The rvalues of the CL + */ + void CalculatePK2Stress(const Vector &rStrainVector, ConstitutiveLaw::StressVectorType &rStressVector, ConstitutiveLaw::Parameters &rValues) override; + /** * It calculates the strain vector * @param rValues: The Internalvalues of the law diff --git a/applications/StructuralMechanicsApplication/custom_constitutive/elastic_isotropic_3d.cpp b/applications/StructuralMechanicsApplication/custom_constitutive/elastic_isotropic_3d.cpp index a86205ec7d13..fc0ea4f24343 100644 --- a/applications/StructuralMechanicsApplication/custom_constitutive/elastic_isotropic_3d.cpp +++ b/applications/StructuralMechanicsApplication/custom_constitutive/elastic_isotropic_3d.cpp @@ -17,7 +17,7 @@ // Project includes #include "custom_constitutive/elastic_isotropic_3d.h" #include "includes/checks.h" - +#include "custom_utilities/constitutive_law_utilities.h" #include "structural_mechanics_application_variables.h" namespace Kratos @@ -60,23 +60,23 @@ void ElasticIsotropic3D::CalculateMaterialResponsePK2(ConstitutiveLaw::Paramete { KRATOS_TRY; - Flags & r_constitutive_law_options = rValues.GetOptions(); - ConstitutiveLaw::StrainVectorType& r_strain_vector = rValues.GetStrainVector(); + Flags &r_constitutive_law_options = rValues.GetOptions(); + ConstitutiveLaw::StrainVectorType &r_strain_vector = rValues.GetStrainVector(); - if( r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { - //Since we are in small strains, any strain measure works, e.g. CAUCHY_GREEN + if (r_constitutive_law_options.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { + // Since we are in small strains, any strain measure works, e.g. CAUCHY_GREEN CalculateCauchyGreenStrain(rValues, r_strain_vector); } AddInitialStrainVectorContribution(r_strain_vector); - if( r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_STRESS )) { - ConstitutiveLaw::StressVectorType& r_stress_vector = rValues.GetStressVector(); + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_STRESS)) { + ConstitutiveLaw::StressVectorType &r_stress_vector = rValues.GetStressVector(); CalculatePK2Stress(r_strain_vector, r_stress_vector, rValues); AddInitialStressVectorContribution(r_stress_vector); } - if( r_constitutive_law_options.Is( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR )) { - ConstitutiveLaw::VoigtSizeMatrixType& r_constitutive_matrix = rValues.GetConstitutiveMatrix(); + if (r_constitutive_law_options.Is(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR)) { + ConstitutiveLaw::VoigtSizeMatrixType &r_constitutive_matrix = rValues.GetConstitutiveMatrix(); CalculateElasticMatrix(r_constitutive_matrix, rValues); } @@ -184,21 +184,19 @@ void ElasticIsotropic3D::FinalizeMaterialResponseKirchhoff(ConstitutiveLaw::Para double& ElasticIsotropic3D::CalculateValue(ConstitutiveLaw::Parameters& rParameterValues, const Variable& rThisVariable, double& rValue) { - Flags & r_constitutive_law_options = rParameterValues.GetOptions(); - ConstitutiveLaw::StrainVectorType& r_strain_vector = rParameterValues.GetStrainVector(); - ConstitutiveLaw::StressVectorType& r_stress_vector = rParameterValues.GetStressVector(); + Flags &r_constitutive_law_options = rParameterValues.GetOptions(); + ConstitutiveLaw::StrainVectorType &r_strain_vector = rParameterValues.GetStrainVector(); + ConstitutiveLaw::StressVectorType &r_stress_vector = rParameterValues.GetStressVector(); if (rThisVariable == STRAIN_ENERGY) { - - if( r_constitutive_law_options.IsNot( ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN )) { + if (r_constitutive_law_options.IsNot(ConstitutiveLaw::USE_ELEMENT_PROVIDED_STRAIN)) { this->CalculateCauchyGreenStrain(rParameterValues, r_strain_vector); } - this->CalculatePK2Stress( r_strain_vector, r_stress_vector, rParameterValues); - - rValue = 0.5 * inner_prod( r_strain_vector, r_stress_vector); // Strain energy = 0.5*E:C:E + this->CalculatePK2Stress(r_strain_vector, r_stress_vector, rParameterValues); + rValue = 0.5 * inner_prod(r_strain_vector, r_stress_vector); // Strain energy = 0.5*E:C:E } - return( rValue ); + return rValue; } /***********************************************************************************/ @@ -253,6 +251,7 @@ Vector& ElasticIsotropic3D::CalculateValue( // Previous flags restored r_flags.Set( ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, flag_const_tensor ); r_flags.Set( ConstitutiveLaw::COMPUTE_STRESS, flag_stress ); + return rValue; } else if (rThisVariable == INITIAL_STRAIN_VECTOR) { if (this->HasInitialState()) { @@ -265,7 +264,7 @@ Vector& ElasticIsotropic3D::CalculateValue( } } - return( rValue ); + return rValue; } /***********************************************************************************/ @@ -349,29 +348,7 @@ void ElasticIsotropic3D::CalculateElasticMatrix( ConstitutiveLaw::Parameters& rValues ) { - const Properties& r_material_properties = rValues.GetMaterialProperties(); - const double E = r_material_properties[YOUNG_MODULUS]; - const double NU = r_material_properties[POISSON_RATIO]; - - this->CheckClearElasticMatrix(rConstitutiveMatrix); - - const double c1 = E / (( 1.00 + NU ) * ( 1 - 2 * NU ) ); - const double c2 = c1 * ( 1 - NU ); - const double c3 = c1 * NU; - const double c4 = c1 * 0.5 * ( 1 - 2 * NU ); - - rConstitutiveMatrix( 0, 0 ) = c2; - rConstitutiveMatrix( 0, 1 ) = c3; - rConstitutiveMatrix( 0, 2 ) = c3; - rConstitutiveMatrix( 1, 0 ) = c3; - rConstitutiveMatrix( 1, 1 ) = c2; - rConstitutiveMatrix( 1, 2 ) = c3; - rConstitutiveMatrix( 2, 0 ) = c3; - rConstitutiveMatrix( 2, 1 ) = c3; - rConstitutiveMatrix( 2, 2 ) = c2; - rConstitutiveMatrix( 3, 3 ) = c4; - rConstitutiveMatrix( 4, 4 ) = c4; - rConstitutiveMatrix( 5, 5 ) = c4; + ConstitutiveLawUtilities<6>::CalculateElasticMatrix(rConstitutiveMatrix, rValues); } /***********************************************************************************/ diff --git a/applications/StructuralMechanicsApplication/custom_constitutive/linear_plane_strain.cpp b/applications/StructuralMechanicsApplication/custom_constitutive/linear_plane_strain.cpp index eb3f3ac79153..54a9fe7bde85 100644 --- a/applications/StructuralMechanicsApplication/custom_constitutive/linear_plane_strain.cpp +++ b/applications/StructuralMechanicsApplication/custom_constitutive/linear_plane_strain.cpp @@ -15,8 +15,8 @@ // Project includes #include "custom_constitutive/linear_plane_strain.h" - #include "structural_mechanics_application_variables.h" +#include "custom_utilities/constitutive_law_utilities.h" namespace Kratos { @@ -76,22 +76,6 @@ Matrix& LinearPlaneStrain::GetValue(const Variable& rThisVariable, Matri /***********************************************************************************/ /***********************************************************************************/ -// ConstitutiveLaw::VoigtSizeMatrixType& LinearPlaneStrain::GetValue(const Variable& rThisVariable, ConstitutiveLaw::VoigtSizeMatrixType& rValue) -// { -// return rValue; -// } - -/***********************************************************************************/ -/***********************************************************************************/ - -// ConstitutiveLaw::DeformationGradientMatrixType& LinearPlaneStrain::GetValue(const Variable& rThisVariable, ConstitutiveLaw::DeformationGradientMatrixType& rValue) -// { -// return rValue; -// } - -/***********************************************************************************/ -/***********************************************************************************/ - Vector& LinearPlaneStrain::GetValue(const Variable& rThisVariable, Vector& rValue) { return rValue; @@ -100,22 +84,6 @@ Vector& LinearPlaneStrain::GetValue(const Variable& rThisVariable, Vecto /***********************************************************************************/ /***********************************************************************************/ -// ConstitutiveLaw::StrainVectorType& LinearPlaneStrain::GetValue(const Variable& rThisVariable, ConstitutiveLaw::StrainVectorType& rValue) -// { -// return rValue; -// } - -/***********************************************************************************/ -/***********************************************************************************/ - -// ConstitutiveLaw::StressVectorType& LinearPlaneStrain::GetValue(const Variable& rThisVariable, ConstitutiveLaw::StressVectorType& rValue) -// { -// return rValue; -// } - -/***********************************************************************************/ -/***********************************************************************************/ - double& LinearPlaneStrain::GetValue(const Variable& rThisVariable, double& rValue) { return rValue; @@ -145,24 +113,9 @@ void LinearPlaneStrain::GetLawFeatures(Features& rFeatures) /***********************************************************************************/ /***********************************************************************************/ -void LinearPlaneStrain::CalculateElasticMatrix(VoigtSizeMatrixType& C, ConstitutiveLaw::Parameters& rValues) +void LinearPlaneStrain::CalculateElasticMatrix(VoigtSizeMatrixType& rC, ConstitutiveLaw::Parameters& rValues) { - const Properties& r_material_properties = rValues.GetMaterialProperties(); - const double E = r_material_properties[YOUNG_MODULUS]; - const double NU = r_material_properties[POISSON_RATIO]; - - this->CheckClearElasticMatrix(C); - - const double c0 = E / ((1.00 + NU)*(1 - 2 * NU)); - const double c1 = (1.00 - NU)*c0; - const double c2 = c0 * NU; - const double c3 = (0.5 - NU)*c0; - - C(0, 0) = c1; - C(0, 1) = c2; - C(1, 0) = c2; - C(1, 1) = c1; - C(2, 2) = c3; + ConstitutiveLawUtilities<3>::CalculateElasticMatrixPlaneStrain(rC, rValues); } /***********************************************************************************/ diff --git a/applications/StructuralMechanicsApplication/custom_constitutive/linear_plane_stress.cpp b/applications/StructuralMechanicsApplication/custom_constitutive/linear_plane_stress.cpp index a99e3bdd78a4..6ff0527e2f7a 100644 --- a/applications/StructuralMechanicsApplication/custom_constitutive/linear_plane_stress.cpp +++ b/applications/StructuralMechanicsApplication/custom_constitutive/linear_plane_stress.cpp @@ -15,7 +15,7 @@ // Project includes #include "custom_constitutive/linear_plane_stress.h" - +#include "custom_utilities/constitutive_law_utilities.h" #include "structural_mechanics_application_variables.h" namespace Kratos @@ -89,23 +89,9 @@ void LinearPlaneStress::GetLawFeatures(Features& rFeatures) //************************************************************************************ //************************************************************************************ -void LinearPlaneStress::CalculateElasticMatrix(VoigtSizeMatrixType& C, ConstitutiveLaw::Parameters& rValues) +void LinearPlaneStress::CalculateElasticMatrix(VoigtSizeMatrixType& rC, ConstitutiveLaw::Parameters& rValues) { - const Properties& r_material_properties = rValues.GetMaterialProperties(); - const double E = r_material_properties[YOUNG_MODULUS]; - const double NU = r_material_properties[POISSON_RATIO]; - - this->CheckClearElasticMatrix(C); - - const double c1 = E / (1.00 - NU * NU); - const double c2 = c1 * NU; - const double c3 = 0.5*E / (1 + NU); - - C(0, 0) = c1; - C(0, 1) = c2; - C(1, 0) = c2; - C(1, 1) = c1; - C(2, 2) = c3; + ConstitutiveLawUtilities<3>::CalculateElasticMatrixPlaneStress(rC, rValues); } //************************************************************************************ diff --git a/applications/StructuralMechanicsApplication/custom_elements/axisym_small_displacement.cpp b/applications/StructuralMechanicsApplication/custom_elements/axisym_small_displacement.cpp index 3cf415ffbc7f..3ad5ab681d1e 100644 --- a/applications/StructuralMechanicsApplication/custom_elements/axisym_small_displacement.cpp +++ b/applications/StructuralMechanicsApplication/custom_elements/axisym_small_displacement.cpp @@ -121,13 +121,8 @@ void AxisymSmallDisplacement::ComputeEquivalentF( { rF(0,0) = 1.0 + rStrainVector[0]; rF(0,1) = 0.5 * rStrainVector[3]; - rF(0,2) = 0.0; rF(1,0) = 0.5 * rStrainVector[3]; rF(1,1) = 1.0 + rStrainVector[1]; - rF(1,2) = 0.0; - rF(2,0) = 0.0; - rF(2,1) = 0.0; - rF(2,2) = 1.0 + rStrainVector[2]; } //************************************************************************************ diff --git a/applications/StructuralMechanicsApplication/custom_elements/base_shell_element.cpp b/applications/StructuralMechanicsApplication/custom_elements/base_shell_element.cpp index ce65cabf019e..306fd6c478da 100644 --- a/applications/StructuralMechanicsApplication/custom_elements/base_shell_element.cpp +++ b/applications/StructuralMechanicsApplication/custom_elements/base_shell_element.cpp @@ -514,7 +514,7 @@ void BaseShellElement::CalculateOnIntegrationPoints( { if (rVariable == CONSTITUTIVE_LAW) { rValues.clear(); - for (auto p_sec : mSections) { + for (const auto& p_sec : mSections) { auto vec_integration_points = p_sec->GetConstitutiveLawsVector(GetProperties()); rValues.reserve(rValues.size() + vec_integration_points.size()); for (std::size_t i=0; iHas( rVariable)) { for ( IndexType point_number = 0; point_number Has( rVariable)) { GetValueOnConstitutiveLaw(rVariable, rOutput); @@ -779,9 +779,6 @@ void BaseSolidElement::CalculateOnIntegrationPoints( ConstitutiveLawOptions.Set(ConstitutiveLaw::COMPUTE_STRESS, false); ConstitutiveLawOptions.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, false); - // Reading integration points - //const GeometryType::IntegrationPointsArrayType& integration_points = this->IntegrationPoints(this->GetIntegrationMethod()); - // If strain has to be computed inside of the constitutive law with PK2 Values.SetStrainVector(this_constitutive_variables.StrainVector); //this is the input parameter @@ -815,9 +812,6 @@ void BaseSolidElement::CalculateOnIntegrationPoints( ConstitutiveLawOptions.Set(ConstitutiveLaw::COMPUTE_STRESS, false); ConstitutiveLawOptions.Set(ConstitutiveLaw::COMPUTE_CONSTITUTIVE_TENSOR, true); - // Reading integration points - //const GeometryType::IntegrationPointsArrayType& integration_points = this->IntegrationPoints( ); - //Calculate Cauchy Stresses from the FE solution std::vector sigma_FE_solution(number_of_nodes); const Variable& r_variable_stress = CAUCHY_STRESS_VECTOR; @@ -909,9 +903,17 @@ void BaseSolidElement::CalculateOnIntegrationPoints( CalculateConstitutiveVariables(this_kinematic_variables, this_constitutive_variables, Values, point_number, integration_points, GetStressMeasure()); // Compute VM stress - if (dimension == 2 ) { - rOutput[point_number] = ConstitutiveLawUtilities<3>::CalculateVonMisesEquivalentStress(this_constitutive_variables.StressVector); - } else { + if (dimension == 2) { + if (strain_size == 3) { + rOutput[point_number] = ConstitutiveLawUtilities<3>::CalculateVonMisesEquivalentStress(this_constitutive_variables.StressVector); + } else { // Axysimmetric 4 + Vector aux_stress(6); + noalias(aux_stress) = ZeroVector(6); + for (IndexType i = 0; i < 4; ++i) + aux_stress(i) = this_constitutive_variables.StressVector(i); + rOutput[point_number] = ConstitutiveLawUtilities<6>::CalculateVonMisesEquivalentStress(aux_stress); + } + } else { // 3D rOutput[point_number] = ConstitutiveLawUtilities<6>::CalculateVonMisesEquivalentStress(this_constitutive_variables.StressVector); } } @@ -950,17 +952,17 @@ void BaseSolidElement::CalculateOnIntegrationPoints( Point global_point; GetGeometry().GlobalCoordinates(global_point, integration_points[point_number]); - rOutput[point_number] = global_point.Coordinates(); + noalias(rOutput[point_number]) = global_point.Coordinates(); } } else if (rVariable == LOCAL_AXIS_1 || rVariable == LOCAL_AXIS_2 || rVariable == LOCAL_AXIS_3) { if (this->Has(rVariable)) { for (IndexType point_number = 0; point_number < number_of_integration_points; ++point_number) - rOutput[point_number] = this->GetValue(rVariable); + noalias(rOutput[point_number]) = this->GetValue(rVariable); } else if (rVariable == LOCAL_AXIS_3) { const array_1d r_local_axis_1 = this->GetValue(LOCAL_AXIS_1); const array_1d local_axis_2 = this->GetValue(LOCAL_AXIS_2); for (IndexType point_number = 0; point_number < number_of_integration_points; ++point_number) - rOutput[point_number] = MathUtils::CrossProduct(r_local_axis_1, local_axis_2); + noalias(rOutput[point_number]) = MathUtils::CrossProduct(r_local_axis_1, local_axis_2); } } else { CalculateOnConstitutiveLaw(rVariable, rOutput, rCurrentProcessInfo); @@ -1052,10 +1054,19 @@ void BaseSolidElement::CalculateOnIntegrationPoints( CalculateConstitutiveVariables(this_kinematic_variables, this_constitutive_variables, Values, point_number, integration_points,ConstitutiveLaw::StressMeasure_PK2); } - if ( rOutput[point_number].size() != strain_size ) - rOutput[point_number].resize( strain_size, false ); + if (strain_size == 4) { // Axysimmetric + if (rOutput[point_number].size() != 6) + rOutput[point_number].resize(6, false); + noalias(rOutput[point_number]) = ZeroVector(6); + for (IndexType i = 0; i < 4; ++i) + rOutput[point_number](i) = this_constitutive_variables.StressVector(i); + } else { + if (rOutput[point_number].size() != strain_size) + rOutput[point_number].resize(strain_size, false); + + noalias(rOutput[point_number]) = this_constitutive_variables.StressVector; + } - rOutput[point_number] = this_constitutive_variables.StressVector; } } else if( rVariable == GREEN_LAGRANGE_STRAIN_VECTOR || rVariable == ALMANSI_STRAIN_VECTOR ) { // Create and initialize element variables: @@ -1087,14 +1098,52 @@ void BaseSolidElement::CalculateOnIntegrationPoints( // Compute material reponse CalculateConstitutiveVariables(this_kinematic_variables, this_constitutive_variables, Values, point_number, integration_points, this_stress_measure); - if ( rOutput[point_number].size() != strain_size) - rOutput[point_number].resize( strain_size, false ); + if (strain_size == 4) { // Axysimmetric + if (rOutput[point_number].size() != 6) + rOutput[point_number].resize(6, false); + noalias(rOutput[point_number]) = ZeroVector(6); + for (IndexType i = 0; i < 4; ++i) + rOutput[point_number](i) = this_constitutive_variables.StrainVector(i); + } else { + if (rOutput[point_number].size() != strain_size) + rOutput[point_number].resize(strain_size, false); + + noalias(rOutput[point_number]) = this_constitutive_variables.StrainVector; + } + } + } else if (rVariable == INITIAL_STRESS_VECTOR) { + const SizeType strain_size = mConstitutiveLawVector[0]->GetStrainSize(); + for ( IndexType point_number = 0; point_number < number_of_integration_points; ++point_number ) { + if (mConstitutiveLawVector[point_number]->HasInitialState()) { + const Vector& r_initial_stress = mConstitutiveLawVector[point_number]->GetInitialState().GetInitialStressVector(); + + if ( rOutput[point_number].size() != strain_size) + rOutput[point_number].resize( strain_size, false ); + + noalias(rOutput[point_number]) = r_initial_stress; + } else { + noalias(rOutput[point_number]) = ZeroVector(strain_size); + } + } + } else if (rVariable == INITIAL_STRAIN_VECTOR) { + const SizeType strain_size = mConstitutiveLawVector[0]->GetStrainSize(); + for ( IndexType point_number = 0; point_number < number_of_integration_points; ++point_number ) { + if (mConstitutiveLawVector[point_number]->HasInitialState()) { + const Vector& r_initial_strain = mConstitutiveLawVector[point_number]->GetInitialState().GetInitialStrainVector(); + + if ( rOutput[point_number].size() != strain_size) + rOutput[point_number].resize( strain_size, false ); - rOutput[point_number] = this_constitutive_variables.StrainVector; + noalias(rOutput[point_number]) = r_initial_strain; + } else { + noalias(rOutput[point_number]) = ZeroVector(strain_size); + } } } else { CalculateOnConstitutiveLaw(rVariable, rOutput, rCurrentProcessInfo); } + + } } @@ -1129,7 +1178,7 @@ void BaseSolidElement::CalculateOnIntegrationPoints( if ( rOutput[point_number].size2() != dimension ) rOutput[point_number].resize( dimension, dimension, false ); - rOutput[point_number] = MathUtils::StressVectorToTensor(stress_vector[point_number]); + noalias(rOutput[point_number]) = MathUtils::StressVectorToTensor(stress_vector[point_number]); } } else if ( rVariable == GREEN_LAGRANGE_STRAIN_TENSOR || rVariable == ALMANSI_STRAIN_TENSOR) { @@ -1144,7 +1193,7 @@ void BaseSolidElement::CalculateOnIntegrationPoints( if ( rOutput[point_number].size2() != dimension ) rOutput[point_number].resize( dimension, dimension, false ); - rOutput[point_number] = MathUtils::StrainVectorToTensor(strain_vector[point_number]); + noalias(rOutput[point_number]) = MathUtils::StrainVectorToTensor(strain_vector[point_number]); } } else if ( rVariable == CONSTITUTIVE_MATRIX ) { // Create and initialize element variables: @@ -1177,7 +1226,7 @@ void BaseSolidElement::CalculateOnIntegrationPoints( if( rOutput[point_number].size2() != this_constitutive_variables.D.size2() ) rOutput[point_number].resize( this_constitutive_variables.D.size1() , this_constitutive_variables.D.size2() , false ); - rOutput[point_number] = this_constitutive_variables.D; + noalias(rOutput[point_number]) = this_constitutive_variables.D; } } else if ( rVariable == DEFORMATION_GRADIENT ) { // VARIABLE SET FOR TRANSFER PURPOUSES // Create and initialize element variables: @@ -1198,7 +1247,7 @@ void BaseSolidElement::CalculateOnIntegrationPoints( if( rOutput[point_number].size2() != this_kinematic_variables.F.size2() ) rOutput[point_number].resize( this_kinematic_variables.F.size1() , this_kinematic_variables.F.size2() , false ); - rOutput[point_number] = this_kinematic_variables.F; + noalias(rOutput[point_number]) = this_kinematic_variables.F; } } else { CalculateOnConstitutiveLaw(rVariable, rOutput, rCurrentProcessInfo); diff --git a/applications/StructuralMechanicsApplication/custom_elements/small_displacement.cpp b/applications/StructuralMechanicsApplication/custom_elements/small_displacement.cpp index 18cd3a8548da..b97b8541ba96 100644 --- a/applications/StructuralMechanicsApplication/custom_elements/small_displacement.cpp +++ b/applications/StructuralMechanicsApplication/custom_elements/small_displacement.cpp @@ -132,7 +132,7 @@ void SmallDisplacement::CalculateAll( if ( rRightHandSideVector.size() != mat_size ) rRightHandSideVector.resize( mat_size, false ); - rRightHandSideVector = ZeroVector( mat_size ); //resetting RHS + noalias(rRightHandSideVector) = ZeroVector( mat_size ); //resetting RHS } // Reading integration points and local gradients @@ -211,7 +211,8 @@ void SmallDisplacement::CalculateKinematicVariables( // Compute equivalent F GetValuesVector(rThisKinematicVariables.Displacements); - Vector strain_vector = prod(rThisKinematicVariables.B, rThisKinematicVariables.Displacements); + Vector strain_vector(mConstitutiveLawVector[0]->GetStrainSize()); + noalias(strain_vector) = prod(rThisKinematicVariables.B, rThisKinematicVariables.Displacements); ComputeEquivalentF(rThisKinematicVariables.F, strain_vector); rThisKinematicVariables.detF = MathUtils::Det(rThisKinematicVariables.F); } diff --git a/applications/StructuralMechanicsApplication/custom_elements/updated_lagrangian.cpp b/applications/StructuralMechanicsApplication/custom_elements/updated_lagrangian.cpp index b007be6a7435..4ecfb72bdede 100644 --- a/applications/StructuralMechanicsApplication/custom_elements/updated_lagrangian.cpp +++ b/applications/StructuralMechanicsApplication/custom_elements/updated_lagrangian.cpp @@ -230,7 +230,7 @@ void UpdatedLagrangian::CalculateAll( if ( rRightHandSideVector.size() != mat_size ) rRightHandSideVector.resize( mat_size, false ); - rRightHandSideVector = ZeroVector( mat_size ); //resetting RHS + noalias(rRightHandSideVector) = ZeroVector( mat_size ); //resetting RHS } // Reading integration points diff --git a/applications/StructuralMechanicsApplication/custom_processes/postprocess_eigenvalues_process.cpp b/applications/StructuralMechanicsApplication/custom_processes/postprocess_eigenvalues_process.cpp index 3888f87fdab9..850e897f5d6d 100644 --- a/applications/StructuralMechanicsApplication/custom_processes/postprocess_eigenvalues_process.cpp +++ b/applications/StructuralMechanicsApplication/custom_processes/postprocess_eigenvalues_process.cpp @@ -17,6 +17,7 @@ // External includes // Project includes +#include "includes/kratos_filesystem.h" #include "utilities/constraint_utilities.h" #include "custom_processes/postprocess_eigenvalues_process.h" #include "structural_mechanics_application_variables.h" @@ -163,6 +164,11 @@ PostprocessEigenvaluesProcess::PostprocessEigenvaluesProcess(ModelPart& rModelPa ); mOutputParameters.RecursivelyValidateAndAssignDefaults(default_parameters); + + const std::string folder_name = mOutputParameters["folder_name"].GetString(); + if (!Kratos::filesystem::exists(folder_name)) { + Kratos::filesystem::create_directories(folder_name); + } } void PostprocessEigenvaluesProcess::ExecuteFinalizeSolutionStep() diff --git a/applications/StructuralMechanicsApplication/custom_processes/set_automated_initial_variable_process.cpp b/applications/StructuralMechanicsApplication/custom_processes/set_automated_initial_variable_process.cpp new file mode 100644 index 000000000000..c9a07f51b8a6 --- /dev/null +++ b/applications/StructuralMechanicsApplication/custom_processes/set_automated_initial_variable_process.cpp @@ -0,0 +1,117 @@ +// KRATOS ___| | | | +// \___ \ __| __| | | __| __| | | __| _` | | +// | | | | | ( | | | | ( | | +// _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Luis Antonio Goncalves Junior +// Alejandro Cornejo +// + +// System includes + +// External includes + +// Project includes +#include "includes/model_part.h" +#include "custom_processes/set_automated_initial_variable_process.h" +#include "utilities/parallel_utilities.h" +#include "structural_mechanics_application_variables.h" + +namespace Kratos +{ +SetAutomatedInitialVariableProcess::SetAutomatedInitialVariableProcess( + ModelPart& rThisModelPart, + Parameters ThisParameters + ):mrThisModelPart(rThisModelPart), + mThisParameters(ThisParameters) +{ + mThisParameters.ValidateAndAssignDefaults(GetDefaultParameters()); +} + +/***********************************************************************************/ +/***********************************************************************************/ + +void SetAutomatedInitialVariableProcess::ExecuteInitialize() +{ + + KRATOS_TRY + + const array_1d hole_generatrix_axis = mThisParameters["hole_generatrix_axis"].GetVector(); + KRATOS_ERROR_IF(MathUtils::Norm3(hole_generatrix_axis) < machine_tolerance) << "The hole generatrix axis has norm zero" << std::endl; + + const array_1d hole_generatrix_point = mThisParameters["hole_generatrix_point"].GetVector(); + + array_1d normalized_generatrix_vector; + normalized_generatrix_vector[0] = (hole_generatrix_axis[0] * hole_generatrix_axis[0]) / std::sqrt(hole_generatrix_axis[0] * hole_generatrix_axis[0] + hole_generatrix_axis[1] * hole_generatrix_axis[1] + hole_generatrix_axis[2] * hole_generatrix_axis[2]); + normalized_generatrix_vector[1] = (hole_generatrix_axis[1] * hole_generatrix_axis[1]) / std::sqrt(hole_generatrix_axis[0] * hole_generatrix_axis[0] + hole_generatrix_axis[1] * hole_generatrix_axis[1] + hole_generatrix_axis[2] * hole_generatrix_axis[2]); + normalized_generatrix_vector[2] = (hole_generatrix_axis[2] * hole_generatrix_axis[2]) / std::sqrt(hole_generatrix_axis[0] * hole_generatrix_axis[0] + hole_generatrix_axis[1] * hole_generatrix_axis[1] + hole_generatrix_axis[2] * hole_generatrix_axis[2]); + + const double hole_radius_offset = mThisParameters["hole_radius_offset"].GetDouble(); + + Vector table_id_vector = mThisParameters["table_id_vector"].GetVector(); + const Variable& r_variable = KratosComponents>::Get(mThisParameters["variable_name"].GetString()); + + block_for_each(mrThisModelPart.Elements(), [&](auto& rElement) { + + const array_1d& r_element_centroid = rElement.GetGeometry().Center(); + + array_1d relative_position_vector; + relative_position_vector = r_element_centroid - hole_generatrix_point; + + double vector_scaler = relative_position_vector[0] * normalized_generatrix_vector[0] + relative_position_vector[1] * normalized_generatrix_vector[1] + relative_position_vector[2] * normalized_generatrix_vector[2]; + + const array_1d intersection_point = hole_generatrix_point + vector_scaler * normalized_generatrix_vector; + + const array_1d radial_position_vector = r_element_centroid - intersection_point; + + double centroid_relative_distance = std::sqrt(radial_position_vector[0] * radial_position_vector[0] + radial_position_vector[1] * radial_position_vector[1] + radial_position_vector[2] * radial_position_vector[2]) - hole_radius_offset; + + if (centroid_relative_distance < 0.0){ + if (std::abs(centroid_relative_distance) <= tolerance) { + centroid_relative_distance = 0.0; + } + else { + KRATOS_ERROR << "The relative centroid distance may not be negative. Check the hole radius offset and the thickness of element " << rElement.Id() << std::endl; + } + } + + array_1d initial_variable_vector; + noalias(initial_variable_vector) = ZeroVector(6); + + int table_id; + int varible_id; + + for (IndexType count = 0; count < table_id_vector.size(); ++count) { + table_id = table_id_vector[count]; + varible_id = table_id % 10; + initial_variable_vector[varible_id] = mrThisModelPart.GetTable(table_id).GetValue(centroid_relative_distance); + } + + rElement.SetValue(r_variable, initial_variable_vector); + + }); + + KRATOS_CATCH("") +} + +/***********************************************************************************/ +/***********************************************************************************/ + +const Parameters SetAutomatedInitialVariableProcess::GetDefaultParameters() const +{ + const Parameters default_parameters = Parameters(R"( + { + "variable_name" : "SPECIFY_VARIABLE_NAME", + "hole_generatrix_axis" : [0.0,0.0,1.0], + "hole_generatrix_point" : [0.0,0.0,0.0], + "hole_radius_offset" : 0.0, + "table_id_vector" : [10,11,12,13,14,15] + })"); + + return default_parameters; +} + +} // namespace Kratos. \ No newline at end of file diff --git a/applications/StructuralMechanicsApplication/custom_processes/set_automated_initial_variable_process.h b/applications/StructuralMechanicsApplication/custom_processes/set_automated_initial_variable_process.h new file mode 100644 index 000000000000..33c418aeb4cb --- /dev/null +++ b/applications/StructuralMechanicsApplication/custom_processes/set_automated_initial_variable_process.h @@ -0,0 +1,116 @@ +// KRATOS ___| | | | +// \___ \ __| __| | | __| __| | | __| _` | | +// | | | | | ( | | | | ( | | +// _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Luis Antonio Goncalves Junior +// Alejandro Cornejo +// + +#pragma once + +// System includes + +// External includes + +// Project includes +#include "processes/process.h" + +namespace Kratos +{ + +/** + * @class SetAutomatedInitialVariableProcess + * @ingroup StructuralMechanicsApplication + * @brief This class automotes the creation of the variables INITIAL_STRAIN_VECTOR and INITIAL_STRESS_VECTOR using tables imported from csv files + * @author Luis Antonio Goncalves Junior +*/ + +class KRATOS_API(STRUCTURAL_MECHANICS_APPLICATION) SetAutomatedInitialVariableProcess + : public Process +{ + +public: + + static constexpr double tolerance = 1.0e-6; + static constexpr double machine_tolerance = std::numeric_limits::epsilon(); + + KRATOS_CLASS_POINTER_DEFINITION(SetAutomatedInitialVariableProcess); + + + /// Constructor + SetAutomatedInitialVariableProcess( + ModelPart& rThisModelPart, + Parameters ThisParameters = Parameters(R"({})") + ); + + + /// Destructor + ~SetAutomatedInitialVariableProcess() override = default; + + /** + * @brief This function is designed for being called at the beginning of the computations + * right after reading the model and the groups + */ + void ExecuteInitialize() override; + + /** + * @brief This method provides the defaults parameters to avoid conflicts between the different constructors + */ + const Parameters GetDefaultParameters() const override; + + /// Turn back information as a string. + std::string Info() const override + { + return "SetAutomatedInitialVariableProcess"; + } + + /// Print information about this object. + void PrintInfo(std::ostream& rOStream) const override + { + rOStream << "SetAutomatedInitialVariableProcess"; + } + + /// Print object's data. + void PrintData(std::ostream& rOStream) const override + { + } + + +protected: + + /// Member Variables + + ModelPart& mrThisModelPart; + Parameters mThisParameters; + +private: + + /// Assignment operator. + SetAutomatedInitialVariableProcess& operator=(SetAutomatedInitialVariableProcess const& rOther); + + /// Copy constructor. + //SetAutomatedInitialVariableProcess(SetAutomatedInitialVariableProcess const& rOther); + +}; // Class SetAutomatedInitialVariableProcess + +/// input stream function +inline std::istream& operator >> (std::istream& rIStream, + SetAutomatedInitialVariableProcess& rThis); + +/// output stream function +inline std::ostream& operator << (std::ostream& rOStream, + const SetAutomatedInitialVariableProcess& rThis) +{ + rThis.PrintInfo(rOStream); + rOStream << std::endl; + rThis.PrintData(rOStream); + + return rOStream; +} + +} // namespace Kratos. + diff --git a/applications/StructuralMechanicsApplication/custom_processes/spr_error_process.cpp b/applications/StructuralMechanicsApplication/custom_processes/spr_error_process.cpp index e71cc17497ea..ef074ec961fb 100644 --- a/applications/StructuralMechanicsApplication/custom_processes/spr_error_process.cpp +++ b/applications/StructuralMechanicsApplication/custom_processes/spr_error_process.cpp @@ -237,7 +237,7 @@ void SPRErrorProcess::CalculatePatch( p_k(0,0) = 1.0; p_k(0,1) = coordinates_vector[0][0] - itPatchNode->X(); p_k(0,2) = coordinates_vector[0][1] - itPatchNode->Y(); - if(TDim == 3) + if constexpr (TDim == 3) p_k(0,3)=coordinates_vector[0][2] - itPatchNode->Z(); // Finally we add the contributiosn to our local system (A, b) @@ -270,7 +270,7 @@ void SPRErrorProcess::CalculatePatch( } else { p_k(0,1) = itNode->X() - itPatchNode->X(); p_k(0,2) = itNode->Y() - itPatchNode->Y(); - if(TDim ==3) + if constexpr (TDim ==3) p_k(0,3) = itNode->Z() - itPatchNode->Z(); const BoundedMatrix sigma = prod(p_k,coeff); noalias(rSigmaRecovered) = row(sigma, 0); diff --git a/applications/StructuralMechanicsApplication/custom_python/add_custom_processes_to_python.cpp b/applications/StructuralMechanicsApplication/custom_python/add_custom_processes_to_python.cpp index dfb17bb857ba..d0d78297955d 100644 --- a/applications/StructuralMechanicsApplication/custom_python/add_custom_processes_to_python.cpp +++ b/applications/StructuralMechanicsApplication/custom_python/add_custom_processes_to_python.cpp @@ -33,6 +33,7 @@ #include "custom_processes/set_cartesian_local_axes_process.h" #include "custom_processes/set_cylindrical_local_axes_process.h" #include "custom_processes/set_spherical_local_axes_process.h" +#include "custom_processes/set_automated_initial_variable_process.h" namespace Kratos { namespace Python { @@ -108,6 +109,9 @@ void AddCustomProcessesToPython(pybind11::module& m) py::class_(m,"SetSphericalLocalAxesProcess") .def(py::init()); + + py::class_(m,"SetAutomatedInitialVariableProcess") + .def(py::init()); } } // namespace Python. diff --git a/applications/StructuralMechanicsApplication/custom_response_functions/adjoint_processes/replace_multiple_elements_and_conditions_process.cpp b/applications/StructuralMechanicsApplication/custom_response_functions/adjoint_processes/replace_multiple_elements_and_conditions_process.cpp index 7ef30b8042c1..b8e94d9e31dd 100644 --- a/applications/StructuralMechanicsApplication/custom_response_functions/adjoint_processes/replace_multiple_elements_and_conditions_process.cpp +++ b/applications/StructuralMechanicsApplication/custom_response_functions/adjoint_processes/replace_multiple_elements_and_conditions_process.cpp @@ -40,7 +40,7 @@ void ReplaceEntities(TEntityContainer& rEntityContainer, // create set with entities that should be ignored std::set ignore_entities; - for(auto it : IgnoreEntities){ + for(const auto& it : IgnoreEntities){ ignore_entities.insert( it.GetString() ); } diff --git a/applications/StructuralMechanicsApplication/custom_response_functions/response_utilities/adjoint_nodal_displacement_response_function.cpp b/applications/StructuralMechanicsApplication/custom_response_functions/response_utilities/adjoint_nodal_displacement_response_function.cpp index a8126457cf57..cfd18d06b88e 100644 --- a/applications/StructuralMechanicsApplication/custom_response_functions/response_utilities/adjoint_nodal_displacement_response_function.cpp +++ b/applications/StructuralMechanicsApplication/custom_response_functions/response_utilities/adjoint_nodal_displacement_response_function.cpp @@ -200,7 +200,7 @@ namespace Kratos ModelPart& response_part = mrModelPart.GetSubModelPart(mResponsePartName); GenericFindElementalNeighboursProcess neighbour_elements_finder(mrModelPart); - neighbour_elements_finder.ExecuteInitialize(); + neighbour_elements_finder.Execute(); for(auto& node_i : response_part.Nodes()) { auto const& r_neighbours = node_i.GetValue(NEIGHBOUR_ELEMENTS); diff --git a/applications/StructuralMechanicsApplication/custom_strategies/custom_convergencecriterias/residual_displacement_and_other_dof_criteria.h b/applications/StructuralMechanicsApplication/custom_strategies/custom_convergencecriterias/residual_displacement_and_other_dof_criteria.h index a1319fa80272..8c2eb826127a 100644 --- a/applications/StructuralMechanicsApplication/custom_strategies/custom_convergencecriterias/residual_displacement_and_other_dof_criteria.h +++ b/applications/StructuralMechanicsApplication/custom_strategies/custom_convergencecriterias/residual_displacement_and_other_dof_criteria.h @@ -92,7 +92,7 @@ class ResidualDisplacementAndOtherDoFCriteria ResidualDisplacementAndOtherDoFCriteria( TDataType RatioTolerance, TDataType AbsoluteTolerance, - const std::string OtherDoFName = "ROTATION" + const std::string& OtherDoFName = "ROTATION" ) : ConvergenceCriteria< TSparseSpace, TDenseSpace >(), mOtherDoFName(OtherDoFName), diff --git a/applications/StructuralMechanicsApplication/custom_utilities/constitutive_law_utilities.cpp b/applications/StructuralMechanicsApplication/custom_utilities/constitutive_law_utilities.cpp index e97252c61e0d..5c761f2a6ec4 100644 --- a/applications/StructuralMechanicsApplication/custom_utilities/constitutive_law_utilities.cpp +++ b/applications/StructuralMechanicsApplication/custom_utilities/constitutive_law_utilities.cpp @@ -294,6 +294,87 @@ void ConstitutiveLawUtilities<3>::CalculateRotationOperatorVoigt( rVoigtOperator(2, 2) = std::pow(c, 2) - std::pow(s, 2); } +/***********************************************************************************/ +/***********************************************************************************/ +template +void ConstitutiveLawUtilities::CalculateElasticMatrixPlaneStress(MatrixType& rC, ConstitutiveLaw::Parameters& rValues) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + const double E = r_material_properties[YOUNG_MODULUS]; + const double NU = r_material_properties[POISSON_RATIO]; + + if (rC.size1() != VoigtSize) + rC.resize(VoigtSize, VoigtSize, false); + noalias(rC) = ZeroMatrix(VoigtSize, VoigtSize); + + const double c1 = E / (1.0 - NU * NU); + const double c2 = c1 * NU; + const double c3 = 0.5 * E / (1.0 + NU); + + rC(0, 0) = c1; + rC(0, 1) = c2; + rC(1, 0) = c2; + rC(1, 1) = c1; + rC(2, 2) = c3; +} + +/***********************************************************************************/ +/***********************************************************************************/ +template +void ConstitutiveLawUtilities::CalculateElasticMatrixPlaneStrain(MatrixType& rC, ConstitutiveLaw::Parameters& rValues) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + const double E = r_material_properties[YOUNG_MODULUS]; + const double NU = r_material_properties[POISSON_RATIO]; + + if (rC.size1() != VoigtSize) + rC.resize(VoigtSize, VoigtSize, false); + noalias(rC) = ZeroMatrix(VoigtSize, VoigtSize); + + const double c0 = E / ((1.0 + NU) * (1.0 - 2.0 * NU)); + const double c1 = (1.0 - NU) * c0; + const double c2 = c0 * NU; + const double c3 = (0.5 - NU) * c0; + + rC(0, 0) = c1; + rC(0, 1) = c2; + rC(1, 0) = c2; + rC(1, 1) = c1; + rC(2, 2) = c3; +} + +/***********************************************************************************/ +/***********************************************************************************/ +template +void ConstitutiveLawUtilities::CalculateElasticMatrix(MatrixType& rC, ConstitutiveLaw::Parameters& rValues) +{ + const Properties& r_material_properties = rValues.GetMaterialProperties(); + const double E = r_material_properties[YOUNG_MODULUS]; + const double NU = r_material_properties[POISSON_RATIO]; + + if (rC.size1() != VoigtSize) + rC.resize(VoigtSize, VoigtSize, false); + noalias(rC) = ZeroMatrix(VoigtSize, VoigtSize); + + const double c1 = E / ((1.0 + NU) * (1.0 - 2.0 * NU)); + const double c2 = c1 * (1.0 - NU); + const double c3 = c1 * NU; + const double c4 = c1 * 0.5 * (1.0 - 2.0 * NU); + + rC(0, 0) = c2; + rC(0, 1) = c3; + rC(0, 2) = c3; + rC(1, 0) = c3; + rC(1, 1) = c2; + rC(1, 2) = c3; + rC(2, 0) = c3; + rC(2, 1) = c3; + rC(2, 2) = c2; + rC(3, 3) = c4; + rC(4, 4) = c4; + rC(5, 5) = c4; +} + /***********************************************************************************/ /***********************************************************************************/ diff --git a/applications/StructuralMechanicsApplication/custom_utilities/constitutive_law_utilities.h b/applications/StructuralMechanicsApplication/custom_utilities/constitutive_law_utilities.h index 56314c94c1aa..20d698c88326 100644 --- a/applications/StructuralMechanicsApplication/custom_utilities/constitutive_law_utilities.h +++ b/applications/StructuralMechanicsApplication/custom_utilities/constitutive_law_utilities.h @@ -22,6 +22,7 @@ #include "includes/ublas_interface.h" #include "includes/node.h" #include "geometries/geometry.h" +#include "includes/constitutive_law.h" namespace Kratos { @@ -243,6 +244,15 @@ class KRATOS_API(STRUCTURAL_MECHANICS_APPLICATION) ConstitutiveLawUtilities } } + /** + * It calculates the constitutive matrix C in plane stress, strain or in 3D + * @param C: The constitutive matrix + * @param rValues Parameters of the constitutive law + */ + static void CalculateElasticMatrixPlaneStress(MatrixType &C, ConstitutiveLaw::Parameters &rValues); + static void CalculateElasticMatrixPlaneStrain(MatrixType &C, ConstitutiveLaw::Parameters &rValues); + static void CalculateElasticMatrix(MatrixType &C, ConstitutiveLaw::Parameters &rValues); + private: }; // class ConstitutiveLawUtilities diff --git a/applications/StructuralMechanicsApplication/custom_utilities/shell_cross_section.hpp b/applications/StructuralMechanicsApplication/custom_utilities/shell_cross_section.hpp index 71dfe513ec06..54a1b5a48807 100644 --- a/applications/StructuralMechanicsApplication/custom_utilities/shell_cross_section.hpp +++ b/applications/StructuralMechanicsApplication/custom_utilities/shell_cross_section.hpp @@ -223,11 +223,11 @@ class KRATOS_API(STRUCTURAL_MECHANICS_APPLICATION) ShellCrossSection : public Fl * sets the variable or the pointer of a specified variable: assigns the direction of the pointer for the mpvariables, only non const values can be modified */ - void Set(Flags ThisFlag) + void Set(const Flags ThisFlag) { mOptions.Set(ThisFlag); }; - void Reset(Flags ThisFlag) + void Reset(const Flags ThisFlag) { mOptions.Reset(ThisFlag); }; @@ -1411,4 +1411,4 @@ inline std::ostream& operator << (std::ostream& rOStream, ShellCrossSection& rTh } -#endif // SHELL_CROSS_SECTION_H_INCLUDED \ No newline at end of file +#endif // SHELL_CROSS_SECTION_H_INCLUDED diff --git a/applications/StructuralMechanicsApplication/custom_utilities/structural_mechanics_math_utilities.hpp b/applications/StructuralMechanicsApplication/custom_utilities/structural_mechanics_math_utilities.hpp index 557176eb95ae..488375ee42ef 100644 --- a/applications/StructuralMechanicsApplication/custom_utilities/structural_mechanics_math_utilities.hpp +++ b/applications/StructuralMechanicsApplication/custom_utilities/structural_mechanics_math_utilities.hpp @@ -320,7 +320,7 @@ class StructuralMechanicsMathUtilities */ static inline double CalculateRadius( - const Vector N, + const Vector& N, const GeometryType& Geom, const Configuration ThisConfiguration = Current ) diff --git a/applications/StructuralMechanicsApplication/python_scripts/postprocess_eigenvalues_process.py b/applications/StructuralMechanicsApplication/python_scripts/postprocess_eigenvalues_process.py index 7863c2bd546e..2a5152a47670 100755 --- a/applications/StructuralMechanicsApplication/python_scripts/postprocess_eigenvalues_process.py +++ b/applications/StructuralMechanicsApplication/python_scripts/postprocess_eigenvalues_process.py @@ -5,9 +5,6 @@ # Import applications import KratosMultiphysics.StructuralMechanicsApplication as KSM -# Other imports -import os - def Factory(settings, Model): if(type(settings) != KratosMultiphysics.Parameters): raise Exception("Expected input shall be a Parameters object, encapsulating a json string") @@ -23,8 +20,9 @@ def Factory(settings, Model): if process_settings["save_output_files_in_folder"].GetBool(): folder_name = process_settings["folder_name"].GetString() - kratos_utils.DeleteDirectoryIfExisting(folder_name) # make sure to remove old results - os.mkdir(folder_name) + # make sure to remove old results + kratos_utils.DeleteDirectoryIfExisting(folder_name) + # gets recreated in C++ if process_settings.Has("computing_model_part_name"): computing_model_part = Model[process_settings["computing_model_part_name"].GetString()] diff --git a/applications/StructuralMechanicsApplication/python_scripts/set_automated_initial_variable_process.py b/applications/StructuralMechanicsApplication/python_scripts/set_automated_initial_variable_process.py new file mode 100644 index 000000000000..7e0c3e8f7671 --- /dev/null +++ b/applications/StructuralMechanicsApplication/python_scripts/set_automated_initial_variable_process.py @@ -0,0 +1,102 @@ +# Importing the Kratos Library +from pathlib import Path +import KratosMultiphysics as KM +import KratosMultiphysics.StructuralMechanicsApplication as SMA +from KratosMultiphysics import Logger +from KratosMultiphysics.read_csv_table_utility import ReadCsvTableUtility + +def Factory(settings, Model): + if not isinstance(settings, KM.Parameters): + raise Exception("Expected input shall be a Parameters object, encapsulating a json string") + + """ + This process reads tables in csv format containing the strain/stress components as function of the spatial radial coordinate from the edge of a given hole. + Tables are defined by layers ortogonally to the radial direction (generatrix hole direction). Each layer of elements must be allocated in a modelpart. + Stress components provided by the tables (linear picewise tables) are interpolated according to each element centroid. + Interpolated components are transfered to the initial variable (INITIAL_STRAIN_VECTOR/INITIAL_STRESS_VECTOR). + A minimum of one table per layer must be provided to the process. + Missing stress component are considered to be zero in the INITIAL_STRAIN_VECTOR/INITIAL_STRESS_VECTOR variables. + Tables corresponding to out of range strain/stress components are neglect (e.g. Layer1_StresComp7, Layer2_StresComp8). + """ + + default_settings = KM.Parameters( + """{ + "help" : "This automates the application of initial strain/stress variables using csv tables", + "model_part_name" : "please_specify_model_part_name", + "variable_name" : "SPECIFY_VARIABLE_NAME", + "hole_generatrix_axis" : [0.0,0.0,1.0], + "hole_generatrix_point" : [0.0,0.0,0.0], + "hole_radius_offset" : 0.0, + "initial_variable_table" : { + "name" : "csv_table", + "filename" : "sample.csv", + "delimiter" : ",", + "skiprows" : 1, + "first_column_id" : 0, + "second_column_id" : 1, + "na_replace" : 0.0 + } + }""") + process_settings = settings["Parameters"] + process_settings.ValidateAndAssignDefaults(default_settings) + computing_model_part = Model[process_settings["model_part_name"].GetString()] + + default_table_id = KM.Parameters("""{ + "table_id": 0 + }""") + process_settings["initial_variable_table"].AddValue("table_id", default_table_id) + + file_path = Path(process_settings["initial_variable_table"]["filename"].GetString()) + layer_name = file_path.name.split("_")[0] + + layer_list = [file for file in file_path.parent.iterdir() if file.name.split("_")[0] == layer_name] + + if not layer_list: + ErrorMsg = f"Tables of {layer_name} not found" + raise RuntimeError(ErrorMsg) + else: + component_list = [] + table_id_list = [] + out_of_range_component_list = [] + for i in range (0, len(layer_list)): + component_number = int(layer_list[i].stem.split("_")[1][-1]) + if 0 < component_number < 7: + component_list.append(component_number) + table_id = int(layer_name[-1] + str(component_number - 1)) + table_id_list.append(table_id) + process_settings["initial_variable_table"]["filename"].SetString(layer_list[i].as_posix()) + process_settings["initial_variable_table"]["table_id"].SetInt(table_id) + ReadCsvTableUtility(process_settings["initial_variable_table"]).Read(computing_model_part) + else: + out_of_range_component_list.append(component_number) + + raw_variable_name = process_settings["variable_name"].GetString() + variable_name = raw_variable_name.split("_")[0] + " " + raw_variable_name.split("_")[1].split("_")[0] + + if len(out_of_range_component_list) != 0: + if len(out_of_range_component_list) == 1: + Logger.PrintWarning("SetAutomatedInitialVariableProcess:: ", f"{variable_name.capitalize()} component {out_of_range_component_list[0]} of {layer_name} is out of range. The corresponding table will be neglected") + else: + out_of_range_component_name = ", ".join(str(out_of_range_component) for (out_of_range_component) in out_of_range_component_list) + Logger.PrintWarning("SetAutomatedInitialVariableProcess:: ", f"{variable_name.capitalize()} components {out_of_range_component_name} of {layer_name} are out of range. Correspoding tables will be negleted") + + if len(component_list) < 6: + missing_component_list = list(set(range(1,7)).difference(component_list)) + if len(missing_component_list) == 1: + Logger.PrintWarning("SetAutomatedInitialVariableProcess:: ", f"Table correspoding to {variable_name.lower()} component {str(missing_component_list[0])} of {layer_name} not found. A zero entry will be added to the {raw_variable_name} variable") + else: + missing_component_name = ", ".join(str(missing_component) for (missing_component) in missing_component_list) + Logger.PrintWarning("SetAutomatedInitialVariableProcess:: ", f"Tables correspoding to {variable_name.lower()} components {missing_component_name} of {layer_name} not found. Zero entries will be added to the {raw_variable_name} variable") + else: + Logger.PrintInfo("SetAutomatedInitialVariableProcess:: ", f"{variable_name.capitalize()} tables of {layer_name} were successfully imported") + + default_table_id_vector = KM.Parameters("""{ + "table_id_vector": [10,11,12,13,14,15] + }""") + process_settings.AddEmptyValue("table_id_vector").SetVector(table_id_list) + + process_settings.RemoveValue("help") + process_settings.RemoveValue("model_part_name") + process_settings.RemoveValue("initial_variable_table") + + return SMA.SetAutomatedInitialVariableProcess(computing_model_part, process_settings) \ No newline at end of file diff --git a/applications/StructuralMechanicsApplication/python_scripts/structural_mechanics_solver.py b/applications/StructuralMechanicsApplication/python_scripts/structural_mechanics_solver.py index 78014406e4a5..5344e6e1a3cd 100755 --- a/applications/StructuralMechanicsApplication/python_scripts/structural_mechanics_solver.py +++ b/applications/StructuralMechanicsApplication/python_scripts/structural_mechanics_solver.py @@ -57,7 +57,6 @@ def __init__(self, model, custom_settings): settings_have_use_block_builder = custom_settings.Has("block_builder") - if settings_have_use_block_builder: kratos_utilities.IssueDeprecationWarning('MechanicalSolver', 'Using "block_builder", please move it to "builder_and_solver_settings" as "use_block_builder"') if not custom_settings.Has("builder_and_solver_settings"): @@ -66,6 +65,17 @@ def __init__(self, model, custom_settings): custom_settings["builder_and_solver_settings"].AddValue("use_block_builder", custom_settings["block_builder"]) custom_settings.RemoveValue("block_builder") + settings_have_line_search = custom_settings.Has("line_search") + if settings_have_line_search: + kratos_utilities.IssueDeprecationWarning('MechanicalSolver', 'Using "line_search", please move it to "solving_strategy_settings" as "type"') + if custom_settings["line_search"].GetBool(): + if not custom_settings.Has("solving_strategy_settings"): + custom_settings.AddEmptyValue("solving_strategy_settings") + + custom_settings["solving_strategy_settings"].AddEmptyValue("type") + custom_settings["solving_strategy_settings"]["type"].SetString("line_search") + custom_settings.RemoveValue("line_search") + self._validate_settings_in_baseclass=True # To be removed eventually super().__init__(model, custom_settings) @@ -113,7 +123,6 @@ def GetDefaultParameters(cls): "pressure_dofs": false, "displacement_control": false, "reform_dofs_at_each_step": false, - "line_search": false, "use_old_stiffness_in_first_iteration": false, "compute_reactions": true, "solving_strategy_settings": { @@ -449,11 +458,6 @@ def _CreateSolutionStrategy(self): if analysis_type == "linear": mechanical_solution_strategy = self._create_linear_strategy() elif analysis_type == "non_linear": - # Deprecation checks - if self.settings.Has("line_search"): - kratos_utilities.IssueDeprecationWarning('MechanicalSolver', 'Using "line_search", please move it to "solving_strategy_settings" as "type"') - if self.settings["line_search"].GetBool(): - self.settings["solving_strategy_settings"]["type"].SetString("line_search") # Create strategy if self.settings["solving_strategy_settings"]["type"].GetString() == "newton_raphson": mechanical_solution_strategy = self._create_newton_raphson_strategy() @@ -525,4 +529,4 @@ def _create_arc_length_strategy(self): self._GetConvergenceCriterion(), self._GetBuilderAndSolver(), settings) - return solving_strategy \ No newline at end of file + return solving_strategy diff --git a/applications/StructuralMechanicsApplication/tests/InitialStateElasticity/initial_state_test_parameters.json b/applications/StructuralMechanicsApplication/tests/InitialStateElasticity/initial_state_test_parameters.json index 32d626f37bc3..6c12027fa544 100644 --- a/applications/StructuralMechanicsApplication/tests/InitialStateElasticity/initial_state_test_parameters.json +++ b/applications/StructuralMechanicsApplication/tests/InitialStateElasticity/initial_state_test_parameters.json @@ -63,7 +63,7 @@ "Parameters" : { "mesh_id" : 0, "model_part_name" : "Structure", - "dimension" : 2, + "dimension" : 3, "imposed_strain" : [0.1,0,0,0,0,0], "imposed_stress" : [0,0,0,0,0,10000], "imposed_deformation_gradient" : [[1,0,0],[0,1,0],[0,0,1]], diff --git a/applications/StructuralMechanicsApplication/tests/InitialStateElasticity/initial_strain_shell_Q4_thick_test_parameters.json b/applications/StructuralMechanicsApplication/tests/InitialStateElasticity/initial_strain_shell_Q4_thick_test_parameters.json index f716f7f7b26f..ccf9875d4bbd 100644 --- a/applications/StructuralMechanicsApplication/tests/InitialStateElasticity/initial_strain_shell_Q4_thick_test_parameters.json +++ b/applications/StructuralMechanicsApplication/tests/InitialStateElasticity/initial_strain_shell_Q4_thick_test_parameters.json @@ -88,7 +88,7 @@ "dimension" : 2, "imposed_strain" : [1.0e-4,-5.0e-5,-2e-4], "imposed_stress" : [0,0,0], - "imposed_deformation_gradient" : [[1,0,0],[0,1,0],[0,0,1]], + "imposed_deformation_gradient" : [[1,0],[0,1]], "interval" : [0.0,"End"] } }], diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test.mdpa b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test.mdpa new file mode 100644 index 000000000000..23c1da206a4f --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test.mdpa @@ -0,0 +1,487 @@ +Begin ModelPartData +// VARIABLE_NAME value +End ModelPartData + +Begin Properties 0 +End Properties +Begin Nodes + 1 0.0010000000 0.0010000000 0.0000000000 + 2 0.0006767767 0.0006767767 0.0000000000 + 3 0.0003535534 0.0003535534 0.0000000000 + 4 0.0010000000 0.0000000000 0.0000000000 + 5 0.0010000000 0.0010000000 0.0010000000 + 6 -0.0000000000 0.0010000000 0.0000000000 + 7 0.0007500000 0.0000000000 0.0000000000 + 8 -0.0000000000 0.0007500000 0.0000000000 + 9 0.0006767767 0.0006767767 0.0010000000 + 10 0.0005000000 0.0000000000 0.0000000000 + 11 -0.0000000000 0.0005000000 0.0000000000 + 12 0.0003535534 0.0003535534 0.0010000000 + 13 0.0010000000 0.0000000000 0.0010000000 + 14 -0.0000000000 0.0010000000 0.0010000000 + 15 0.0007500000 0.0000000000 0.0010000000 + 16 -0.0000000000 0.0007500000 0.0010000000 + 17 0.0005000000 0.0000000000 0.0010000000 + 18 -0.0003535534 0.0003535534 0.0000000000 + 19 -0.0000000000 0.0005000000 0.0010000000 + 20 0.0003535534 -0.0003535534 0.0000000000 + 21 -0.0006767767 0.0006767767 0.0000000000 + 22 0.0006767767 -0.0006767767 0.0000000000 + 23 -0.0005000000 0.0000000000 0.0000000000 + 24 -0.0000000000 -0.0005000000 0.0000000000 + 25 -0.0003535534 0.0003535534 0.0010000000 + 26 0.0003535534 -0.0003535534 0.0010000000 + 27 -0.0003535534 -0.0003535534 0.0000000000 + 28 -0.0006767767 0.0006767767 0.0010000000 + 29 0.0006767767 -0.0006767767 0.0010000000 + 30 -0.0010000000 0.0010000000 0.0000000000 + 31 0.0010000000 -0.0010000000 0.0000000000 + 32 0.0010000000 0.0010000000 0.0020000000 + 33 -0.0000000000 -0.0007500000 0.0000000000 + 34 -0.0007500000 0.0000000000 0.0000000000 + 35 0.0006767767 0.0006767767 0.0020000000 + 36 -0.0005000000 0.0000000000 0.0010000000 + 37 -0.0000000000 -0.0005000000 0.0010000000 + 38 -0.0003535534 -0.0003535534 0.0010000000 + 39 0.0003535534 0.0003535534 0.0020000000 + 40 -0.0000000000 -0.0010000000 0.0000000000 + 41 0.0010000000 0.0000000000 0.0020000000 + 42 -0.0010000000 0.0000000000 0.0000000000 + 43 -0.0010000000 0.0010000000 0.0010000000 + 44 0.0010000000 -0.0010000000 0.0010000000 + 45 -0.0000000000 0.0010000000 0.0020000000 + 46 0.0007500000 0.0000000000 0.0020000000 + 47 -0.0000000000 -0.0007500000 0.0010000000 + 48 -0.0007500000 0.0000000000 0.0010000000 + 49 -0.0000000000 0.0007500000 0.0020000000 + 50 0.0005000000 0.0000000000 0.0020000000 + 51 -0.0000000000 0.0005000000 0.0020000000 + 52 -0.0006767767 -0.0006767767 0.0000000000 + 53 -0.0000000000 -0.0010000000 0.0010000000 + 54 -0.0010000000 0.0000000000 0.0010000000 + 55 -0.0003535534 0.0003535534 0.0020000000 + 56 0.0003535534 -0.0003535534 0.0020000000 + 57 -0.0006767767 -0.0006767767 0.0010000000 + 58 -0.0006767767 0.0006767767 0.0020000000 + 59 0.0006767767 -0.0006767767 0.0020000000 + 60 -0.0005000000 0.0000000000 0.0020000000 + 61 -0.0000000000 -0.0005000000 0.0020000000 + 62 -0.0003535534 -0.0003535534 0.0020000000 + 63 -0.0010000000 -0.0010000000 0.0000000000 + 64 0.0010000000 -0.0010000000 0.0020000000 + 65 -0.0010000000 0.0010000000 0.0020000000 + 66 -0.0000000000 -0.0007500000 0.0020000000 + 67 -0.0007500000 0.0000000000 0.0020000000 + 68 -0.0010000000 -0.0010000000 0.0010000000 + 69 -0.0000000000 -0.0010000000 0.0020000000 + 70 -0.0010000000 0.0000000000 0.0020000000 + 71 -0.0006767767 -0.0006767767 0.0020000000 + 72 -0.0010000000 -0.0010000000 0.0020000000 +End Nodes + + +Begin Elements SmallDisplacementElement3D8N// GUI group identifier: Body + 1 0 28 43 30 21 48 54 42 34 + 2 0 25 28 21 18 36 48 34 23 + 3 0 58 65 43 28 67 70 54 48 + 4 0 55 58 28 25 60 67 48 36 + 5 0 9 15 17 12 2 7 10 3 + 6 0 5 13 15 9 1 4 7 2 + 7 0 35 46 50 39 9 15 17 12 + 8 0 32 41 46 35 5 13 15 9 + 9 0 9 5 1 2 16 14 6 8 + 10 0 12 9 2 3 19 16 8 11 + 11 0 35 32 5 9 49 45 14 16 + 12 0 39 35 9 12 51 49 16 19 + 13 0 29 47 37 26 22 33 24 20 + 14 0 44 53 47 29 31 40 33 22 + 15 0 59 66 61 56 29 47 37 26 + 16 0 64 69 66 59 44 53 47 29 + 17 0 28 16 19 25 21 8 11 18 + 18 0 43 14 16 28 30 6 8 21 + 19 0 58 49 51 55 28 16 19 25 + 20 0 65 45 49 58 43 14 16 28 + 21 0 57 68 63 52 47 53 40 33 + 22 0 38 57 52 27 37 47 33 24 + 23 0 71 72 68 57 66 69 53 47 + 24 0 62 71 57 38 61 66 47 37 + 25 0 29 44 31 22 15 13 4 7 + 26 0 26 29 22 20 17 15 7 10 + 27 0 59 64 44 29 46 41 13 15 + 28 0 56 59 29 26 50 46 15 17 + 29 0 57 48 36 38 52 34 23 27 + 30 0 68 54 48 57 63 42 34 52 + 31 0 71 67 60 62 57 48 36 38 + 32 0 72 70 67 71 68 54 48 57 +End Elements + +Begin SubModelPart GENERIC_Layer1 // Group Layer1 // Subtree GENERIC + Begin SubModelPartNodes + 5 + 9 + 12 + 13 + 14 + 15 + 16 + 17 + 19 + 25 + 26 + 28 + 29 + 32 + 35 + 36 + 37 + 38 + 39 + 41 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + End SubModelPartNodes + Begin SubModelPartElements + 3 + 4 + 7 + 8 + 11 + 12 + 15 + 16 + 19 + 20 + 23 + 24 + 27 + 28 + 31 + 32 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart +Begin SubModelPart GENERIC_Layer2 // Group Layer2 // Subtree GENERIC + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 33 + 34 + 36 + 37 + 38 + 40 + 42 + 43 + 44 + 47 + 48 + 52 + 53 + 54 + 57 + 63 + 68 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 5 + 6 + 9 + 10 + 13 + 14 + 17 + 18 + 21 + 22 + 25 + 26 + 29 + 30 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart +Begin SubModelPart Parts_Solid_Body // Group Body // Subtree Parts_Solid + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + End SubModelPartNodes + Begin SubModelPartElements + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart +Begin SubModelPart DISPLACEMENT_X_BC // Group X_BC // Subtree DISPLACEMENT + Begin SubModelPartNodes + 30 + 42 + 43 + 54 + 63 + 65 + 68 + 70 + 72 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart +Begin SubModelPart DISPLACEMENT_Y_BC // Group Y_BC // Subtree DISPLACEMENT + Begin SubModelPartNodes + 31 + 40 + 44 + 53 + 63 + 64 + 68 + 69 + 72 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart +Begin SubModelPart DISPLACEMENT_Body // Group Body // Subtree DISPLACEMENT + Begin SubModelPartNodes + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14 + 15 + 16 + 17 + 18 + 19 + 20 + 21 + 22 + 23 + 24 + 25 + 26 + 27 + 28 + 29 + 30 + 31 + 32 + 33 + 34 + 35 + 36 + 37 + 38 + 39 + 40 + 41 + 42 + 43 + 44 + 45 + 46 + 47 + 48 + 49 + 50 + 51 + 52 + 53 + 54 + 55 + 56 + 57 + 58 + 59 + 60 + 61 + 62 + 63 + 64 + 65 + 66 + 67 + 68 + 69 + 70 + 71 + 72 + End SubModelPartNodes + Begin SubModelPartElements + End SubModelPartElements + Begin SubModelPartConditions + End SubModelPartConditions +End SubModelPart diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test_materials.json b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test_materials.json new file mode 100644 index 000000000000..c7750808510b --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test_materials.json @@ -0,0 +1,17 @@ +{ + "properties" : [{ + "model_part_name" : "Structure.Parts_Solid_Body", + "properties_id" : 1, + "Material" : { + "constitutive_law" : { + "name" : "LinearElastic3DLaw" + }, + "Variables" : { + "DENSITY" : 7850.0, + "YOUNG_MODULUS" : 206900000000.0, + "POISSON_RATIO" : 0.29 + }, + "Tables" : {} + } + }] +} diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test_parameters.json b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test_parameters.json new file mode 100644 index 000000000000..b2c277dcde10 --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test_parameters.json @@ -0,0 +1,155 @@ +{ + "problem_data" : { + "problem_name" : "automated_initial_variable_process_test", + "parallel_type" : "OpenMP", + "echo_level" : 1, + "start_time" : 0.0, + "end_time" : 1.0 + }, + "solver_settings" : { + "time_stepping" : { + "time_step" : 1.1 + }, + "solver_type" : "Static", + "model_part_name" : "Structure", + "domain_size" : 3, + "echo_level" : 1, + "analysis_type" : "non_linear", + "model_import_settings" : { + "input_type" : "mdpa", + "input_filename" : "automated_initial_variable_process_test/automated_initial_variable_process_test" + }, + "material_import_settings" : { + "materials_filename" : "automated_initial_variable_process_test/automated_initial_variable_process_test_materials.json" + }, + "line_search" : false, + "convergence_criterion" : "residual_criterion", + "displacement_relative_tolerance" : 0.0001, + "displacement_absolute_tolerance" : 1e-9, + "residual_relative_tolerance" : 0.0001, + "residual_absolute_tolerance" : 1e-9, + "max_iteration" : 10, + "rotation_dofs" : false, + "volumetric_strain_dofs" : false + }, + "processes" : { + "constraints_process_list" : [], + "loads_process_list" : [], + "list_other_processes" : [{ + "python_module" : "set_automated_initial_variable_process", + "kratos_module" : "KratosMultiphysics.StructuralMechanicsApplication", + "process_name" : "SetAutomatedInitialVariableProcess", + "Parameters" : { + "help" : "This automates the application of initial strain/stress variables using csv tables", + "model_part_name" : "Structure.GENERIC_Layer1", + "variable_name" : "INITIAL_STRESS_VECTOR", + "hole_generatrix_axis" : [0.0,0.0,1.0], + "hole_generatrix_point" : [0.0,0.0,0.0], + "hole_radius_offset" : 0.0005, + "initial_variable_table" : { + "name" : "csv_table", + "filename" : "automated_initial_variable_process_test/input_tables/Layer1_StressComp1.csv", + "delimiter" : ",", + "skiprows" : 1, + "first_column_id" : 0, + "second_column_id" : 1, + "na_replace" : 0.0 + } + } + },{ + "python_module" : "set_cylindrical_local_axes_process", + "kratos_module" : "KratosMultiphysics.StructuralMechanicsApplication", + "process_name" : "SetCylindricalLocalAxesProcess", + "Parameters" : { + "model_part_name" : "Structure.GENERIC_Layer1", + "cylindrical_generatrix_axis" : [0.0,0.0,1.0], + "cylindrical_generatrix_point" : [0.0,0.0,0.0], + "update_at_each_step" : false + } + },{ + "python_module" : "set_initial_state_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "set_initial_state_process", + "Parameters" : { + "mesh_id" : 0, + "model_part_name" : "Structure.GENERIC_Layer1", + "dimension" : 3, + "imposed_stress" : [0.0,0.0,0.0,0.0,0.0,0.0], + "interval" : [0.0, 1e30] + } + },{ + "python_module" : "set_automated_initial_variable_process", + "kratos_module" : "KratosMultiphysics.StructuralMechanicsApplication", + "process_name" : "SetAutomatedInitialVariableProcess", + "Parameters" : { + "help" : "This automates the application of initial strain/stress variables using csv tables", + "model_part_name" : "Structure.GENERIC_Layer2", + "variable_name" : "INITIAL_STRESS_VECTOR", + "hole_generatrix_axis" : [0.0,0.0,1.0], + "hole_generatrix_point" : [0.0,0.0,0.0], + "hole_radius_offset" : 0.0005, + "initial_variable_table" : { + "name" : "csv_table", + "filename" : "automated_initial_variable_process_test/input_tables/Layer2_StressComp1.csv", + "delimiter" : ",", + "skiprows" : 1, + "first_column_id" : 0, + "second_column_id" : 1, + "na_replace" : 0.0 + } + } + },{ + "python_module" : "set_cylindrical_local_axes_process", + "kratos_module" : "KratosMultiphysics.StructuralMechanicsApplication", + "process_name" : "SetCylindricalLocalAxesProcess", + "Parameters" : { + "model_part_name" : "Structure.GENERIC_Layer2", + "cylindrical_generatrix_axis" : [0.0,0.0,1.0], + "cylindrical_generatrix_point" : [0.0,0.0,0.0], + "update_at_each_step" : false + } + },{ + "python_module" : "set_initial_state_process", + "kratos_module" : "KratosMultiphysics", + "process_name" : "set_initial_state_process", + "Parameters" : { + "mesh_id" : 0, + "model_part_name" : "Structure.GENERIC_Layer2", + "dimension" : 3, + "imposed_stress" : [0.0,0.0,0.0,0.0,0.0,0.0], + "interval" : [0.0, 1e30] + } + }], + "json_check_process" : [ + { + "python_module" : "from_json_check_result_process", + "kratos_module" : "KratosMultiphysics", + "help" : "", + "process_name" : "FromJsonCheckResultProcess", + "Parameters" : { + "gauss_points_check_variables" : ["CAUCHY_STRESS_VECTOR"], + "input_file_name" : "automated_initial_variable_process_test/automated_initial_variable_process_test_results.json", + "model_part_name" : "Structure.Parts_Solid_Body", + "time_frequency" : 0.1 + } + }] + }, + "_json_output_process" : [ + { + "python_module" : "json_output_process", + "kratos_module" : "KratosMultiphysics", + "help" : "", + "process_name" : "JsonOutputProcess", + "Parameters" : { + "gauss_points_output_variables" : ["CAUCHY_STRESS_VECTOR"], + "output_file_name" : "automated_initial_variable_process_test/automated_initial_variable_process_test_results.json", + "model_part_name" : "Structure.Parts_Solid_Body", + "time_frequency" : 0.1 + } + }], + "output_processes" : { + "gid_output" : [], + "vtk_output" : [] + }, + "analysis_stage" : "KratosMultiphysics.StructuralMechanicsApplication.structural_mechanics_analysis" +} diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test_results.json b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test_results.json new file mode 100644 index 000000000000..9dedd05f3173 --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/automated_initial_variable_process_test_results.json @@ -0,0 +1 @@ +{"TIME": [1.1], "NODE_1": {}, "NODE_2": {}, "NODE_3": {}, "NODE_4": {}, "NODE_5": {}, "NODE_6": {}, "NODE_7": {}, "NODE_8": {}, "NODE_9": {}, "NODE_10": {}, "NODE_11": {}, "NODE_12": {}, "NODE_13": {}, "NODE_14": {}, "NODE_15": {}, "NODE_16": {}, "NODE_17": {}, "NODE_18": {}, "NODE_19": {}, "NODE_20": {}, "NODE_21": {}, "NODE_22": {}, "NODE_23": {}, "NODE_24": {}, "NODE_25": {}, "NODE_26": {}, "NODE_27": {}, "NODE_28": {}, "NODE_29": {}, "NODE_30": {}, "NODE_31": {}, "NODE_32": {}, "NODE_33": {}, "NODE_34": {}, "NODE_35": {}, "NODE_36": {}, "NODE_37": {}, "NODE_38": {}, "NODE_39": {}, "NODE_40": {}, "NODE_41": {}, "NODE_42": {}, "NODE_43": {}, "NODE_44": {}, "NODE_45": {}, "NODE_46": {}, "NODE_47": {}, "NODE_48": {}, "NODE_49": {}, "NODE_50": {}, "NODE_51": {}, "NODE_52": {}, "NODE_53": {}, "NODE_54": {}, "NODE_55": {}, "NODE_56": {}, "NODE_57": {}, "NODE_58": {}, "NODE_59": {}, "NODE_60": {}, "NODE_61": {}, "NODE_62": {}, "NODE_63": {}, "NODE_64": {}, "NODE_65": {}, "NODE_66": {}, "NODE_67": {}, "NODE_68": {}, "NODE_69": {}, "NODE_70": {}, "NODE_71": {}, "NODE_72": {}, "ELEMENT_1": {"CAUCHY_STRESS_VECTOR": {"0": [[-100434631.10948133, 37110060.4258668, -48433483.230227545, 68143318.06178606, 9330602.987572918, -12799069.458267668]], "1": [[-84559626.76634808, 69632040.89946882, -28891025.812888563, 75650418.03924473, -409534.23667563964, 11880806.588352162]], "2": [[26578033.88858951, 83388714.609967, 7328331.15308778, -16894833.151577573, -1342399.724661748, 18044329.212093353]], "3": [[-10832119.534013469, 581176.37192728, -33042131.248984337, -37029075.39154443, 8756424.740587676, -6338435.28946242]], "4": [[-99446065.03591724, 30900837.986618944, -50088630.67189145, 98129301.81318977, -16303704.720451172, -7840341.041021658]], "5": [[-82563793.6319426, 68615147.45044625, -30603465.686050013, 101282182.62042047, -12208674.720254228, 6615229.299273287]], "6": [[31861269.51482535, 81665200.80389221, 6364318.09901201, 52520565.34515839, -13123822.957216784, 11711983.50816906]], "7": [[-10308627.450391173, -17035401.004754547, -38140283.07958716, 44219466.70757572, -16780905.769569095, -2630905.1902468195]]}}, "ELEMENT_2": {"CAUCHY_STRESS_VECTOR": {"0": [[-90024135.59831084, 58920254.50629794, 42190460.71839523, 59327874.19646947, 21226662.301344477, 2837229.3741634088]], "1": [[-58478686.51511593, 119968203.3396519, 62809764.98993361, 77749730.45085637, 10478514.379445132, 23700124.751517937]], "2": [[-8753750.378672447, 24917450.54862618, 49665278.16010474, -34990046.99943273, 11850023.184332913, 16986272.063618995]], "3": [[-99151710.8908139, -139827949.8788831, -18093515.38813314, -83906502.72447705, 23773278.62909618, -2903246.0317325424]], "4": [[-78144265.5138374, 27008974.63993732, 37213314.82170734, 98949298.84801087, -24758121.79262912, -193990.71708857454]], "5": [[-41098164.36566568, 113189996.8590949, 66501118.885778844, 110988529.05845879, -22840613.59881351, 15516304.717460314]], "6": [[43693539.520064175, 10103266.09131004, 61195561.0899829, 50715958.81000112, -21139271.081946503, 6539760.189745765]], "7": [[-59250302.09281342, -219123835.72893262, -28685950.79316801, 17762138.72089771, -21343662.35307017, -8729758.747230798]]}}, "ELEMENT_3": {"CAUCHY_STRESS_VECTOR": {"0": [[-16945531.186310347, -38940944.86573868, -11007212.743325561, 13877655.868873805, 5964231.632523699, -15271338.523471227]], "1": [[-35225090.92233356, -86281084.03573796, -35834417.26286808, 3931769.501485558, -2475964.6085852426, 9457321.187412454]], "2": [[85100327.9561662, -36220041.70880425, 13577656.486707628, -77426273.80137731, -1552591.679339383, 2920491.7435945636]], "3": [[88576932.21129006, -29439462.19345361, 22349731.616941154, -76873427.61027075, 7482265.041661289, -21315592.615358036]], "4": [[3794631.427081244, -19546516.56214294, 2649396.870646775, -33561537.163697965, -8731807.349461678, -5858178.732335092]], "5": [[-20791937.361563824, -77886815.12509327, -27255853.724506557, -36290261.11361798, -3389177.1062013246, 7393208.165896009]], "6": [[91097548.73873682, -32976208.922892604, 18216173.04321882, -81171769.81094328, -2436431.0970361, -912195.5258803188]], "7": [[95828401.03806283, -24885753.33849639, 27790811.39268893, -81369218.5631942, -7052997.362764768, -13976769.759551976]]}}, "ELEMENT_4": {"CAUCHY_STRESS_VECTOR": {"0": [[57028128.43490374, 84117225.43226576, 37818581.50590032, 50417831.93473363, 23610127.23244504, -11215251.471913714]], "1": [[2084562.2652059253, -7303267.905470526, -19544822.69533071, 26003319.430776767, 16327938.019711781, 9716228.550051875]], "2": [[63972495.192670144, -50860101.46564373, -14228803.878816277, -65863263.85476269, 19608511.056490727, -6354723.414659415]], "3": [[74774272.19446526, -39865524.55231876, 7009965.700643659, -64636146.39199634, 28194397.866679303, -26206311.086968265]], "4": [[35858719.0116944, 122900468.27252574, 42850468.060761094, 233359.50439970568, -11463708.25521848, -6902588.289695465]], "5": [[-24219806.156084485, 454327.7781671677, -23451014.451479495, -16369708.984279262, -5986650.230768613, 7405265.586958095]], "6": [[60586861.05853215, -51254930.71982468, -13852765.923658282, -66943139.03497036, -2340150.323894297, -11175980.846943503]], "7": [[69934447.62594391, -40493415.47265401, 5348203.072791249, -65703640.971602336, -5916627.871393125, -24994824.782192506]]}}, "ELEMENT_5": {"CAUCHY_STRESS_VECTOR": {"0": [[-58478686.51511572, 119968203.33965208, 62809764.98993379, -77749730.45085636, 10478514.379445013, -23700124.751517672]], "1": [[-41098164.3656657, 113189996.85909499, 66501118.88577902, -110988529.0584588, -22840613.59881382, -15516304.717459816]], "2": [[-78144265.51383755, 27008974.639937207, 37213314.82170734, -98949298.84801094, -24758121.79262963, 193990.7170891501]], "3": [[-90024135.5983108, 58920254.506297864, 42190460.71839535, -59327874.196469456, 21226662.30134422, -2837229.3741629925]], "4": [[-8753750.378671825, 24917450.54862574, 49665278.16010487, 34990046.99943301, 11850023.184332807, -16986272.06361868]], "5": [[43693539.520064354, 10103266.091309093, 61195561.08998284, -50715958.81000094, -21139271.08194678, -6539760.189745419]], "6": [[-59250302.09281364, -219123835.72893456, -28685950.793168545, -17762138.720897533, -21343662.35307072, 8729758.747231212]], "7": [[-99151710.89081387, -139827949.8788842, -18093515.388133347, 83906502.72447738, 23773278.629095886, 2903246.0317330416]]}}, "ELEMENT_6": {"CAUCHY_STRESS_VECTOR": {"0": [[-84559626.76634832, 69632040.89946912, -28891025.812888235, -75650418.03924471, -409534.2366754459, -11880806.588352073]], "1": [[-82563793.63194236, 68615147.45044671, -30603465.686049446, -101282182.62042059, -12208674.72025431, -6615229.299273054]], "2": [[-99446065.03591704, 30900837.986619283, -50088630.67189106, -98129301.81318985, -16303704.720451355, 7840341.041022055]], "3": [[-100434631.10948165, 37110060.42586685, -48433483.2302275, -68143318.06178606, 9330602.987572936, 12799069.458267923]], "4": [[26578033.888588596, 83388714.609966, 7328331.153087541, 16894833.151577886, -1342399.7246615132, -18044329.21209359]], "5": [[31861269.514825217, 81665200.80389148, 6364318.099012114, -52520565.34515801, -13123822.957216935, -11711983.508169036]], "6": [[-10308627.45039095, -17035401.004755065, -38140283.07958706, -44219466.70757537, -16780905.769569263, 2630905.190247028]], "7": [[-10832119.534013957, 581176.3719265163, -33042131.24898459, 37029075.39154471, 8756424.740587756, 6338435.289462407]]}}, "ELEMENT_7": {"CAUCHY_STRESS_VECTOR": {"0": [[2084562.2652062252, -7303267.9054705575, -19544822.69533062, -26003319.430776972, 16327938.019711554, -9716228.550051725]], "1": [[-24219806.15608387, 454327.77816732414, -23451014.451479375, 16369708.984279258, -5986650.230768725, -7405265.586957913]], "2": [[35858719.01169507, 122900468.27252607, 42850468.060760975, -233359.50439961255, -11463708.255218491, 6902588.289695617]], "3": [[57028128.434903875, 84117225.43226574, 37818581.505900085, -50417831.93473376, 23610127.232444968, 11215251.47191371]], "4": [[63972495.192670316, -50860101.46564339, -14228803.878816187, 65863263.85476249, 19608511.05649037, 6354723.414659366]], "5": [[60586861.05853213, -51254930.71982437, -13852765.9236584, 66943139.03497033, -2340150.3238945645, 11175980.846943388]], "6": [[69934447.62594385, -40493415.472653694, 5348203.07279098, 65703640.97160227, -5916627.871393328, 24994824.782192294]], "7": [[74774272.1944651, -39865524.552318595, 7009965.70064342, 64636146.39199617, 28194397.86667907, 26206311.086968087]]}}, "ELEMENT_8": {"CAUCHY_STRESS_VECTOR": {"0": [[-35225090.922333226, -86281084.03573814, -35834417.26286778, -3931769.5014857072, -2475964.608585537, -9457321.187412236]], "1": [[-20791937.361563668, -77886815.1250936, -27255853.724506646, 36290261.11361801, -3389177.106201357, -7393208.16589615]], "2": [[3794631.427081408, -19546516.56214319, 2649396.8706466258, 33561537.16369797, -8731807.349461827, 5858178.732334932]], "3": [[-16945531.186310086, -38940944.865738824, -11007212.743325442, -13877655.868873963, 5964231.632523419, 15271338.52347148]], "4": [[85100327.95616628, -36220041.708803736, 13577656.486708045, 77426273.8013771, -1552591.6793398014, -2920491.7435943508]], "5": [[91097548.73873687, -32976208.922892243, 18216173.04321885, 81171769.81094307, -2436431.0970362886, 912195.5258801458]], "6": [[95828401.03806306, -24885753.338496055, 27790811.39268899, 81369218.56319402, -7052997.3627650365, 13976769.759551842]], "7": [[88576932.21129015, -29439462.19345328, 22349731.616941422, 76873427.61027063, 7482265.041660908, 21315592.615358196]]}}, "ELEMENT_9": {"CAUCHY_STRESS_VECTOR": {"0": [[37110060.425867125, -100434631.10948159, -48433483.23022756, -68143318.06178601, 12799069.458267793, 9330602.98757316]], "1": [[69632040.89946923, -84559626.76634829, -28891025.81288828, -75650418.03924471, -11880806.588352237, -409534.23667528667]], "2": [[83388714.6099666, 26578033.88858858, 7328331.153087646, 16894833.15157774, -18044329.21209361, -1342399.724661463]], "3": [[581176.3719272725, -10832119.534013938, -33042131.248984516, 37029075.39154458, 6338435.289462246, 8756424.740587825]], "4": [[30900837.98661948, -99446065.03591704, -50088630.67189132, -98129301.81318967, 7840341.041021808, -16303704.720450995]], "5": [[68615147.45044662, -82563793.63194251, -30603465.68604985, -101282182.6204204, -6615229.299273288, -12208674.72025396]], "6": [[81665200.80389167, 31861269.514824428, 6364318.0990116, -52520565.345157966, -11711983.508169096, -13123822.957216702]], "7": [[-17035401.004754327, -10308627.450391289, -38140283.07958719, -44219466.70757531, 2630905.190246853, -16780905.769569017]]}}, "ELEMENT_10": {"CAUCHY_STRESS_VECTOR": {"0": [[58920254.50629854, -90024135.59831104, 42190460.71839547, -59327874.19646946, -2837229.3741632886, 21226662.301344544]], "1": [[119968203.33965226, -58478686.515116125, 62809764.989933655, -77749730.45085624, -23700124.751517907, 10478514.379445244]], "2": [[24917450.548626807, -8753750.378671937, 49665278.160105065, 34990046.99943298, -16986272.063618816, 11850023.184333052]], "3": [[-139827949.87888253, -99151710.89081363, -18093515.38813281, 83906502.7244772, 2903246.031732863, 23773278.629096176]], "4": [[27008974.639938056, -78144265.51383755, 37213314.82170746, -98949298.84801069, 193990.71708882786, -24758121.792629074]], "5": [[113189996.8590953, -41098164.36566595, 66501118.885778785, -110988529.05845852, -15516304.717460098, -22840613.598813426]], "6": [[10103266.091310248, 43693539.52006419, 61195561.08998288, -50715958.810000844, -6539760.189745532, -21139271.08194644]], "7": [[-219123835.72893238, -59250302.09281335, -28685950.79316795, -17762138.720897406, 8729758.74723101, -21343662.353070304]]}}, "ELEMENT_11": {"CAUCHY_STRESS_VECTOR": {"0": [[-38940944.86573884, -16945531.186310366, -11007212.74332565, -13877655.868874012, 15271338.523471205, 5964231.632523686]], "1": [[-86281084.03573805, -35225090.922333196, -35834417.26286784, -3931769.501485767, -9457321.187412664, -2475964.6085851016]], "2": [[-36220041.70880385, 85100327.95616628, 13577656.486707926, 77426273.80137716, -2920491.7435946683, -1552591.6793394054]], "3": [[-29439462.193453304, 88576932.21128999, 22349731.616941243, 76873427.61027071, 21315592.615357965, 7482265.041661203]], "4": [[-19546516.562143136, 3794631.4270811286, 2649396.8706465065, 33561537.16369791, 5858178.7323348895, -8731807.349461552]], "5": [[-77886815.12509355, -20791937.361563813, -27255853.724506825, 36290261.11361789, -7393208.165896288, -3389177.1062009917]], "6": [[-32976208.92289237, 91097548.73873685, 18216173.043218672, 81171769.81094317, 912195.5258800789, -2436431.0970359147]], "7": [[-24885753.338495936, 95828401.03806314, 27790811.39268899, 81369218.56319414, 13976769.759551913, -7052997.362764733]]}}, "ELEMENT_12": {"CAUCHY_STRESS_VECTOR": {"0": [[84117225.43226565, 57028128.434904054, 37818581.505900174, -50417831.93473399, 11215251.47191371, 23610127.232444987]], "1": [[-7303267.905470526, 2084562.26520643, -19544822.69533062, -26003319.430777207, -9716228.550051896, 16327938.019711718]], "2": [[-50860101.465643376, 63972495.19267013, -14228803.878816277, 65863263.85476253, 6354723.414659159, 19608511.056490626]], "3": [[-39865524.55231835, 74774272.194465, 7009965.70064345, 64636146.39199619, 26206311.086967994, 28194397.86667926]], "4": [[122900468.27252585, 35858719.011694714, 42850468.060760975, -233359.5044001378, 6902588.289695587, -11463708.255218457]], "5": [[454327.77816719934, -24219806.156084135, -23451014.451479495, 16369708.984278942, -7405265.586958012, -5986650.2307685455]], "6": [[-51254930.71982427, 60586861.058531955, -13852765.923658371, 66943139.03497044, 11175980.846943455, -2340150.323894299]], "7": [[-40493415.47265335, 69934447.62594375, 5348203.072791249, 65703640.97160234, 24994824.78219239, -5916627.871393086]]}}, "ELEMENT_13": {"CAUCHY_STRESS_VECTOR": {"0": [[119968203.33965246, -58478686.51511588, 62809764.98993409, 77749730.45085649, 23700124.751517676, 10478514.379445244]], "1": [[113189996.8590953, -41098164.36566594, 66501118.88577902, 110988529.05845873, 15516304.717459768, -22840613.59881355]], "2": [[27008974.639937963, -78144265.51383764, 37213314.82170737, 98949298.84801096, -193990.71708917245, -24758121.792629223]], "3": [[58920254.50629858, -90024135.59831075, 42190460.71839547, 59327874.19646971, 2837229.3741629906, 21226662.30134452]], "4": [[24917450.54862633, -8753750.378672414, 49665278.16010508, -34990046.99943298, 16986272.06361892, 11850023.18433287]], "5": [[10103266.09130992, 43693539.520064145, 61195561.08998297, 50715958.81000075, 6539760.189745515, -21139271.081946664]], "6": [[-219123835.72893286, -59250302.092813626, -28685950.793168187, 17762138.720897526, -8729758.747231089, -21343662.35307039]], "7": [[-139827949.87888283, -99151710.89081326, -18093515.38813281, -83906502.72447711, -2903246.031732818, 23773278.629096095]]}}, "ELEMENT_14": {"CAUCHY_STRESS_VECTOR": {"0": [[69632040.89946914, -84559626.76634815, -28891025.81288804, 75650418.03924473, 11880806.588352079, -409534.2366754133]], "1": [[68615147.45044623, -82563793.63194327, -30603465.686049804, 101282182.6204203, 6615229.299273039, -12208674.720254181]], "2": [[30900837.986619145, -99446065.03591777, -50088630.67189138, 98129301.81318967, -7840341.041022063, -16303704.720451111]], "3": [[37110060.42586722, -100434631.10948123, -48433483.23022714, 68143318.0617862, -12799069.458267717, 9330602.987573106]], "4": [[83388714.60996649, 26578033.888589144, 7328331.1530879885, -16894833.1515778, 18044329.212093312, -1342399.7246615468]], "5": [[81665200.80389129, 31861269.514824152, 6364318.099011764, 52520565.34515782, 11711983.508168781, -13123822.957216859]], "6": [[-17035401.004754968, -10308627.450392004, -38140283.079587385, 44219466.70757531, -2630905.1902470794, -16780905.769569192]], "7": [[581176.371927131, -10832119.534013648, -33042131.248984158, -37029075.3915445, -6338435.289462335, 8756424.740587737]]}}, "ELEMENT_15": {"CAUCHY_STRESS_VECTOR": {"0": [[-7303267.905470542, 2084562.2652065363, -19544822.69533053, 26003319.43077696, 9716228.55005185, 16327938.019711798]], "1": [[454327.7781672701, -24219806.156083636, -23451014.451479375, -16369708.984279092, 7405265.586958182, -5986650.230768423]], "2": [[122900468.27252577, 35858719.01169531, 42850468.060761034, 233359.5043997243, -6902588.289695364, -11463708.2552184]], "3": [[84117225.43226548, 57028128.43490407, 37818581.505900025, 50417831.93473368, -11215251.471913796, 23610127.23244504]], "4": [[-50860101.4656433, 63972495.19267019, -14228803.878816277, -65863263.85476238, -6354723.414659295, 19608511.056490686]], "5": [[-51254930.71982418, 60586861.05853209, -13852765.923658252, -66943139.03497029, -11175980.846943393, -2340150.3238942134]], "6": [[-40493415.47265333, 69934447.62594388, 5348203.072791159, -65703640.97160219, -24994824.782192253, -5916627.871393125]], "7": [[-39865524.552318335, 74774272.1944651, 7009965.70064348, -64636146.39199606, -26206311.086968184, 28194397.86667923]]}}, "ELEMENT_16": {"CAUCHY_STRESS_VECTOR": {"0": [[-86281084.03573793, -35225090.922333285, -35834417.26286772, 3931769.501485789, 9457321.187412474, -2475964.6085851486]], "1": [[-77886815.12509327, -20791937.361563202, -27255853.724506617, -36290261.113617755, 7393208.165895993, -3389177.1062010843]], "2": [[-19546516.562142864, 3794631.427082045, 2649396.870646715, -33561537.163697846, -5858178.732335058, -8731807.349461492]], "3": [[-38940944.86573894, -16945531.186310418, -11007212.74332571, 13877655.868873939, -15271338.523471173, 5964231.632523707]], "4": [[-36220041.70880392, 85100327.95616621, 13577656.486707836, -77426273.8013771, 2920491.7435947377, -1552591.679339502]], "5": [[-32976208.92289259, 91097548.7387364, 18216173.043218404, -81171769.81094326, -912195.5258804287, -2436431.09703602]], "6": [[-24885753.338496312, 95828401.03806244, 27790811.392688453, -81369218.5631941, -13976769.759551913, -7052997.362764655]], "7": [[-29439462.193453375, 88576932.21128997, 22349731.616941124, -76873427.61027057, -21315592.61535792, 7482265.041661195]]}}, "ELEMENT_17": {"CAUCHY_STRESS_VECTOR": {"0": [[119968203.33965234, -58478686.51511605, 62809764.9899337, 77749730.45085642, -23700124.75151778, -10478514.37944496]], "1": [[113189996.85909522, -41098164.36566597, 66501118.885778785, 110988529.05845872, -15516304.717460066, 22840613.59881383]], "2": [[27008974.639937636, -78144265.51383775, 37213314.82170722, 98949298.84801087, 193990.71708892845, 24758121.792629674]], "3": [[58920254.50629831, -90024135.59831114, 42190460.71839523, 59327874.1964695, -2837229.374162983, -21226662.301344022]], "4": [[24917450.548626453, -8753750.378671523, 49665278.16010508, -34990046.99943252, -16986272.063618835, -11850023.184332741]], "5": [[10103266.09130966, 43693539.520064086, 61195561.08998267, 50715958.81000085, -6539760.189745517, 21139271.081946924]], "6": [[-219123835.72893235, -59250302.09281308, -28685950.79316789, 17762138.720897637, 8729758.747231044, 21343662.353070766]], "7": [[-139827949.87888256, -99151710.89081304, -18093515.38813278, -83906502.72447674, 2903246.0317329913, -23773278.629095692]]}}, "ELEMENT_18": {"CAUCHY_STRESS_VECTOR": {"0": [[69632040.8994691, -84559626.76634865, -28891025.812888652, 75650418.03924464, -11880806.588352423, 409534.2366753081]], "1": [[68615147.4504467, -82563793.63194259, -30603465.68604994, 101282182.62042034, -6615229.299273346, 12208674.720254157]], "2": [[30900837.986619525, -99446065.0359171, -50088630.67189124, 98129301.81318961, 7840341.041021821, 16303704.720451366]], "3": [[37110060.42586715, -100434631.10948166, -48433483.230227575, 68143318.06178601, 12799069.458267655, -9330602.987573009]], "4": [[83388714.60996631, 26578033.888588734, 7328331.153087363, -16894833.151577733, -18044329.212093648, 1342399.7246614015]], "5": [[81665200.80389148, 31861269.51482456, 6364318.099011518, 52520565.34515817, -11711983.508169118, 13123822.957216758]], "6": [[-17035401.00475489, -10308627.450391214, -38140283.07958731, 44219466.70757571, 2630905.190246879, 16780905.769569308]], "7": [[581176.3719268069, -10832119.534013651, -33042131.24898453, -37029075.391544506, 6338435.289462389, -8756424.740587708]]}}, "ELEMENT_19": {"CAUCHY_STRESS_VECTOR": {"0": [[-7303267.905470716, 2084562.2652063817, -19544822.69533056, 26003319.43077687, -9716228.55005171, -16327938.019711668]], "1": [[454327.77816688456, -24219806.156084355, -23451014.451479584, -16369708.984279219, -7405265.58695795, 5986650.230768537]], "2": [[122900468.27252546, 35858719.0116947, 42850468.060761005, 233359.50439972803, 6902588.289695561, 11463708.255218402]], "3": [[84117225.43226545, 57028128.434904054, 37818581.50590044, 50417831.934733674, 11215251.471913747, -23610127.232445017]], "4": [[-50860101.46564328, 63972495.192669965, -14228803.878816217, -65863263.85476259, 6354723.414659645, -19608511.056490604]], "5": [[-51254930.71982426, 60586861.05853193, -13852765.923658311, -66943139.03497036, 11175980.846943643, 2340150.3238942623]], "6": [[-40493415.4726537, 69934447.62594362, 5348203.072791249, -65703640.97160233, 24994824.782192573, 5916627.87139311]], "7": [[-39865524.55231845, 74774272.19446492, 7009965.700643718, -64636146.39199632, 26206311.08696843, -28194397.8666792]]}}, "ELEMENT_20": {"CAUCHY_STRESS_VECTOR": {"0": [[-86281084.03573807, -35225090.922333255, -35834417.26286796, 3931769.5014856216, -9457321.187412228, 2475964.6085854326]], "1": [[-77886815.12509358, -20791937.361563854, -27255853.724506885, -36290261.11361786, -7393208.165896128, 3389177.1062011654]], "2": [[-19546516.56214339, 3794631.4270810224, 2649396.8706465065, -33561537.16369789, 5858178.732334996, 8731807.3494616]], "3": [[-38940944.865739, -16945531.1863103, -11007212.74332568, 13877655.868873855, 15271338.523471383, -5964231.632523532]], "4": [[-36220041.708803765, 85100327.95616594, 13577656.486707717, -77426273.80137725, -2920491.7435942595, 1552591.6793396312]], "5": [[-32976208.922892157, 91097548.73873682, 18216173.043218702, -81171769.81094338, 912195.5258802396, 2436431.0970360395]], "6": [[-24885753.338495754, 95828401.03806317, 27790811.39268911, -81369218.56319432, 13976769.759552024, 7052997.362764746]], "7": [[-29439462.193453312, 88576932.21128966, 22349731.616941184, -76873427.6102708, 21315592.615358252, -7482265.041661089]]}}, "ELEMENT_21": {"CAUCHY_STRESS_VECTOR": {"0": [[37110060.42586747, -100434631.10948084, -48433483.230226815, -68143318.06178613, -12799069.458267441, -9330602.987573102]], "1": [[69632040.89946929, -84559626.76634805, -28891025.812888145, -75650418.03924462, 11880806.588352453, 409534.2366752224]], "2": [[83388714.60996647, 26578033.888588943, 7328331.153087705, 16894833.15157801, 18044329.21209359, 1342399.724661325]], "3": [[581176.3719270267, -10832119.534013811, -33042131.248984143, 37029075.391544774, -6338435.289462297, -8756424.740587825]], "4": [[30900837.986619197, -99446065.03591767, -50088630.67189127, -98129301.81318977, -7840341.041021965, 16303704.720451163]], "5": [[68615147.4504464, -82563793.63194317, -30603465.686049804, -101282182.62042037, 6615229.2992730355, 12208674.720253915]], "6": [[81665200.80389144, 31861269.51482433, 6364318.099011779, -52520565.34515788, 11711983.508168958, 13123822.957216563]], "7": [[-17035401.004755028, -10308627.450391889, -38140283.07958731, -44219466.70757542, -2630905.1902469927, 16780905.769569173]]}}, "ELEMENT_22": {"CAUCHY_STRESS_VECTOR": {"0": [[58920254.50629852, -90024135.59831074, 42190460.71839547, -59327874.196469635, 2837229.3741628565, -21226662.301344097]], "1": [[119968203.33965236, -58478686.51511592, 62809764.98993398, -77749730.45085642, 23700124.751517814, -10478514.37944517]], "2": [[24917450.548626263, -8753750.378672201, 49665278.160105094, 34990046.99943327, 16986272.06361907, -11850023.184332766]], "3": [[-139827949.87888265, -99151710.89081308, -18093515.38813275, 83906502.72447735, -2903246.031732939, -23773278.62909577]], "4": [[27008974.639937688, -78144265.51383774, 37213314.82170728, -98949298.84801097, -193990.7170890849, 24758121.792629648]], "5": [[113189996.8590952, -41098164.36566596, 66501118.88577895, -110988529.05845873, 15516304.717459876, 22840613.598813646]], "6": [[10103266.091309741, 43693539.52006407, 61195561.08998288, -50715958.81000044, 6539760.189745532, 21139271.081946813]], "7": [[-219123835.72893295, -59250302.09281373, -28685950.793168247, -17762138.720897257, -8729758.747231204, 21343662.353070736]]}}, "ELEMENT_23": {"CAUCHY_STRESS_VECTOR": {"0": [[-38940944.86573889, -16945531.186309993, -11007212.743325591, -13877655.868873928, -15271338.523471188, -5964231.632523726]], "1": [[-86281084.03573799, -35225090.92233315, -35834417.26286784, -3931769.5014858227, 9457321.187412487, 2475964.6085852403]], "2": [[-36220041.70880365, 85100327.9561665, 13577656.486708045, 77426273.80137715, 2920491.743594642, 1552591.6793393923]], "3": [[-29439462.19345316, 88576932.2112904, 22349731.616941392, 76873427.61027057, -21315592.615358073, -7482265.041661184]], "4": [[-19546516.562142972, 3794631.4270820767, 2649396.8706466556, 33561537.163697764, -5858178.732335124, 8731807.349461388]], "5": [[-77886815.12509324, -20791937.36156286, -27255853.724506527, 36290261.113617666, 7393208.16589566, 3389177.1062010694]], "6": [[-32976208.92289244, 91097548.73873657, 18216173.043218434, 81171769.81094322, -912195.5258804938, 2436431.097035915]], "7": [[-24885753.338496163, 95828401.03806268, 27790811.39268872, 81369218.56319399, -13976769.759551981, 7052997.3627646305]]}}, "ELEMENT_24": {"CAUCHY_STRESS_VECTOR": {"0": [[84117225.43226558, 57028128.43490438, 37818581.50590032, -50417831.934733815, -11215251.471913772, -23610127.232444983]], "1": [[-7303267.905470762, 2084562.26520646, -19544822.6953308, -26003319.43077703, 9716228.550051838, -16327938.019711843]], "2": [[-50860101.46564334, 63972495.192670114, -14228803.878816336, 65863263.85476236, -6354723.414659556, -19608511.05649069]], "3": [[-39865524.55231825, 74774272.1944654, 7009965.700643778, 64636146.39199607, -26206311.08696859, -28194397.866679147]], "4": [[122900468.27252561, 35858719.01169507, 42850468.060760856, -233359.50439975783, -6902588.289695353, 11463708.255218519]], "5": [[454327.77816702984, -24219806.156083815, -23451014.451479584, 16369708.984279104, 7405265.58695822, 5986650.230768373]], "6": [[-51254930.719824314, 60586861.05853202, -13852765.92365849, 66943139.03497024, -11175980.846943503, 2340150.3238942446]], "7": [[-40493415.47265355, 69934447.62594384, 5348203.0727911, 65703640.971602164, -24994824.782192495, 5916627.871393319]]}}, "ELEMENT_25": {"CAUCHY_STRESS_VECTOR": {"0": [[-100434631.10948145, 37110060.42586684, -48433483.23022713, 68143318.06178604, -9330602.987573158, 12799069.458267694]], "1": [[-84559626.76634821, 69632040.89946903, -28891025.812888086, 75650418.03924476, 409534.23667525966, -11880806.58835223]], "2": [[26578033.88858895, 83388714.60996583, 7328331.15308775, -16894833.15157793, 1342399.7246613745, -18044329.21209353]], "3": [[-10832119.534014026, 581176.3719258383, -33042131.2489845, -37029075.39154468, -8756424.740587834, 6338435.289462355]], "4": [[-99446065.03591707, 30900837.9866191, -50088630.67189106, 98129301.8131898, 16303704.720451333, 7840341.041021976]], "5": [[-82563793.63194247, 68615147.45044647, -30603465.68604952, 101282182.62042058, 12208674.72025419, -6615229.299273117]], "6": [[31861269.514825135, 81665200.80389097, 6364318.09901201, 52520565.345158294, 13123822.957216907, -11711983.508169033]], "7": [[-10308627.450391248, -17035401.004755888, -38140283.079587296, 44219466.70757583, 16780905.769569345, 2630905.1902469564]]}}, "ELEMENT_26": {"CAUCHY_STRESS_VECTOR": {"0": [[-90024135.5983106, 58920254.506297946, 42190460.71839538, 59327874.196469635, -21226662.30134449, -2837229.374163024]], "1": [[-58478686.51511556, 119968203.33965199, 62809764.98993403, 77749730.4508565, -10478514.379445277, -23700124.751517765]], "2": [[-8753750.37867171, 24917450.548625086, 49665278.16010499, -34990046.99943303, -11850023.184332924, -16986272.063619025]], "3": [[-99151710.89081341, -139827949.87888414, -18093515.388133228, -83906502.72447753, -23773278.6290962, 2903246.0317327213]], "4": [[-78144265.5138374, 27008974.639937256, 37213314.82170737, 98949298.84801108, 24758121.792629417, 193990.7170890849]], "5": [[-41098164.36566565, 113189996.85909484, 66501118.88577904, 110988529.05845885, 22840613.598813757, -15516304.717459861]], "6": [[43693539.520064205, 10103266.091308512, 61195561.08998266, 50715958.81000078, 21139271.081946842, -6539760.189745523]], "7": [[-59250302.09281345, -219123835.72893468, -28685950.793168545, 17762138.72089737, 21343662.353070434, 8729758.74723108]]}}, "ELEMENT_27": {"CAUCHY_STRESS_VECTOR": {"0": [[-16945531.18631001, -38940944.86573873, -11007212.743325561, 13877655.868873995, -5964231.6325236345, 15271338.52347128]], "1": [[-35225090.92233308, -86281084.03573796, -35834417.26286772, 3931769.5014858358, 2475964.608585378, -9457321.187412346]], "2": [[85100327.95616631, -36220041.70880373, 13577656.486707985, -77426273.80137707, 1552591.6793396077, -2920491.7435946027]], "3": [[88576932.21129, -29439462.193453304, 22349731.616941243, -76873427.61027062, -7482265.041661149, 21315592.615357943]], "4": [[3794631.427081475, -19546516.562142994, 2649396.870646596, -33561537.16369797, 8731807.349461565, 5858178.732334862]], "5": [[-20791937.361563582, -77886815.12509346, -27255853.724506706, -36290261.11361778, 3389177.106201203, -7393208.165896226]], "6": [[91097548.73873682, -32976208.92289227, 18216173.043218732, -81171769.81094319, 2436431.0970362267, 912195.5258800405]], "7": [[95828401.038063, -24885753.33849597, 27790811.3926889, -81369218.56319405, 7052997.36276483, 13976769.75955173]]}}, "ELEMENT_28": {"CAUCHY_STRESS_VECTOR": {"0": [[57028128.43490368, 84117225.43226556, 37818581.505899906, 50417831.93473384, -23610127.232445113, 11215251.47191377]], "1": [[2084562.2652062401, -7303267.905470541, -19544822.6953308, 26003319.43077707, -16327938.019711822, -9716228.550051665]], "2": [[63972495.19267047, -50860101.465643175, -14228803.878816217, -65863263.85476231, -19608511.05649065, 6354723.4146593865]], "3": [[74774272.19446525, -39865524.55231843, 7009965.70064342, -64636146.39199603, -28194397.86667932, 26206311.086968206]], "4": [[35858719.01169494, 122900468.27252606, 42850468.060760856, 233359.50439970195, 11463708.255218312, 6902588.289695553]], "5": [[-24219806.15608392, 454327.77816734463, -23451014.451479554, -16369708.98427923, 5986650.230768525, -7405265.586957922]], "6": [[60586861.05853224, -51254930.71982419, -13852765.923658371, -66943139.03497017, 2340150.3238943443, 11175980.84694341]], "7": [[69934447.6259439, -40493415.47265356, 5348203.07279098, -65703640.9716021, 5916627.871393043, 24994824.782192312]]}}, "ELEMENT_29": {"CAUCHY_STRESS_VECTOR": {"0": [[-58478686.515116066, 119968203.33965208, 62809764.98993382, -77749730.4508563, -10478514.379445074, 23700124.75151799]], "1": [[-41098164.36566579, 113189996.85909507, 66501118.88577899, -110988529.05845875, 22840613.59881365, 15516304.71746023]], "2": [[-78144265.51383767, 27008974.63993722, 37213314.82170725, -98949298.84801081, 24758121.792629328, -193990.71708871424]], "3": [[-90024135.59831125, 58920254.50629779, 42190460.71839517, -59327874.19646931, -21226662.30134452, 2837229.3741632784]], "4": [[-8753750.37867178, 24917450.548626587, 49665278.16010532, 34990046.99943285, -11850023.18433275, 16986272.063619062]], "5": [[43693539.52006414, 10103266.091309577, 61195561.08998294, -50715958.81000125, 21139271.08194682, 6539760.189745818]], "6": [[-59250302.09281399, -219123835.72893462, -28685950.793168724, -17762138.720897965, 21343662.353070468, -8729758.747230768]], "7": [[-99151710.89081386, -139827949.87888378, -18093515.388133317, 83906502.72447753, -23773278.629096106, -2903246.031732522]]}}, "ELEMENT_30": {"CAUCHY_STRESS_VECTOR": {"0": [[-84559626.7663484, 69632040.89946936, -28891025.812888324, -75650418.03924464, 409534.2366756527, 11880806.588352203]], "1": [[-82563793.63194257, 68615147.45044678, -30603465.686049864, -101282182.62042049, 12208674.720254272, 6615229.299273379]], "2": [[-99446065.03591727, 30900837.98661931, -50088630.67189132, -98129301.81318983, 16303704.720451308, -7840341.041021558]], "3": [[-100434631.1094818, 37110060.425867066, -48433483.23022744, -68143318.06178586, -9330602.987572843, -12799069.458267558]], "4": [[26578033.888588905, 83388714.60996726, 7328331.1530878395, 16894833.151577786, 1342399.7246618196, 18044329.21209328]], "5": [[31861269.514825284, 81665200.80389258, 6364318.099012189, -52520565.345158584, 13123822.957216965, 11711983.508169048]], "6": [[-10308627.450391464, -17035401.004754573, -38140283.079587236, -44219466.70757605, 16780905.76956933, -2630905.190246785]], "7": [[-10832119.534013864, 581176.3719273768, -33042131.248984218, 37029075.39154451, -8756424.740587564, -6338435.289462404]]}}, "ELEMENT_31": {"CAUCHY_STRESS_VECTOR": {"0": [[2084562.265206404, -7303267.905470378, -19544822.6953305, -26003319.430777133, -16327938.019711798, 9716228.55005185]], "1": [[-24219806.15608408, 454327.77816744335, -23451014.451479137, 16369708.984279066, 5986650.230768505, 7405265.58695808]], "2": [[35858719.01169484, 122900468.27252626, 42850468.06076139, -233359.50440000743, 11463708.255218456, -6902588.28969552]], "3": [[57028128.43490443, 84117225.43226613, 37818581.50590065, -50417831.934734024, -23610127.23244509, -11215251.471913746]], "4": [[63972495.19267001, -50860101.46564345, -14228803.878816247, 65863263.854762495, -19608511.05649083, -6354723.414659402]], "5": [[60586861.05853224, -51254930.71982421, -13852765.923657984, 66943139.03497045, 2340150.323894179, -11175980.846943492]], "6": [[69934447.62594406, -40493415.4726533, 5348203.072791547, 65703640.97160244, 5916627.871393035, -24994824.782192446]], "7": [[74774272.19446495, -39865524.55231847, 7009965.700643688, 64636146.39199629, -28194397.866679326, -26206311.086968232]]}}, "ELEMENT_32": {"CAUCHY_STRESS_VECTOR": {"0": [[-35225090.92233312, -86281084.03573804, -35834417.26286778, -3931769.5014858395, 2475964.6085854312, 9457321.187412445]], "1": [[-20791937.361563776, -77886815.12509352, -27255853.724506527, 36290261.11361791, 3389177.106201226, 7393208.165895999]], "2": [[3794631.427081369, -19546516.56214295, 2649396.870646864, 33561537.16369795, 8731807.349461615, -5858178.732334953]], "3": [[-16945531.186309896, -38940944.86573872, -11007212.743325502, -13877655.868874112, -5964231.632523582, -15271338.523471124]], "4": [[85100327.95616606, -36220041.70880387, 13577656.486707777, 77426273.80137728, 1552591.6793395954, 2920491.7435945924]], "5": [[91097548.73873697, -32976208.922892116, 18216173.04321912, 81171769.81094332, 2436431.097036015, -912195.5258803599]], "6": [[95828401.03806292, -24885753.338496044, 27790811.39268905, 81369218.56319414, 7052997.362764699, -13976769.759551877]], "7": [[88576932.21128976, -29439462.19345348, 22349731.616941065, 76873427.61027084, -7482265.0416611675, -21315592.615357775]]}}} \ No newline at end of file diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp1.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp1.csv new file mode 100644 index 000000000000..c8d33f2f5f79 --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp1.csv @@ -0,0 +1,12 @@ +X-distance from edge,X-stress (radial dir.) +0,-775699829.1 +1.25408E-06,-78107765.2 +2.55489E-06,440227478 +3.88527E-06,-203478332.5 +5.5151E-06,-12895359.04 +7.08103E-06,13653903.96 +8.5783E-06,116182914.7 +1.12076E-05,145975296 +1.43275E-05,160589340.2 +1.78709E-05,155300460.8 +0.001191595,365371582 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp2.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp2.csv new file mode 100644 index 000000000000..171324cff3da --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp2.csv @@ -0,0 +1,16 @@ +X-distance from edge,X-stress (radial dir.) +0,-775699829.1 +1.25E-06,-78107765.2 +2.55E-06,440227478 +3.89E-06,-203478332.5 +5.52E-06,-12895359.04 +7.08E-06,13653903.96 +8.58E-06,116182914.7 +1.12E-05,145975296 +1.43E-05,160589340.2 +1.79E-05,155300460.8 +2.17E-05,125056060.8 +2.58E-05,74400772.1 +2.86E-05,182671691.9 +3.30E-05,169073684.7 +0.001191595,365371582 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp3.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp3.csv new file mode 100644 index 000000000000..9adb6072a360 --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp3.csv @@ -0,0 +1,143 @@ +X-distance from edge,Z-stress (loading dir.) +0,-747741882.3 +1.25E-06,-26342460.63 +2.55E-06,302900085.5 +3.89E-06,38459003.45 +5.52E-06,64686409 +7.08E-06,219478942.9 +8.58E-06,195620544.4 +1.12E-05,204976455.7 +1.43E-05,241722381.6 +1.79E-05,240602279.7 +2.17E-05,231416519.2 +2.58E-05,204156951.9 +2.86E-05,263900024.4 +3.30E-05,244602890 +3.62E-05,177218368.5 +4.08E-05,191203399.7 +4.44E-05,173282226.6 +4.81E-05,140020248.4 +4.92E-05,187731079.1 +5.30E-05,162559188.8 +5.70E-05,143002548.2 +6.11E-05,115413429.3 +6.53E-05,93112243.65 +6.62E-05,138059402.5 +7.05E-05,119652587.9 +7.49E-05,94397354.13 +7.94E-05,73908241.27 +8.39E-05,36349658.97 +8.85E-05,16623729.71 +8.91E-05,68706939.7 +9.31E-05,-12636658.67 +9.38E-05,47088336.95 +9.78E-05,-13789740.56 +9.84E-05,19908365.25 +0.000102441,-12163008.69 +0.000103072,8039234.16 +0.00010775,11339706.42 +0.000112442,852042.97 +0.000117148,5128959.18 +0.000121868,-8330214.5 +0.000126602,-6220335.48 +0.00013135,-11728758.81 +0.000136109,-10799171.45 +0.000136679,20968641.28 +0.000140882,-14715757.37 +0.00014145,20633377.08 +0.000145664,-11467600.82 +0.000146232,13275788.31 +0.000150457,-15856433.87 +0.000151023,17951131.82 +0.00015526,-10029447.56 +0.000155824,8328453.06 +0.000160072,-13630697.25 +0.000160634,11760299.68 +0.000165452,8539729.12 +0.000170278,6436951.64 +0.000175111,11910938.26 +0.000179951,3578900.1 +0.000184797,8896307.95 +0.000189649,8049540.52 +0.000194507,2342497.59 +0.000199369,5659160.61 +0.000204237,3502241.61 +0.00020911,1392940.4 +0.000209565,27550546.65 +0.000213986,4417112.83 +0.000214439,26397401.81 +0.000218868,154580.71 +0.000219317,26694530.49 +0.000223753,723600.92 +0.0002242,19625686.65 +0.000228643,-5302540.78 +0.000229086,21591449.74 +0.000233536,-665632.13 +0.000233976,17406793.59 +0.000238433,-4738754.27 +0.00023887,23151302.34 +0.000243333,218916.68 +0.000243767,13026383.4 +0.000248237,-6998928.55 +0.000248668,19847761.15 +0.000253144,1223641.51 +0.000253572,10134677.89 +0.000258478,16518310.55 +0.000263388,14918299.68 +0.0002683,10289818.76 +0.000273215,19797206.88 +0.000278133,1952517.99 +0.000283054,20089382.17 +0.000287977,11821526.53 +0.000292903,23899160.39 +0.000297831,13642331.12 +0.000302761,29010486.6 +0.000307693,14251687.05 +0.000312628,23771398.54 +0.000317565,35718070.98 +0.000322504,21747505.19 +0.000327444,39730751.04 +0.000327778,17194503.78 +0.000332387,14259358.41 +0.000332719,42103279.11 +0.000337332,40067268.37 +0.000337663,12770746.23 +0.000342279,26253360.75 +0.000342608,32239521.03 +0.000347226,32180244.45 +0.000347555,33894546.51 +0.000352177,26316698.07 +0.000352503,39742977.14 +0.000357128,27564624.79 +0.000357453,32257652.28 +0.00036208,23402229.31 +0.000362404,25161151.89 +0.000367034,10867950.44 +0.000367357,33779075.62 +0.00037199,29926622.39 +0.000372311,25444536.21 +0.000376946,24208848.95 +0.000377267,36709018.71 +0.000381904,22107107.16 +0.000382223,35633461 +0.000386864,10755315.78 +0.00038718,30707302.09 +0.000391825,5432292.94 +0.00039214,16217887.88 +0.000396787,-828223.11 +0.000397101,7036730.77 +0.000403305,13568076.13 +0.000406793,16262973.79 +0.000413945,-6540014.74 +0.000423077,-9728631.02 +0.000438221,2071475.27 +0.000461711,29280014.04 +0.000478439,14046010.02 +0.000508398,-53377052.31 +0.000549322,-42530864.72 +0.000591434,-10352652.55 +0.000651392,-24069719.32 +0.000765143,-35171169.28 +0.000836716,-22947866.44 +0.000989563,39706325.53 +0.001191595,29647310.26 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp4.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp4.csv new file mode 100644 index 000000000000..e47b81c984dc --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp4.csv @@ -0,0 +1,11 @@ +X-distance from edge,XY-stress (shear) +0,-248007202.2 +1.25E-06,-19805688.86 +2.55E-06,174797576.9 +3.89E-06,-157401504.5 +5.52E-06,-52970283.51 +7.08E-06,-199670028.7 +8.58E-06,203975448.6 +1.12E-05,127060653.7 +1.43E-05,81266555.79 +0.001191595,-37755039.22 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp5.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp5.csv new file mode 100644 index 000000000000..7f5b460db0c1 --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp5.csv @@ -0,0 +1,13 @@ +X-distance from edge,Zero vector +0,0 +1.25E-06,0 +2.55E-06,0 +3.89E-06,0 +5.52E-06,0 +7.08E-06,0 +8.58E-06,0 +1.12E-05,0 +1.43E-05,0 +1.79E-05,0 +2.17E-05,0 +0.001191595,0 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp6.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp6.csv new file mode 100644 index 000000000000..2750c42f6ab4 --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer1_StressComp6.csv @@ -0,0 +1,14 @@ +X-distance from edge,Zero vector +0,0 +1.25E-06,0 +2.55E-06,0 +3.89E-06,0 +5.52E-06,0 +7.08E-06,0 +8.58E-06,0 +1.12E-05,0 +1.43E-05,0 +1.79E-05,0 +2.17E-05,0 +2.58E-05,0 +0.001191595,0 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp1.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp1.csv new file mode 100644 index 000000000000..722b99ca55bb --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp1.csv @@ -0,0 +1,13 @@ +X-distance from edge,X-stress (radial dir.) +0,-97167121.89 +6.79E-07,-78426055.91 +4.18E-06,379307220.5 +4.89E-06,299640899.7 +7.81E-06,158475250.2 +1.16E-05,-28791255.95 +1.48E-05,-120368827.8 +1.82E-05,-120672561.7 +2.10E-05,-114990257.3 +2.47E-05,-106713371.3 +2.77E-05,-107370986.9 +0.001229358,-289090271 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp2.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp2.csv new file mode 100644 index 000000000000..b93e967c8b3e --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp2.csv @@ -0,0 +1,13 @@ +X-distance from edge,Y-stress (punching dir.) +0,711907043.5 +6.79E-07,760783508.3 +4.18E-06,1109050293 +4.89E-06,710515136.7 +7.81E-06,638342468.3 +1.16E-05,256178527.8 +1.48E-05,27501638.41 +1.82E-05,55969158.17 +2.10E-05,90738174.44 +2.47E-05,187000518.8 +2.77E-05,216203582.8 +0.001229358,-232396270.8 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp3.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp3.csv new file mode 100644 index 000000000000..c7d00b2ede92 --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp3.csv @@ -0,0 +1,14 @@ +X-distance from edge,Z-stress (loading dir.) +0,578132995.6 +6.79E-07,610456115.7 +4.18E-06,813962951.7 +4.89E-06,616664611.8 +7.81E-06,546067443.9 +1.16E-05,349765930.2 +1.48E-05,255771774.3 +1.82E-05,263109314 +2.10E-05,277499633.8 +2.47E-05,310147766.1 +2.77E-05,317212188.7 +3.09E-05,312061340.3 +0.001229358,-107793609.6 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp4.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp4.csv new file mode 100644 index 000000000000..a7a041e1e14d --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp4.csv @@ -0,0 +1,14 @@ +X-distance from edge,XY-stress (shear) +0,5015319.35 +6.79E-07,5015998.36 +4.18E-06,5019499.3 +4.89E-06,5020205.5 +7.81E-06,5023125.17 +1.16E-05,5026888.85 +1.48E-05,5030088.42 +1.82E-05,5033494.47 +2.10E-05,5036300.66 +2.47E-05,5040005.21 +2.77E-05,5043058.4 +3.09E-05,5046213.15 +0.001229358,6244677.07 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp5.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp5.csv new file mode 100644 index 000000000000..e19d71b2fed6 --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp5.csv @@ -0,0 +1,14 @@ +X-distance from edge,Zero vector +0,0 +6.79E-07,0 +4.18E-06,0 +4.89E-06,0 +7.81E-06,0 +1.16E-05,0 +1.48E-05,0 +1.82E-05,0 +2.10E-05,0 +2.47E-05,0 +2.77E-05,0 +3.09E-05,0 +0.001229358,0 diff --git a/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp6.csv b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp6.csv new file mode 100644 index 000000000000..1a7146d9abd2 --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/automated_initial_variable_process_test/input_tables/Layer2_StressComp6.csv @@ -0,0 +1,11 @@ +X-distance from edge,Zero vector +0,0 +6.79E-07,0 +4.18E-06,0 +4.89E-06,0 +7.81E-06,0 +1.16E-05,0 +1.48E-05,0 +1.82E-05,0 +2.10E-05,0 +0.001229358,0 diff --git a/applications/StructuralMechanicsApplication/tests/cpp_tests/test_small_displacement_axisymmetric_element.cpp b/applications/StructuralMechanicsApplication/tests/cpp_tests/test_small_displacement_axisymmetric_element.cpp new file mode 100644 index 000000000000..d5aab02df50c --- /dev/null +++ b/applications/StructuralMechanicsApplication/tests/cpp_tests/test_small_displacement_axisymmetric_element.cpp @@ -0,0 +1,97 @@ +// KRATOS ___| | | | +// \___ \ __| __| | | __| __| | | __| _` | | +// | | | | | ( | | | | ( | | +// _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS +// +// License: BSD License +// license: structural_mechanics_application/license.txt +// +// Main authors: Alejandro Cornejo +// + +// Project includes +#include "containers/model.h" +#include "testing/testing.h" +#include "structural_mechanics_application_variables.h" +#include "custom_elements/axisym_small_displacement.h" + +namespace Kratos +{ +namespace Testing +{ + + KRATOS_TEST_CASE_IN_SUITE(SmallDisplacementAxisymmetric2D, KratosStructuralMechanicsFastSuite) + { + Model current_model; + auto &r_model_part = current_model.CreateModelPart("ModelPart", 1); + r_model_part.GetProcessInfo().SetValue(DOMAIN_SIZE, 2); + + r_model_part.AddNodalSolutionStepVariable(DISPLACEMENT); + r_model_part.AddNodalSolutionStepVariable(VOLUME_ACCELERATION); + + // Set the element properties + auto p_elem_prop = r_model_part.CreateNewProperties(0); + p_elem_prop->SetValue(YOUNG_MODULUS, 2.0e+06); + p_elem_prop->SetValue(POISSON_RATIO, 0.3); + p_elem_prop->SetValue(THICKNESS, 0.01); + const auto &r_clone_cl = KratosComponents::Get("LinearElasticAxisym2DLaw"); + p_elem_prop->SetValue(CONSTITUTIVE_LAW, r_clone_cl.Clone()); + + // Create the test element + auto p_node_1 = r_model_part.CreateNewNode(1, 0.0 , 0.0 , 0.0); + auto p_node_2 = r_model_part.CreateNewNode(2, 1.0 , 0.0 , 0.0); + auto p_node_3 = r_model_part.CreateNewNode(3, 0.0 , 1.0 , 0.0); + + for (auto& r_node : r_model_part.Nodes()){ + r_node.AddDof(DISPLACEMENT_X); + r_node.AddDof(DISPLACEMENT_Y); + r_node.AddDof(DISPLACEMENT_Z); + } + + std::vector element_nodes {1,2,3}; + auto p_element = r_model_part.CreateNewElement("AxisymSmallDisplacementElement2D3N", 1, element_nodes, p_elem_prop); + + p_element->Initialize(r_model_part.GetProcessInfo()); + + // Define a matrix A and impose that the displacement on each node is u = A*x0 + Matrix A0 = ZeroMatrix(3, 3); + A0(0, 0) = 2e-2; + A0(0, 1) = 5e-2; + A0(1, 0) = 5e-2; + A0(1, 1) = -1e-2; + A0(2, 2) = 1.0; + + Matrix lhs; + Vector rhs; + const auto& const_procinfo_ref = r_model_part.GetProcessInfo(); + + for (auto& r_node : r_model_part.Nodes()){ + noalias(r_node.GetSolutionStepValue(DISPLACEMENT)) = prod(A0, r_node.GetInitialPosition()); + r_node.Coordinates() = r_node.GetInitialPosition() + r_node.GetSolutionStepValue(DISPLACEMENT); //here i update the node coordinates + } + + p_element->InitializeSolutionStep(const_procinfo_ref); + p_element->InitializeNonLinearIteration(const_procinfo_ref); + p_element->CalculateLocalSystem(lhs,rhs,const_procinfo_ref); + p_element->FinalizeNonLinearIteration(const_procinfo_ref); + p_element->FinalizeSolutionStep(const_procinfo_ref); + + const double reference_von_mises_pk2 = 167301.0; + const std::vector reference_strain = {0.02,-0.01,0.0654206,0.1,0.0,0.0}; + const std::vector reference_stress = {117793,71639.1,187671,76923.1,0.0,0.0}; + + std::vector output_strains(1); + p_element->CalculateOnIntegrationPoints(GREEN_LAGRANGE_STRAIN_VECTOR, output_strains, r_model_part.GetProcessInfo()); + + std::vector output_stress(1); + p_element->CalculateOnIntegrationPoints(PK2_STRESS_VECTOR, output_stress, r_model_part.GetProcessInfo()); + + std::vector output_von_mises(1); + p_element->CalculateOnIntegrationPoints(VON_MISES_STRESS, output_von_mises, r_model_part.GetProcessInfo()); + + KRATOS_CHECK_VECTOR_NEAR(output_strains[0], reference_strain, 1.0e-6); + KRATOS_CHECK_VECTOR_NEAR(output_stress[0], reference_stress, 1.0e-4*reference_stress[0]); + KRATOS_CHECK_NEAR((output_von_mises[0]-reference_von_mises_pk2)/reference_von_mises_pk2, 0.0,1e-6*reference_von_mises_pk2); + } +} +} diff --git a/applications/StructuralMechanicsApplication/tests/cpp_tests/test_solid_static_sensitivity.cpp b/applications/StructuralMechanicsApplication/tests/cpp_tests/test_solid_static_sensitivity.cpp index 9b33ecaa8d35..7ce9cc89aa54 100644 --- a/applications/StructuralMechanicsApplication/tests/cpp_tests/test_solid_static_sensitivity.cpp +++ b/applications/StructuralMechanicsApplication/tests/cpp_tests/test_solid_static_sensitivity.cpp @@ -19,7 +19,6 @@ // Project includes #include "containers/model.h" -#include "includes/shared_pointers.h" #include "linear_solvers/skyline_lu_custom_scalar_solver.h" #include "solving_strategies/convergencecriterias/residual_criteria.h" #include "solving_strategies/schemes/residual_based_adjoint_static_scheme.h" diff --git a/applications/StructuralMechanicsApplication/tests/cpp_tests/test_solid_transient_sensitivity.cpp b/applications/StructuralMechanicsApplication/tests/cpp_tests/test_solid_transient_sensitivity.cpp index 33c3c42fb628..5846d72359ef 100644 --- a/applications/StructuralMechanicsApplication/tests/cpp_tests/test_solid_transient_sensitivity.cpp +++ b/applications/StructuralMechanicsApplication/tests/cpp_tests/test_solid_transient_sensitivity.cpp @@ -21,7 +21,6 @@ // Project includes #include "containers/model.h" -#include "includes/shared_pointers.h" #include "linear_solvers/skyline_lu_custom_scalar_solver.h" #include "solving_strategies/convergencecriterias/residual_criteria.h" #include "solving_strategies/schemes/residual_based_adjoint_bossak_scheme.h" diff --git a/applications/StructuralMechanicsApplication/tests/structural_mechanics_test_factory.py b/applications/StructuralMechanicsApplication/tests/structural_mechanics_test_factory.py index e26ba260c6b5..ad9cbb9b1b61 100644 --- a/applications/StructuralMechanicsApplication/tests/structural_mechanics_test_factory.py +++ b/applications/StructuralMechanicsApplication/tests/structural_mechanics_test_factory.py @@ -76,6 +76,9 @@ def tearDown(self): with KratosUnittest.WorkFolderScope(".", __file__): self.test.Finalize() +class AutomatedInitialVariableProcessTest(StructuralMechanicsTestFactory): + file_name = "automated_initial_variable_process_test/automated_initial_variable_process_test" + class SimpleMeshMovingTest(StructuralMechanicsTestFactory): file_name = "mesh_moving_test/simple_mesh_moving_test" diff --git a/applications/StructuralMechanicsApplication/tests/test_StructuralMechanicsApplication.py b/applications/StructuralMechanicsApplication/tests/test_StructuralMechanicsApplication.py index b64527d745a3..308f7346d8db 100644 --- a/applications/StructuralMechanicsApplication/tests/test_StructuralMechanicsApplication.py +++ b/applications/StructuralMechanicsApplication/tests/test_StructuralMechanicsApplication.py @@ -94,6 +94,7 @@ ##### NIGHTLY TESTS ##### # Patch test Small Displacements +from structural_mechanics_test_factory import AutomatedInitialVariableProcessTest as TAutomatedInitialVariableProcessTest from structural_mechanics_test_factory import SDTwoDShearQuaPatchTest as TSDTwoDShearQuaPatchTest from structural_mechanics_test_factory import SDTwoDShearTriPatchTest as TSDTwoDShearTriPatchTest from structural_mechanics_test_factory import SDTwoDTensionQuaPatchTest as TSDTwoDTensionQuaPatchTest @@ -333,6 +334,7 @@ def AssembleTestSuites(): ### Adding Nightly Tests # Patch test Small Displacements + smallSuite.addTest(TAutomatedInitialVariableProcessTest('test_execution')) nightSuite.addTest(TSDTwoDShearQuaPatchTest('test_execution')) nightSuite.addTest(TSDTwoDShearTriPatchTest('test_execution')) nightSuite.addTest(TSDTwoDTensionQuaPatchTest('test_execution')) diff --git a/applications/StructuralMechanicsApplication/tests/test_patch_test_small_displacement_mixed_volumetric_strain.py b/applications/StructuralMechanicsApplication/tests/test_patch_test_small_displacement_mixed_volumetric_strain.py index d9ae79e7ec6f..a726288a8975 100644 --- a/applications/StructuralMechanicsApplication/tests/test_patch_test_small_displacement_mixed_volumetric_strain.py +++ b/applications/StructuralMechanicsApplication/tests/test_patch_test_small_displacement_mixed_volumetric_strain.py @@ -9,7 +9,14 @@ class TestPatchTestSmallDisplacementMixedVolumetricStrain(KratosUnittest.TestCase): def setUp(self): - self.tolerance = 1.0e-6 + self.tolerances = { + "relative" : 1e-6, + "absolute" : { + "displacement" : 1e-6, + "stress" : 1e2, + "strain" : 1e-2 + } + } self.print_output = True def _add_variables(self, ModelPart): @@ -132,10 +139,10 @@ def _check_results(self, ModelPart, A, b): d = node.GetSolutionStepValue(KratosMultiphysics.DISPLACEMENT) for i in range(3): if abs(u[i]) > 0.0: - error = (d[i] - u[i])/u[i] - if error > self.tolerance: - print("NODE ", node.Id,": Component ", coor_list[i],":\t",u[i],"\t",d[i], "\tError: ", error) - self.assertLess(error, self.tolerance) + error = abs((d[i] - u[i])/u[i]) + self.assertLess(error, self.tolerances["relative"], msg=f"NODE {node.Id}: Component {coor_list[i]}: {u[i]} {d[i]} Error: {error}") + else: + self.assertLess(abs(d[i]), self.tolerances["absolute"]["displacement"]) def _calculate_reference_strain(self, A, dim): # Given the matrix A, the analytic deformation gradient is F+I @@ -214,7 +221,9 @@ def _check_stress(self, model_part, A, dim): for stress in out: for i in range(len(reference_stress)): if abs(stress[i]) > 0.0: - self.assertLess((reference_stress[i] - stress[i])/stress[i], self.tolerance) + self.assertLess((reference_stress[i] - stress[i])/stress[i], self.tolerances["relative"]) + else: + self.assertLess(abs(stress[i]), self.tolerances["absolute"]["stress"]) def _check_stress_user_provided(self, model_part, A, dim): # Calculate the reference strain @@ -229,7 +238,9 @@ def _check_stress_user_provided(self, model_part, A, dim): for stress in out: for i in range(len(reference_stress)): if abs(stress[i]) > 0.0: - self.assertLess((reference_stress[i] - stress[i])/stress[i], self.tolerance) + self.assertLess((reference_stress[i] - stress[i])/stress[i], self.tolerances["relative"]) + else: + self.assertLess(abs(stress[i]), self.tolerances["absolute"]["stress"]) def testSmallDisplacementMixedVolumetricStrainElement2DTriangle(self): dimension = 2 @@ -461,4 +472,4 @@ def __post_process(self, main_model_part, post_type = "gid"): if __name__ == '__main__': KratosMultiphysics.Logger.GetDefaultOutput().SetSeverity(KratosMultiphysics.Logger.Severity.WARNING) - KratosUnittest.main() + KratosUnittest.main() \ No newline at end of file diff --git a/applications/StructuralMechanicsApplication/tests/test_patch_test_small_strain.py b/applications/StructuralMechanicsApplication/tests/test_patch_test_small_strain.py index 45b9beb85bf1..2c806612dde9 100644 --- a/applications/StructuralMechanicsApplication/tests/test_patch_test_small_strain.py +++ b/applications/StructuralMechanicsApplication/tests/test_patch_test_small_strain.py @@ -9,7 +9,14 @@ class TestPatchTestSmallStrain(KratosUnittest.TestCase): def setUp(self): - pass + self.tolerances = { + "relative" : 1e-6, + "absolute" : { + "displacement" : 1e-6, + "stress" : 1e2, + "strain" : 1e-2 + } + } def _add_variables(self,mp): mp.AddNodalSolutionStepVariable(KratosMultiphysics.DISPLACEMENT) @@ -78,8 +85,6 @@ def _define_movement(self,dim): b[1] = -0.2e-10 b[2] = 0.7e-10 - - return A,b def _solve(self,mp): @@ -118,7 +123,6 @@ def _solve(self,mp): strategy.Check() strategy.Solve() - def _check_results(self,mp,A,b): ##check that the results are exact on the nodes @@ -136,10 +140,10 @@ def _check_results(self,mp,A,b): d = node.GetSolutionStepValue(KratosMultiphysics.DISPLACEMENT) for i in range(3): if abs(u[i]) > 0.0: - error = (d[i] - u[i])/u[i] - if error > 1.0e-6: - print("NODE ", node.Id,": Component ", coor_list[i],":\t",u[i],"\t",d[i], "\tError: ", error) - self.assertLess(error, 1.0e-6) + error = abs((d[i] - u[i])/u[i]) + self.assertLess(error, self.tolerances["relative"], msg=f"NODE {node.Id}: Component {coor_list[i]}: {u[i]} {d[i]} Error: {error}") + else: + self.assertLess(abs(d[i]), self.tolerances["absolute"]["displacement"]) def _check_outputs(self,mp,A,dim): @@ -190,7 +194,10 @@ def _check_outputs(self,mp,A,dim): for strain in out: for i in range(len(reference_strain)): if abs(strain[i]) > 0.0: - self.assertLess((reference_strain[i] - strain[i])/strain[i], 1.0e-6) + if abs(reference_strain[i]) > 0.0: + self.assertLess(abs((reference_strain[i] - strain[i])/reference_strain[i]), self.tolerances["relative"]) + else: + self.assertLess(abs(strain[i]), self.tolerances["absolute"]["strain"]) # Finally compute stress if(dim == 2): @@ -220,7 +227,10 @@ def _check_outputs(self,mp,A,dim): for stress in out: for i in range(len(reference_stress)): if abs(stress[i]) > 0.0: - self.assertLess((reference_stress[i] - stress[i])/stress[i], 1.0e-6) + if abs(reference_stress[i]) > 0.0: + self.assertLess(abs((reference_stress[i] - stress[i])/reference_stress[i]), self.tolerances["relative"]) + else: + self.assertLess(abs(stress[i]), self.tolerances["absolute"]["stress"]) def test_SmallDisplacementElement_2D_triangle(self): dim = 2 diff --git a/applications/SwimmingDEMApplication/custom_conditions/calculate_laplacian_simplex_condition.cpp b/applications/SwimmingDEMApplication/custom_conditions/calculate_laplacian_simplex_condition.cpp index 4c4ca3304f3d..65e1ad249157 100644 --- a/applications/SwimmingDEMApplication/custom_conditions/calculate_laplacian_simplex_condition.cpp +++ b/applications/SwimmingDEMApplication/custom_conditions/calculate_laplacian_simplex_condition.cpp @@ -23,7 +23,7 @@ void ComputeLaplacianSimplexCondition::EquationIdVector(Equation { rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_LAPLACIAN_X).EquationId(); rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_LAPLACIAN_Y).EquationId(); - if (TDim == 3){ + if constexpr (TDim == 3){ rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_LAPLACIAN_Z).EquationId(); } } @@ -45,7 +45,7 @@ void ComputeLaplacianSimplexCondition::GetDofList(DofsVectorType { rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_LAPLACIAN_X); rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_LAPLACIAN_Y); - if (TDim == 3){ + if constexpr (TDim == 3){ rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_LAPLACIAN_Z); } } diff --git a/applications/SwimmingDEMApplication/custom_elements/calculate_component_gradient_simplex_element.cpp b/applications/SwimmingDEMApplication/custom_elements/calculate_component_gradient_simplex_element.cpp index 6f8574179e88..7cffa3494b42 100644 --- a/applications/SwimmingDEMApplication/custom_elements/calculate_component_gradient_simplex_element.cpp +++ b/applications/SwimmingDEMApplication/custom_elements/calculate_component_gradient_simplex_element.cpp @@ -43,7 +43,7 @@ void ComputeComponentGradientSimplex::EquationIdVector(Equation { rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_COMPONENT_GRADIENT_X,pos).EquationId(); rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_COMPONENT_GRADIENT_Y,pos+1).EquationId(); - if (TDim == 3){ + if constexpr (TDim == 3){ rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_COMPONENT_GRADIENT_Z,pos+2).EquationId(); } } @@ -62,7 +62,7 @@ void ComputeComponentGradientSimplex::GetDofList(DofsVectorType { rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_COMPONENT_GRADIENT_X); rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_COMPONENT_GRADIENT_Y); - if (TDim == 3){ + if constexpr (TDim == 3){ rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_COMPONENT_GRADIENT_Z); } } diff --git a/applications/SwimmingDEMApplication/custom_elements/calculate_gradient_Pouliot_2012.cpp b/applications/SwimmingDEMApplication/custom_elements/calculate_gradient_Pouliot_2012.cpp index 1b86af033164..1d4bcd747f8a 100644 --- a/applications/SwimmingDEMApplication/custom_elements/calculate_gradient_Pouliot_2012.cpp +++ b/applications/SwimmingDEMApplication/custom_elements/calculate_gradient_Pouliot_2012.cpp @@ -58,7 +58,7 @@ void ComputeGradientPouliot2012::GetDofList(DofsVectorType& rEl for (unsigned int iNode = 0; iNode < TNumNodes; ++iNode){ rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_COMPONENT_GRADIENT_X); rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_COMPONENT_GRADIENT_Y); - if (TDim == 3){ + if constexpr (TDim == 3){ rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_COMPONENT_GRADIENT_Z); } } @@ -100,7 +100,7 @@ void ComputeGradientPouliot2012::EquationIdVector(EquationIdVec for (unsigned int iNode = 0; iNode < TNumNodes; ++iNode){ rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_COMPONENT_GRADIENT_X,pos).EquationId(); rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_COMPONENT_GRADIENT_Y,pos+1).EquationId(); - if (TDim == 3){ + if constexpr (TDim == 3){ rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_COMPONENT_GRADIENT_Z,pos+2).EquationId(); } } diff --git a/applications/SwimmingDEMApplication/custom_elements/calculate_gradient_Pouliot_2012_edge.cpp b/applications/SwimmingDEMApplication/custom_elements/calculate_gradient_Pouliot_2012_edge.cpp index 7af511b5ae95..4eee1defbf5a 100644 --- a/applications/SwimmingDEMApplication/custom_elements/calculate_gradient_Pouliot_2012_edge.cpp +++ b/applications/SwimmingDEMApplication/custom_elements/calculate_gradient_Pouliot_2012_edge.cpp @@ -56,7 +56,7 @@ void ComputeGradientPouliot2012Edge::EquationIdVector(EquationI for (unsigned int iNode = 0; iNode < TNumNodes; ++iNode){ rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_COMPONENT_GRADIENT_X,pos).EquationId(); rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_COMPONENT_GRADIENT_Y,pos+1).EquationId(); - if (TDim == 3){ + if constexpr (TDim == 3){ rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_COMPONENT_GRADIENT_Z,pos+2).EquationId(); } } @@ -74,7 +74,7 @@ void ComputeGradientPouliot2012Edge::GetDofList(DofsVectorType& for (unsigned int iNode = 0; iNode < TNumNodes; ++iNode){ rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_COMPONENT_GRADIENT_X); rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_COMPONENT_GRADIENT_Y); - if (TDim == 3){ + if constexpr (TDim == 3){ rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_COMPONENT_GRADIENT_Z); } } @@ -157,7 +157,7 @@ int ComputeGradientPouliot2012Edge::Check(const ProcessInfo& rC const Node<3>& rNode = this->GetGeometry()[i]; KRATOS_CHECK_DOF_IN_NODE(VELOCITY_COMPONENT_GRADIENT_X,rNode); KRATOS_CHECK_DOF_IN_NODE(VELOCITY_COMPONENT_GRADIENT_Y,rNode); - if (TDim == 3){ + if constexpr (TDim == 3){ KRATOS_CHECK_DOF_IN_NODE(VELOCITY_COMPONENT_GRADIENT_Z,rNode); } KRATOS_ERROR_IF(rNode.SolutionStepsDataHas(VELOCITY_COMPONENT_GRADIENT) == false) << "Missing VELOCITY_COMPONENT_GRADIENT variable on solution step data for node " << this->GetGeometry()[i].Id() << std::endl; diff --git a/applications/SwimmingDEMApplication/custom_elements/calculate_laplacian_simplex_element.cpp b/applications/SwimmingDEMApplication/custom_elements/calculate_laplacian_simplex_element.cpp index 86c387385707..092570463f15 100644 --- a/applications/SwimmingDEMApplication/custom_elements/calculate_laplacian_simplex_element.cpp +++ b/applications/SwimmingDEMApplication/custom_elements/calculate_laplacian_simplex_element.cpp @@ -17,7 +17,7 @@ void ComputeLaplacianSimplex::EquationIdVector(EquationIdVector { rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_LAPLACIAN_X,lappos).EquationId(); rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_LAPLACIAN_Y,lappos+1).EquationId(); - if (TDim == 3){ + if constexpr (TDim == 3){ rResult[LocalIndex++] = this->GetGeometry()[iNode].GetDof(VELOCITY_LAPLACIAN_Z,lappos+2).EquationId(); } } @@ -36,7 +36,7 @@ void ComputeLaplacianSimplex::GetDofList(DofsVectorType& rEleme { rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_LAPLACIAN_X); rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_LAPLACIAN_Y); - if (TDim == 3){ + if constexpr (TDim == 3){ rElementalDofList[LocalIndex++] = this->GetGeometry()[iNode].pGetDof(VELOCITY_LAPLACIAN_Z); } } diff --git a/applications/SwimmingDEMApplication/custom_utilities/binbased_DEM_fluid_coupled_mapping.h b/applications/SwimmingDEMApplication/custom_utilities/binbased_DEM_fluid_coupled_mapping.h index cf71bc038170..b6573590c4d3 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/binbased_DEM_fluid_coupled_mapping.h +++ b/applications/SwimmingDEMApplication/custom_utilities/binbased_DEM_fluid_coupled_mapping.h @@ -11,7 +11,7 @@ // System includes #include #include -#include +#include // Project includes #include "includes/define.h" @@ -157,7 +157,7 @@ BinBasedDEMFluidCoupledMapping(Parameters& rParameters, SpatialSearch::Pointer p mGentleCouplingInitiationInterval = rParameters["gentle_coupling_initiation"]["initiation_interval"].GetDouble(); mParticlesPerDepthDistance = rParameters["n_particles_per_depth_distance"].GetInt(); mpBodyForcePerUnitMassVariable = &( KratosComponents< Variable> >::Get(rParameters["body_force_per_unit_mass_variable_name"].GetString()) ); - if (TDim == 3){ + if constexpr (TDim == 3){ mParticlesPerDepthDistance = 1; } diff --git a/applications/SwimmingDEMApplication/custom_utilities/custom_functions.h b/applications/SwimmingDEMApplication/custom_utilities/custom_functions.h index 2d84be7da0c4..47fb4d23304f 100755 --- a/applications/SwimmingDEMApplication/custom_utilities/custom_functions.h +++ b/applications/SwimmingDEMApplication/custom_utilities/custom_functions.h @@ -599,7 +599,7 @@ double CalculateElementalVolume(const Geometry >& geom) { double vol; double h; - if (TDim == 2){ + if constexpr (TDim == 2){ double x0 = geom[0].X(); double y0 = geom[0].Y(); double x1 = geom[1].X(); diff --git a/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery.cpp b/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery.cpp index 7f2e77c13191..e0919033e005 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery.cpp +++ b/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery.cpp @@ -815,7 +815,7 @@ bool DerivativeRecovery::SetWeightsAndRunLeastSquaresTest(ModelPart& r_mod DenseMatrix A(n_nodal_neighs, n_poly_terms); for (unsigned int i = 0; i < n_nodal_neighs; ++i){ A(i, 0) = 1.0; - if (TDim == 3){ + if constexpr (TDim == 3){ Node<3>& neigh = neigh_nodes[i]; const array_1d rel_coordinates = (neigh.Coordinates() - origin) * h_inv; TestNodalValues(i, 0) = SecondDegreeTestPolynomial(rel_coordinates); diff --git a/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery.h b/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery.h index 6350117dd745..c475adfa0bd3 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery.h +++ b/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery.h @@ -11,7 +11,7 @@ // System includes #include #include -#include +#include // Project includes #include "includes/define.h" diff --git a/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery_meshing_tools.h b/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery_meshing_tools.h index 95029ecec8d3..f9f50540b980 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery_meshing_tools.h +++ b/applications/SwimmingDEMApplication/custom_utilities/derivative_recovery_meshing_tools.h @@ -16,7 +16,7 @@ // System includes #include #include -#include +#include #include "includes/model_part.h" diff --git a/applications/SwimmingDEMApplication/custom_utilities/embedded_volume_tool.h b/applications/SwimmingDEMApplication/custom_utilities/embedded_volume_tool.h index 62b715afb4da..cacc62f29a30 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/embedded_volume_tool.h +++ b/applications/SwimmingDEMApplication/custom_utilities/embedded_volume_tool.h @@ -12,7 +12,7 @@ // System includes #include #include -#include +#include // Project includes #include "includes/model_part.h" diff --git a/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function.h b/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function.h index 1fea73dbb225..425c77af68d7 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function.h +++ b/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function.h @@ -49,7 +49,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // System includes #include #include -#include +#include namespace Kratos { diff --git a/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function_normal.h b/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function_normal.h index ae0b9a2d4dd8..7b35239fb21c 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function_normal.h +++ b/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function_normal.h @@ -49,7 +49,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // System includes #include #include -#include +#include namespace Kratos { diff --git a/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function_polynomial.h b/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function_polynomial.h index 5bddd3459828..94cb11588f9f 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function_polynomial.h +++ b/applications/SwimmingDEMApplication/custom_utilities/mollification/density_function_polynomial.h @@ -49,7 +49,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // System includes #include #include -#include +#include #include "density_function.h" #include diff --git a/applications/SwimmingDEMApplication/custom_utilities/mollification/mollifier.h b/applications/SwimmingDEMApplication/custom_utilities/mollification/mollifier.h index b42bf07c901e..1e23b9229c3d 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/mollification/mollifier.h +++ b/applications/SwimmingDEMApplication/custom_utilities/mollification/mollifier.h @@ -3,7 +3,7 @@ // System includes #include #include -#include +#include #include "density_function.h" namespace Kratos diff --git a/applications/SwimmingDEMApplication/custom_utilities/particle_data.h b/applications/SwimmingDEMApplication/custom_utilities/particle_data.h index b5467bf91091..d66f1bfc0761 100755 --- a/applications/SwimmingDEMApplication/custom_utilities/particle_data.h +++ b/applications/SwimmingDEMApplication/custom_utilities/particle_data.h @@ -11,7 +11,7 @@ // System includes #include #include -#include +#include // External includes diff --git a/applications/SwimmingDEMApplication/custom_utilities/volume_averaging_tool.h b/applications/SwimmingDEMApplication/custom_utilities/volume_averaging_tool.h index 2955dc6b111a..5d0dfcc44edf 100644 --- a/applications/SwimmingDEMApplication/custom_utilities/volume_averaging_tool.h +++ b/applications/SwimmingDEMApplication/custom_utilities/volume_averaging_tool.h @@ -13,7 +13,7 @@ // System includes #include #include -#include +#include // Project includes diff --git a/applications/SwimmingDEMApplication/tests/drag_tests/chien_law/chien_drag_test_analysis.py b/applications/SwimmingDEMApplication/tests/drag_tests/chien_law/chien_drag_test_analysis.py index 937a3c6a358a..fc1c82b0f2b9 100644 --- a/applications/SwimmingDEMApplication/tests/drag_tests/chien_law/chien_drag_test_analysis.py +++ b/applications/SwimmingDEMApplication/tests/drag_tests/chien_law/chien_drag_test_analysis.py @@ -15,7 +15,7 @@ def FinalizeSolutionStep(self): super().FinalizeSolutionStep() def CheckValues(self, x_vel): - tol = 1.0e-18 + tol = 1.0e-12 x_vel_ref = 0.9886575480896711 #ChienDragLaw # Other results. diff --git a/applications/ThermalDEMApplication/CMakeLists.txt b/applications/ThermalDEMApplication/CMakeLists.txt index 8b88d883f375..ed752f66d5bd 100644 --- a/applications/ThermalDEMApplication/CMakeLists.txt +++ b/applications/ThermalDEMApplication/CMakeLists.txt @@ -62,8 +62,8 @@ set( KRATOS_THERMAL_DEM_APPLICATION_CORE_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/convection/nusselt_hanz_marshall.cpp ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/convection/nusselt_li_mason.cpp ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/convection/nusselt_whitaker.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/friction/friction_model.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/friction/friction_coulomb.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/generation/generation_model.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/generation/generation_dissipation.cpp ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/radiation/radiation_model.cpp ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/radiation/radiation_continuum_krause.cpp ${CMAKE_CURRENT_SOURCE_DIR}/custom_constitutive/radiation/radiation_continuum_zhou.cpp diff --git a/applications/ThermalDEMApplication/README.md b/applications/ThermalDEMApplication/README.md index f4eb49927aa5..de1d28bcea44 100644 --- a/applications/ThermalDEMApplication/README.md +++ b/applications/ThermalDEMApplication/README.md @@ -4,7 +4,7 @@ This application is an extension of the [DEM Application](https://github.com/Kra - Heat transfer between particle-particle, particle-rigid wall, and particle-surrounding fluid. - Heat transfer mechanisms by conduction, convection, and radiation. -- Heat generation by friction, collision, and internal sources. +- Heat generation by energy dissipation and internal sources. - Temperature dependent material properties. Theoretical information on thermal DEM analysis can be found [here](./ThermalDEMTheory.pdf). @@ -88,13 +88,13 @@ Add **thermal settings** with desired options: "compute_indirect_conduction" : true or false, "compute_convection" : true or false, "compute_radiation" : true or false, - "compute_friction_heat" : true or false, + "compute_heat_generation" : true or false, "compute_adjusted_contact" : true or false, "direct_conduction_model" : "batchelor_obrien_simple" or "batchelor_obrien_complete" or "batchelor_obrien_modified" or "thermal_pipe" or "collisional", "indirect_conduction_model" : "surrounding_layer" or "voronoi_a" or "voronoi_b" or "vargas_mccarthy", "nusselt_correlation" : "sphere_hanz_marshall" or "sphere_whitaker" or "sphere_gunn" or "sphere_li_mason", "radiation_model" : "continuum_zhou" or "continuum_krause", - "friction_model" : "coulomb", + "heat_generation_model" : ["sliding_friction","rolling_friction","contact_damping"], "adjusted_contact_model" : "zhou" or "lu" or "morris", "voronoi_method" : "tesselation" or "porosity", "porosity_method" : "global" or "average_convex_hull" or "average_alpha_shape", @@ -104,7 +104,7 @@ Add **thermal settings** with desired options: "fluid_layer_thickness" : 0.4, "isothermal_core_radius" : 0.5, "max_radiation_distance" : 2.0, - "friction_heat_conversion_ratio" : 1.0, + "heat_generation_ratio" : 1.0, "global_porosity" : 0.0, "alpha_shape_parameter" : 1.2, "integral_tolerance" : 0.000001, @@ -129,7 +129,9 @@ Add **post options** with desired options: "PostGraphParticleTempAvg" : true or false, "PostGraphParticleTempDev" : true or false, "PostGraphModelTempAvg" : true or false, - "PostGraphHeatFluxContributions" : true or false + "PostGraphHeatFluxContributions" : true or false, + "PostGraphHeatGenContributions" : true or false, + "PostGraphEnergyContributions" : true or false ### Materials (json file) @@ -245,8 +247,8 @@ Add **SubModelPartData** to sub model parts with desired options: Boolean for computing heat transfer between elements by radiation.\ Default: false -- *"compute_friction_heat"*:\ - Boolean for computing heat generation by friction between elements.\ +- *"compute_heat_generation"*:\ + Boolean for computing heat generation by energy dissipation between elements.\ Default: false - *"compute_adjusted_contact"*:\ @@ -269,9 +271,9 @@ Add **SubModelPartData** to sub model parts with desired options: Selected model for simulating heat transfer by radiation.\ Default: "continuum_zhou" -- *"friction_model"*:\ - Selected model for simulating heat generated by friction.\ - Default: "coulomb" +- *"heat_generation_model"*:\ + List of selected models for simulating heat generation by energy dissipation.\ + Default: ["sliding_friction"] - *"adjusted_contact_model"*:\ Selected model for adjusting contact geometry.\ @@ -309,8 +311,8 @@ Add **SubModelPartData** to sub model parts with desired options: Maximum distance for heat radiation (ratio of particles radii) required for all radiation models.\ Default: 2.0 -- *"friction_heat_conversion_ratio"*:\ - Ratio of the work done by frictional forces that is converted into heat.\ +- *"heat_generation_ratio"*:\ + Ratio of dissipated energy that is converted into heat.\ Default: 1.0 - *"global_porosity"*:\ @@ -393,6 +395,14 @@ Add **SubModelPartData** to sub model parts with desired options: Boolean for writing a graph with the contribution of each heat transfer mechanism to the total heat transfer.\ Default: false +- *"PostGraphHeatGenContributions"*:\ + Boolean for writing a graph with the contribution of each heat generation mechanism to the total heat generation.\ + Default: false + +- *"PostGraphEnergyContributions"*:\ + Boolean for writing a graph with the energy composition (conservative and accumulated dissipative components) of all partilces.\ + Default: false + **Material properties** - *"materials.Variables.THERMAL_CONDUCTIVITY"*:\ Thermal conductivity of material (always required). @@ -416,7 +426,7 @@ Add **SubModelPartData** to sub model parts with desired options: Points of the curve given by the table. - *"material_relations.Variables.DYNAMIC_FRICTION"*:\ - Dynamic friction coefficient between materials (required by frictional heat generation). + Dynamic friction coefficient between materials (required by heat generation by sliding friction). **SubModelPartData** - *TEMPERATURE*:\ diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_complete.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_complete.cpp index 7b374ad64bcb..38d6a1e53af3 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_complete.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_complete.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_complete.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_complete.h index 406a7d91a9e9..49be776d1707 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_complete.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_complete.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(DIRECT_CONDUCTION_MODEL_BOB_COMPLETE_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_modified.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_modified.cpp index 049f5f89d559..1dfecca043c1 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_modified.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_modified.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_modified.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_modified.h index 941e6305c438..90a29fd59876 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_modified.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_modified.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(DIRECT_CONDUCTION_MODEL_BOB_MODIFIED_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_simple.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_simple.cpp index 2401de6e1d3c..ba873227c59a 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_simple.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_simple.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_simple.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_simple.h index 1e2929abbddf..b225998e53db 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_simple.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_bob_simple.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(DIRECT_CONDUCTION_MODEL_BOB_SIMPLE_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_collision.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_collision.cpp index be4cfa588ae1..bcbca52df230 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_collision.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_collision.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_collision.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_collision.h index 63c8851b277a..44c9330ecdc1 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_collision.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_collision.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(DIRECT_CONDUCTION_MODEL_COLLISION_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_model.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_model.cpp index 115f363160dc..6c85cc2ea0af 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_model.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_model.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_model.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_model.h index 887aec3bd78d..77c566e5b3b5 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_model.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_model.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(DIRECT_CONDUCTION_MODEL_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_pipe.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_pipe.cpp index 19b455350d25..a14a02494ff0 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_pipe.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_pipe.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_pipe.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_pipe.h index a8cd943d3c76..b3c32787befd 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_pipe.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/direct_conduction_pipe.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(DIRECT_CONDUCTION_MODEL_PIPE_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_model.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_model.cpp index 7f7136f558a5..f382d140cf56 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_model.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_model.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_model.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_model.h index e415325df25c..7c9d5dc538de 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_model.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_model.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(INDIRECT_CONDUCTION_MODEL_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_surround_layer.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_surround_layer.cpp index 3746207ca238..d0780e133dbc 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_surround_layer.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_surround_layer.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_surround_layer.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_surround_layer.h index db9dbec7717d..6af900ea72c3 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_surround_layer.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_surround_layer.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(INDIRECT_CONDUCTION_MODEL_SURROUNDING_LAYER_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_vargas.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_vargas.cpp index 71784400f10e..cc5a0192aadb 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_vargas.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_vargas.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_vargas.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_vargas.h index daacf5984938..7eb5d4e2e0b4 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_vargas.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_vargas.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(INDIRECT_CONDUCTION_MODEL_VARGAS_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_a.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_a.cpp index 28c4cfd71c2b..2580b3728965 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_a.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_a.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_a.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_a.h index 307d28fd5107..feb3421b4bd6 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_a.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_a.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(INDIRECT_CONDUCTION_MODEL_VORONOI_A_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_b.cpp b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_b.cpp index dc40fc073bb2..04c8395749ed 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_b.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_b.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_b.h b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_b.h index 77fb81cd34aa..077534b93bef 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_b.h +++ b/applications/ThermalDEMApplication/custom_constitutive/conduction/indirect_conduction_voronoi_b.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(INDIRECT_CONDUCTION_MODEL_VORONOI_B_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/convection_model.cpp b/applications/ThermalDEMApplication/custom_constitutive/convection/convection_model.cpp index 481a174c26d3..b54b8c42adb6 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/convection_model.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/convection_model.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/convection_model.h b/applications/ThermalDEMApplication/custom_constitutive/convection/convection_model.h index 23eb0b0265b7..814af9d1d8d0 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/convection_model.h +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/convection_model.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(CONVECTION_MODEL_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_gunn.cpp b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_gunn.cpp index 4eb9be255460..d485c1df622b 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_gunn.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_gunn.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_gunn.h b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_gunn.h index b29eabd5ed77..7f38c34a252c 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_gunn.h +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_gunn.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(NUSSELT_NUMBER_GUNN_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_hanz_marshall.cpp b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_hanz_marshall.cpp index 53184e4bef91..8c20a5d0ec87 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_hanz_marshall.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_hanz_marshall.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_hanz_marshall.h b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_hanz_marshall.h index 26a18f01dfa2..8c872b979fdb 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_hanz_marshall.h +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_hanz_marshall.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(NUSSELT_NUMBER_HANZ_MARSHALL_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_li_mason.cpp b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_li_mason.cpp index e80a0677fc56..72d5eabc223a 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_li_mason.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_li_mason.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_li_mason.h b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_li_mason.h index db98ccf62e88..37102bf36cbf 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_li_mason.h +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_li_mason.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(NUSSELT_NUMBER_LI_MASON_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_whitaker.cpp b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_whitaker.cpp index 38fb7dbf3144..0ae09e4aa47d 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_whitaker.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_whitaker.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_whitaker.h b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_whitaker.h index b48f6776a3af..0d5b76a9bcce 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_whitaker.h +++ b/applications/ThermalDEMApplication/custom_constitutive/convection/nusselt_whitaker.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(NUSSELT_NUMBER_WHITAKER_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/friction/friction_coulomb.cpp b/applications/ThermalDEMApplication/custom_constitutive/friction/friction_coulomb.cpp deleted file mode 100644 index 001486a7b929..000000000000 --- a/applications/ThermalDEMApplication/custom_constitutive/friction/friction_coulomb.cpp +++ /dev/null @@ -1,63 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) -// - -// System includes - -// External includes - -// Project includes -#include "friction_coulomb.h" - -namespace Kratos { - //----------------------------------------------------------------------------------------------------------------------- - FrictionCoulomb::FrictionCoulomb() {} - FrictionCoulomb::~FrictionCoulomb() {} - - //------------------------------------------------------------------------------------------------------------ - double FrictionCoulomb::ComputeHeatGeneration(const ProcessInfo& r_process_info, ThermalSphericParticle* particle) { - KRATOS_TRY - - // Check for contact - if (!particle->mNeighborInContact) - return 0.0; - - typename ThermalSphericParticle:: ContactParams contact_params = particle->GetContactParameters(); - const double velocity_tangent = contact_params.local_velocity[1]; - const double force_normal = contact_params.local_force[0]; - - if (velocity_tangent == 0 || force_normal == 0) - return 0.0; - - const double friction_conversion = r_process_info[FRICTION_HEAT_CONVERSION]; - const double friction_coeff = particle->GetContactDynamicFrictionCoefficient(); - - // Partition coefficient - const double partition = ComputePartitionCoeff(particle); - - // Compute frictional heat transfer - return partition * friction_conversion * friction_coeff * fabs(velocity_tangent * force_normal); - - KRATOS_CATCH("") - } - - //------------------------------------------------------------------------------------------------------------ - double FrictionCoulomb::ComputePartitionCoeff(ThermalSphericParticle* particle) { - KRATOS_TRY - - const double k1 = particle->GetParticleConductivity(); - const double k2 = particle->GetNeighborConductivity(); - return k1 / (k1 + k2); - - KRATOS_CATCH("") - } - -} // namespace Kratos diff --git a/applications/ThermalDEMApplication/custom_constitutive/friction/friction_model.cpp b/applications/ThermalDEMApplication/custom_constitutive/friction/friction_model.cpp deleted file mode 100644 index 2ea59d09b5f3..000000000000 --- a/applications/ThermalDEMApplication/custom_constitutive/friction/friction_model.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application -// -// License: BSD License -// Kratos default license: kratos/license.txt -// -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) -// - -// System includes - -// External includes - -// Project includes -#include "friction_model.h" - -namespace Kratos { - //----------------------------------------------------------------------------------------------------------------------- - FrictionModel::FrictionModel() {} - FrictionModel::~FrictionModel() {} - - //------------------------------------------------------------------------------------------------------------ - void FrictionModel::SetHeatGenerationMechanismInProperties(Properties::Pointer pProp, bool verbose) const { - pProp->SetValue(FRICTION_MODEL_POINTER, this->CloneShared()); - } - - //------------------------------------------------------------------------------------------------------------ - double FrictionModel::ComputeHeatGeneration(const ProcessInfo& r_process_info, ThermalSphericParticle* particle) { - return 0.0; - } - - //------------------------------------------------------------------------------------------------------------ - double FrictionModel::ComputePartitionCoeff(ThermalSphericParticle* particle) { - return 0.0; - } - -} // namespace Kratos diff --git a/applications/ThermalDEMApplication/custom_constitutive/generation/generation_dissipation.cpp b/applications/ThermalDEMApplication/custom_constitutive/generation/generation_dissipation.cpp new file mode 100644 index 000000000000..575e2d8aae92 --- /dev/null +++ b/applications/ThermalDEMApplication/custom_constitutive/generation/generation_dissipation.cpp @@ -0,0 +1,125 @@ +// Kratos Multi-Physics - ThermalDEM Application +// +// License: BSD License +// Kratos default license: kratos/license.txt +// +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// + +// System includes + +// External includes + +// Project includes +#include "generation_dissipation.h" + +namespace Kratos { + //----------------------------------------------------------------------------------------------------------------------- + GenerationDissipation::GenerationDissipation() {} + GenerationDissipation::~GenerationDissipation() {} + + //------------------------------------------------------------------------------------------------------------ + double GenerationDissipation::ComputeHeatGeneration(const ProcessInfo& r_process_info, ThermalSphericParticle* particle) { + KRATOS_TRY + + // Check for contact + if (!particle->mNeighborInContact) + return 0.0; + + // Get contact info with current neighbor + typename ThermalSphericParticle::ContactParams contact_params = particle->GetContactParameters(); + + // Time passed since last thermal solution + double time = particle->mNumStepsEval * r_process_info[DELTA_TIME]; + + // Conversion and partition coefficients + const double conversion = r_process_info[HEAT_GENERATION_RATIO]; + const double partition = ComputePartitionCoeff(particle); + + // Initialize contribution from different sources of energy dissipation + double heat_gen_damping = 0.0; + double heat_gen_sliding = 0.0; + double heat_gen_rolling = 0.0; + + // Damping + if (r_process_info[GENERATION_DAMPING_OPTION]) { + if (particle->mNeighborType & PARTICLE_NEIGHBOR) { + // Thermal energy + // (energy multiplied by 2 as it was calculated by equally splitting the energy with neighbor) + heat_gen_damping = 2.0 * partition * conversion * contact_params.viscodamping_energy; + particle->mThermalViscodampingEnergy += heat_gen_damping; + + // Convert thermal energy to power + heat_gen_damping /= time; + particle->mGenerationHeatFlux_damp_particle += heat_gen_damping; + } + else if (particle->mNeighborType & WALL_NEIGHBOR) { + // Thermal energy + // (energy was calculated by assuming that it goes entirely to the particle) + heat_gen_damping = partition * conversion * contact_params.viscodamping_energy; + particle->mThermalViscodampingEnergy += heat_gen_damping; + + // Convert thermal energy to power + heat_gen_damping /= time; + particle->mGenerationHeatFlux_damp_wall += heat_gen_damping; + } + } + + // Sliding friction + if (r_process_info[GENERATION_SLIDING_OPTION]) { + if (particle->mNeighborType & PARTICLE_NEIGHBOR) { + // Thermal energy + // (multiplied by 2 as it was calculated by equally splitting the energy with neighbor) + heat_gen_sliding = 2.0 * partition * conversion * contact_params.frictional_energy; + particle->mThermalFrictionalEnergy += heat_gen_sliding; + + // Convert thermal energy to power + heat_gen_sliding /= time; + particle->mGenerationHeatFlux_slid_particle += heat_gen_sliding; + } + else if (particle->mNeighborType & WALL_NEIGHBOR) { + // Thermal energy + // (energy was calculated by assuming that it goes entirely to the particle) + heat_gen_sliding = partition * conversion * contact_params.frictional_energy; + particle->mThermalFrictionalEnergy += heat_gen_sliding; + + // Convert thermal energy to power + heat_gen_sliding /= time; + particle->mGenerationHeatFlux_slid_wall += heat_gen_sliding; + } + } + + // Rolling friction + if (r_process_info[GENERATION_ROLLING_OPTION] && particle->Is(DEMFlags::HAS_ROTATION) && particle->Is(DEMFlags::HAS_ROLLING_FRICTION)) { + // Thermal energy + heat_gen_rolling = conversion * contact_params.rollresist_energy; + particle->mThermalRollResistEnergy += heat_gen_rolling; + + // Convert thermal energy to power + heat_gen_rolling /= time; + + if (particle->mNeighborType & PARTICLE_NEIGHBOR) { + particle->mGenerationHeatFlux_roll_particle += heat_gen_rolling; + } + else if (particle->mNeighborType & WALL_NEIGHBOR) { + particle->mGenerationHeatFlux_roll_wall += heat_gen_rolling; + } + } + + return heat_gen_damping + heat_gen_sliding + heat_gen_rolling; + + KRATOS_CATCH("") + } + + //------------------------------------------------------------------------------------------------------------ + double GenerationDissipation::ComputePartitionCoeff(ThermalSphericParticle* particle) { + KRATOS_TRY + + const double k1 = particle->GetParticleConductivity(); + const double k2 = particle->GetNeighborConductivity(); + return k1 / (k1 + k2); + + KRATOS_CATCH("") + } + +} // namespace Kratos diff --git a/applications/ThermalDEMApplication/custom_constitutive/friction/friction_coulomb.h b/applications/ThermalDEMApplication/custom_constitutive/generation/generation_dissipation.h similarity index 52% rename from applications/ThermalDEMApplication/custom_constitutive/friction/friction_coulomb.h rename to applications/ThermalDEMApplication/custom_constitutive/generation/generation_dissipation.h index 3c813ee96544..d46ceb06f4ba 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/friction/friction_coulomb.h +++ b/applications/ThermalDEMApplication/custom_constitutive/generation/generation_dissipation.h @@ -1,81 +1,77 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // -#if !defined(FRICTION_MODEL_COULOMB_H_INCLUDED) -#define FRICTION_MODEL_COULOMB_H_INCLUDED +#if !defined(GENERATION_MODEL_DISSIPATION_H_INCLUDED) +#define GENERATION_MODEL_DISSIPATION_H_INCLUDED // System includes // External includes // Project includes -#include "friction_model.h" +#include "generation_model.h" namespace Kratos { - class KRATOS_API(THERMAL_DEM_APPLICATION) FrictionCoulomb : public FrictionModel + class KRATOS_API(THERMAL_DEM_APPLICATION) GenerationDissipation : public GenerationModel { public: // Pointer definition - KRATOS_CLASS_POINTER_DEFINITION(FrictionCoulomb); + KRATOS_CLASS_POINTER_DEFINITION(GenerationDissipation); // Constructor / Destructor - FrictionCoulomb(); - virtual ~FrictionCoulomb(); + GenerationDissipation(); + virtual ~GenerationDissipation(); // Public methods double ComputeHeatGeneration (const ProcessInfo& r_process_info, ThermalSphericParticle* particle) override; - double ComputePartitionCoeff (ThermalSphericParticle* particle) override; + double ComputePartitionCoeff (ThermalSphericParticle* particle); // Clone HeatGenerationMechanism* CloneRaw() const override { - HeatGenerationMechanism* cloned_model(new FrictionCoulomb(*this)); + HeatGenerationMechanism* cloned_model(new GenerationDissipation(*this)); return cloned_model; } HeatGenerationMechanism::Pointer CloneShared() const override { - HeatGenerationMechanism::Pointer cloned_model(new FrictionCoulomb(*this)); + HeatGenerationMechanism::Pointer cloned_model(new GenerationDissipation(*this)); return cloned_model; } // Turn back information as a string virtual std::string Info() const override { std::stringstream buffer; - buffer << "FrictionCoulomb"; + buffer << "GenerationDissipation"; return buffer.str(); } // Print object information - virtual void PrintInfo(std::ostream& rOStream) const override { rOStream << "FrictionCoulomb"; } + virtual void PrintInfo(std::ostream& rOStream) const override { rOStream << "GenerationDissipation"; } virtual void PrintData(std::ostream& rOStream) const override {} private: // Assignment operator / Copy constructor - FrictionCoulomb& operator=(FrictionCoulomb const& rOther) {return *this;} - FrictionCoulomb(FrictionCoulomb const& rOther) {*this = rOther;} + GenerationDissipation& operator=(GenerationDissipation const& rOther) {return *this;} + GenerationDissipation(GenerationDissipation const& rOther) {*this = rOther;} - }; // Class FrictionCoulomb + }; // Class GenerationDissipation // input stream function inline std::istream& operator>>(std::istream& rIStream, - FrictionCoulomb& rThis) { + GenerationDissipation& rThis) { return rIStream; } // output stream function inline std::ostream& operator<<(std::ostream& rOStream, - const FrictionCoulomb& rThis) { + const GenerationDissipation& rThis) { rThis.PrintInfo(rOStream); rOStream << std::endl; rThis.PrintData(rOStream); @@ -84,4 +80,4 @@ namespace Kratos } // namespace Kratos -#endif // FRICTION_MODEL_COULOMB_H_INCLUDED +#endif // GENERATION_MODEL_DISSIPATION_H_INCLUDED diff --git a/applications/ThermalDEMApplication/custom_constitutive/generation/generation_model.cpp b/applications/ThermalDEMApplication/custom_constitutive/generation/generation_model.cpp new file mode 100644 index 000000000000..b7af382bd881 --- /dev/null +++ b/applications/ThermalDEMApplication/custom_constitutive/generation/generation_model.cpp @@ -0,0 +1,31 @@ +// Kratos Multi-Physics - ThermalDEM Application +// +// License: BSD License +// Kratos default license: kratos/license.txt +// +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// + +// System includes + +// External includes + +// Project includes +#include "generation_model.h" + +namespace Kratos { + //----------------------------------------------------------------------------------------------------------------------- + GenerationModel::GenerationModel() {} + GenerationModel::~GenerationModel() {} + + //------------------------------------------------------------------------------------------------------------ + void GenerationModel::SetHeatGenerationMechanismInProperties(Properties::Pointer pProp, bool verbose) const { + pProp->SetValue(GENERATION_MODEL_POINTER, this->CloneShared()); + } + + //------------------------------------------------------------------------------------------------------------ + double GenerationModel::ComputeHeatGeneration(const ProcessInfo& r_process_info, ThermalSphericParticle* particle) { + return 0.0; + } + +} // namespace Kratos diff --git a/applications/ThermalDEMApplication/custom_constitutive/friction/friction_model.h b/applications/ThermalDEMApplication/custom_constitutive/generation/generation_model.h similarity index 55% rename from applications/ThermalDEMApplication/custom_constitutive/friction/friction_model.h rename to applications/ThermalDEMApplication/custom_constitutive/generation/generation_model.h index d8858bb4584f..2f7b58feb0b0 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/friction/friction_model.h +++ b/applications/ThermalDEMApplication/custom_constitutive/generation/generation_model.h @@ -1,17 +1,13 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // -#if !defined(FRICTION_MODEL_H_INCLUDED) -#define FRICTION_MODEL_H_INCLUDED +#if !defined(GENERATION_MODEL_H_INCLUDED) +#define GENERATION_MODEL_H_INCLUDED // System includes @@ -23,61 +19,60 @@ namespace Kratos { - class KRATOS_API(THERMAL_DEM_APPLICATION) FrictionModel : public HeatGenerationMechanism + class KRATOS_API(THERMAL_DEM_APPLICATION) GenerationModel : public HeatGenerationMechanism { public: // Pointer definition - KRATOS_CLASS_POINTER_DEFINITION(FrictionModel); + KRATOS_CLASS_POINTER_DEFINITION(GenerationModel); // Constructor / Destructor - FrictionModel(); - virtual ~FrictionModel(); + GenerationModel(); + virtual ~GenerationModel(); // Public methods void SetHeatGenerationMechanismInProperties (Properties::Pointer pProp, bool verbose = true) const override; double ComputeHeatGeneration (const ProcessInfo& r_process_info, ThermalSphericParticle* particle) override; - virtual double ComputePartitionCoeff (ThermalSphericParticle* particle); // Clone HeatGenerationMechanism* CloneRaw() const override { - HeatGenerationMechanism* cloned_model(new FrictionModel(*this)); + HeatGenerationMechanism* cloned_model(new GenerationModel(*this)); return cloned_model; } HeatGenerationMechanism::Pointer CloneShared() const override { - HeatGenerationMechanism::Pointer cloned_model(new FrictionModel(*this)); + HeatGenerationMechanism::Pointer cloned_model(new GenerationModel(*this)); return cloned_model; } // Turn back information as a string virtual std::string Info() const override { std::stringstream buffer; - buffer << "FrictionModel"; + buffer << "GenerationModel"; return buffer.str(); } // Print object information - virtual void PrintInfo(std::ostream& rOStream) const override { rOStream << "FrictionModel"; } + virtual void PrintInfo(std::ostream& rOStream) const override { rOStream << "GenerationModel"; } virtual void PrintData(std::ostream& rOStream) const override {} private: // Assignment operator / Copy constructor - FrictionModel& operator=(FrictionModel const& rOther) {return *this;} - FrictionModel(FrictionModel const& rOther) {*this = rOther;} + GenerationModel& operator=(GenerationModel const& rOther) {return *this;} + GenerationModel(GenerationModel const& rOther) {*this = rOther;} - }; // Class FrictionModel + }; // Class GenerationModel // input stream function inline std::istream& operator>>(std::istream& rIStream, - FrictionModel& rThis) { + GenerationModel& rThis) { return rIStream; } // output stream function inline std::ostream& operator<<(std::ostream& rOStream, - const FrictionModel& rThis) { + const GenerationModel& rThis) { rThis.PrintInfo(rOStream); rOStream << std::endl; rThis.PrintData(rOStream); @@ -86,4 +81,4 @@ namespace Kratos } // namespace Kratos -#endif // FRICTION_MODEL_H_INCLUDED +#endif // GENERATION_MODEL_H_INCLUDED diff --git a/applications/ThermalDEMApplication/custom_constitutive/heat_exchange_mechanism.cpp b/applications/ThermalDEMApplication/custom_constitutive/heat_exchange_mechanism.cpp index 45946198d1af..5c0b68ab5b7f 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/heat_exchange_mechanism.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/heat_exchange_mechanism.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/heat_exchange_mechanism.h b/applications/ThermalDEMApplication/custom_constitutive/heat_exchange_mechanism.h index e820325c1886..b245e5d025c7 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/heat_exchange_mechanism.h +++ b/applications/ThermalDEMApplication/custom_constitutive/heat_exchange_mechanism.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(HEAT_EXCHANGE_MECHANISM_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/heat_generation_mechanism.cpp b/applications/ThermalDEMApplication/custom_constitutive/heat_generation_mechanism.cpp index c13e3f51a2dc..8d7771fb5266 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/heat_generation_mechanism.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/heat_generation_mechanism.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/heat_generation_mechanism.h b/applications/ThermalDEMApplication/custom_constitutive/heat_generation_mechanism.h index dabaff345f9f..dcc08e04782d 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/heat_generation_mechanism.h +++ b/applications/ThermalDEMApplication/custom_constitutive/heat_generation_mechanism.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(HEAT_GENERATION_MECHANISM_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_krause.cpp b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_krause.cpp index c7046197b1cb..0260fbbea69c 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_krause.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_krause.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_krause.h b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_krause.h index ded200b51479..d8d23d9b7817 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_krause.h +++ b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_krause.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(RADIATION_MODEL_CONTINUUM_KRAUSE_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_zhou.cpp b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_zhou.cpp index e572f5001f92..867700a22d19 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_zhou.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_zhou.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_zhou.h b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_zhou.h index a2e0e48ac6e0..fb818795d6ae 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_zhou.h +++ b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_continuum_zhou.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(RADIATION_MODEL_CONTINUUM_ZHOU_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_model.cpp b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_model.cpp index 15a2f236a868..afbbd695d4d3 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_model.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_model.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_model.h b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_model.h index 30463c2c9180..5372dc854b99 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_model.h +++ b/applications/ThermalDEMApplication/custom_constitutive/radiation/radiation_model.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(RADIATION_MODEL_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_lu.cpp b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_lu.cpp index f1f04d123c03..bc52c031ed78 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_lu.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_lu.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_lu.h b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_lu.h index b8ef6e23b380..b8fedfcd549c 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_lu.h +++ b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_lu.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(REAL_CONTACT_MODEL_LU_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_model.cpp b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_model.cpp index 8ada64c7ae4e..309205d6154e 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_model.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_model.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_model.h b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_model.h index 6ddd791b2a38..b9ebc242aae9 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_model.h +++ b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_model.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(REAL_CONTACT_MODEL_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_morris.cpp b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_morris.cpp index 8ad86a9828b8..625e507d209d 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_morris.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_morris.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_morris.h b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_morris.h index 14c0c9e10190..93d0de523c42 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_morris.h +++ b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_morris.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(REAL_CONTACT_MODEL_MORRIS_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_zhou.cpp b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_zhou.cpp index e4445f09822f..9206cd46ff62 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_zhou.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_zhou.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_zhou.h b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_zhou.h index 16d9095ff6eb..7dc9cdb9a871 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_zhou.h +++ b/applications/ThermalDEMApplication/custom_constitutive/real_contact/real_contact_zhou.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(REAL_CONTACT_MODEL_ZHOU_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_constitutive/sintering_continuum.cpp b/applications/ThermalDEMApplication/custom_constitutive/sintering_continuum.cpp index 4856e0bd9397..ec52001384d1 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/sintering_continuum.cpp +++ b/applications/ThermalDEMApplication/custom_constitutive/sintering_continuum.cpp @@ -1,14 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Szymon Nosewicz (IPPT PAN, Warsaw, Poland) -// Miguel Angel Celigueta (CIMNE, maceli@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_constitutive/sintering_continuum.h b/applications/ThermalDEMApplication/custom_constitutive/sintering_continuum.h index abf796da742f..080ec82efff0 100644 --- a/applications/ThermalDEMApplication/custom_constitutive/sintering_continuum.h +++ b/applications/ThermalDEMApplication/custom_constitutive/sintering_continuum.h @@ -1,14 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Szymon Nosewicz (IPPT PAN, Warsaw, Poland) -// Miguel Angel Celigueta (CIMNE, maceli@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // /* diff --git a/applications/ThermalDEMApplication/custom_elements/sintering_spheric_continuum_particle.cpp b/applications/ThermalDEMApplication/custom_elements/sintering_spheric_continuum_particle.cpp index 2941da0b08ee..0b94871345ca 100644 --- a/applications/ThermalDEMApplication/custom_elements/sintering_spheric_continuum_particle.cpp +++ b/applications/ThermalDEMApplication/custom_elements/sintering_spheric_continuum_particle.cpp @@ -1,14 +1,10 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Szymon Nosewicz (IPPT PAN, Warsaw, Poland) -// Miguel Angel Celigueta (CIMNE, maceli@cimne.upc.edu) +// Main authors: Szymon Nosewicz (IPPT PAN, Warsaw, Poland) +// Miguel Angel Celigueta (CIMNE, maceli@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_elements/sintering_spheric_continuum_particle.h b/applications/ThermalDEMApplication/custom_elements/sintering_spheric_continuum_particle.h index 234c8971c0da..3d7c6154a85c 100644 --- a/applications/ThermalDEMApplication/custom_elements/sintering_spheric_continuum_particle.h +++ b/applications/ThermalDEMApplication/custom_elements/sintering_spheric_continuum_particle.h @@ -1,14 +1,10 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Szymon Nosewicz (IPPT PAN, Warsaw, Poland) -// Miguel Angel Celigueta (CIMNE, maceli@cimne.upc.edu) +// Main authors: Szymon Nosewicz (IPPT PAN, Warsaw, Poland) +// Miguel Angel Celigueta (CIMNE, maceli@cimne.upc.edu) // /* diff --git a/applications/ThermalDEMApplication/custom_elements/thermal_spheric_continuum_particle.cpp b/applications/ThermalDEMApplication/custom_elements/thermal_spheric_continuum_particle.cpp index c4796de33f1b..92dfd799d687 100644 --- a/applications/ThermalDEMApplication/custom_elements/thermal_spheric_continuum_particle.cpp +++ b/applications/ThermalDEMApplication/custom_elements/thermal_spheric_continuum_particle.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Ferran Arrufat +// Main authors: Ferran Arrufat // // System includes diff --git a/applications/ThermalDEMApplication/custom_elements/thermal_spheric_continuum_particle.h b/applications/ThermalDEMApplication/custom_elements/thermal_spheric_continuum_particle.h index c1cc71caa572..24f29f4f5601 100644 --- a/applications/ThermalDEMApplication/custom_elements/thermal_spheric_continuum_particle.h +++ b/applications/ThermalDEMApplication/custom_elements/thermal_spheric_continuum_particle.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Ferran Arrufat +// Main authors: Ferran Arrufat // /* diff --git a/applications/ThermalDEMApplication/custom_elements/thermal_spheric_particle.cpp b/applications/ThermalDEMApplication/custom_elements/thermal_spheric_particle.cpp index 4de2cb3b0198..f57be5a7ddbf 100644 --- a/applications/ThermalDEMApplication/custom_elements/thermal_spheric_particle.cpp +++ b/applications/ThermalDEMApplication/custom_elements/thermal_spheric_particle.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // /* @@ -36,7 +32,7 @@ namespace Kratos mpIndirectConductionModel = NULL; mpConvectionModel = NULL; mpRadiationModel = NULL; - mpFrictionModel = NULL; + mpGenerationModel = NULL; mpRealContactModel = NULL; } @@ -47,7 +43,7 @@ namespace Kratos mpIndirectConductionModel = NULL; mpConvectionModel = NULL; mpRadiationModel = NULL; - mpFrictionModel = NULL; + mpGenerationModel = NULL; mpRealContactModel = NULL; } @@ -58,7 +54,7 @@ namespace Kratos mpIndirectConductionModel = NULL; mpConvectionModel = NULL; mpRadiationModel = NULL; - mpFrictionModel = NULL; + mpGenerationModel = NULL; mpRealContactModel = NULL; } @@ -69,7 +65,7 @@ namespace Kratos mpIndirectConductionModel = NULL; mpConvectionModel = NULL; mpRadiationModel = NULL; - mpFrictionModel = NULL; + mpGenerationModel = NULL; mpRealContactModel = NULL; } @@ -102,9 +98,9 @@ namespace Kratos delete mpRadiationModel; mpRadiationModel = NULL; } - if (mpFrictionModel != NULL) { - delete mpFrictionModel; - mpFrictionModel = NULL; + if (mpGenerationModel != NULL) { + delete mpGenerationModel; + mpGenerationModel = NULL; } if (mpRealContactModel != NULL) { delete mpRealContactModel; @@ -119,29 +115,20 @@ namespace Kratos void ThermalSphericParticle::Initialize(const ProcessInfo& r_process_info) { KRATOS_TRY + Properties& r_properties = GetProperties(); + // Initialize base class SphericParticle::Initialize(r_process_info); - // Set flags - mHasMotion = r_process_info[MOTION_OPTION]; - - if ((GetProperties().Has(THERMAL_EXPANSION_COEFFICIENT) && GetProperties()[THERMAL_EXPANSION_COEFFICIENT] != 0.0) || - GetProperties().HasTable(TEMPERATURE, THERMAL_EXPANSION_COEFFICIENT)) { - mHasVariableRadius = true; - } - else { - mHasVariableRadius = false; - } - // Set pointers to to auxiliary objects - ThermalDEMIntegrationScheme::Pointer& thermal_integration_scheme = GetProperties()[THERMAL_INTEGRATION_SCHEME_POINTER]; - NumericalIntegrationMethod::Pointer& numerical_integration_method = GetProperties()[NUMERICAL_INTEGRATION_METHOD_POINTER]; - HeatExchangeMechanism::Pointer& direct_conduction_model = GetProperties()[DIRECT_CONDUCTION_MODEL_POINTER]; - HeatExchangeMechanism::Pointer& indirect_conduction_model = GetProperties()[INDIRECT_CONDUCTION_MODEL_POINTER]; - HeatExchangeMechanism::Pointer& convection_model = GetProperties()[CONVECTION_MODEL_POINTER]; - HeatExchangeMechanism::Pointer& radiation_model = GetProperties()[RADIATION_MODEL_POINTER]; - HeatGenerationMechanism::Pointer& friction_model = GetProperties()[FRICTION_MODEL_POINTER]; - RealContactModel::Pointer& real_contact_model = GetProperties()[REAL_CONTACT_MODEL_POINTER]; + ThermalDEMIntegrationScheme::Pointer& thermal_integration_scheme = r_properties[THERMAL_INTEGRATION_SCHEME_POINTER]; + NumericalIntegrationMethod::Pointer& numerical_integration_method = r_properties[NUMERICAL_INTEGRATION_METHOD_POINTER]; + HeatExchangeMechanism::Pointer& direct_conduction_model = r_properties[DIRECT_CONDUCTION_MODEL_POINTER]; + HeatExchangeMechanism::Pointer& indirect_conduction_model = r_properties[INDIRECT_CONDUCTION_MODEL_POINTER]; + HeatExchangeMechanism::Pointer& convection_model = r_properties[CONVECTION_MODEL_POINTER]; + HeatExchangeMechanism::Pointer& radiation_model = r_properties[RADIATION_MODEL_POINTER]; + HeatGenerationMechanism::Pointer& generation_model = r_properties[GENERATION_MODEL_POINTER]; + RealContactModel::Pointer& real_contact_model = r_properties[REAL_CONTACT_MODEL_POINTER]; SetThermalIntegrationScheme(thermal_integration_scheme); SetNumericalIntegrationMethod(numerical_integration_method); @@ -149,18 +136,38 @@ namespace Kratos SetIndirectConductionModel(indirect_conduction_model); SetConvectionModel(convection_model); SetRadiationModel(radiation_model); - SetFrictionModel(friction_model); + SetGenerationModel(generation_model); SetRealContactModel(real_contact_model); + // Set flags + mHasMotion = r_process_info[MOTION_OPTION]; + + if ((r_properties.Has(THERMAL_EXPANSION_COEFFICIENT) && r_properties[THERMAL_EXPANSION_COEFFICIENT] != 0.0) || + r_properties.HasTable(TEMPERATURE, THERMAL_EXPANSION_COEFFICIENT)) { + mHasVariableRadius = true; + } + else { + mHasVariableRadius = false; + } + // Set flag to store contact parameters during mechanical loop over neighbors mStoreContactParam = mHasMotion && - (r_process_info[FRICTION_HEAT_OPTION] || + (r_process_info[HEAT_GENERATION_OPTION] || (r_process_info[DIRECT_CONDUCTION_OPTION] && r_process_info[DIRECT_CONDUCTION_MODEL_NAME].compare("collisional") == 0)); - + // Clear maps mContactParamsParticle.clear(); mContactParamsWall.clear(); + // Initialze accumulated energy dissipations + mThermalViscodampingEnergy = 0.0; + mThermalFrictionalEnergy = 0.0; + mThermalRollResistEnergy = 0.0; + mPreviousViscodampingEnergy = 0.0; + mPreviousFrictionalEnergy = 0.0; + mPreviousRollResistEnergy = 0.0; + mPreviousRollResistCoeff = 0.0; + KRATOS_CATCH("") } @@ -178,7 +185,7 @@ namespace Kratos mIsTimeToSolve = (step > 0) && (freq != 0) && (step - 1) % freq == 0; // Number of steps passed between thermal evaluation steps - mNumStepsEval = (r_process_info[TIME_STEPS] == 1) ? 1 : r_process_info[THERMAL_FREQUENCY]; + mNumStepsEval = (step == 1) ? 1 : freq; // Save pre-step temperature mPreviousTemperature = GetParticleTemperature(); @@ -195,13 +202,19 @@ namespace Kratos KRATOS_TRY // Initialize heat fluxes contributions - mConductionDirectHeatFlux = 0.0; - mConductionIndirectHeatFlux = 0.0; - mRadiationHeatFlux = 0.0; - mFrictionHeatFlux = 0.0; - mConvectionHeatFlux = 0.0; - mPrescribedHeatFlux = 0.0; - mTotalHeatFlux = 0.0; + mConductionDirectHeatFlux = 0.0; + mConductionIndirectHeatFlux = 0.0; + mConvectionHeatFlux = 0.0; + mRadiationHeatFlux = 0.0; + mGenerationHeatFlux = 0.0; + mGenerationHeatFlux_damp_particle = 0.0; + mGenerationHeatFlux_damp_wall = 0.0; + mGenerationHeatFlux_slid_particle = 0.0; + mGenerationHeatFlux_slid_wall = 0.0; + mGenerationHeatFlux_roll_particle = 0.0; + mGenerationHeatFlux_roll_wall = 0.0; + mPrescribedHeatFlux = 0.0; + mTotalHeatFlux = 0.0; // Initialize environment-related variables for radiation if (r_process_info[RADIATION_OPTION]) { @@ -280,7 +293,7 @@ namespace Kratos if (r_process_info[RADIATION_OPTION]) mRadiationHeatFlux += GetRadiationModel().FinalizeHeatFlux(r_process_info, this); - // Compute convection with surrounding fluid + // Convection with surrounding fluid if (r_process_info[CONVECTION_OPTION]) mConvectionHeatFlux += GetConvectionModel().ComputeHeatFlux(r_process_info, this); @@ -293,7 +306,7 @@ namespace Kratos mPrescribedHeatFlux += mPrescribedHeatFluxVolume * GetParticleVolume(); // Sum up heat fluxes contributions - mTotalHeatFlux = mConductionDirectHeatFlux + mConductionIndirectHeatFlux + mRadiationHeatFlux + mFrictionHeatFlux + mConvectionHeatFlux + mPrescribedHeatFlux; + mTotalHeatFlux = mConductionDirectHeatFlux + mConductionIndirectHeatFlux + mRadiationHeatFlux + mConvectionHeatFlux + mGenerationHeatFlux + mPrescribedHeatFlux; SetParticleHeatFlux(mTotalHeatFlux); KRATOS_CATCH("") @@ -303,13 +316,19 @@ namespace Kratos void ThermalSphericParticle::ComputeHeatFluxWithNeighbor(const ProcessInfo& r_process_info) { KRATOS_TRY + // Compute simulated or adjusted interaction properties + ComputeInteractionProps(r_process_info); + + // Heat generation + // ASSUMPTION: Heat is generated even when neighbor is adiabatic + if (r_process_info[HEAT_GENERATION_OPTION] && mHasMotion) { + mGenerationHeatFlux += GetGenerationModel().ComputeHeatGeneration(r_process_info, this); + } + // Check if neighbor is adiabatic if (CheckAdiabaticNeighbor()) return; - // Compute simulated or adjusted interaction properties - ComputeInteractionProps(r_process_info); - // Heat transfer mechanisms if (r_process_info[DIRECT_CONDUCTION_OPTION]) mConductionDirectHeatFlux += GetDirectConductionModel().ComputeHeatFlux(r_process_info, this); @@ -320,9 +339,6 @@ namespace Kratos if (r_process_info[RADIATION_OPTION]) mRadiationHeatFlux += GetRadiationModel().ComputeHeatFlux(r_process_info, this); - if (r_process_info[FRICTION_HEAT_OPTION] && mHasMotion) - mFrictionHeatFlux += GetFrictionModel().ComputeHeatGeneration(r_process_info, this); - KRATOS_CATCH("") } @@ -350,98 +366,154 @@ namespace Kratos } //------------------------------------------------------------------------------------------------------------ - void ThermalSphericParticle::StoreBallToBallContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, SphericParticle* neighbor, double GlobalContactForce[3], bool sliding) { + void ThermalSphericParticle::StoreBallToBallContactInfo(const ProcessInfo& r_process_info, + SphericParticle::ParticleDataBuffer& data_buffer, + double GlobalContactForceTotal[3], + double LocalContactForceTotal[3], + double LocalContactForceDamping[3], + bool sliding) { KRATOS_TRY - SphericParticle::StoreBallToBallContactInfo(r_process_info, data_buffer, neighbor, GlobalContactForce, sliding); + SphericParticle::StoreBallToBallContactInfo(r_process_info, data_buffer, GlobalContactForceTotal, LocalContactForceTotal, LocalContactForceDamping, sliding); if (!mStoreContactParam) return; // Increment number of contact particle neighbors + SphericParticle* neighbor = data_buffer.mpOtherParticle; mNumberOfContactParticleNeighbor++; - // Local relavive velocity components (normal and tangential) - std::vector LocalRelativeVelocity{ data_buffer.mLocalRelVel[2], sqrt(data_buffer.mLocalRelVel[0] * data_buffer.mLocalRelVel[0] + data_buffer.mLocalRelVel[1] * data_buffer.mLocalRelVel[1]) }; - - // Local contact force components (normal and sliding tangential) - double LocalContactForce[3] = { 0.0 }; - GeometryFunctions::VectorGlobal2Local(data_buffer.mLocalCoordSystem, GlobalContactForce, LocalContactForce); - std::vector LocalForce{ LocalContactForce[2] }; + // New contact + if (!mContactParamsParticle.count(neighbor)) { + // Add new parameters to map + ContactParams params; + mContactParamsParticle[neighbor] = params; + + // Initialize contact parameters + mContactParamsParticle[neighbor].impact_time = r_process_info[TIME]; + mContactParamsParticle[neighbor].impact_velocity = { data_buffer.mLocalRelVel[2], sqrt(data_buffer.mLocalRelVel[0] * data_buffer.mLocalRelVel[0] + data_buffer.mLocalRelVel[1] * data_buffer.mLocalRelVel[1]) }; // local components of relavive velocity (normal and tangential) + mContactParamsParticle[neighbor].viscodamping_energy = 0.0; + mContactParamsParticle[neighbor].frictional_energy = 0.0; + mContactParamsParticle[neighbor].rollresist_energy = 0.0; + mContactParamsParticle[neighbor].rolling_resistance = 0.0; + } + + if (r_process_info[HEAT_GENERATION_OPTION]) { + // If thermal problem was solved in previous step, reset dissipated energies accumulated for this interaction + if ((r_process_info[TIME_STEPS] - 2) % r_process_info[THERMAL_FREQUENCY] == 0) { + mContactParamsParticle[neighbor].viscodamping_energy = 0.0; + mContactParamsParticle[neighbor].frictional_energy = 0.0; + mContactParamsParticle[neighbor].rollresist_energy = 0.0; + } - // Friction heat generation is not considered when particles are not sliding against each other, so tangent velocity is set to zero. - // ATTENTION: Becareful when using the tangent velocity in other context that is not friction heat generation, as it can be zero. - if (sliding) - LocalForce.push_back(sqrt(LocalContactForce[0] * LocalContactForce[0] + LocalContactForce[1] * LocalContactForce[1])); - else - LocalForce.push_back(0.0); + // Update energy dissipated in this interaction (since last thermal solution) with the difference between + // current and previous accumulated dissipations + if (r_process_info[GENERATION_DAMPING_OPTION]) { + mContactParamsParticle[neighbor].viscodamping_energy += GetInelasticViscodampingEnergy() - mPreviousViscodampingEnergy; + mPreviousViscodampingEnergy = GetInelasticViscodampingEnergy(); + } - // Update contact parameters - ContactParams params; - params.updated_step = r_process_info[TIME_STEPS]; - params.local_velocity = LocalRelativeVelocity; - params.local_force = LocalForce; + if (r_process_info[GENERATION_SLIDING_OPTION]) { + mContactParamsParticle[neighbor].frictional_energy += GetInelasticFrictionalEnergy() - mPreviousFrictionalEnergy; + mPreviousFrictionalEnergy = GetInelasticFrictionalEnergy(); + } - // Keep impact parameters if contact is not new - if (mContactParamsParticle.count(neighbor)) { - params.impact_time = mContactParamsParticle[neighbor].impact_time; - params.impact_velocity = mContactParamsParticle[neighbor].impact_velocity; - } - // Set impact parameters for new contacts - else { - params.impact_time = r_process_info[TIME]; - params.impact_velocity = LocalRelativeVelocity; + if (r_process_info[GENERATION_ROLLING_OPTION] && this->Is(DEMFlags::HAS_ROTATION) && this->Is(DEMFlags::HAS_ROLLING_FRICTION)) { + // Factor for the contribution of this interaction to the total increase of rolling energy of the particle + // (this is the energy increase of the previous step) + double coeff = 0.0; + if (mPreviousRollResistCoeff != 0.0) + coeff = mContactParamsParticle[neighbor].rolling_resistance / mPreviousRollResistCoeff; + + mContactParamsParticle[neighbor].rollresist_energy += coeff * (GetInelasticRollResistEnergy() - mPreviousRollResistEnergy); + mPreviousRollResistEnergy = GetInelasticRollResistEnergy(); + + // Compute and store rolling friction coefficient of this interaction for the next step + mContactParamsParticle[neighbor].rolling_resistance = 0.0; + Properties& properties_of_contact = GetProperties().GetSubProperties(neighbor->GetProperties().Id()); + const double equiv_rolling_friction_coeff = properties_of_contact[ROLLING_FRICTION] * std::min(GetParticleRadius(), neighbor->GetRadius()); + ComputeRollingResistance(mContactParamsParticle[neighbor].rolling_resistance, LocalContactForceTotal[2], equiv_rolling_friction_coeff, 0); + } } - // Add/Update parameters in map - mContactParamsParticle[neighbor] = params; + // Update time step + mContactParamsParticle[neighbor].updated_step = r_process_info[TIME_STEPS]; KRATOS_CATCH("") } //------------------------------------------------------------------------------------------------------------ - void ThermalSphericParticle::StoreBallToRigidFaceContactInfo(const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, DEMWall* neighbor, double GlobalContactForce[3], bool sliding) { + void ThermalSphericParticle::StoreBallToRigidFaceContactInfo(const ProcessInfo& r_process_info, + SphericParticle::ParticleDataBuffer& data_buffer, + double GlobalContactForceTotal[3], + double LocalContactForceTotal[3], + double LocalContactForceDamping[3], + bool sliding) { KRATOS_TRY - SphericParticle::StoreBallToRigidFaceContactInfo(r_process_info, data_buffer, neighbor, GlobalContactForce, sliding); + SphericParticle::StoreBallToRigidFaceContactInfo(r_process_info, data_buffer, GlobalContactForceTotal, LocalContactForceTotal, LocalContactForceDamping, sliding); if (!mStoreContactParam) return; - // Local relavive velocity components (normal and tangential) - std::vector LocalRelativeVelocity{ data_buffer.mLocalRelVel[2], sqrt(data_buffer.mLocalRelVel[0] * data_buffer.mLocalRelVel[0] + data_buffer.mLocalRelVel[1] * data_buffer.mLocalRelVel[1]) }; - - // Local contact force components (normal and sliding tangential) - double LocalContactForce[3] = { 0.0 }; - GeometryFunctions::VectorGlobal2Local(data_buffer.mLocalCoordSystem, GlobalContactForce, LocalContactForce); - std::vector LocalForce{ LocalContactForce[2] }; + // Get neighbor wall + DEMWall* neighbor = data_buffer.mpOtherRigidFace; + + // New contact + if (!mContactParamsWall.count(neighbor)) { + // Add new parameters to map + ContactParams params; + mContactParamsWall[neighbor] = params; + + // Initialize contact parameters + mContactParamsWall[neighbor].impact_time = r_process_info[TIME]; + mContactParamsWall[neighbor].impact_velocity = { data_buffer.mLocalRelVel[2], sqrt(data_buffer.mLocalRelVel[0] * data_buffer.mLocalRelVel[0] + data_buffer.mLocalRelVel[1] * data_buffer.mLocalRelVel[1]) }; // local components of relavive velocity (normal and tangential) + mContactParamsWall[neighbor].viscodamping_energy = 0.0; + mContactParamsWall[neighbor].frictional_energy = 0.0; + mContactParamsWall[neighbor].rollresist_energy = 0.0; + mContactParamsWall[neighbor].rolling_resistance = 0.0; + } + + if (r_process_info[HEAT_GENERATION_OPTION]) { + // If thermal problem was solved in previous step, reset dissipated energies accumulated for this interaction + if ((r_process_info[TIME_STEPS] - 2) % r_process_info[THERMAL_FREQUENCY] == 0) { + mContactParamsWall[neighbor].viscodamping_energy = 0.0; + mContactParamsWall[neighbor].frictional_energy = 0.0; + mContactParamsWall[neighbor].rollresist_energy = 0.0; + } - // Friction heat generation is not considered when particles are not sliding against each other, so tangent velocity is set to zero. - // ATTENTION: Becareful when using the tangent velocity in other context that is not friction heat generation, as it can be zero. - if (sliding) - LocalForce.push_back(sqrt(LocalContactForce[0] * LocalContactForce[0] + LocalContactForce[1] * LocalContactForce[1])); - else - LocalForce.push_back(0.0); + // Update energy dissipated in this interaction (since last thermal solution) with the difference between + // current and previous accumulated dissipations + if (r_process_info[GENERATION_DAMPING_OPTION]) { + mContactParamsWall[neighbor].viscodamping_energy += GetInelasticViscodampingEnergy() - mPreviousViscodampingEnergy; + mPreviousViscodampingEnergy = GetInelasticViscodampingEnergy(); + } - // Update contact parameters - ContactParams params; - params.updated_step = r_process_info[TIME_STEPS]; - params.local_velocity = LocalRelativeVelocity; - params.local_force = LocalForce; + if (r_process_info[GENERATION_SLIDING_OPTION]) { + mContactParamsWall[neighbor].frictional_energy += GetInelasticFrictionalEnergy() - mPreviousFrictionalEnergy; + mPreviousFrictionalEnergy = GetInelasticFrictionalEnergy(); + } - // Keep impact parameters if contact is not new - if (mContactParamsWall.count(neighbor)) { - params.impact_time = mContactParamsWall[neighbor].impact_time; - params.impact_velocity = mContactParamsWall[neighbor].impact_velocity; - } - // Set impact parameters for new contacts - else { - params.impact_time = r_process_info[TIME]; - params.impact_velocity = LocalRelativeVelocity; + if (r_process_info[GENERATION_ROLLING_OPTION] && this->Is(DEMFlags::HAS_ROTATION) && this->Is(DEMFlags::HAS_ROLLING_FRICTION)) { + // Factor for the contribution of this interaction to the total increase of rolling energy of the particle + // (this is the energy increase of the previous step) + double coeff = 0.0; + if (mPreviousRollResistCoeff != 0.0) + coeff = mContactParamsWall[neighbor].rolling_resistance / mPreviousRollResistCoeff; + + mContactParamsWall[neighbor].rollresist_energy += coeff * (GetInelasticRollResistEnergy() - mPreviousRollResistEnergy); + mPreviousRollResistEnergy = GetInelasticRollResistEnergy(); + + // Compute and store rolling friction coefficient of this interaction for the next step + mContactParamsWall[neighbor].rolling_resistance = 0.0; + Properties& properties_of_contact = GetProperties().GetSubProperties(neighbor->GetProperties().Id()); + const double equiv_rolling_friction_coeff = properties_of_contact[ROLLING_FRICTION_WITH_WALLS] * GetParticleRadius(); + ComputeRollingResistance(mContactParamsWall[neighbor].rolling_resistance, LocalContactForceTotal[2], equiv_rolling_friction_coeff, 0); + } } - // Add/Update parameters in map - mContactParamsWall[neighbor] = params; + // Update time step + mContactParamsWall[neighbor].updated_step = r_process_info[TIME_STEPS]; KRATOS_CATCH("") } @@ -461,6 +533,19 @@ namespace Kratos //===================================================================================================================================================================================== // Finalization methods + //------------------------------------------------------------------------------------------------------------ + void ThermalSphericParticle::FinalizeForceComputation(ParticleDataBuffer& data_buffer) { + KRATOS_TRY + + SphericParticle::FinalizeForceComputation(data_buffer); + + // Update total rolling resistance coefficient from previous step + if (this->Is(DEMFlags::HAS_ROTATION) && this->Is(DEMFlags::HAS_ROLLING_FRICTION)) + mPreviousRollResistCoeff = data_buffer.mRollingResistance; + + KRATOS_CATCH("") + } + //------------------------------------------------------------------------------------------------------------ void ThermalSphericParticle::FinalizeSolutionStep(const ProcessInfo& r_process_info) { KRATOS_TRY @@ -468,18 +553,21 @@ namespace Kratos if (mHasMotion) SphericParticle::FinalizeSolutionStep(r_process_info); - // Remove non-contacting neighbors from maps of contact parameters - if (mStoreContactParam) - CleanContactParameters(r_process_info); + if (mIsTimeToSolve) { + // Remove non-contacting neighbors from maps of contact parameters + if (mStoreContactParam) { + CleanContactParameters(r_process_info); + } - // Update temperature dependent radius - if (mIsTimeToSolve && mHasVariableRadius) { - UpdateTemperatureDependentRadius(r_process_info); + // Update temperature dependent radius + if (mHasVariableRadius) { + UpdateTemperatureDependentRadius(r_process_info); - // Update search distance - double added_search_distance = r_process_info[SEARCH_RADIUS_INCREMENT]; - ComputeAddedSearchDistance(r_process_info, added_search_distance); - SetSearchRadius(GetRadius() + added_search_distance); + // Update search distance + double added_search_distance = r_process_info[SEARCH_RADIUS_INCREMENT]; + ComputeAddedSearchDistance(r_process_info, added_search_distance); + SetSearchRadius(GetRadius() + added_search_distance); + } } KRATOS_CATCH("") @@ -978,8 +1066,8 @@ namespace Kratos } //------------------------------------------------------------------------------------------------------------ - HeatGenerationMechanism& ThermalSphericParticle::GetFrictionModel(void) { - return *mpFrictionModel; + HeatGenerationMechanism& ThermalSphericParticle::GetGenerationModel(void) { + return *mpGenerationModel; } //------------------------------------------------------------------------------------------------------------ @@ -1030,6 +1118,11 @@ namespace Kratos return GetGeometry()[0].FastGetSolutionStepValue(VELOCITY); } + //------------------------------------------------------------------------------------------------------------ + array_1d ThermalSphericParticle::GetParticleAngularVelocity(void) { + return GetGeometry()[0].FastGetSolutionStepValue(ANGULAR_VELOCITY); + } + //------------------------------------------------------------------------------------------------------------ double ThermalSphericParticle::GetParticleTemperature(void) { return GetGeometry()[0].FastGetSolutionStepValue(TEMPERATURE); @@ -1347,6 +1440,20 @@ namespace Kratos return 0.0; } + //------------------------------------------------------------------------------------------------------------ + double ThermalSphericParticle::GetContactRollingFrictionCoefficient(void) { + if (mNeighborType & PARTICLE_NEIGHBOR) { + Properties& properties_of_contact = GetProperties().GetSubProperties(mNeighbor_p->GetProperties().Id()); + return properties_of_contact[ROLLING_FRICTION]; + } + else if (mNeighborType & WALL_NEIGHBOR) { + Properties& properties_of_contact = GetProperties().GetSubProperties(mNeighbor_w->GetProperties().Id()); + return properties_of_contact[ROLLING_FRICTION_WITH_WALLS]; + } + else + return 0.0; + } + //------------------------------------------------------------------------------------------------------------ typename ThermalSphericParticle::ContactParams ThermalSphericParticle::GetContactParameters(void) { if (mNeighborType & PARTICLE_NEIGHBOR && mContactParamsParticle.count(mNeighbor_p)) { @@ -1357,11 +1464,13 @@ namespace Kratos } else { ContactParams null_param; - null_param.updated_step = 0; - null_param.impact_time = 0.0; + null_param.updated_step = 0; + null_param.impact_time = 0.0; + null_param.viscodamping_energy = 0.0; + null_param.frictional_energy = 0.0; + null_param.rollresist_energy = 0.0; + null_param.rolling_resistance = 0.0; null_param.impact_velocity.assign(2, 0.0); - null_param.local_velocity.assign(2, 0.0); - null_param.local_force.assign(2, 0.0); return null_param; } } @@ -1397,8 +1506,8 @@ namespace Kratos } //------------------------------------------------------------------------------------------------------------ - void ThermalSphericParticle::SetFrictionModel(HeatGenerationMechanism::Pointer& model) { - mpFrictionModel = model->CloneRaw(); + void ThermalSphericParticle::SetGenerationModel(HeatGenerationMechanism::Pointer& model) { + mpGenerationModel = model->CloneRaw(); } //------------------------------------------------------------------------------------------------------------ diff --git a/applications/ThermalDEMApplication/custom_elements/thermal_spheric_particle.h b/applications/ThermalDEMApplication/custom_elements/thermal_spheric_particle.h index b4cd64f7bebe..aac96bcb8f36 100644 --- a/applications/ThermalDEMApplication/custom_elements/thermal_spheric_particle.h +++ b/applications/ThermalDEMApplication/custom_elements/thermal_spheric_particle.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_THERMAL_SPHERIC_PARTICLE_H_INCLUDED) @@ -57,9 +53,11 @@ namespace Kratos { int updated_step; double impact_time; + double viscodamping_energy; + double frictional_energy; + double rollresist_energy; + double rolling_resistance; std::vector impact_velocity; - std::vector local_velocity; - std::vector local_force; }; // Constructor @@ -83,11 +81,12 @@ namespace Kratos void ComputeHeatFluxes (const ProcessInfo& r_process_info); void ComputeHeatFluxWithNeighbor (const ProcessInfo& r_process_info); void ComputeInteractionProps (const ProcessInfo& r_process_info); - void StoreBallToBallContactInfo (const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, SphericParticle* neighbor, double GlobalContactForce[3], bool sliding) override; - void StoreBallToRigidFaceContactInfo (const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, DEMWall* neighbor, double GlobalContactForce[3], bool sliding) override; + void StoreBallToBallContactInfo (const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, double GlobalContactForceTotal[3], double LocalContactForceTotal[3], double LocalContactForceDamping[3], bool sliding) override; + void StoreBallToRigidFaceContactInfo (const ProcessInfo& r_process_info, SphericParticle::ParticleDataBuffer& data_buffer, double GlobalContactForceTotal[3], double LocalContactForceTotal[3], double LocalContactForceDamping[3], bool sliding) override; void Move (const double delta_t, const bool rotation_option, const double force_reduction_factor, const int StepFlag) override; // Finalization methods + void FinalizeForceComputation (ParticleDataBuffer& data_buffer) override; void FinalizeSolutionStep (const ProcessInfo& r_process_info) override; void UpdateTemperatureDependentRadius (const ProcessInfo& r_process_info); void UpdateNormalRelativeDisplacementAndVelocityDueToThermalExpansion (const ProcessInfo& r_process_info, double& thermalDeltDisp, double& thermalRelVel, SphericParticle* element2); @@ -127,7 +126,7 @@ namespace Kratos HeatExchangeMechanism& GetIndirectConductionModel (void); HeatExchangeMechanism& GetConvectionModel (void); HeatExchangeMechanism& GetRadiationModel (void); - HeatGenerationMechanism& GetFrictionModel (void); + HeatGenerationMechanism& GetGenerationModel (void); RealContactModel& GetRealContactModel (void); double GetYoung (void) override; @@ -136,6 +135,7 @@ namespace Kratos array_1d GetParticleCoordinates (void); array_1d GetParticleVelocity (void); + array_1d GetParticleAngularVelocity (void); double GetParticleTemperature (void); double GetParticleRadius (void); double GetParticleSurfaceArea (void); @@ -176,6 +176,7 @@ namespace Kratos double GetNeighborEmissivity (void); double GetContactDynamicFrictionCoefficient (void); + double GetContactRollingFrictionCoefficient (void); ContactParams GetContactParameters (void); void SetThermalIntegrationScheme (ThermalDEMIntegrationScheme::Pointer& scheme); @@ -184,7 +185,7 @@ namespace Kratos void SetIndirectConductionModel (HeatExchangeMechanism::Pointer& model); void SetConvectionModel (HeatExchangeMechanism::Pointer& model); void SetRadiationModel (HeatExchangeMechanism::Pointer& model); - void SetFrictionModel (HeatGenerationMechanism::Pointer& model); + void SetGenerationModel (HeatGenerationMechanism::Pointer& model); void SetRealContactModel (RealContactModel::Pointer& model); void SetParticleTemperature (const double temperature); void SetParticleHeatFlux (const double heat_flux); @@ -202,38 +203,53 @@ namespace Kratos HeatExchangeMechanism* mpIndirectConductionModel; HeatExchangeMechanism* mpConvectionModel; HeatExchangeMechanism* mpRadiationModel; - HeatGenerationMechanism* mpFrictionModel; + HeatGenerationMechanism* mpGenerationModel; RealContactModel* mpRealContactModel; // General properties - unsigned int mNumStepsEval; // number of steps passed since last thermal evaluation - double mPreviousTemperature; // temperature from the beginning of the step - bool mIsTimeToSolve; // flag to solve thermal problem in current step - bool mHasMotion; // flag to solve mechanical behavior (forces and displacements) - bool mHasFixedTemperature; // flag for constant temperature - bool mHasVariableRadius; // flag for temperature-dependent radius - bool mStoreContactParam; // flag to store contact parameters with neighbors when solving the mechanical problem + unsigned int mNumStepsEval; // number of steps passed since last thermal evaluation + double mPreviousTemperature; // temperature from the beginning of the step + bool mIsTimeToSolve; // flag to solve thermal problem in current step + bool mHasMotion; // flag to solve mechanical behavior (forces and displacements) + bool mHasFixedTemperature; // flag for constant temperature + bool mHasVariableRadius; // flag for temperature-dependent radius + bool mStoreContactParam; // flag to store contact parameters with neighbors when solving the mechanical problem // Heat flux components double mConductionDirectHeatFlux; double mConductionIndirectHeatFlux; double mRadiationHeatFlux; - double mFrictionHeatFlux; + double mGenerationHeatFlux; + double mGenerationHeatFlux_damp_particle; + double mGenerationHeatFlux_damp_wall; + double mGenerationHeatFlux_slid_particle; + double mGenerationHeatFlux_slid_wall; + double mGenerationHeatFlux_roll_particle; + double mGenerationHeatFlux_roll_wall; double mConvectionHeatFlux; double mPrescribedHeatFluxSurface; double mPrescribedHeatFluxVolume; double mPrescribedHeatFlux; double mTotalHeatFlux; + // Energy properties + double mThermalViscodampingEnergy; // accumulated thermal energy generated due to viscodamping dissipation + double mThermalFrictionalEnergy; // accumulated thermal energy generated due to frictional dissipation + double mThermalRollResistEnergy; // accumulated thermal energy generated due to rolling resistance dissipation + double mPreviousViscodampingEnergy; // accumulated viscodamping energy dissipation from previous interaction + double mPreviousFrictionalEnergy; // accumulated frictional energy dissipation from previous interaction + double mPreviousRollResistEnergy; // accumulated rolling resistance energy dissipation from previous step + double mPreviousRollResistCoeff; // total rolling resistance coefficient from previous step + // Interaction properties - bool mNeighborInContact; // flag for contact interaction - double mRealYoungRatio; // real value of Young modulus - double mContactRadius; // simulation contact radius - double mNeighborDistance; // simulation neighbor distance - double mNeighborSeparation; // simulation neighbor separation (negative value indicates an indentation) - double mContactRadiusAdjusted; // adjusted contact radius from real Young modulus - double mNeighborDistanceAdjusted; // adjusted neighbor distance from adjusted contact radius - double mNeighborSeparationAdjusted; // adjusted neighbor separation (negative value indicates an indentation) + bool mNeighborInContact; // flag for contact interaction + double mRealYoungRatio; // real value of Young modulus + double mContactRadius; // simulation contact radius + double mNeighborDistance; // simulation neighbor distance + double mNeighborSeparation; // simulation neighbor separation (negative value indicates an indentation) + double mContactRadiusAdjusted; // adjusted contact radius from real Young modulus + double mNeighborDistanceAdjusted; // adjusted neighbor distance from adjusted contact radius + double mNeighborSeparationAdjusted; // adjusted neighbor separation (negative value indicates an indentation) // Radiation environment-related unsigned int mRadiativeNeighbors; diff --git a/applications/ThermalDEMApplication/custom_python/add_custom_constitutive_laws_to_python.cpp b/applications/ThermalDEMApplication/custom_python/add_custom_constitutive_laws_to_python.cpp index f996d9f41d74..72d5303c75a3 100644 --- a/applications/ThermalDEMApplication/custom_python/add_custom_constitutive_laws_to_python.cpp +++ b/applications/ThermalDEMApplication/custom_python/add_custom_constitutive_laws_to_python.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes @@ -37,8 +33,8 @@ #include "custom_constitutive/radiation/radiation_model.h" #include "custom_constitutive/radiation/radiation_continuum_krause.h" #include "custom_constitutive/radiation/radiation_continuum_zhou.h" -#include "custom_constitutive/friction/friction_model.h" -#include "custom_constitutive/friction/friction_coulomb.h" +#include "custom_constitutive/generation/generation_model.h" +#include "custom_constitutive/generation/generation_dissipation.h" #include "custom_constitutive/real_contact/real_contact_model.h" #include "custom_constitutive/real_contact/real_contact_lu.h" #include "custom_constitutive/real_contact/real_contact_morris.h" @@ -150,11 +146,11 @@ namespace Kratos .def(py::init<>()); - // Friction ------------------------------------------------------------------------------------------------------------------- - py::class_(m, "FrictionModel") + // Generation ------------------------------------------------------------------------------------------------------------------- + py::class_(m, "GenerationModel") .def(py::init<>()); - py::class_(m, "FrictionCoulomb") + py::class_(m, "GenerationDissipation") .def(py::init<>()); diff --git a/applications/ThermalDEMApplication/custom_python/add_custom_constitutive_laws_to_python.h b/applications/ThermalDEMApplication/custom_python/add_custom_constitutive_laws_to_python.h index 27c8f8e9ebbb..5022837063a9 100644 --- a/applications/ThermalDEMApplication/custom_python/add_custom_constitutive_laws_to_python.h +++ b/applications/ThermalDEMApplication/custom_python/add_custom_constitutive_laws_to_python.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_ADD_CUSTOM_CONSTITUTIVE_LAWS_TO_PYTHON_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_python/add_custom_processes_to_python.cpp b/applications/ThermalDEMApplication/custom_python/add_custom_processes_to_python.cpp index b9f2d7d80122..9e390c31f50c 100644 --- a/applications/ThermalDEMApplication/custom_python/add_custom_processes_to_python.cpp +++ b/applications/ThermalDEMApplication/custom_python/add_custom_processes_to_python.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_python/add_custom_processes_to_python.h b/applications/ThermalDEMApplication/custom_python/add_custom_processes_to_python.h index 3c912773f3ed..511895a54b4c 100644 --- a/applications/ThermalDEMApplication/custom_python/add_custom_processes_to_python.h +++ b/applications/ThermalDEMApplication/custom_python/add_custom_processes_to_python.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_ADD_CUSTOM_PROCESSES_TO_PYTHON_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_python/add_custom_strategies_to_python.cpp b/applications/ThermalDEMApplication/custom_python/add_custom_strategies_to_python.cpp index 64c73e5f3672..027e0a790ca7 100644 --- a/applications/ThermalDEMApplication/custom_python/add_custom_strategies_to_python.cpp +++ b/applications/ThermalDEMApplication/custom_python/add_custom_strategies_to_python.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_python/add_custom_strategies_to_python.h b/applications/ThermalDEMApplication/custom_python/add_custom_strategies_to_python.h index 674abe56cdbb..88c79508d372 100644 --- a/applications/ThermalDEMApplication/custom_python/add_custom_strategies_to_python.h +++ b/applications/ThermalDEMApplication/custom_python/add_custom_strategies_to_python.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_ADD_CUSTOM_STRATEGIES_TO_PYTHON_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_python/add_custom_utilities_to_python.cpp b/applications/ThermalDEMApplication/custom_python/add_custom_utilities_to_python.cpp index 8f66b6d63a7f..c0f60a4cd26a 100644 --- a/applications/ThermalDEMApplication/custom_python/add_custom_utilities_to_python.cpp +++ b/applications/ThermalDEMApplication/custom_python/add_custom_utilities_to_python.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_python/add_custom_utilities_to_python.h b/applications/ThermalDEMApplication/custom_python/add_custom_utilities_to_python.h index ec67b08789c2..45a9f8ee4094 100644 --- a/applications/ThermalDEMApplication/custom_python/add_custom_utilities_to_python.h +++ b/applications/ThermalDEMApplication/custom_python/add_custom_utilities_to_python.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_ADD_CUSTOM_UTILITIES_TO_PYTHON_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_python/thermal_dem_python_application.cpp b/applications/ThermalDEMApplication/custom_python/thermal_dem_python_application.cpp index 9bbaffd00ff4..18bfabd28a17 100644 --- a/applications/ThermalDEMApplication/custom_python/thermal_dem_python_application.cpp +++ b/applications/ThermalDEMApplication/custom_python/thermal_dem_python_application.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if defined(KRATOS_PYTHON) @@ -50,7 +46,7 @@ namespace Kratos KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, INDIRECT_CONDUCTION_MODEL_POINTER) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, CONVECTION_MODEL_POINTER) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, RADIATION_MODEL_POINTER) - KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, FRICTION_MODEL_POINTER) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, GENERATION_MODEL_POINTER) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, REAL_CONTACT_MODEL_POINTER) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, THERMAL_INTEGRATION_SCHEME_NAME) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, NUMERICAL_INTEGRATION_METHOD_NAME) @@ -58,7 +54,6 @@ namespace Kratos KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, INDIRECT_CONDUCTION_MODEL_NAME) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, CONVECTION_MODEL_NAME) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, RADIATION_MODEL_NAME) - KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, FRICTION_MODEL_NAME) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, REAL_CONTACT_MODEL_NAME) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, VORONOI_METHOD_NAME) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, POROSITY_METHOD_NAME) @@ -68,7 +63,10 @@ namespace Kratos KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, INDIRECT_CONDUCTION_OPTION) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, CONVECTION_OPTION) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, RADIATION_OPTION) - KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, FRICTION_HEAT_OPTION) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, HEAT_GENERATION_OPTION) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, GENERATION_SLIDING_OPTION) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, GENERATION_ROLLING_OPTION) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, GENERATION_DAMPING_OPTION) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, REAL_CONTACT_OPTION) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, FIXED_TEMPERATURE) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, ADIABATIC) @@ -82,7 +80,7 @@ namespace Kratos KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, CONDUCTION_RADIUS) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, ISOTHERMAL_CORE_RADIUS) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, MAX_RADIATION_DISTANCE) - KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, FRICTION_HEAT_CONVERSION) + KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, HEAT_GENERATION_RATIO) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, AVERAGE_POROSITY) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, ALPHA_SHAPE_PARAMETER) KRATOS_REGISTER_IN_PYTHON_VARIABLE(m, INTEGRAL_TOLERANCE) diff --git a/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_dem_integration_scheme.cpp b/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_dem_integration_scheme.cpp index 43ade6f733e8..0e287c0189fd 100644 --- a/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_dem_integration_scheme.cpp +++ b/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_dem_integration_scheme.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_dem_integration_scheme.h b/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_dem_integration_scheme.h index 57f965402e4f..a94cbba3fb59 100644 --- a/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_dem_integration_scheme.h +++ b/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_dem_integration_scheme.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_THERMAL_DEM_INTEGRATION_SCHEME_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_forward_euler_scheme.cpp b/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_forward_euler_scheme.cpp index 74ce69a9219c..3ba83b91695f 100644 --- a/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_forward_euler_scheme.cpp +++ b/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_forward_euler_scheme.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_forward_euler_scheme.h b/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_forward_euler_scheme.h index 4b925440dfd9..f44a9479df40 100644 --- a/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_forward_euler_scheme.h +++ b/applications/ThermalDEMApplication/custom_strategies/schemes/thermal_forward_euler_scheme.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_THERMAL_FORWARD_EULER_SCHEME_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_strategies/strategies/thermal_explicit_solver_strategy.cpp b/applications/ThermalDEMApplication/custom_strategies/strategies/thermal_explicit_solver_strategy.cpp index 0db3526d9414..fbcb9fac644c 100644 --- a/applications/ThermalDEMApplication/custom_strategies/strategies/thermal_explicit_solver_strategy.cpp +++ b/applications/ThermalDEMApplication/custom_strategies/strategies/thermal_explicit_solver_strategy.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_strategies/strategies/thermal_explicit_solver_strategy.h b/applications/ThermalDEMApplication/custom_strategies/strategies/thermal_explicit_solver_strategy.h index e0063bf19218..185a393c4cbd 100644 --- a/applications/ThermalDEMApplication/custom_strategies/strategies/thermal_explicit_solver_strategy.h +++ b/applications/ThermalDEMApplication/custom_strategies/strategies/thermal_explicit_solver_strategy.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_THERMAL_EXPLICIT_SOLVER_STRATEGY_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_utilities/graph_utilities.cpp b/applications/ThermalDEMApplication/custom_utilities/graph_utilities.cpp index b2fcc932a13f..d5a0c37aef44 100644 --- a/applications/ThermalDEMApplication/custom_utilities/graph_utilities.cpp +++ b/applications/ThermalDEMApplication/custom_utilities/graph_utilities.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes @@ -27,6 +23,8 @@ namespace Kratos { mGraph_ParticleTempDev = false; mGraph_ModelTempAvg = false; mGraph_ParticleHeatFluxContributions = false; + mGraph_ParticleHeatGenContributions = false; + mGraph_ParticleEnergyContributions = false; } GraphUtilities::~GraphUtilities() {} @@ -37,7 +35,9 @@ namespace Kratos { bool ParticleTempAvg, bool ParticleTempDev, bool ModelTempAvg, - bool ParticleHeatFluxContributions) + bool ParticleHeatFluxContributions, + bool ParticleHeatGenContributions, + bool ParticleEnergyContributions) { KRATOS_TRY @@ -48,37 +48,97 @@ namespace Kratos { mGraph_ParticleTempDev = ParticleTempDev; mGraph_ModelTempAvg = ModelTempAvg; mGraph_ParticleHeatFluxContributions = ParticleHeatFluxContributions; + mGraph_ParticleHeatGenContributions = ParticleHeatGenContributions; + mGraph_ParticleEnergyContributions = ParticleEnergyContributions; // Open files if (mGraph_ParticleTempMin) { mFile_ParticleTempMin.open("graph_particle_temp_min.txt", std::ios::out); KRATOS_ERROR_IF_NOT(mFile_ParticleTempMin) << "Could not open graph file for minimum particle temperature!" << std::endl; - mFile_ParticleTempMin << "TIME STEP | TIME | MIN PARTICLE TEMPERATURE" << std::endl; + mFile_ParticleTempMin << "1 - TIME STEP | "; + mFile_ParticleTempMin << "2 - TIME | "; + mFile_ParticleTempMin << "3 - MIN PARTICLE TEMPERATURE"; + mFile_ParticleTempMin << std::endl; } if (mGraph_ParticleTempMax) { mFile_ParticleTempMax.open("graph_particle_temp_max.txt", std::ios::out); KRATOS_ERROR_IF_NOT(mFile_ParticleTempMax) << "Could not open graph file for maximum particle temperature!" << std::endl; - mFile_ParticleTempMax << "TIME STEP | TIME | MAX PARTICLE TEMPERATURE" << std::endl; + mFile_ParticleTempMax << "1 - TIME STEP | "; + mFile_ParticleTempMax << "2 - TIME | "; + mFile_ParticleTempMax << "3 - MAX PARTICLE TEMPERATURE"; + mFile_ParticleTempMax << std::endl; } if (mGraph_ParticleTempAvg) { mFile_ParticleTempAvg.open("graph_particle_temp_avg.txt", std::ios::out); KRATOS_ERROR_IF_NOT(mFile_ParticleTempAvg) << "Could not open graph file for average particle temperature!" << std::endl; - mFile_ParticleTempAvg << "TIME STEP | TIME | AVERAGE PARTICLE TEMPERATURE" << std::endl; + mFile_ParticleTempAvg << "1 - TIME STEP | "; + mFile_ParticleTempAvg << "2 - TIME | "; + mFile_ParticleTempAvg << "3 - AVERAGE PARTICLE TEMPERATURE"; + mFile_ParticleTempAvg << std::endl; } if (mGraph_ParticleTempDev) { mFile_ParticleTempDev.open("graph_particle_temp_dev.txt", std::ios::out); KRATOS_ERROR_IF_NOT(mFile_ParticleTempDev) << "Could not open graph file for deviation of particle temperature!" << std::endl; - mFile_ParticleTempDev << "TIME STEP | TIME | PARTICLE TEMPERATURE STANDARD DEVIATION" << std::endl; + mFile_ParticleTempDev << "1 - TIME STEP | "; + mFile_ParticleTempDev << "2 - TIME | "; + mFile_ParticleTempDev << "3 - PARTICLE TEMPERATURE STANDARD DEVIATION"; + mFile_ParticleTempDev << std::endl; } if (mGraph_ModelTempAvg) { mFile_ModelTempAvg.open("graph_model_temp_avg.txt", std::ios::out); KRATOS_ERROR_IF_NOT(mFile_ModelTempAvg) << "Could not open graph file for average model temperature!" << std::endl; - mFile_ModelTempAvg << "TIME STEP | TIME | AVERAGE MODEL TEMPERATURE" << std::endl; + mFile_ModelTempAvg << "1 - TIME STEP | "; + mFile_ModelTempAvg << "2 - TIME | "; + mFile_ModelTempAvg << "3 - AVERAGE MODEL TEMPERATURE"; + mFile_ModelTempAvg << std::endl; } if (mGraph_ParticleHeatFluxContributions) { mFile_ParticleHeatFluxContributions.open("graph_flux_contributions.txt", std::ios::out); KRATOS_ERROR_IF_NOT(mFile_ParticleHeatFluxContributions) << "Could not open graph file for heat flux contributions!" << std::endl; - mFile_ParticleHeatFluxContributions << "TIME STEP | TIME | DIRECT CONDUCTION | INDIRECT CONDUCTION | RADIATION | FRICTION | CONVECTION | SURFACE PRESCRIBED | VOLUME PRESCRIBED" << std::endl; + mFile_ParticleHeatFluxContributions << "1 - TIME STEP | "; + mFile_ParticleHeatFluxContributions << "2 - TIME | "; + mFile_ParticleHeatFluxContributions << "3 - DIRECT CONDUCTION | "; + mFile_ParticleHeatFluxContributions << "4 - INDIRECT CONDUCTION | "; + mFile_ParticleHeatFluxContributions << "5 - RADIATION | "; + mFile_ParticleHeatFluxContributions << "6 - GENERATION | "; + mFile_ParticleHeatFluxContributions << "7 - CONVECTION | "; + mFile_ParticleHeatFluxContributions << "8 - SURFACE PRESCRIBED | "; + mFile_ParticleHeatFluxContributions << "9 - VOLUME PRESCRIBED"; + mFile_ParticleHeatFluxContributions << std::endl; + } + if (mGraph_ParticleHeatGenContributions) { + mFile_ParticleHeatGenContributions.open("graph_generation_contributions.txt", std::ios::out); + KRATOS_ERROR_IF_NOT(mFile_ParticleHeatGenContributions) << "Could not open graph file for heat generation contributions!" << std::endl; + mFile_ParticleHeatGenContributions << "1 - TIME STEP | "; + mFile_ParticleHeatGenContributions << "2 - TIME | "; + mFile_ParticleHeatGenContributions << "3 - SLIDING FRICTION PARTICLE-PARTICLE | "; + mFile_ParticleHeatGenContributions << "4 - SLIDING FRICTION PARTICLE-WALL | "; + mFile_ParticleHeatGenContributions << "5 - ROLLING FRICTION PARTICLE-PARTICLE | "; + mFile_ParticleHeatGenContributions << "6 - ROLLING FRICTION PARTICLE-WALL | "; + mFile_ParticleHeatGenContributions << "7 - DAMPING FORCE PARTICLE-PARTICLE | "; + mFile_ParticleHeatGenContributions << "8 - DAMPING FORCE PARTICLE-WALL"; + mFile_ParticleHeatGenContributions << std::endl; + } + if (mGraph_ParticleEnergyContributions) { + mFile_ParticleEnergyContributions.open("graph_energy_contributions.txt", std::ios::out); + KRATOS_ERROR_IF_NOT(mFile_ParticleEnergyContributions) << "Could not open graph file for energy contributions!" << std::endl; + mFile_ParticleEnergyContributions << "1 - TIME STEP | "; + mFile_ParticleEnergyContributions << "2 - TIME | "; + mFile_ParticleEnergyContributions << "3 - GRAVITATIONAL | "; + mFile_ParticleEnergyContributions << "4 - ELASTIC | "; + mFile_ParticleEnergyContributions << "5 - KINETIC TRANSLATION | "; + mFile_ParticleEnergyContributions << "6 - KINETIC ROTATION | "; + mFile_ParticleEnergyContributions << "7 - TOTAL ENERGY | "; + mFile_ParticleEnergyContributions << "8 - ACCUMULATED DISSIP FRICTION | "; + mFile_ParticleEnergyContributions << "9 - ACCUMULATED DISSIP ROLL | "; + mFile_ParticleEnergyContributions << "10 - ACCUMULATED DISSIP DAMPING | "; + mFile_ParticleEnergyContributions << "11 - TOTAL ACCUMULATED DISSIP | "; + mFile_ParticleEnergyContributions << "12 - ACCUMULATED THERMAL FRICTION | "; + mFile_ParticleEnergyContributions << "13 - ACCUMULATED THERMAL ROLL | "; + mFile_ParticleEnergyContributions << "14 - ACCUMULATED THERMAL DAMPING | "; + mFile_ParticleEnergyContributions << "15 - TOTAL ACCUMULATED THERMAL | "; + mFile_ParticleEnergyContributions << "16 - TOTAL ENERGY + ACCUMULATED DISSIP"; + mFile_ParticleEnergyContributions << std::endl; } KRATOS_CATCH("") @@ -95,37 +155,97 @@ namespace Kratos { // Initialize results const int num_of_particles = rModelPart.NumberOfElements(); - int num_ratio_particles = 0; + int num_ratio_particles_flux = 0; + int num_ratio_particles_gen = 0; double total_vol = 0.0; + double particle_temp_min = DBL_MAX; double particle_temp_max = -DBL_MAX; double particle_temp_avg = 0.0; double particle_temp_dev = 0.0; double model_temp_avg = 0.0; + double particle_flux_conducdir_ratio_avg = 0.0; double particle_flux_conducindir_ratio_avg = 0.0; double particle_flux_rad_ratio_avg = 0.0; - double particle_flux_fric_ratio_avg = 0.0; + double particle_flux_gen_ratio_avg = 0.0; double particle_flux_conv_ratio_avg = 0.0; double particle_flux_prescsurf_ratio_avg = 0.0; double particle_flux_prescvol_ratio_avg = 0.0; + double particle_gen_slid_pp_ratio_avg = 0.0; + double particle_gen_slid_pw_ratio_avg = 0.0; + double particle_gen_roll_pp_ratio_avg = 0.0; + double particle_gen_roll_pw_ratio_avg = 0.0; + double particle_gen_damp_pp_ratio_avg = 0.0; + double particle_gen_damp_pw_ratio_avg = 0.0; + + double total_energy_potential_gravity = 0.0; + double total_energy_potential_elastic = 0.0; + double total_energy_kinetic_translation = 0.0; + double total_energy_kinetic_rotation = 0.0; + double total_energy = 0.0; + + double total_accum_energy_dissip_slid = 0.0; + double total_accum_energy_dissip_roll = 0.0; + double total_accum_energy_dissip_damp = 0.0; + double total_accum_energy_dissip = 0.0; + + double total_accum_energy_thermal_slid = 0.0; + double total_accum_energy_thermal_roll = 0.0; + double total_accum_energy_thermal_damp = 0.0; + double total_accum_energy_thermal = 0.0; + #pragma omp parallel for schedule(dynamic, 100) for (int i = 0; i < num_of_particles; i++) { ModelPart::ElementsContainerType::iterator it = rModelPart.GetCommunicator().LocalMesh().Elements().ptr_begin() + i; ThermalSphericParticle& particle = dynamic_cast (*it); // Accumulate values - const double vol = particle.CalculateVolume(); - const double temp = particle.GetGeometry()[0].FastGetSolutionStepValue(TEMPERATURE); + const double vol = particle.CalculateVolume(); + const double temp = particle.GetGeometry()[0].FastGetSolutionStepValue(TEMPERATURE); + double energy_potential_gravity = 0.0; + double energy_potential_elastic = 0.0; + double energy_kinetic_translation = 0.0; + double energy_kinetic_rotation = 0.0; + double accum_energy_dissip_slid = 0.0; + double accum_energy_dissip_roll = 0.0; + double accum_energy_dissip_damp = 0.0; + particle.Calculate(PARTICLE_GRAVITATIONAL_ENERGY, energy_potential_gravity, r_process_info); + particle.Calculate(PARTICLE_ELASTIC_ENERGY, energy_potential_elastic, r_process_info); + particle.Calculate(PARTICLE_TRANSLATIONAL_KINEMATIC_ENERGY, energy_kinetic_translation, r_process_info); + particle.Calculate(PARTICLE_ROTATIONAL_KINEMATIC_ENERGY, energy_kinetic_rotation, r_process_info); + particle.Calculate(PARTICLE_INELASTIC_FRICTIONAL_ENERGY, accum_energy_dissip_slid, r_process_info); + particle.Calculate(PARTICLE_INELASTIC_ROLLING_RESISTANCE_ENERGY, accum_energy_dissip_roll, r_process_info); + particle.Calculate(PARTICLE_INELASTIC_VISCODAMPING_ENERGY, accum_energy_dissip_damp, r_process_info); + double accum_energy_thermal_slid = particle.mThermalFrictionalEnergy; + double accum_energy_thermal_roll = particle.mThermalRollResistEnergy; + double accum_energy_thermal_damp = particle.mThermalViscodampingEnergy; + #pragma omp critical { total_vol += vol; if (temp < particle_temp_min) particle_temp_min = temp; if (temp > particle_temp_max) particle_temp_max = temp; - particle_temp_avg += temp; - particle_temp_dev += temp * temp; - model_temp_avg += temp * vol; + particle_temp_avg += temp; + particle_temp_dev += temp * temp; + model_temp_avg += temp * vol; + + total_energy_potential_gravity += energy_potential_gravity; + total_energy_potential_elastic += energy_potential_elastic; + total_energy_kinetic_translation += energy_kinetic_translation; + total_energy_kinetic_rotation += energy_kinetic_rotation; + total_energy += energy_potential_gravity + energy_potential_elastic + energy_kinetic_translation + energy_kinetic_rotation; + + total_accum_energy_dissip_slid += accum_energy_dissip_slid; + total_accum_energy_dissip_roll += accum_energy_dissip_roll; + total_accum_energy_dissip_damp += accum_energy_dissip_damp; + total_accum_energy_dissip += accum_energy_dissip_slid + accum_energy_dissip_roll + accum_energy_dissip_damp; + + total_accum_energy_thermal_slid += accum_energy_thermal_slid; + total_accum_energy_thermal_roll += accum_energy_thermal_roll; + total_accum_energy_thermal_damp += accum_energy_thermal_damp; + total_accum_energy_thermal += accum_energy_thermal_slid + accum_energy_thermal_roll + accum_energy_thermal_damp; } if (mGraph_ParticleHeatFluxContributions) { @@ -133,27 +253,52 @@ namespace Kratos { const double flux_conducdir = fabs(particle.mConductionDirectHeatFlux); const double flux_conducindir = fabs(particle.mConductionIndirectHeatFlux); const double flux_rad = fabs(particle.mRadiationHeatFlux); - const double flux_fric = fabs(particle.mFrictionHeatFlux); + const double flux_gen = fabs(particle.mGenerationHeatFlux); const double flux_conv = fabs(particle.mConvectionHeatFlux); const double flux_prescsurf = fabs(particle.mPrescribedHeatFluxSurface); const double flux_prescvol = fabs(particle.mPrescribedHeatFluxVolume); - const double flux_total = flux_conducdir + flux_conducindir + flux_rad + flux_fric + flux_conv + flux_prescsurf + flux_prescvol; + const double flux_total = flux_conducdir + flux_conducindir + flux_rad + flux_gen + flux_conv + flux_prescsurf + flux_prescvol; // Compute relative contribution of each heat transfer mechanism for current particle if (flux_total != 0.0) { #pragma omp critical { - num_ratio_particles++; + num_ratio_particles_flux++; particle_flux_conducdir_ratio_avg += flux_conducdir / flux_total; particle_flux_conducindir_ratio_avg += flux_conducindir / flux_total; particle_flux_rad_ratio_avg += flux_rad / flux_total; - particle_flux_fric_ratio_avg += flux_fric / flux_total; + particle_flux_gen_ratio_avg += flux_gen / flux_total; particle_flux_conv_ratio_avg += flux_conv / flux_total; particle_flux_prescsurf_ratio_avg += flux_prescsurf / flux_total; particle_flux_prescvol_ratio_avg += flux_prescvol / flux_total; } } } + + if (mGraph_ParticleHeatGenContributions) { + // Get absolute value of particle heat generation mechanisms + const double gen_slid_pp = fabs(particle.mGenerationHeatFlux_slid_particle); + const double gen_slid_pw = fabs(particle.mGenerationHeatFlux_slid_wall); + const double gen_roll_pp = fabs(particle.mGenerationHeatFlux_roll_particle); + const double gen_roll_pw = fabs(particle.mGenerationHeatFlux_roll_wall); + const double gen_damp_pp = fabs(particle.mGenerationHeatFlux_damp_particle); + const double gen_damp_pw = fabs(particle.mGenerationHeatFlux_damp_wall); + const double gen_total = fabs(particle.mGenerationHeatFlux); + + // Compute relative contribution of each heat generation mechanism for current particle + if (gen_total != 0.0) { + #pragma omp critical + { + num_ratio_particles_gen++; + particle_gen_slid_pp_ratio_avg += gen_slid_pp / gen_total; + particle_gen_slid_pw_ratio_avg += gen_slid_pw / gen_total; + particle_gen_roll_pp_ratio_avg += gen_roll_pp / gen_total; + particle_gen_roll_pw_ratio_avg += gen_roll_pw / gen_total; + particle_gen_damp_pp_ratio_avg += gen_damp_pp / gen_total; + particle_gen_damp_pw_ratio_avg += gen_damp_pw / gen_total; + } + } + } } // Compute temperature results (avg, dev) @@ -162,14 +307,24 @@ namespace Kratos { particle_temp_dev = sqrt(std::max(0.0, particle_temp_dev / num_of_particles - particle_temp_avg * particle_temp_avg)); // Compute average of relative contribution of each heat transfer mechanism - if (mGraph_ParticleHeatFluxContributions && num_ratio_particles > 0) { - particle_flux_conducdir_ratio_avg /= num_ratio_particles; - particle_flux_conducindir_ratio_avg /= num_ratio_particles; - particle_flux_rad_ratio_avg /= num_ratio_particles; - particle_flux_fric_ratio_avg /= num_ratio_particles; - particle_flux_conv_ratio_avg /= num_ratio_particles; - particle_flux_prescsurf_ratio_avg /= num_ratio_particles; - particle_flux_prescvol_ratio_avg /= num_ratio_particles; + if (mGraph_ParticleHeatFluxContributions && num_ratio_particles_flux > 0) { + particle_flux_conducdir_ratio_avg /= num_ratio_particles_flux; + particle_flux_conducindir_ratio_avg /= num_ratio_particles_flux; + particle_flux_rad_ratio_avg /= num_ratio_particles_flux; + particle_flux_gen_ratio_avg /= num_ratio_particles_flux; + particle_flux_conv_ratio_avg /= num_ratio_particles_flux; + particle_flux_prescsurf_ratio_avg /= num_ratio_particles_flux; + particle_flux_prescvol_ratio_avg /= num_ratio_particles_flux; + } + + // Compute average of relative contribution of each heat generation mechanism + if (mGraph_ParticleHeatGenContributions && num_ratio_particles_gen > 0) { + particle_gen_slid_pp_ratio_avg /= num_ratio_particles_gen; + particle_gen_slid_pw_ratio_avg /= num_ratio_particles_gen; + particle_gen_roll_pp_ratio_avg /= num_ratio_particles_gen; + particle_gen_roll_pw_ratio_avg /= num_ratio_particles_gen; + particle_gen_damp_pp_ratio_avg /= num_ratio_particles_gen; + particle_gen_damp_pw_ratio_avg /= num_ratio_particles_gen; } // Write results to files @@ -177,17 +332,76 @@ namespace Kratos { const double time = r_process_info[TIME]; if (mFile_ParticleTempMin.is_open()) - mFile_ParticleTempMin << time_step << " " << time << " " << particle_temp_min << std::endl; + mFile_ParticleTempMin << time_step << " " + << time << " " + << particle_temp_min + << std::endl; + if (mFile_ParticleTempMax.is_open()) - mFile_ParticleTempMax << time_step << " " << time << " " << particle_temp_max << std::endl; + mFile_ParticleTempMax << time_step << " " + << time << " " + << particle_temp_max + << std::endl; + if (mFile_ParticleTempAvg.is_open()) - mFile_ParticleTempAvg << time_step << " " << time << " " << particle_temp_avg << std::endl; + mFile_ParticleTempAvg << time_step << " " + << time << " " + << particle_temp_avg + << std::endl; + if (mFile_ParticleTempDev.is_open()) - mFile_ParticleTempDev << time_step << " " << time << " " << particle_temp_dev << std::endl; + mFile_ParticleTempDev << time_step << " " + << time << " " + << particle_temp_dev + << std::endl; + if (mFile_ModelTempAvg.is_open()) - mFile_ModelTempAvg << time_step << " " << time << " " << model_temp_avg << std::endl; + mFile_ModelTempAvg << time_step << " " + << time << " " + << model_temp_avg + << std::endl; + if (mFile_ParticleHeatFluxContributions.is_open()) - mFile_ParticleHeatFluxContributions << time_step << " " << time << " " << particle_flux_conducdir_ratio_avg << " " << particle_flux_conducindir_ratio_avg << " " << particle_flux_rad_ratio_avg << " " << particle_flux_fric_ratio_avg << " " << particle_flux_conv_ratio_avg << " " << particle_flux_prescsurf_ratio_avg << " " << particle_flux_prescvol_ratio_avg << std::endl; + mFile_ParticleHeatFluxContributions << time_step << " " + << time << " " + << particle_flux_conducdir_ratio_avg << " " + << particle_flux_conducindir_ratio_avg << " " + << particle_flux_rad_ratio_avg << " " + << particle_flux_gen_ratio_avg << " " + << particle_flux_conv_ratio_avg << " " + << particle_flux_prescsurf_ratio_avg << " " + << particle_flux_prescvol_ratio_avg + << std::endl; + + if (mFile_ParticleHeatGenContributions.is_open()) + mFile_ParticleHeatGenContributions << time_step << " " + << time << " " + << particle_gen_slid_pp_ratio_avg << " " + << particle_gen_slid_pw_ratio_avg << " " + << particle_gen_roll_pp_ratio_avg << " " + << particle_gen_roll_pw_ratio_avg << " " + << particle_gen_damp_pp_ratio_avg << " " + << particle_gen_damp_pw_ratio_avg + << std::endl; + + if (mFile_ParticleEnergyContributions.is_open()) + mFile_ParticleEnergyContributions << time_step << " " + << time << " " + << total_energy_potential_gravity << " " + << total_energy_potential_elastic << " " + << total_energy_kinetic_translation << " " + << total_energy_kinetic_rotation << " " + << total_energy << " " + << total_accum_energy_dissip_slid << " " + << total_accum_energy_dissip_roll << " " + << total_accum_energy_dissip_damp << " " + << total_accum_energy_dissip << " " + << total_accum_energy_thermal_slid << " " + << total_accum_energy_thermal_roll << " " + << total_accum_energy_thermal_damp << " " + << total_accum_energy_thermal << " " + << total_energy+total_accum_energy_dissip + << std::endl; KRATOS_CATCH("") } @@ -204,6 +418,8 @@ namespace Kratos { if (mFile_ParticleTempDev.is_open()) mFile_ParticleTempDev.close(); if (mFile_ModelTempAvg.is_open()) mFile_ModelTempAvg.close(); if (mFile_ParticleHeatFluxContributions.is_open()) mFile_ParticleHeatFluxContributions.close(); + if (mFile_ParticleHeatGenContributions.is_open()) mFile_ParticleHeatGenContributions.close(); + if (mFile_ParticleEnergyContributions.is_open()) mFile_ParticleEnergyContributions.close(); KRATOS_CATCH("") } diff --git a/applications/ThermalDEMApplication/custom_utilities/graph_utilities.h b/applications/ThermalDEMApplication/custom_utilities/graph_utilities.h index 5e8529460b1a..005eeca4cdc6 100644 --- a/applications/ThermalDEMApplication/custom_utilities/graph_utilities.h +++ b/applications/ThermalDEMApplication/custom_utilities/graph_utilities.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #ifndef GRAPH_UTILITIES_H_INCLUDED @@ -41,7 +37,9 @@ namespace Kratos bool ParticleTempAvg, bool ParticleTempDev, bool ModelTempAvg, - bool ParticleHeatFluxContributions); + bool ParticleHeatFluxContributions, + bool ParticleHeatGenContributions, + bool ParticleEnergyContributions); void ExecuteFinalizeSolutionStep(ModelPart& rModelPart); void ExecuteFinalize(void); @@ -54,6 +52,8 @@ namespace Kratos bool mGraph_ParticleTempDev; bool mGraph_ModelTempAvg; bool mGraph_ParticleHeatFluxContributions; + bool mGraph_ParticleHeatGenContributions; + bool mGraph_ParticleEnergyContributions; std::ofstream mFile_ParticleTempMin; std::ofstream mFile_ParticleTempMax; @@ -61,6 +61,8 @@ namespace Kratos std::ofstream mFile_ParticleTempDev; std::ofstream mFile_ModelTempAvg; std::ofstream mFile_ParticleHeatFluxContributions; + std::ofstream mFile_ParticleHeatGenContributions; + std::ofstream mFile_ParticleEnergyContributions; private: diff --git a/applications/ThermalDEMApplication/custom_utilities/numerical_integration_adaptive_simpson.cpp b/applications/ThermalDEMApplication/custom_utilities/numerical_integration_adaptive_simpson.cpp index 68570bc93b98..2e1653f500f9 100644 --- a/applications/ThermalDEMApplication/custom_utilities/numerical_integration_adaptive_simpson.cpp +++ b/applications/ThermalDEMApplication/custom_utilities/numerical_integration_adaptive_simpson.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_utilities/numerical_integration_adaptive_simpson.h b/applications/ThermalDEMApplication/custom_utilities/numerical_integration_adaptive_simpson.h index 9dc03c6ef2e7..d3bf0f40771e 100644 --- a/applications/ThermalDEMApplication/custom_utilities/numerical_integration_adaptive_simpson.h +++ b/applications/ThermalDEMApplication/custom_utilities/numerical_integration_adaptive_simpson.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(NUMERICAL_INTEGRATION_METHOD_ADAPTIVE_SIMPSON_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_utilities/numerical_integration_method.cpp b/applications/ThermalDEMApplication/custom_utilities/numerical_integration_method.cpp index 5934ee1952af..c6661147a5e3 100644 --- a/applications/ThermalDEMApplication/custom_utilities/numerical_integration_method.cpp +++ b/applications/ThermalDEMApplication/custom_utilities/numerical_integration_method.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_utilities/numerical_integration_method.h b/applications/ThermalDEMApplication/custom_utilities/numerical_integration_method.h index 2e318a90812c..b30f56b85be1 100644 --- a/applications/ThermalDEMApplication/custom_utilities/numerical_integration_method.h +++ b/applications/ThermalDEMApplication/custom_utilities/numerical_integration_method.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(NUMERICAL_INTEGRATION_METHOD_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/custom_utilities/set_thermal_data_utilities.cpp b/applications/ThermalDEMApplication/custom_utilities/set_thermal_data_utilities.cpp index 2cbdc70eba42..5874eb50687a 100644 --- a/applications/ThermalDEMApplication/custom_utilities/set_thermal_data_utilities.cpp +++ b/applications/ThermalDEMApplication/custom_utilities/set_thermal_data_utilities.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes diff --git a/applications/ThermalDEMApplication/custom_utilities/set_thermal_data_utilities.h b/applications/ThermalDEMApplication/custom_utilities/set_thermal_data_utilities.h index 37d957ff7091..4cc66352eee8 100644 --- a/applications/ThermalDEMApplication/custom_utilities/set_thermal_data_utilities.h +++ b/applications/ThermalDEMApplication/custom_utilities/set_thermal_data_utilities.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #ifndef SET_THERMAL_DATA_UTILITIES_H_INCLUDED diff --git a/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_2d.cpp b/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_2d.cpp index 2375f563ca9b..867a020bf6b1 100644 --- a/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_2d.cpp +++ b/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_2d.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes @@ -146,10 +142,10 @@ namespace Kratos { ModelPart::ElementsContainerType::iterator it = rElements.ptr_begin() + i; ThermalSphericParticle& particle = dynamic_cast (*it); - for (unsigned int j = 0; j < rOut.numberofedges; j++) { + for (int j = 0; j < rOut.numberofedges; j++) { // Vertices of delaunay edge - const int vd1 = rOut.edgelist[2 * j + 0] - 1; - const int vd2 = rOut.edgelist[2 * j + 1] - 1; + unsigned const int vd1 = rOut.edgelist[2 * j + 0] - 1; + unsigned const int vd2 = rOut.edgelist[2 * j + 1] - 1; // Check if delaunay edge contains current point: // Only look at one vertex to avoid repeating the process for both vetices of the same edge diff --git a/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_2d.h b/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_2d.h index 7bac200e9368..a5c00c8e5554 100644 --- a/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_2d.h +++ b/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_2d.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #ifndef TESSELATION_UTILITIES_2D_H_INCLUDED diff --git a/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_3d.cpp b/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_3d.cpp index 36b859a69718..c8fb08c08dd2 100644 --- a/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_3d.cpp +++ b/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_3d.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes @@ -148,7 +144,7 @@ namespace Kratos { const double z0 = rOut.vpointlist[3 * ev1 + 2]; // Triangle area irradiation - for (unsigned int j = 2; j <= num_face_edges; j++) { + for (int j = 2; j <= num_face_edges; j++) { // Edge vertices edge = rOut.vedgelist[face.elist[j] - 1]; ev1 = edge.v1 - 1; @@ -292,7 +288,7 @@ namespace Kratos { const ProcessInfo& r_process_info = rModelPart.GetProcessInfo(); double MeanMeshSize = 0.0; - for (unsigned int i = 0; i < rOut.numberoftetrahedra; i++) { + for (int i = 0; i < rOut.numberoftetrahedra; i++) { // Get vertices IDs const int v1 = rOut.tetrahedronlist[4 * i + 0] - 1; const int v2 = rOut.tetrahedronlist[4 * i + 1] - 1; diff --git a/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_3d.h b/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_3d.h index f678c988516b..a8d0bbc544c8 100644 --- a/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_3d.h +++ b/applications/ThermalDEMApplication/custom_utilities/tesselation_utilities_3d.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #ifndef TESSELATION_UTILITIES_3D_H_INCLUDED diff --git a/applications/ThermalDEMApplication/python_scripts/default_input_settings.py b/applications/ThermalDEMApplication/python_scripts/default_input_settings.py index 97bf1db25fa5..89384362a911 100644 --- a/applications/ThermalDEMApplication/python_scripts/default_input_settings.py +++ b/applications/ThermalDEMApplication/python_scripts/default_input_settings.py @@ -14,13 +14,13 @@ def GetDefaultInputSettings(): "compute_indirect_conduction" : false, "compute_convection" : false, "compute_radiation" : false, - "compute_friction_heat" : false, + "compute_heat_generation" : false, "compute_adjusted_contact" : false, "direct_conduction_model" : "batchelor_obrien_simple", "indirect_conduction_model" : "surrounding_layer", "nusselt_correlation" : "sphere_hanz_marshall", "radiation_model" : "continuum_zhou", - "friction_model" : "coulomb", + "heat_generation_model" : ["sliding_friction"], "adjusted_contact_model" : "zhou", "voronoi_method" : "tesselation", "porosity_method" : "average_alpha_shape", @@ -30,7 +30,7 @@ def GetDefaultInputSettings(): "fluid_layer_thickness" : 0.4, "isothermal_core_radius" : 0.5, "max_radiation_distance" : 2.0, - "friction_heat_conversion_ratio" : 1.0, + "heat_generation_ratio" : 1.0, "global_porosity" : 0.0, "alpha_shape_parameter" : 1.2, "integral_tolerance" : 0.000001, diff --git a/applications/ThermalDEMApplication/python_scripts/thermal_dem_analysis.py b/applications/ThermalDEMApplication/python_scripts/thermal_dem_analysis.py index 6c553eb27ad1..93736f219548 100644 --- a/applications/ThermalDEMApplication/python_scripts/thermal_dem_analysis.py +++ b/applications/ThermalDEMApplication/python_scripts/thermal_dem_analysis.py @@ -36,6 +36,8 @@ def GetDefaultInputParameters(self): SetDefaultBoolParameterIfNotExists(dem_parameters, "PostGraphParticleTempDev") SetDefaultBoolParameterIfNotExists(dem_parameters, "PostGraphModelTempAvg") SetDefaultBoolParameterIfNotExists(dem_parameters, "PostGraphHeatFluxContributions") + SetDefaultBoolParameterIfNotExists(dem_parameters, "PostGraphHeatGenContributions") + SetDefaultBoolParameterIfNotExists(dem_parameters, "PostGraphEnergyContributions") return dem_parameters diff --git a/applications/ThermalDEMApplication/python_scripts/thermal_sphere_strategy.py b/applications/ThermalDEMApplication/python_scripts/thermal_sphere_strategy.py index f9b64b9c3f2f..a31b945dd4dc 100644 --- a/applications/ThermalDEMApplication/python_scripts/thermal_sphere_strategy.py +++ b/applications/ThermalDEMApplication/python_scripts/thermal_sphere_strategy.py @@ -150,17 +150,20 @@ def GetProjectParameters(self, DEM_parameters): self.indirect_conduction_model = self.thermal_settings["indirect_conduction_model"].GetString() self.nusselt_correlation = self.thermal_settings["nusselt_correlation"].GetString() self.radiation_model = self.thermal_settings["radiation_model"].GetString() - self.friction_model = self.thermal_settings["friction_model"].GetString() self.adjusted_contact_model = self.thermal_settings["adjusted_contact_model"].GetString() self.voronoi_method = self.thermal_settings["voronoi_method"].GetString() self.porosity_method = self.thermal_settings["porosity_method"].GetString() + self.heat_generation_model = [] + for model in self.thermal_settings["heat_generation_model"]: + self.heat_generation_model.append(model.GetString()) + # Active heat transfer mechanisms self.compute_direct_conduction_option = GetBoolParameterIfItExists(self.thermal_settings, "compute_direct_conduction") self.compute_indirect_conduction_option = GetBoolParameterIfItExists(self.thermal_settings, "compute_indirect_conduction") self.compute_convection_option = GetBoolParameterIfItExists(self.thermal_settings, "compute_convection") self.compute_radiation_option = GetBoolParameterIfItExists(self.thermal_settings, "compute_radiation") - self.compute_friction_heat_option = GetBoolParameterIfItExists(self.thermal_settings, "compute_friction_heat") + self.compute_heat_generation_option = GetBoolParameterIfItExists(self.thermal_settings, "compute_heat_generation") self.compute_adjusted_contact_option = GetBoolParameterIfItExists(self.thermal_settings, "compute_adjusted_contact") # Model parameters @@ -170,7 +173,7 @@ def GetProjectParameters(self, DEM_parameters): self.fluid_layer_thickness = self.thermal_settings["fluid_layer_thickness"].GetDouble() self.isothermal_core_radius = self.thermal_settings["isothermal_core_radius"].GetDouble() self.max_radiation_distance = self.thermal_settings["max_radiation_distance"].GetDouble() - self.friction_heat_conversion = self.thermal_settings["friction_heat_conversion_ratio"].GetDouble() + self.heat_generation_ratio = self.thermal_settings["heat_generation_ratio"].GetDouble() self.global_porosity = self.thermal_settings["global_porosity"].GetDouble() self.alpha_parameter = self.thermal_settings["alpha_shape_parameter"].GetDouble() self.integral_tolerance = self.thermal_settings["integral_tolerance"].GetDouble() @@ -188,12 +191,14 @@ def GetProjectParameters(self, DEM_parameters): self.fluid_velocity[2] = self.fluid_props["fluid_velocity_Z"].GetDouble() # Graph writing - self.PostGraphParticleTempMin = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphParticleTempMin") - self.PostGraphParticleTempMax = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphParticleTempMax") - self.PostGraphParticleTempAvg = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphParticleTempAvg") - self.PostGraphParticleTempDev = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphParticleTempDev") - self.PostGraphModelTempAvg = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphModelTempAvg") - self.PostGraphFluxContributions = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphFluxContributions") + self.PostGraphParticleTempMin = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphParticleTempMin") + self.PostGraphParticleTempMax = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphParticleTempMax") + self.PostGraphParticleTempAvg = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphParticleTempAvg") + self.PostGraphParticleTempDev = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphParticleTempDev") + self.PostGraphModelTempAvg = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphModelTempAvg") + self.PostGraphFluxContributions = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphHeatFluxContributions") + self.PostGraphGenContributions = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphHeatGenContributions") + self.PostGraphEnergyContributions = GetBoolParameterIfItExists(self.DEM_parameters, "PostGraphEnergyContributions") #---------------------------------------------------------------------------------------------- def CheckProjectParameters(self): @@ -229,8 +234,11 @@ def CheckProjectParameters(self): self.radiation_model != "continuum_krause"): raise Exception('ThermalDEM', 'Thermal radiation model \'' + self.radiation_model + '\' is not implemented.') - if (self.friction_model != "coulomb"): - raise Exception('ThermalDEM', 'Frictional heat generation model \'' + self.friction_model + '\' is not implemented.') + for model in self.heat_generation_model: + if (model != "sliding_friction" and + model != "rolling_friction" and + model != "contact_damping"): + raise Exception('ThermalDEM', 'Heat generation model \'' + model + '\' is not implemented.') if (self.adjusted_contact_model != "zhou" and self.adjusted_contact_model != "lu" and @@ -268,8 +276,8 @@ def CheckProjectParameters(self): self.isothermal_core_radius = 1 if (self.max_radiation_distance < 0 ): self.max_radiation_distance = 0 - if (self.friction_heat_conversion < 0 or self.friction_heat_conversion > 1): - raise Exception('ThermalDEM', '"friction_heat_conversion_ratio" must be between zero and one.') + if (self.heat_generation_ratio < 0 or self.heat_generation_ratio > 1): + raise Exception('ThermalDEM', '"heat_generation_ratio" must be between zero and one.') if (self.global_porosity < 0 or self.global_porosity >= 1): raise Exception('ThermalDEM', '"global_porosity" must be between zero and one.') if (self.alpha_parameter < 0): @@ -316,12 +324,14 @@ def SetVoronoiPorosityFlags(self): #---------------------------------------------------------------------------------------------- def SetGraphFlags(self): - if (self.PostGraphParticleTempMin or - self.PostGraphParticleTempMax or - self.PostGraphParticleTempAvg or - self.PostGraphParticleTempDev or - self.PostGraphModelTempAvg or - self.PostGraphFluxContributions): + if (self.PostGraphParticleTempMin or + self.PostGraphParticleTempMax or + self.PostGraphParticleTempAvg or + self.PostGraphParticleTempDev or + self.PostGraphModelTempAvg or + self.PostGraphFluxContributions or + self.PostGraphGenContributions or + self.PostGraphEnergyContributions): self.write_graph = True else: self.write_graph = False @@ -457,15 +467,12 @@ def SetConstitutiveLaw(self, properties): raise Exception('The class corresponding to the thermal radiation model named ' + class_name + ' has not been added to python. Please, select a different name or add the required class.') object.SetHeatExchangeMechanismInProperties(properties, True) - # Friction - if self.friction_model == "coulomb": - class_name = "FrictionCoulomb" - else: - raise Exception('ThermalDEM', 'Frictional heat generation model \'' + self.friction_model + '\' is not implemented.') + # Heat generation + class_name = "GenerationDissipation" try: object = eval(class_name)() except: - raise Exception('The class corresponding to the frictional heat generation model named ' + class_name + ' has not been added to python. Please, select a different name or add the required class.') + raise Exception('The class corresponding to the heat generation model named ' + class_name + ' has not been added to python. Please, select a different name or add the required class.') object.SetHeatGenerationMechanismInProperties(properties, True) # Real contact @@ -495,7 +502,6 @@ def SetThermalVariablesAndOptions(self): self.spheres_model_part.ProcessInfo.SetValue(INDIRECT_CONDUCTION_MODEL_NAME, self.indirect_conduction_model) self.spheres_model_part.ProcessInfo.SetValue(CONVECTION_MODEL_NAME, self.nusselt_correlation) self.spheres_model_part.ProcessInfo.SetValue(RADIATION_MODEL_NAME, self.radiation_model) - self.spheres_model_part.ProcessInfo.SetValue(FRICTION_MODEL_NAME, self.friction_model) self.spheres_model_part.ProcessInfo.SetValue(REAL_CONTACT_MODEL_NAME, self.adjusted_contact_model) self.spheres_model_part.ProcessInfo.SetValue(VORONOI_METHOD_NAME, self.voronoi_method) self.spheres_model_part.ProcessInfo.SetValue(POROSITY_METHOD_NAME, self.porosity_method) @@ -505,7 +511,10 @@ def SetThermalVariablesAndOptions(self): self.SetOneOrZeroInProcessInfoAccordingToBoolValue(self.spheres_model_part, INDIRECT_CONDUCTION_OPTION, self.compute_indirect_conduction_option) self.SetOneOrZeroInProcessInfoAccordingToBoolValue(self.spheres_model_part, CONVECTION_OPTION, self.compute_convection_option) self.SetOneOrZeroInProcessInfoAccordingToBoolValue(self.spheres_model_part, RADIATION_OPTION, self.compute_radiation_option) - self.SetOneOrZeroInProcessInfoAccordingToBoolValue(self.spheres_model_part, FRICTION_HEAT_OPTION, self.compute_friction_heat_option) + self.SetOneOrZeroInProcessInfoAccordingToBoolValue(self.spheres_model_part, HEAT_GENERATION_OPTION, self.compute_heat_generation_option) + self.SetOneOrZeroInProcessInfoAccordingToBoolValue(self.spheres_model_part, GENERATION_SLIDING_OPTION, self.compute_heat_generation_option and "sliding_friction" in self.heat_generation_model) + self.SetOneOrZeroInProcessInfoAccordingToBoolValue(self.spheres_model_part, GENERATION_ROLLING_OPTION, self.compute_heat_generation_option and "rolling_friction" in self.heat_generation_model) + self.SetOneOrZeroInProcessInfoAccordingToBoolValue(self.spheres_model_part, GENERATION_DAMPING_OPTION, self.compute_heat_generation_option and "contact_damping" in self.heat_generation_model) self.SetOneOrZeroInProcessInfoAccordingToBoolValue(self.spheres_model_part, REAL_CONTACT_OPTION, self.compute_adjusted_contact_option) # Model parameters @@ -515,7 +524,7 @@ def SetThermalVariablesAndOptions(self): self.spheres_model_part.ProcessInfo.SetValue(FLUID_LAYER_THICKNESS, self.fluid_layer_thickness) self.spheres_model_part.ProcessInfo.SetValue(ISOTHERMAL_CORE_RADIUS, self.isothermal_core_radius) self.spheres_model_part.ProcessInfo.SetValue(MAX_RADIATION_DISTANCE, self.max_radiation_distance) - self.spheres_model_part.ProcessInfo.SetValue(FRICTION_HEAT_CONVERSION, self.friction_heat_conversion) + self.spheres_model_part.ProcessInfo.SetValue(HEAT_GENERATION_RATIO, self.heat_generation_ratio) self.spheres_model_part.ProcessInfo.SetValue(AVERAGE_POROSITY, self.global_porosity) self.spheres_model_part.ProcessInfo.SetValue(ALPHA_SHAPE_PARAMETER, self.alpha_parameter) self.spheres_model_part.ProcessInfo.SetValue(INTEGRAL_TOLERANCE, self.integral_tolerance) @@ -558,7 +567,9 @@ def InitializeCPlusPlusUtilities(self): self.PostGraphParticleTempAvg, self.PostGraphParticleTempDev, self.PostGraphModelTempAvg, - self.PostGraphFluxContributions) + self.PostGraphFluxContributions, + self.PostGraphGenContributions, + self.PostGraphEnergyContributions) #---------------------------------------------------------------------------------------------- def IsTimeToUpdateVoronoi(self): diff --git a/applications/ThermalDEMApplication/tests/Test_SphereSphere_Touch/ProjectParameters_1.json b/applications/ThermalDEMApplication/tests/Test_SphereSphere_Touch/ProjectParameters_1.json index 71bf2904a4a8..4a6010d8ea11 100644 --- a/applications/ThermalDEMApplication/tests/Test_SphereSphere_Touch/ProjectParameters_1.json +++ b/applications/ThermalDEMApplication/tests/Test_SphereSphere_Touch/ProjectParameters_1.json @@ -32,7 +32,7 @@ "compute_indirect_conduction" : true, "compute_convection" : true, "compute_radiation" : true, - "compute_friction_heat" : true, + "compute_heat_generation" : true, "compute_adjusted_contact" : true, "direct_conduction_model" : "batchelor_obrien_simple", "indirect_conduction_model" : "surrounding_layer", @@ -42,7 +42,7 @@ "min_conduction_distance" : 0.0000000275, "fluid_layer_thickness" : 0.4, "max_radiation_distance" : 2.0, - "friction_heat_conversion_ratio" : 0.5, + "heat_generation_ratio" : 0.5, "integral_tolerance" : 0.000001, "global_fluid_properties" : { "fluid_density" : 1.0, @@ -98,5 +98,6 @@ "PostGraphParticleTempDev" : false, "PostGraphModelTempAvg" : false, "PostGraphHeatFluxContributions" : false, + "PostGraphHeatGenContributions" : false, "problem_name" : "SphereSphere_Touch_1" } diff --git a/applications/ThermalDEMApplication/tests/Test_SphereSphere_Touch/ProjectParameters_2.json b/applications/ThermalDEMApplication/tests/Test_SphereSphere_Touch/ProjectParameters_2.json index 082cfd1dd48a..752f5cf81b5e 100644 --- a/applications/ThermalDEMApplication/tests/Test_SphereSphere_Touch/ProjectParameters_2.json +++ b/applications/ThermalDEMApplication/tests/Test_SphereSphere_Touch/ProjectParameters_2.json @@ -32,7 +32,7 @@ "compute_indirect_conduction" : true, "compute_convection" : true, "compute_radiation" : true, - "compute_friction_heat" : true, + "compute_heat_generation" : true, "compute_adjusted_contact" : true, "direct_conduction_model" : "thermal_pipe", "indirect_conduction_model" : "vargas_mccarthy", @@ -40,7 +40,7 @@ "radiation_model" : "continuum_krause", "adjusted_contact_model" : "lu", "max_radiation_distance" : 2.0, - "friction_heat_conversion_ratio" : 0.5, + "heat_generation_ratio" : 0.5, "global_fluid_properties" : { "fluid_density" : 1.0, "fluid_viscosity" : 0.1, @@ -95,5 +95,6 @@ "PostGraphParticleTempDev" : false, "PostGraphModelTempAvg" : false, "PostGraphHeatFluxContributions" : false, + "PostGraphHeatGenContributions" : false, "problem_name" : "SphereSphere_Touch_2" } diff --git a/applications/ThermalDEMApplication/thermal_dem_application.cpp b/applications/ThermalDEMApplication/thermal_dem_application.cpp index b8a3cf10e1b6..31750a882d4e 100644 --- a/applications/ThermalDEMApplication/thermal_dem_application.cpp +++ b/applications/ThermalDEMApplication/thermal_dem_application.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // System includes @@ -39,7 +35,7 @@ namespace Kratos KRATOS_REGISTER_VARIABLE(INDIRECT_CONDUCTION_MODEL_POINTER) KRATOS_REGISTER_VARIABLE(CONVECTION_MODEL_POINTER) KRATOS_REGISTER_VARIABLE(RADIATION_MODEL_POINTER) - KRATOS_REGISTER_VARIABLE(FRICTION_MODEL_POINTER) + KRATOS_REGISTER_VARIABLE(GENERATION_MODEL_POINTER) KRATOS_REGISTER_VARIABLE(REAL_CONTACT_MODEL_POINTER) KRATOS_REGISTER_VARIABLE(THERMAL_INTEGRATION_SCHEME_NAME) KRATOS_REGISTER_VARIABLE(NUMERICAL_INTEGRATION_METHOD_NAME) @@ -47,7 +43,6 @@ namespace Kratos KRATOS_REGISTER_VARIABLE(INDIRECT_CONDUCTION_MODEL_NAME) KRATOS_REGISTER_VARIABLE(CONVECTION_MODEL_NAME) KRATOS_REGISTER_VARIABLE(RADIATION_MODEL_NAME) - KRATOS_REGISTER_VARIABLE(FRICTION_MODEL_NAME) KRATOS_REGISTER_VARIABLE(REAL_CONTACT_MODEL_NAME) KRATOS_REGISTER_VARIABLE(VORONOI_METHOD_NAME) KRATOS_REGISTER_VARIABLE(POROSITY_METHOD_NAME) @@ -57,7 +52,10 @@ namespace Kratos KRATOS_REGISTER_VARIABLE(INDIRECT_CONDUCTION_OPTION) KRATOS_REGISTER_VARIABLE(CONVECTION_OPTION) KRATOS_REGISTER_VARIABLE(RADIATION_OPTION) - KRATOS_REGISTER_VARIABLE(FRICTION_HEAT_OPTION) + KRATOS_REGISTER_VARIABLE(HEAT_GENERATION_OPTION) + KRATOS_REGISTER_VARIABLE(GENERATION_SLIDING_OPTION) + KRATOS_REGISTER_VARIABLE(GENERATION_ROLLING_OPTION) + KRATOS_REGISTER_VARIABLE(GENERATION_DAMPING_OPTION) KRATOS_REGISTER_VARIABLE(REAL_CONTACT_OPTION) KRATOS_REGISTER_VARIABLE(FIXED_TEMPERATURE) KRATOS_REGISTER_VARIABLE(ADIABATIC) @@ -71,7 +69,7 @@ namespace Kratos KRATOS_REGISTER_VARIABLE(CONDUCTION_RADIUS) KRATOS_REGISTER_VARIABLE(ISOTHERMAL_CORE_RADIUS) KRATOS_REGISTER_VARIABLE(MAX_RADIATION_DISTANCE) - KRATOS_REGISTER_VARIABLE(FRICTION_HEAT_CONVERSION) + KRATOS_REGISTER_VARIABLE(HEAT_GENERATION_RATIO) KRATOS_REGISTER_VARIABLE(AVERAGE_POROSITY) KRATOS_REGISTER_VARIABLE(ALPHA_SHAPE_PARAMETER) KRATOS_REGISTER_VARIABLE(INTEGRAL_TOLERANCE) diff --git a/applications/ThermalDEMApplication/thermal_dem_application.h b/applications/ThermalDEMApplication/thermal_dem_application.h index 562333054bc1..3821260924cd 100644 --- a/applications/ThermalDEMApplication/thermal_dem_application.h +++ b/applications/ThermalDEMApplication/thermal_dem_application.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_THERMAL_DEM_APPLICATION_H_INCLUDED) diff --git a/applications/ThermalDEMApplication/thermal_dem_application_variables.cpp b/applications/ThermalDEMApplication/thermal_dem_application_variables.cpp index 1e09aaad0afc..a3a0eaf8c59d 100644 --- a/applications/ThermalDEMApplication/thermal_dem_application_variables.cpp +++ b/applications/ThermalDEMApplication/thermal_dem_application_variables.cpp @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // // Project includes @@ -22,7 +18,7 @@ namespace Kratos KRATOS_CREATE_VARIABLE(HeatExchangeMechanism::Pointer, INDIRECT_CONDUCTION_MODEL_POINTER) KRATOS_CREATE_VARIABLE(HeatExchangeMechanism::Pointer, CONVECTION_MODEL_POINTER) KRATOS_CREATE_VARIABLE(HeatExchangeMechanism::Pointer, RADIATION_MODEL_POINTER) - KRATOS_CREATE_VARIABLE(HeatGenerationMechanism::Pointer, FRICTION_MODEL_POINTER) + KRATOS_CREATE_VARIABLE(HeatGenerationMechanism::Pointer, GENERATION_MODEL_POINTER) KRATOS_CREATE_VARIABLE(RealContactModel::Pointer, REAL_CONTACT_MODEL_POINTER) KRATOS_CREATE_VARIABLE(std::string, THERMAL_INTEGRATION_SCHEME_NAME) KRATOS_CREATE_VARIABLE(std::string, NUMERICAL_INTEGRATION_METHOD_NAME) @@ -30,7 +26,6 @@ namespace Kratos KRATOS_CREATE_VARIABLE(std::string, INDIRECT_CONDUCTION_MODEL_NAME) KRATOS_CREATE_VARIABLE(std::string, CONVECTION_MODEL_NAME) KRATOS_CREATE_VARIABLE(std::string, RADIATION_MODEL_NAME) - KRATOS_CREATE_VARIABLE(std::string, FRICTION_MODEL_NAME) KRATOS_CREATE_VARIABLE(std::string, REAL_CONTACT_MODEL_NAME) KRATOS_CREATE_VARIABLE(std::string, VORONOI_METHOD_NAME) KRATOS_CREATE_VARIABLE(std::string, POROSITY_METHOD_NAME) @@ -40,7 +35,10 @@ namespace Kratos KRATOS_CREATE_VARIABLE(bool, INDIRECT_CONDUCTION_OPTION) KRATOS_CREATE_VARIABLE(bool, CONVECTION_OPTION) KRATOS_CREATE_VARIABLE(bool, RADIATION_OPTION) - KRATOS_CREATE_VARIABLE(bool, FRICTION_HEAT_OPTION) + KRATOS_CREATE_VARIABLE(bool, HEAT_GENERATION_OPTION) + KRATOS_CREATE_VARIABLE(bool, GENERATION_SLIDING_OPTION) + KRATOS_CREATE_VARIABLE(bool, GENERATION_ROLLING_OPTION) + KRATOS_CREATE_VARIABLE(bool, GENERATION_DAMPING_OPTION) KRATOS_CREATE_VARIABLE(bool, REAL_CONTACT_OPTION) KRATOS_CREATE_VARIABLE(bool, FIXED_TEMPERATURE) KRATOS_CREATE_VARIABLE(bool, ADIABATIC) @@ -54,7 +52,7 @@ namespace Kratos KRATOS_CREATE_VARIABLE(double, CONDUCTION_RADIUS) KRATOS_CREATE_VARIABLE(double, ISOTHERMAL_CORE_RADIUS) KRATOS_CREATE_VARIABLE(double, MAX_RADIATION_DISTANCE) - KRATOS_CREATE_VARIABLE(double, FRICTION_HEAT_CONVERSION) + KRATOS_CREATE_VARIABLE(double, HEAT_GENERATION_RATIO) KRATOS_CREATE_VARIABLE(double, AVERAGE_POROSITY) KRATOS_CREATE_VARIABLE(double, ALPHA_SHAPE_PARAMETER) KRATOS_CREATE_VARIABLE(double, INTEGRAL_TOLERANCE) diff --git a/applications/ThermalDEMApplication/thermal_dem_application_variables.h b/applications/ThermalDEMApplication/thermal_dem_application_variables.h index 1aef5c1a4942..b1de0d46dabd 100644 --- a/applications/ThermalDEMApplication/thermal_dem_application_variables.h +++ b/applications/ThermalDEMApplication/thermal_dem_application_variables.h @@ -1,13 +1,9 @@ -// | / | -// ' / __| _` | __| _ \ __| -// . \ | ( | | ( |\__ \ -// _|\_\_| \__,_|\__|\___/ ____/ -// Multi-Physics ThermalDEM Application +// Kratos Multi-Physics - ThermalDEM Application // -// License: BSD License -// Kratos default license: kratos/license.txt +// License: BSD License +// Kratos default license: kratos/license.txt // -// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) +// Main authors: Rafael Rangel (rrangel@cimne.upc.edu) // #if !defined(KRATOS_THERMAL_DEM_APPLICATION_VARIABLES_H_INCLUDED) @@ -36,7 +32,7 @@ namespace Kratos KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, HeatExchangeMechanism::Pointer, INDIRECT_CONDUCTION_MODEL_POINTER) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, HeatExchangeMechanism::Pointer, CONVECTION_MODEL_POINTER) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, HeatExchangeMechanism::Pointer, RADIATION_MODEL_POINTER) - KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, HeatGenerationMechanism::Pointer, FRICTION_MODEL_POINTER) + KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, HeatGenerationMechanism::Pointer, GENERATION_MODEL_POINTER) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, RealContactModel::Pointer, REAL_CONTACT_MODEL_POINTER) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, std::string, THERMAL_INTEGRATION_SCHEME_NAME) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, std::string, NUMERICAL_INTEGRATION_METHOD_NAME) @@ -44,7 +40,6 @@ namespace Kratos KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, std::string, INDIRECT_CONDUCTION_MODEL_NAME) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, std::string, CONVECTION_MODEL_NAME) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, std::string, RADIATION_MODEL_NAME) - KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, std::string, FRICTION_MODEL_NAME) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, std::string, REAL_CONTACT_MODEL_NAME) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, std::string, VORONOI_METHOD_NAME) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, std::string, POROSITY_METHOD_NAME) @@ -54,7 +49,10 @@ namespace Kratos KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, INDIRECT_CONDUCTION_OPTION) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, CONVECTION_OPTION) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, RADIATION_OPTION) - KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, FRICTION_HEAT_OPTION) + KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, HEAT_GENERATION_OPTION) + KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, GENERATION_SLIDING_OPTION) + KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, GENERATION_ROLLING_OPTION) + KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, GENERATION_DAMPING_OPTION) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, REAL_CONTACT_OPTION) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, FIXED_TEMPERATURE) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, bool, ADIABATIC) @@ -68,7 +66,7 @@ namespace Kratos KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, double, CONDUCTION_RADIUS) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, double, ISOTHERMAL_CORE_RADIUS) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, double, MAX_RADIATION_DISTANCE) - KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, double, FRICTION_HEAT_CONVERSION) + KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, double, HEAT_GENERATION_RATIO) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, double, AVERAGE_POROSITY) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, double, ALPHA_SHAPE_PARAMETER) KRATOS_DEFINE_APPLICATION_VARIABLE(THERMAL_DEM_APPLICATION, double, INTEGRAL_TOLERANCE) diff --git a/applications/TrilinosApplication/custom_processes/trilinos_levelset_convection_process.h b/applications/TrilinosApplication/custom_processes/trilinos_levelset_convection_process.h index 4c0a86560456..1a9a3d0b266d 100644 --- a/applications/TrilinosApplication/custom_processes/trilinos_levelset_convection_process.h +++ b/applications/TrilinosApplication/custom_processes/trilinos_levelset_convection_process.h @@ -304,10 +304,10 @@ class TrilinosLevelSetConvectionProcess KRATOS_ERROR_IF(r_base_model_part.GetCommunicator().GlobalNumberOfElements() == 0) << "The model has no elements." << std::endl; // Check if any partition has incorrect elements - if(TDim == 2){ + if constexpr (TDim == 2){ bool has_incorrect_elems = r_base_model_part.NumberOfElements() ? r_base_model_part.ElementsBegin()->GetGeometry().GetGeometryFamily() != GeometryData::KratosGeometryFamily::Kratos_Triangle : false; KRATOS_ERROR_IF(has_incorrect_elems) << "In 2D the element type is expected to be a triangle" << std::endl; - } else if(TDim == 3) { + } else if constexpr (TDim == 3) { bool has_incorrect_elems = r_base_model_part.NumberOfElements() ? r_base_model_part.ElementsBegin()->GetGeometry().GetGeometryFamily() != GeometryData::KratosGeometryFamily::Kratos_Tetrahedra : false; KRATOS_ERROR_IF(has_incorrect_elems) << "In 3D the element type is expected to be a tetrahedra" << std::endl; } diff --git a/applications/TrilinosApplication/custom_utilities/trilinos_refine_mesh.h b/applications/TrilinosApplication/custom_utilities/trilinos_refine_mesh.h index ecc5a8f0d9cf..1f9b7bc27bfd 100644 --- a/applications/TrilinosApplication/custom_utilities/trilinos_refine_mesh.h +++ b/applications/TrilinosApplication/custom_utilities/trilinos_refine_mesh.h @@ -745,7 +745,7 @@ class TrilinosRefineMesh Calculate_Triangle_Edges(geom, p_edge_ids, edge_ids, aux); ///* crea las nuevas conectividades - create_element = Split_Triangle(edge_ids, t, &nel, &splitted_edges, &nint); + create_element = TriangleSplit::Split_Triangle(edge_ids, t, &nel, &splitted_edges, &nint); ///* crea los nuevos elementos if (create_element == true) @@ -754,7 +754,7 @@ class TrilinosRefineMesh for (int i = 0; i < nel; i++) { int i0, i1, i2; - TriangleGetNewConnectivityGID(i, t, aux, &i0, &i1, &i2); + TriangleSplit::TriangleGetNewConnectivityGID(i, t, aux, &i0, &i1, &i2); Triangle2D3 > geom( this_model_part.Nodes()(i0), @@ -855,7 +855,7 @@ class TrilinosRefineMesh aux[4] = GetUpperTriangularMatrixValue(p_edge_ids, index_1, index_2, MaxNumEntries, NumEntries, Indices, id_values); aux[5] = GetUpperTriangularMatrixValue(p_edge_ids, index_2, index_0, MaxNumEntries, NumEntries, Indices, id_values); - TriangleSplitMode(aux, edge_ids); + TriangleSplit::TriangleSplitMode(aux, edge_ids); KRATOS_CATCH("") @@ -1346,7 +1346,7 @@ class TrilinosRefineMesh Calculate_Triangle_Edges(geom, p_edge_ids, edge_ids, aux); ///* crea las nuevas conectividades - create_Condition = Split_Triangle(edge_ids, t, &nel, &splitted_edges, &nint); + create_Condition = TriangleSplit::Split_Triangle(edge_ids, t, &nel, &splitted_edges, &nint); ///* crea los nuevos Conditionos if (create_Condition == true) @@ -1355,7 +1355,7 @@ class TrilinosRefineMesh for (int i = 0; i < nel; i++) { int i0, i1, i2; - TriangleGetNewConnectivityGID(i, t, aux, &i0, &i1, &i2); + TriangleSplit::TriangleGetNewConnectivityGID(i, t, aux, &i0, &i1, &i2); // cout << i0 << " " << i1 << " " << i2 << endl; diff --git a/applications/ULFapplication/custom_elements/surface_tension.h b/applications/ULFapplication/custom_elements/surface_tension.h index 4114886fe18f..1a3c69abcc74 100644 --- a/applications/ULFapplication/custom_elements/surface_tension.h +++ b/applications/ULFapplication/custom_elements/surface_tension.h @@ -23,9 +23,9 @@ #include #include #include -#include +#include #include -#include +#include // External includes @@ -407,7 +407,7 @@ class SurfaceTension : public Element // Surface tension contribution int k = 0; - if(TDim < 3) + if constexpr (TDim < 3) { array_1d node_indx; node_indx[0] = 0.0; @@ -479,7 +479,7 @@ class SurfaceTension : public Element k++; } } - if(TDim < 3 && k > 2) + if constexpr (TDim < 3 && k > 2) this->AddViscousStress2D(); // Now calculate an additional contribution to the residual: r -= rDampingMatrix * (u,p) @@ -922,7 +922,7 @@ class SurfaceTension : public Element KRATOS_CHECK_DOF_IN_NODE(VELOCITY_X,rNode); KRATOS_CHECK_DOF_IN_NODE(VELOCITY_Y,rNode); - if (TDim == 3) KRATOS_CHECK_DOF_IN_NODE(VELOCITY_Z,rNode); + if constexpr (TDim == 3) KRATOS_CHECK_DOF_IN_NODE(VELOCITY_Z,rNode); KRATOS_CHECK_DOF_IN_NODE(PRESSURE,rNode); } // Not checking OSS related variables NODAL_AREA, ADVPROJ, DIVPROJ, which are only required as SolutionStepData if OSS_SWITCH == 1 diff --git a/applications/ULFapplication/custom_strategies/builder_and_solvers/residualbased_elimination_quasiincompresible_builder_and_solver.h b/applications/ULFapplication/custom_strategies/builder_and_solvers/residualbased_elimination_quasiincompresible_builder_and_solver.h index be476412dffe..bf8c20b71ade 100644 --- a/applications/ULFapplication/custom_strategies/builder_and_solvers/residualbased_elimination_quasiincompresible_builder_and_solver.h +++ b/applications/ULFapplication/custom_strategies/builder_and_solvers/residualbased_elimination_quasiincompresible_builder_and_solver.h @@ -225,7 +225,7 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver BaseType::mDofSet.push_back( iii->pGetDof(DISPLACEMENT_X).get()); BaseType::mDofSet.push_back( iii->pGetDof(DISPLACEMENT_Y).get()); //BaseType::mDofSet.push_back( iii->pGetDof(DISPLACEMENT_Y)); - if (TDim==3) + if constexpr (TDim==3) BaseType::mDofSet.push_back( iii->pGetDof(DISPLACEMENT_Z).get()); } @@ -259,7 +259,7 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver BaseType::mDofSet.reserve( mnumber_of_active_nodes * TDim ); int FractionalStepNumber = r_model_part.GetProcessInfo()[FRACTIONAL_STEP]; KRATOS_WATCH(FractionalStepNumber); - if(TDim == 2) + if constexpr (TDim == 2) { for (typename NodesArrayType::iterator it=r_model_part.NodesBegin(); it!=r_model_part.NodesEnd(); ++it) { @@ -271,7 +271,7 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver } } - else if(TDim == 3) + else if constexpr (TDim == 3) { for (typename NodesArrayType::iterator it=r_model_part.NodesBegin(); it!=r_model_part.NodesEnd(); ++it) { @@ -1283,17 +1283,17 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver if (row_index==col_index) { //Mconsistent(row_index,col_index) += temp * 2.0; - if (TDim==2) + if constexpr (TDim==2) Mconsistent(row_index,col_index) += 0.25*temp * 2.0; - else if (TDim==3) + else if constexpr (TDim==3) Mconsistent(row_index,col_index) += 0.2*temp * 2.0*2.5; } else { //Mconsistent(row_index,col_index) += temp ; - if (TDim==2) + if constexpr (TDim==2) Mconsistent(row_index,col_index) += 0.25*temp ; - else if (TDim==3) + else if constexpr (TDim==3) Mconsistent(row_index,col_index) += 0.2*temp*0.0 ; } @@ -1401,17 +1401,17 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver if (row_index==col_index) { //Mconsistent(row_index,col_index) += temp * 2.0; - if (TDim==2) + if constexpr (TDim==2) Mconsistent(row_index,col_index) += 0.25*temp * 2.0; - else if (TDim==3) + else if constexpr (TDim==3) Mconsistent(row_index,col_index) += 0.2*temp * 2.0; } else { //Mconsistent(row_index,col_index) += temp ; - if (TDim==2) + if constexpr (TDim==2) Mconsistent(row_index,col_index) += 0.25*temp ; - else if (TDim==3) + else if constexpr (TDim==3) Mconsistent(row_index,col_index) += 0.2*temp ; } @@ -1791,18 +1791,18 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver if (row_index==col_index) { //Mconsistent(row_index,col_index) += temp * 2.0; - if (TDim==2) + if constexpr (TDim==2) Mconsistent(row_index,col_index) += 0.25*temp * 2.0; - else if (TDim==3) + else if constexpr (TDim==3) Mconsistent(row_index,col_index) += 0.2*temp * 2.0; } else { //Mconsistent(row_index,col_index) += temp ; - if (TDim==2) + if constexpr (TDim==2) Mconsistent(row_index,col_index) += 0.25*temp ; - else if (TDim==3) + else if constexpr (TDim==3) Mconsistent(row_index,col_index) += 0.2*temp; } @@ -2405,7 +2405,7 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver const array_1d& fv1 = geom[1].FastGetSolutionStepValue(VELOCITY); const array_1d& fv2 = geom[2].FastGetSolutionStepValue(VELOCITY); array_1d fv3 = ZeroVector(3); - if (TDim==3) + if constexpr (TDim==3) fv3 = geom[3].FastGetSolutionStepValue(VELOCITY); @@ -2418,7 +2418,7 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver geom[2].FastGetSolutionStepValue(DENSITY); ms_vel_gauss=fv0+fv1+fv2; - if (TDim==2) + if constexpr (TDim==2) { nu*=0.33333333333; density*=0.33333333333; @@ -2427,7 +2427,7 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver - if (TDim==3) + if constexpr (TDim==3) { ms_vel_gauss+=fv3; nu+=geom[3].FastGetSolutionStepValue(VISCOSITY); @@ -2463,7 +2463,7 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver //but with one integration N=0.333333333 double norm_u; double h; - if (TDim==2) + if constexpr (TDim==2) { ms_vel_gauss[0] = 0.33333333333333*(fv0[0]+fv1[0]+fv2[0]); ms_vel_gauss[1] = 0.33333333333333*(fv0[1]+fv1[1]+fv2[1]); @@ -2474,7 +2474,7 @@ class ResidualBasedEliminationQuasiIncompressibleBuilderAndSolver norm_u = ms_vel_gauss[0]*ms_vel_gauss[0] + ms_vel_gauss[1]*ms_vel_gauss[1]; norm_u = sqrt(norm_u); } - if (TDim==3) + if constexpr (TDim==3) { ms_vel_gauss[0] = 0.25*(fv0[0]+fv1[0]+fv2[0]+fv3[0]); ms_vel_gauss[1] = 0.25*(fv0[1]+fv1[1]+fv2[1]+fv3[1]); diff --git a/applications/ULFapplication/custom_strategies/strategies/modified_linear_strategy.h b/applications/ULFapplication/custom_strategies/strategies/modified_linear_strategy.h index 1f9fc4ddf0fd..0cddd93ae678 100644 --- a/applications/ULFapplication/custom_strategies/strategies/modified_linear_strategy.h +++ b/applications/ULFapplication/custom_strategies/strategies/modified_linear_strategy.h @@ -16,7 +16,7 @@ /* External includes */ // #include "boost/smart_ptr.hpp" -#include +#include #include diff --git a/applications/ULFapplication/custom_strategies/strategies/runge_kutta_fracstep_GLS_strategy.h b/applications/ULFapplication/custom_strategies/strategies/runge_kutta_fracstep_GLS_strategy.h index a98cf94051a1..075870d77f7a 100644 --- a/applications/ULFapplication/custom_strategies/strategies/runge_kutta_fracstep_GLS_strategy.h +++ b/applications/ULFapplication/custom_strategies/strategies/runge_kutta_fracstep_GLS_strategy.h @@ -35,7 +35,7 @@ #include /* printf */ -#include /* cos */ +#include /* cos */ #include "solving_strategies/schemes/residualbased_incrementalupdate_static_scheme.h" @@ -243,7 +243,7 @@ namespace Kratos Geometry >::Pointer p_null_geom=Geometry< Node<3> >::Pointer(new Geometry< Node<3> >); //int id=1; - if (TDim==2) + if constexpr (TDim==2) { Fluid2DGLS_expl el(1, p_null_geom); @@ -251,7 +251,7 @@ namespace Kratos KRATOS_THROW_ERROR(std::logic_error, "Incompressible Runge Kutta Strategy requires utilization of Fluid2DGLS_expl elements " , ""); } - if (TDim==3) + if constexpr (TDim==3) { KRATOS_THROW_ERROR(std::logic_error, "not Runge Kutta Strategy for 3D problems " , ""); // Fluid3DGLS_expl el(1, p_null_geom); @@ -680,7 +680,7 @@ namespace Kratos } double one_sixth = 0.166666666666667; - if (TDim==2) + if constexpr (TDim==2) { //allocation of work space boost::numeric::ublas::bounded_matrix DN_DX; @@ -737,7 +737,7 @@ namespace Kratos //reusing aux for the third node } } - if (TDim==3) + if constexpr (TDim==3) { KRATOS_WATCH("Last step in 3D") @@ -1010,18 +1010,18 @@ namespace Kratos if (row_index==col_index) { //Mconsistent(row_index,col_index) += temp * 2.0; - if (TDim==2) + if constexpr (TDim==2) Mconsistent(row_index,col_index) += 0.25*temp * 2.0; - else if (TDim==3) + else if constexpr (TDim==3) Mconsistent(row_index,col_index) += 0.2*temp * 2.0; } else { //Mconsistent(row_index,col_index) += temp ; - if (TDim==2) + if constexpr (TDim==2) Mconsistent(row_index,col_index) += 0.25*temp ; - else if (TDim==3) + else if constexpr (TDim==3) Mconsistent(row_index,col_index) += 0.2*temp; } diff --git a/applications/ULFapplication/custom_utilities/assign_point_neumann_conditions.h b/applications/ULFapplication/custom_utilities/assign_point_neumann_conditions.h index d48d6ed6d876..c7db83d39231 100644 --- a/applications/ULFapplication/custom_utilities/assign_point_neumann_conditions.h +++ b/applications/ULFapplication/custom_utilities/assign_point_neumann_conditions.h @@ -109,12 +109,12 @@ namespace Kratos temp.reserve(1); temp.push_back(*(it.base())); - if (TDim==3) + if constexpr (TDim==3) { Condition::Pointer p_cond = (KratosComponents::Get("PointNeumann3D")).Create(id, temp, properties); (ThisModelPart.Conditions()).push_back(p_cond); } - else if (TDim==2) + else if constexpr (TDim==2) { Condition::Pointer p_cond = (KratosComponents::Get("PointNeumann2D")).Create(id, temp, properties); (ThisModelPart.Conditions()).push_back(p_cond); @@ -195,11 +195,11 @@ namespace Kratos temp.reserve(1); temp.push_back(*(it.base())); - if (TDim==3) + if constexpr (TDim==3) { KRATOS_ERROR(std::logic_error,"Method not implemented for 3D",""); } - else if (TDim==2) + else if constexpr (TDim==2) { Condition::Pointer p_cond = (KratosComponents::Get("PointNeumannMonolithic2D")).Create(id, temp, properties); (ThisModelPart.Conditions()).push_back(p_cond); diff --git a/applications/ULFapplication/python_scripts/runge_kutta_frac_step_solver.py b/applications/ULFapplication/python_scripts/runge_kutta_frac_step_solver.py index 4b4d6381fde5..3629d1a794fb 100644 --- a/applications/ULFapplication/python_scripts/runge_kutta_frac_step_solver.py +++ b/applications/ULFapplication/python_scripts/runge_kutta_frac_step_solver.py @@ -171,7 +171,7 @@ def Remesh(self): node.Set(TO_ERASE, False) (self.fluid_neigh_finder).Execute(); - (self.elem_neighbor_finder).ExecuteInitialize() + (self.elem_neighbor_finder).Execute() (self.condition_neigh_finder).Execute(); (self.mark_free_surface_process).Execute(); diff --git a/cmake_modules/FindPythonLibsNew.cmake b/cmake_modules/FindPythonLibsNew.cmake index ad3ed48fae50..c277732556ce 100644 --- a/cmake_modules/FindPythonLibsNew.cmake +++ b/cmake_modules/FindPythonLibsNew.cmake @@ -130,8 +130,11 @@ endif() # The built-in FindPython didn't always give the version numbers string(REGEX REPLACE "\\." ";" _PYTHON_VERSION_LIST ${_PYTHON_VERSION_LIST}) list(GET _PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR) +add_definitions(-DPYTHON_VERSION_MAJOR=${PYTHON_VERSION_MAJOR}) list(GET _PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR) +add_definitions(-DPYTHON_VERSION_MINOR=${PYTHON_VERSION_MINOR}) list(GET _PYTHON_VERSION_LIST 2 PYTHON_VERSION_PATCH) +add_definitions(-DPYTHON_VERSION_PATCH=${PYTHON_VERSION_PATCH}) # Make sure all directory separators are '/' string(REGEX REPLACE "\\\\" "/" PYTHON_PREFIX ${PYTHON_PREFIX}) diff --git a/external_libraries/ghc/filesystem.hpp b/external_libraries/ghc/filesystem.hpp deleted file mode 100644 index bdb174ab41dd..000000000000 --- a/external_libraries/ghc/filesystem.hpp +++ /dev/null @@ -1,5809 +0,0 @@ -//--------------------------------------------------------------------------------------- -// -// ghc::filesystem - A C++17-like filesystem implementation for C++11/C++14/C++17/C++20 -// -//--------------------------------------------------------------------------------------- -// -// Copyright (c) 2018, Steffen Schümann -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in all -// copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -//--------------------------------------------------------------------------------------- -// -// To dynamically select std::filesystem where available on most platforms, -// you could use: -// -// #if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || (defined(__cplusplus) && __cplusplus >= 201703L)) && defined(__has_include) -// #if __has_include() && (!defined(__MAC_OS_X_VERSION_MIN_REQUIRED) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500) -// #define GHC_USE_STD_FS -// #include -// namespace fs = std::filesystem; -// #endif -// #endif -// #ifndef GHC_USE_STD_FS -// #include -// namespace fs = ghc::filesystem; -// #endif -// -//--------------------------------------------------------------------------------------- -#ifndef GHC_FILESYSTEM_H -#define GHC_FILESYSTEM_H - -// #define BSD manifest constant only in -// sys/param.h -#ifndef _WIN32 -#include -#endif - -#ifndef GHC_OS_DETECTED -#if defined(__APPLE__) && defined(__MACH__) -#define GHC_OS_MACOS -#elif defined(__linux__) -#define GHC_OS_LINUX -#if defined(__ANDROID__) -#define GHC_OS_ANDROID -#endif -#elif defined(_WIN64) -#define GHC_OS_WINDOWS -#define GHC_OS_WIN64 -#elif defined(_WIN32) -#define GHC_OS_WINDOWS -#define GHC_OS_WIN32 -#elif defined(__svr4__) -#define GHC_OS_SYS5R4 -#elif defined(BSD) -#define GHC_OS_BSD -#elif defined(__EMSCRIPTEN__) -#define GHC_OS_WEB -#include -#else -#error "Operating system currently not supported!" -#endif -#define GHC_OS_DETECTED -#if (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) -#if _MSVC_LANG == 201703L -#define GHC_FILESYSTEM_RUNNING_CPP17 -#else -#define GHC_FILESYSTEM_RUNNING_CPP20 -#endif -#elif (defined(__cplusplus) && __cplusplus >= 201703L) -#if __cplusplus == 201703L -#define GHC_FILESYSTEM_RUNNING_CPP17 -#else -#define GHC_FILESYSTEM_RUNNING_CPP20 -#endif -#endif -#endif - -#if defined(GHC_FILESYSTEM_IMPLEMENTATION) -#define GHC_EXPAND_IMPL -#define GHC_INLINE -#ifdef GHC_OS_WINDOWS -#ifndef GHC_FS_API -#define GHC_FS_API -#endif -#ifndef GHC_FS_API_CLASS -#define GHC_FS_API_CLASS -#endif -#else -#ifndef GHC_FS_API -#define GHC_FS_API __attribute__((visibility("default"))) -#endif -#ifndef GHC_FS_API_CLASS -#define GHC_FS_API_CLASS __attribute__((visibility("default"))) -#endif -#endif -#elif defined(GHC_FILESYSTEM_FWD) -#define GHC_INLINE -#ifdef GHC_OS_WINDOWS -#ifndef GHC_FS_API -#define GHC_FS_API extern -#endif -#ifndef GHC_FS_API_CLASS -#define GHC_FS_API_CLASS -#endif -#else -#ifndef GHC_FS_API -#define GHC_FS_API extern -#endif -#ifndef GHC_FS_API_CLASS -#define GHC_FS_API_CLASS -#endif -#endif -#else -#define GHC_EXPAND_IMPL -#define GHC_INLINE inline -#ifndef GHC_FS_API -#define GHC_FS_API -#endif -#ifndef GHC_FS_API_CLASS -#define GHC_FS_API_CLASS -#endif -#endif - -#ifdef GHC_EXPAND_IMPL - -#ifdef GHC_OS_WINDOWS -#include -// additional includes -#include -#include -#include -#include -#include -#else -#include -#include -#include -#include -#include -#include -#include -#include -#ifdef GHC_OS_ANDROID -#include -#if __ANDROID_API__ < 12 -#include -#endif -#include -#define statvfs statfs -#else -#include -#endif -#if !defined(__ANDROID__) || __ANDROID_API__ >= 26 -#include -#endif -#endif -#ifdef GHC_OS_MACOS -#include -#endif - -#if defined(__cpp_impl_three_way_comparison) && defined(__has_include) -#if __has_include() -#define GHC_HAS_THREEWAY_COMP -#include -#endif -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#else // GHC_EXPAND_IMPL - -#if defined(__cpp_impl_three_way_comparison) && defined(__has_include) -#if __has_include() -#define GHC_HAS_THREEWAY_COMP -#include -#endif -#endif -#include -#include -#include -#include -#include -#include -#include -#ifdef GHC_OS_WINDOWS -#include -#endif -#endif // GHC_EXPAND_IMPL - -// After standard library includes. -// Standard library support for std::string_view. -#if defined(__cpp_lib_string_view) -#define GHC_HAS_STD_STRING_VIEW -#elif defined(_LIBCPP_VERSION) && (_LIBCPP_VERSION >= 4000) && (__cplusplus >= 201402) -#define GHC_HAS_STD_STRING_VIEW -#elif defined(_GLIBCXX_RELEASE) && (_GLIBCXX_RELEASE >= 7) && (__cplusplus >= 201703) -#define GHC_HAS_STD_STRING_VIEW -#elif defined(_MSC_VER) && (_MSC_VER >= 1910 && _MSVC_LANG >= 201703) -#define GHC_HAS_STD_STRING_VIEW -#endif - -// Standard library support for std::experimental::string_view. -#if defined(_LIBCPP_VERSION) && (_LIBCPP_VERSION >= 3700 && _LIBCPP_VERSION < 7000) && (__cplusplus >= 201402) -#define GHC_HAS_STD_EXPERIMENTAL_STRING_VIEW -#elif defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 9)) || (__GNUC__ > 4)) && (__cplusplus >= 201402) -#define GHC_HAS_STD_EXPERIMENTAL_STRING_VIEW -#endif - -#if defined(GHC_HAS_STD_STRING_VIEW) -#include -#elif defined(GHC_HAS_STD_EXPERIMENTAL_STRING_VIEW) -#include -#endif - -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Behaviour Switches (see README.md, should match the config in test/filesystem_test.cpp): -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Enforce C++17 API where possible when compiling for C++20, handles the following cases: -// * fs::path::u8string() returns std::string instead of std::u8string -// #define GHC_FILESYSTEM_ENFORCE_CPP17_API -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// LWG #2682 disables the since then invalid use of the copy option create_symlinks on directories -// configure LWG conformance () -#define LWG_2682_BEHAVIOUR -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// LWG #2395 makes crate_directory/create_directories not emit an error if there is a regular -// file with that name, it is superceded by P1164R1, so only activate if really needed -// #define LWG_2935_BEHAVIOUR -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// LWG #2936 enables new element wise (more expensive) path comparison -// * if this->root_name().native().compare(p.root_name().native()) != 0 return result -// * if this->has_root_directory() and !p.has_root_directory() return -1 -// * if !this->has_root_directory() and p.has_root_directory() return -1 -// * else result of element wise comparison of path iteration where first comparison is != 0 or 0 -// if all comparisons are 0 (on Windows this implementation does case insensitive root_name() -// comparison) -#define LWG_2936_BEHAVIOUR -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// LWG #2937 enforces that fs::equivalent emits an error, if !fs::exists(p1)||!exists(p2) -#define LWG_2937_BEHAVIOUR -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// UTF8-Everywhere is the original behaviour of ghc::filesystem. But since v1.5 the windows -// version defaults to std::wstring storage backend. Still all std::string will be interpreted -// as UTF-8 encoded. With this define you can enfoce the old behavior on Windows, using -// std::string as backend and for fs::path::native() and char for fs::path::c_str(). This -// needs more conversions so it is (an was before v1.5) slower, bot might help keeping source -// homogenous in a multi platform project. -// #define GHC_WIN_DISABLE_WSTRING_STORAGE_TYPE -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Raise errors/exceptions when invalid unicode codepoints or UTF-8 sequences are found, -// instead of replacing them with the unicode replacement character (U+FFFD). -// #define GHC_RAISE_UNICODE_ERRORS -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// Automatic prefix windows path with "\\?\" if they would break the MAX_PATH length. -// instead of replacing them with the unicode replacement character (U+FFFD). -#ifndef GHC_WIN_DISABLE_AUTO_PREFIXES -#define GHC_WIN_AUTO_PREFIX_LONG_PATH -#endif // GHC_WIN_DISABLE_AUTO_PREFIXES -//- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -// ghc::filesystem version in decimal (major * 10000 + minor * 100 + patch) -#define GHC_FILESYSTEM_VERSION 10502L - -#if !defined(GHC_WITH_EXCEPTIONS) && (defined(__EXCEPTIONS) || defined(__cpp_exceptions) || defined(_CPPUNWIND)) -#define GHC_WITH_EXCEPTIONS -#endif -#if !defined(GHC_WITH_EXCEPTIONS) && defined(GHC_RAISE_UNICODE_ERRORS) -#error "Can't raise unicode errors whith exception support disabled" -#endif - -namespace ghc { -namespace filesystem { - -#if defined(GHC_HAS_CUSTOM_STRING_VIEW) -#define GHC_WITH_STRING_VIEW -#elif defined(GHC_HAS_STD_STRING_VIEW) -#define GHC_WITH_STRING_VIEW -using std::basic_string_view; -#elif defined(GHC_HAS_STD_EXPERIMENTAL_STRING_VIEW) -#define GHC_WITH_STRING_VIEW -using std::experimental::basic_string_view; -#endif - -// temporary existing exception type for yet unimplemented parts -class GHC_FS_API_CLASS not_implemented_exception : public std::logic_error -{ -public: - not_implemented_exception() - : std::logic_error("function not implemented yet.") - { - } -}; - -template -class path_helper_base -{ -public: - using value_type = char_type; -#ifdef GHC_OS_WINDOWS - static constexpr value_type preferred_separator = '\\'; -#else - static constexpr value_type preferred_separator = '/'; -#endif -}; - -#if __cplusplus < 201703L -template -constexpr char_type path_helper_base::preferred_separator; -#endif - -#ifdef GHC_OS_WINDOWS -class path; -namespace detail { -bool has_executable_extension(const path& p); -} -#endif - -// 30.10.8 class path -class GHC_FS_API_CLASS path -#if defined(GHC_OS_WINDOWS) && !defined(GHC_WIN_DISABLE_WSTRING_STORAGE_TYPE) -#define GHC_USE_WCHAR_T -#define GHC_NATIVEWP(p) p.c_str() -#define GHC_PLATFORM_LITERAL(str) L##str - : private path_helper_base -{ -public: - using path_helper_base::value_type; -#else -#define GHC_NATIVEWP(p) p.wstring().c_str() -#define GHC_PLATFORM_LITERAL(str) str - : private path_helper_base -{ -public: - using path_helper_base::value_type; -#endif - using string_type = std::basic_string; - using path_helper_base::preferred_separator; - - // 30.10.10.1 enumeration format - /// The path format in wich the constructor argument is given. - enum format { - generic_format, ///< The generic format, internally used by - ///< ghc::filesystem::path with slashes - native_format, ///< The format native to the current platform this code - ///< is build for - auto_format, ///< Try to auto-detect the format, fallback to native - }; - - template - struct _is_basic_string : std::false_type - { - }; - template - struct _is_basic_string> : std::true_type - { - }; - template - struct _is_basic_string, std::allocator>> : std::true_type - { - }; -#ifdef GHC_WITH_STRING_VIEW - template - struct _is_basic_string> : std::true_type - { - }; - template - struct _is_basic_string>> : std::true_type - { - }; -#endif - - template - using path_type = typename std::enable_if::value, path>::type; - template - using path_from_string = typename std::enable_if<_is_basic_string::value || std::is_same::type>::value || std::is_same::type>::value || - std::is_same::type>::value || std::is_same::type>::value, - path>::type; - template - using path_type_EcharT = typename std::enable_if::value || std::is_same::value || std::is_same::value || std::is_same::value, path>::type; - // 30.10.8.4.1 constructors and destructor - path() noexcept; - path(const path& p); - path(path&& p) noexcept; - path(string_type&& source, format fmt = auto_format); - template > - path(const Source& source, format fmt = auto_format); - template - path(InputIterator first, InputIterator last, format fmt = auto_format); -#ifdef GHC_WITH_EXCEPTIONS - template > - path(const Source& source, const std::locale& loc, format fmt = auto_format); - template - path(InputIterator first, InputIterator last, const std::locale& loc, format fmt = auto_format); -#endif - ~path(); - - // 30.10.8.4.2 assignments - path& operator=(const path& p); - path& operator=(path&& p) noexcept; - path& operator=(string_type&& source); - path& assign(string_type&& source); - template - path& operator=(const Source& source); - template - path& assign(const Source& source); - template - path& assign(InputIterator first, InputIterator last); - - // 30.10.8.4.3 appends - path& operator/=(const path& p); - template - path& operator/=(const Source& source); - template - path& append(const Source& source); - template - path& append(InputIterator first, InputIterator last); - - // 30.10.8.4.4 concatenation - path& operator+=(const path& x); - path& operator+=(const string_type& x); -#ifdef GHC_WITH_STRING_VIEW - path& operator+=(basic_string_view x); -#endif - path& operator+=(const value_type* x); - path& operator+=(value_type x); - template - path_from_string& operator+=(const Source& x); - template - path_type_EcharT& operator+=(EcharT x); - template - path& concat(const Source& x); - template - path& concat(InputIterator first, InputIterator last); - - // 30.10.8.4.5 modifiers - void clear() noexcept; - path& make_preferred(); - path& remove_filename(); - path& replace_filename(const path& replacement); - path& replace_extension(const path& replacement = path()); - void swap(path& rhs) noexcept; - - // 30.10.8.4.6 native format observers - const string_type& native() const noexcept; - const value_type* c_str() const noexcept; - operator string_type() const; - template , class Allocator = std::allocator> - std::basic_string string(const Allocator& a = Allocator()) const; - std::string string() const; - std::wstring wstring() const; -#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API) - std::u8string u8string() const; -#else - std::string u8string() const; -#endif - std::u16string u16string() const; - std::u32string u32string() const; - - // 30.10.8.4.7 generic format observers - template , class Allocator = std::allocator> - std::basic_string generic_string(const Allocator& a = Allocator()) const; - std::string generic_string() const; - std::wstring generic_wstring() const; -#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API) - std::u8string generic_u8string() const; -#else - std::string generic_u8string() const; -#endif - std::u16string generic_u16string() const; - std::u32string generic_u32string() const; - - // 30.10.8.4.8 compare - int compare(const path& p) const noexcept; - int compare(const string_type& s) const; -#ifdef GHC_WITH_STRING_VIEW - int compare(basic_string_view s) const; -#endif - int compare(const value_type* s) const; - - // 30.10.8.4.9 decomposition - path root_name() const; - path root_directory() const; - path root_path() const; - path relative_path() const; - path parent_path() const; - path filename() const; - path stem() const; - path extension() const; - - // 30.10.8.4.10 query - bool empty() const noexcept; - bool has_root_name() const; - bool has_root_directory() const; - bool has_root_path() const; - bool has_relative_path() const; - bool has_parent_path() const; - bool has_filename() const; - bool has_stem() const; - bool has_extension() const; - bool is_absolute() const; - bool is_relative() const; - - // 30.10.8.4.11 generation - path lexically_normal() const; - path lexically_relative(const path& base) const; - path lexically_proximate(const path& base) const; - - // 30.10.8.5 iterators - class iterator; - using const_iterator = iterator; - iterator begin() const; - iterator end() const; - -private: - using impl_value_type = value_type; - using impl_string_type = std::basic_string; - friend class directory_iterator; - void append_name(const value_type* name); - static constexpr impl_value_type generic_separator = '/'; - template - class input_iterator_range - { - public: - typedef InputIterator iterator; - typedef InputIterator const_iterator; - typedef typename InputIterator::difference_type difference_type; - - input_iterator_range(const InputIterator& first, const InputIterator& last) - : _first(first) - , _last(last) - { - } - - InputIterator begin() const { return _first; } - InputIterator end() const { return _last; } - - private: - InputIterator _first; - InputIterator _last; - }; - friend void swap(path& lhs, path& rhs) noexcept; - friend size_t hash_value(const path& p) noexcept; - friend path canonical(const path& p, std::error_code& ec); - string_type::size_type root_name_length() const noexcept; - void postprocess_path_with_format(format fmt); - void check_long_path(); - impl_string_type _path; -#ifdef GHC_OS_WINDOWS - void handle_prefixes(); - friend bool detail::has_executable_extension(const path& p); -#ifdef GHC_WIN_AUTO_PREFIX_LONG_PATH - string_type::size_type _prefixLength{0}; -#else // GHC_WIN_AUTO_PREFIX_LONG_PATH - static const string_type::size_type _prefixLength{0}; -#endif // GHC_WIN_AUTO_PREFIX_LONG_PATH -#else - static const string_type::size_type _prefixLength{0}; -#endif -}; - -// 30.10.8.6 path non-member functions -GHC_FS_API void swap(path& lhs, path& rhs) noexcept; -GHC_FS_API size_t hash_value(const path& p) noexcept; -#ifdef GHC_HAS_THREEWAY_COMP -GHC_FS_API std::strong_ordering operator<=>(const path& lhs, const path& rhs) noexcept; -#endif -GHC_FS_API bool operator==(const path& lhs, const path& rhs) noexcept; -GHC_FS_API bool operator!=(const path& lhs, const path& rhs) noexcept; -GHC_FS_API bool operator<(const path& lhs, const path& rhs) noexcept; -GHC_FS_API bool operator<=(const path& lhs, const path& rhs) noexcept; -GHC_FS_API bool operator>(const path& lhs, const path& rhs) noexcept; -GHC_FS_API bool operator>=(const path& lhs, const path& rhs) noexcept; -GHC_FS_API path operator/(const path& lhs, const path& rhs); - -// 30.10.8.6.1 path inserter and extractor -template -std::basic_ostream& operator<<(std::basic_ostream& os, const path& p); -template -std::basic_istream& operator>>(std::basic_istream& is, path& p); - -// 30.10.8.6.2 path factory functions -template > -#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API) -[[deprecated("use ghc::filesystem::path::path() with std::u8string instead")]] -#endif -path u8path(const Source& source); -template -#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API) -[[deprecated("use ghc::filesystem::path::path() with std::u8string instead")]] -#endif -path u8path(InputIterator first, InputIterator last); - -// 30.10.9 class filesystem_error -class GHC_FS_API_CLASS filesystem_error : public std::system_error -{ -public: - filesystem_error(const std::string& what_arg, std::error_code ec); - filesystem_error(const std::string& what_arg, const path& p1, std::error_code ec); - filesystem_error(const std::string& what_arg, const path& p1, const path& p2, std::error_code ec); - const path& path1() const noexcept; - const path& path2() const noexcept; - const char* what() const noexcept override; - -private: - std::string _what_arg; - std::error_code _ec; - path _p1, _p2; -}; - -class GHC_FS_API_CLASS path::iterator -{ -public: - using value_type = const path; - using difference_type = std::ptrdiff_t; - using pointer = const path*; - using reference = const path&; - using iterator_category = std::bidirectional_iterator_tag; - - iterator(); - iterator(const path& p, const impl_string_type::const_iterator& pos); - iterator& operator++(); - iterator operator++(int); - iterator& operator--(); - iterator operator--(int); - bool operator==(const iterator& other) const; - bool operator!=(const iterator& other) const; - reference operator*() const; - pointer operator->() const; - -private: - friend class path; - impl_string_type::const_iterator increment(const impl_string_type::const_iterator& pos) const; - impl_string_type::const_iterator decrement(const impl_string_type::const_iterator& pos) const; - void updateCurrent(); - impl_string_type::const_iterator _first; - impl_string_type::const_iterator _last; - impl_string_type::const_iterator _prefix; - impl_string_type::const_iterator _root; - impl_string_type::const_iterator _iter; - path _current; -}; - -struct space_info -{ - uintmax_t capacity; - uintmax_t free; - uintmax_t available; -}; - -// 30.10.10, enumerations -enum class file_type { - none, - not_found, - regular, - directory, - symlink, - block, - character, - fifo, - socket, - unknown, -}; - -enum class perms : uint16_t { - none = 0, - - owner_read = 0400, - owner_write = 0200, - owner_exec = 0100, - owner_all = 0700, - - group_read = 040, - group_write = 020, - group_exec = 010, - group_all = 070, - - others_read = 04, - others_write = 02, - others_exec = 01, - others_all = 07, - - all = 0777, - set_uid = 04000, - set_gid = 02000, - sticky_bit = 01000, - - mask = 07777, - unknown = 0xffff -}; - -enum class perm_options : uint16_t { - replace = 3, - add = 1, - remove = 2, - nofollow = 4, -}; - -enum class copy_options : uint16_t { - none = 0, - - skip_existing = 1, - overwrite_existing = 2, - update_existing = 4, - - recursive = 8, - - copy_symlinks = 0x10, - skip_symlinks = 0x20, - - directories_only = 0x40, - create_symlinks = 0x80, -#ifndef GHC_OS_WEB - create_hard_links = 0x100 -#endif -}; - -enum class directory_options : uint16_t { - none = 0, - follow_directory_symlink = 1, - skip_permission_denied = 2, -}; - -// 30.10.11 class file_status -class GHC_FS_API_CLASS file_status -{ -public: - // 30.10.11.1 constructors and destructor - file_status() noexcept; - explicit file_status(file_type ft, perms prms = perms::unknown) noexcept; - file_status(const file_status&) noexcept; - file_status(file_status&&) noexcept; - ~file_status(); - // assignments: - file_status& operator=(const file_status&) noexcept; - file_status& operator=(file_status&&) noexcept; - // 30.10.11.3 modifiers - void type(file_type ft) noexcept; - void permissions(perms prms) noexcept; - // 30.10.11.2 observers - file_type type() const noexcept; - perms permissions() const noexcept; - friend bool operator==(const file_status& lhs, const file_status& rhs) noexcept { return lhs.type() == rhs.type() && lhs.permissions() == rhs.permissions(); } -private: - file_type _type; - perms _perms; -}; - -using file_time_type = std::chrono::time_point; - -// 30.10.12 Class directory_entry -class GHC_FS_API_CLASS directory_entry -{ -public: - // 30.10.12.1 constructors and destructor - directory_entry() noexcept = default; - directory_entry(const directory_entry&) = default; - directory_entry(directory_entry&&) noexcept = default; -#ifdef GHC_WITH_EXCEPTIONS - explicit directory_entry(const path& p); -#endif - directory_entry(const path& p, std::error_code& ec); - ~directory_entry(); - - // assignments: - directory_entry& operator=(const directory_entry&) = default; - directory_entry& operator=(directory_entry&&) noexcept = default; - - // 30.10.12.2 modifiers -#ifdef GHC_WITH_EXCEPTIONS - void assign(const path& p); - void replace_filename(const path& p); - void refresh(); -#endif - void assign(const path& p, std::error_code& ec); - void replace_filename(const path& p, std::error_code& ec); - void refresh(std::error_code& ec) noexcept; - - // 30.10.12.3 observers - const filesystem::path& path() const noexcept; - operator const filesystem::path&() const noexcept; -#ifdef GHC_WITH_EXCEPTIONS - bool exists() const; - bool is_block_file() const; - bool is_character_file() const; - bool is_directory() const; - bool is_fifo() const; - bool is_other() const; - bool is_regular_file() const; - bool is_socket() const; - bool is_symlink() const; - uintmax_t file_size() const; - file_time_type last_write_time() const; - file_status status() const; - file_status symlink_status() const; -#endif - bool exists(std::error_code& ec) const noexcept; - bool is_block_file(std::error_code& ec) const noexcept; - bool is_character_file(std::error_code& ec) const noexcept; - bool is_directory(std::error_code& ec) const noexcept; - bool is_fifo(std::error_code& ec) const noexcept; - bool is_other(std::error_code& ec) const noexcept; - bool is_regular_file(std::error_code& ec) const noexcept; - bool is_socket(std::error_code& ec) const noexcept; - bool is_symlink(std::error_code& ec) const noexcept; - uintmax_t file_size(std::error_code& ec) const noexcept; - file_time_type last_write_time(std::error_code& ec) const noexcept; - file_status status(std::error_code& ec) const noexcept; - file_status symlink_status(std::error_code& ec) const noexcept; - -#ifndef GHC_OS_WEB -#ifdef GHC_WITH_EXCEPTIONS - uintmax_t hard_link_count() const; -#endif - uintmax_t hard_link_count(std::error_code& ec) const noexcept; -#endif - -#ifdef GHC_HAS_THREEWAY_COMP - std::strong_ordering operator<=>(const directory_entry& rhs) const noexcept; -#endif - bool operator<(const directory_entry& rhs) const noexcept; - bool operator==(const directory_entry& rhs) const noexcept; - bool operator!=(const directory_entry& rhs) const noexcept; - bool operator<=(const directory_entry& rhs) const noexcept; - bool operator>(const directory_entry& rhs) const noexcept; - bool operator>=(const directory_entry& rhs) const noexcept; - -private: - friend class directory_iterator; - filesystem::path _path; - file_status _status; - file_status _symlink_status; - uintmax_t _file_size = 0; -#ifndef GHC_OS_WINDOWS - uintmax_t _hard_link_count = 0; -#endif - time_t _last_write_time = 0; -}; - -// 30.10.13 Class directory_iterator -class GHC_FS_API_CLASS directory_iterator -{ -public: - class GHC_FS_API_CLASS proxy - { - public: - const directory_entry& operator*() const& noexcept { return _dir_entry; } - directory_entry operator*() && noexcept { return std::move(_dir_entry); } - - private: - explicit proxy(const directory_entry& dir_entry) - : _dir_entry(dir_entry) - { - } - friend class directory_iterator; - friend class recursive_directory_iterator; - directory_entry _dir_entry; - }; - using iterator_category = std::input_iterator_tag; - using value_type = directory_entry; - using difference_type = std::ptrdiff_t; - using pointer = const directory_entry*; - using reference = const directory_entry&; - - // 30.10.13.1 member functions - directory_iterator() noexcept; -#ifdef GHC_WITH_EXCEPTIONS - explicit directory_iterator(const path& p); - directory_iterator(const path& p, directory_options options); -#endif - directory_iterator(const path& p, std::error_code& ec) noexcept; - directory_iterator(const path& p, directory_options options, std::error_code& ec) noexcept; - directory_iterator(const directory_iterator& rhs); - directory_iterator(directory_iterator&& rhs) noexcept; - ~directory_iterator(); - directory_iterator& operator=(const directory_iterator& rhs); - directory_iterator& operator=(directory_iterator&& rhs) noexcept; - const directory_entry& operator*() const; - const directory_entry* operator->() const; -#ifdef GHC_WITH_EXCEPTIONS - directory_iterator& operator++(); -#endif - directory_iterator& increment(std::error_code& ec) noexcept; - - // other members as required by 27.2.3, input iterators -#ifdef GHC_WITH_EXCEPTIONS - proxy operator++(int) - { - proxy p{**this}; - ++*this; - return p; - } -#endif - bool operator==(const directory_iterator& rhs) const; - bool operator!=(const directory_iterator& rhs) const; - -private: - friend class recursive_directory_iterator; - class impl; - std::shared_ptr _impl; -}; - -// 30.10.13.2 directory_iterator non-member functions -GHC_FS_API directory_iterator begin(directory_iterator iter) noexcept; -GHC_FS_API directory_iterator end(const directory_iterator&) noexcept; - -// 30.10.14 class recursive_directory_iterator -class GHC_FS_API_CLASS recursive_directory_iterator -{ -public: - using iterator_category = std::input_iterator_tag; - using value_type = directory_entry; - using difference_type = std::ptrdiff_t; - using pointer = const directory_entry*; - using reference = const directory_entry&; - - // 30.10.14.1 constructors and destructor - recursive_directory_iterator() noexcept; -#ifdef GHC_WITH_EXCEPTIONS - explicit recursive_directory_iterator(const path& p); - recursive_directory_iterator(const path& p, directory_options options); -#endif - recursive_directory_iterator(const path& p, directory_options options, std::error_code& ec) noexcept; - recursive_directory_iterator(const path& p, std::error_code& ec) noexcept; - recursive_directory_iterator(const recursive_directory_iterator& rhs); - recursive_directory_iterator(recursive_directory_iterator&& rhs) noexcept; - ~recursive_directory_iterator(); - - // 30.10.14.1 observers - directory_options options() const; - int depth() const; - bool recursion_pending() const; - - const directory_entry& operator*() const; - const directory_entry* operator->() const; - - // 30.10.14.1 modifiers recursive_directory_iterator& - recursive_directory_iterator& operator=(const recursive_directory_iterator& rhs); - recursive_directory_iterator& operator=(recursive_directory_iterator&& rhs) noexcept; -#ifdef GHC_WITH_EXCEPTIONS - recursive_directory_iterator& operator++(); -#endif - recursive_directory_iterator& increment(std::error_code& ec) noexcept; - -#ifdef GHC_WITH_EXCEPTIONS - void pop(); -#endif - void pop(std::error_code& ec); - void disable_recursion_pending(); - - // other members as required by 27.2.3, input iterators -#ifdef GHC_WITH_EXCEPTIONS - directory_iterator::proxy operator++(int) - { - directory_iterator::proxy proxy{**this}; - ++*this; - return proxy; - } -#endif - bool operator==(const recursive_directory_iterator& rhs) const; - bool operator!=(const recursive_directory_iterator& rhs) const; - -private: - struct recursive_directory_iterator_impl - { - directory_options _options; - bool _recursion_pending; - std::stack _dir_iter_stack; - recursive_directory_iterator_impl(directory_options options, bool recursion_pending) - : _options(options) - , _recursion_pending(recursion_pending) - { - } - }; - std::shared_ptr _impl; -}; - -// 30.10.14.2 directory_iterator non-member functions -GHC_FS_API recursive_directory_iterator begin(recursive_directory_iterator iter) noexcept; -GHC_FS_API recursive_directory_iterator end(const recursive_directory_iterator&) noexcept; - -// 30.10.15 filesystem operations -#ifdef GHC_WITH_EXCEPTIONS -GHC_FS_API path absolute(const path& p); -GHC_FS_API path canonical(const path& p); -GHC_FS_API void copy(const path& from, const path& to); -GHC_FS_API void copy(const path& from, const path& to, copy_options options); -GHC_FS_API bool copy_file(const path& from, const path& to); -GHC_FS_API bool copy_file(const path& from, const path& to, copy_options option); -GHC_FS_API void copy_symlink(const path& existing_symlink, const path& new_symlink); -GHC_FS_API bool create_directories(const path& p); -GHC_FS_API bool create_directory(const path& p); -GHC_FS_API bool create_directory(const path& p, const path& attributes); -GHC_FS_API void create_directory_symlink(const path& to, const path& new_symlink); -GHC_FS_API void create_symlink(const path& to, const path& new_symlink); -GHC_FS_API path current_path(); -GHC_FS_API void current_path(const path& p); -GHC_FS_API bool exists(const path& p); -GHC_FS_API bool equivalent(const path& p1, const path& p2); -GHC_FS_API uintmax_t file_size(const path& p); -GHC_FS_API bool is_block_file(const path& p); -GHC_FS_API bool is_character_file(const path& p); -GHC_FS_API bool is_directory(const path& p); -GHC_FS_API bool is_empty(const path& p); -GHC_FS_API bool is_fifo(const path& p); -GHC_FS_API bool is_other(const path& p); -GHC_FS_API bool is_regular_file(const path& p); -GHC_FS_API bool is_socket(const path& p); -GHC_FS_API bool is_symlink(const path& p); -GHC_FS_API file_time_type last_write_time(const path& p); -GHC_FS_API void last_write_time(const path& p, file_time_type new_time); -GHC_FS_API void permissions(const path& p, perms prms, perm_options opts = perm_options::replace); -GHC_FS_API path proximate(const path& p, const path& base = current_path()); -GHC_FS_API path read_symlink(const path& p); -GHC_FS_API path relative(const path& p, const path& base = current_path()); -GHC_FS_API bool remove(const path& p); -GHC_FS_API uintmax_t remove_all(const path& p); -GHC_FS_API void rename(const path& from, const path& to); -GHC_FS_API void resize_file(const path& p, uintmax_t size); -GHC_FS_API space_info space(const path& p); -GHC_FS_API file_status status(const path& p); -GHC_FS_API file_status symlink_status(const path& p); -GHC_FS_API path temp_directory_path(); -GHC_FS_API path weakly_canonical(const path& p); -#endif -GHC_FS_API path absolute(const path& p, std::error_code& ec); -GHC_FS_API path canonical(const path& p, std::error_code& ec); -GHC_FS_API void copy(const path& from, const path& to, std::error_code& ec) noexcept; -GHC_FS_API void copy(const path& from, const path& to, copy_options options, std::error_code& ec) noexcept; -GHC_FS_API bool copy_file(const path& from, const path& to, std::error_code& ec) noexcept; -GHC_FS_API bool copy_file(const path& from, const path& to, copy_options option, std::error_code& ec) noexcept; -GHC_FS_API void copy_symlink(const path& existing_symlink, const path& new_symlink, std::error_code& ec) noexcept; -GHC_FS_API bool create_directories(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool create_directory(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool create_directory(const path& p, const path& attributes, std::error_code& ec) noexcept; -GHC_FS_API void create_directory_symlink(const path& to, const path& new_symlink, std::error_code& ec) noexcept; -GHC_FS_API void create_symlink(const path& to, const path& new_symlink, std::error_code& ec) noexcept; -GHC_FS_API path current_path(std::error_code& ec); -GHC_FS_API void current_path(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool exists(file_status s) noexcept; -GHC_FS_API bool exists(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool equivalent(const path& p1, const path& p2, std::error_code& ec) noexcept; -GHC_FS_API uintmax_t file_size(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool is_block_file(file_status s) noexcept; -GHC_FS_API bool is_block_file(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool is_character_file(file_status s) noexcept; -GHC_FS_API bool is_character_file(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool is_directory(file_status s) noexcept; -GHC_FS_API bool is_directory(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool is_empty(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool is_fifo(file_status s) noexcept; -GHC_FS_API bool is_fifo(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool is_other(file_status s) noexcept; -GHC_FS_API bool is_other(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool is_regular_file(file_status s) noexcept; -GHC_FS_API bool is_regular_file(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool is_socket(file_status s) noexcept; -GHC_FS_API bool is_socket(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool is_symlink(file_status s) noexcept; -GHC_FS_API bool is_symlink(const path& p, std::error_code& ec) noexcept; -GHC_FS_API file_time_type last_write_time(const path& p, std::error_code& ec) noexcept; -GHC_FS_API void last_write_time(const path& p, file_time_type new_time, std::error_code& ec) noexcept; -GHC_FS_API void permissions(const path& p, perms prms, std::error_code& ec) noexcept; -GHC_FS_API void permissions(const path& p, perms prms, perm_options opts, std::error_code& ec) noexcept; -GHC_FS_API path proximate(const path& p, std::error_code& ec); -GHC_FS_API path proximate(const path& p, const path& base, std::error_code& ec); -GHC_FS_API path read_symlink(const path& p, std::error_code& ec); -GHC_FS_API path relative(const path& p, std::error_code& ec); -GHC_FS_API path relative(const path& p, const path& base, std::error_code& ec); -GHC_FS_API bool remove(const path& p, std::error_code& ec) noexcept; -GHC_FS_API uintmax_t remove_all(const path& p, std::error_code& ec) noexcept; -GHC_FS_API void rename(const path& from, const path& to, std::error_code& ec) noexcept; -GHC_FS_API void resize_file(const path& p, uintmax_t size, std::error_code& ec) noexcept; -GHC_FS_API space_info space(const path& p, std::error_code& ec) noexcept; -GHC_FS_API file_status status(const path& p, std::error_code& ec) noexcept; -GHC_FS_API bool status_known(file_status s) noexcept; -GHC_FS_API file_status symlink_status(const path& p, std::error_code& ec) noexcept; -GHC_FS_API path temp_directory_path(std::error_code& ec) noexcept; -GHC_FS_API path weakly_canonical(const path& p, std::error_code& ec) noexcept; - -#ifndef GHC_OS_WEB -#ifdef GHC_WITH_EXCEPTIONS -GHC_FS_API void create_hard_link(const path& to, const path& new_hard_link); -GHC_FS_API uintmax_t hard_link_count(const path& p); -#endif -GHC_FS_API void create_hard_link(const path& to, const path& new_hard_link, std::error_code& ec) noexcept; -GHC_FS_API uintmax_t hard_link_count(const path& p, std::error_code& ec) noexcept; -#endif - -// Non-C++17 add-on std::fstream wrappers with path -template > -class basic_filebuf : public std::basic_filebuf -{ -public: - basic_filebuf() {} - ~basic_filebuf() override {} - basic_filebuf(const basic_filebuf&) = delete; - const basic_filebuf& operator=(const basic_filebuf&) = delete; - basic_filebuf* open(const path& p, std::ios_base::openmode mode) - { -#if defined(GHC_OS_WINDOWS) && !defined(__GLIBCXX__) - return std::basic_filebuf::open(p.wstring().c_str(), mode) ? this : 0; -#else - return std::basic_filebuf::open(p.string().c_str(), mode) ? this : 0; -#endif - } -}; - -template > -class basic_ifstream : public std::basic_ifstream -{ -public: - basic_ifstream() {} -#if defined(GHC_OS_WINDOWS) && !defined(__GLIBCXX__) - explicit basic_ifstream(const path& p, std::ios_base::openmode mode = std::ios_base::in) - : std::basic_ifstream(p.wstring().c_str(), mode) - { - } - void open(const path& p, std::ios_base::openmode mode = std::ios_base::in) { std::basic_ifstream::open(p.wstring().c_str(), mode); } -#else - explicit basic_ifstream(const path& p, std::ios_base::openmode mode = std::ios_base::in) - : std::basic_ifstream(p.string().c_str(), mode) - { - } - void open(const path& p, std::ios_base::openmode mode = std::ios_base::in) { std::basic_ifstream::open(p.string().c_str(), mode); } -#endif - basic_ifstream(const basic_ifstream&) = delete; - const basic_ifstream& operator=(const basic_ifstream&) = delete; - ~basic_ifstream() override {} -}; - -template > -class basic_ofstream : public std::basic_ofstream -{ -public: - basic_ofstream() {} -#if defined(GHC_OS_WINDOWS) && !defined(__GLIBCXX__) - explicit basic_ofstream(const path& p, std::ios_base::openmode mode = std::ios_base::out) - : std::basic_ofstream(p.wstring().c_str(), mode) - { - } - void open(const path& p, std::ios_base::openmode mode = std::ios_base::out) { std::basic_ofstream::open(p.wstring().c_str(), mode); } -#else - explicit basic_ofstream(const path& p, std::ios_base::openmode mode = std::ios_base::out) - : std::basic_ofstream(p.string().c_str(), mode) - { - } - void open(const path& p, std::ios_base::openmode mode = std::ios_base::out) { std::basic_ofstream::open(p.string().c_str(), mode); } -#endif - basic_ofstream(const basic_ofstream&) = delete; - const basic_ofstream& operator=(const basic_ofstream&) = delete; - ~basic_ofstream() override {} -}; - -template > -class basic_fstream : public std::basic_fstream -{ -public: - basic_fstream() {} -#if defined(GHC_OS_WINDOWS) && !defined(__GLIBCXX__) - explicit basic_fstream(const path& p, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out) - : std::basic_fstream(p.wstring().c_str(), mode) - { - } - void open(const path& p, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out) { std::basic_fstream::open(p.wstring().c_str(), mode); } -#else - explicit basic_fstream(const path& p, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out) - : std::basic_fstream(p.string().c_str(), mode) - { - } - void open(const path& p, std::ios_base::openmode mode = std::ios_base::in | std::ios_base::out) { std::basic_fstream::open(p.string().c_str(), mode); } -#endif - basic_fstream(const basic_fstream&) = delete; - const basic_fstream& operator=(const basic_fstream&) = delete; - ~basic_fstream() override {} -}; - -typedef basic_filebuf filebuf; -typedef basic_filebuf wfilebuf; -typedef basic_ifstream ifstream; -typedef basic_ifstream wifstream; -typedef basic_ofstream ofstream; -typedef basic_ofstream wofstream; -typedef basic_fstream fstream; -typedef basic_fstream wfstream; - -class GHC_FS_API_CLASS u8arguments -{ -public: - u8arguments(int& argc, char**& argv); - ~u8arguments() - { - _refargc = _argc; - _refargv = _argv; - } - - bool valid() const { return _isvalid; } - -private: - int _argc; - char** _argv; - int& _refargc; - char**& _refargv; - bool _isvalid; -#ifdef GHC_OS_WINDOWS - std::vector _args; - std::vector _argp; -#endif -}; - -//------------------------------------------------------------------------------------------------- -// Implementation -//------------------------------------------------------------------------------------------------- - -namespace detail { -enum utf8_states_t { S_STRT = 0, S_RJCT = 8 }; -GHC_FS_API void appendUTF8(std::string& str, uint32_t unicode); -GHC_FS_API bool is_surrogate(uint32_t c); -GHC_FS_API bool is_high_surrogate(uint32_t c); -GHC_FS_API bool is_low_surrogate(uint32_t c); -GHC_FS_API unsigned consumeUtf8Fragment(const unsigned state, const uint8_t fragment, uint32_t& codepoint); -enum class portable_error { - none = 0, - exists, - not_found, - not_supported, - not_implemented, - invalid_argument, - is_a_directory, -}; -GHC_FS_API std::error_code make_error_code(portable_error err); -#ifdef GHC_OS_WINDOWS -GHC_FS_API std::error_code make_system_error(uint32_t err = 0); -#else -GHC_FS_API std::error_code make_system_error(int err = 0); -#endif -} // namespace detail - -namespace detail { - -#ifdef GHC_EXPAND_IMPL - -GHC_INLINE std::error_code make_error_code(portable_error err) -{ -#ifdef GHC_OS_WINDOWS - switch (err) { - case portable_error::none: - return std::error_code(); - case portable_error::exists: - return std::error_code(ERROR_ALREADY_EXISTS, std::system_category()); - case portable_error::not_found: - return std::error_code(ERROR_PATH_NOT_FOUND, std::system_category()); - case portable_error::not_supported: - return std::error_code(ERROR_NOT_SUPPORTED, std::system_category()); - case portable_error::not_implemented: - return std::error_code(ERROR_CALL_NOT_IMPLEMENTED, std::system_category()); - case portable_error::invalid_argument: - return std::error_code(ERROR_INVALID_PARAMETER, std::system_category()); - case portable_error::is_a_directory: -#ifdef ERROR_DIRECTORY_NOT_SUPPORTED - return std::error_code(ERROR_DIRECTORY_NOT_SUPPORTED, std::system_category()); -#else - return std::error_code(ERROR_NOT_SUPPORTED, std::system_category()); -#endif - } -#else - switch (err) { - case portable_error::none: - return std::error_code(); - case portable_error::exists: - return std::error_code(EEXIST, std::system_category()); - case portable_error::not_found: - return std::error_code(ENOENT, std::system_category()); - case portable_error::not_supported: - return std::error_code(ENOTSUP, std::system_category()); - case portable_error::not_implemented: - return std::error_code(ENOSYS, std::system_category()); - case portable_error::invalid_argument: - return std::error_code(EINVAL, std::system_category()); - case portable_error::is_a_directory: - return std::error_code(EISDIR, std::system_category()); - } -#endif - return std::error_code(); -} - -#ifdef GHC_OS_WINDOWS -GHC_INLINE std::error_code make_system_error(uint32_t err) -{ - return std::error_code(err ? static_cast(err) : static_cast(::GetLastError()), std::system_category()); -} -#else -GHC_INLINE std::error_code make_system_error(int err) -{ - return std::error_code(err ? err : errno, std::system_category()); -} -#endif - -#endif // GHC_EXPAND_IMPL - -template -using EnableBitmask = typename std::enable_if::value || std::is_same::value || std::is_same::value || std::is_same::value, Enum>::type; -} // namespace detail - -template -constexpr detail::EnableBitmask operator&(Enum X, Enum Y) -{ - using underlying = typename std::underlying_type::type; - return static_cast(static_cast(X) & static_cast(Y)); -} - -template -constexpr detail::EnableBitmask operator|(Enum X, Enum Y) -{ - using underlying = typename std::underlying_type::type; - return static_cast(static_cast(X) | static_cast(Y)); -} - -template -constexpr detail::EnableBitmask operator^(Enum X, Enum Y) -{ - using underlying = typename std::underlying_type::type; - return static_cast(static_cast(X) ^ static_cast(Y)); -} - -template -constexpr detail::EnableBitmask operator~(Enum X) -{ - using underlying = typename std::underlying_type::type; - return static_cast(~static_cast(X)); -} - -template -detail::EnableBitmask& operator&=(Enum& X, Enum Y) -{ - X = X & Y; - return X; -} - -template -detail::EnableBitmask& operator|=(Enum& X, Enum Y) -{ - X = X | Y; - return X; -} - -template -detail::EnableBitmask& operator^=(Enum& X, Enum Y) -{ - X = X ^ Y; - return X; -} - -#ifdef GHC_EXPAND_IMPL - -namespace detail { - -GHC_INLINE bool in_range(uint32_t c, uint32_t lo, uint32_t hi) -{ - return (static_cast(c - lo) < (hi - lo + 1)); -} - -GHC_INLINE bool is_surrogate(uint32_t c) -{ - return in_range(c, 0xd800, 0xdfff); -} - -GHC_INLINE bool is_high_surrogate(uint32_t c) -{ - return (c & 0xfffffc00) == 0xd800; -} - -GHC_INLINE bool is_low_surrogate(uint32_t c) -{ - return (c & 0xfffffc00) == 0xdc00; -} - -GHC_INLINE void appendUTF8(std::string& str, uint32_t unicode) -{ - if (unicode <= 0x7f) { - str.push_back(static_cast(unicode)); - } - else if (unicode >= 0x80 && unicode <= 0x7ff) { - str.push_back(static_cast((unicode >> 6) + 192)); - str.push_back(static_cast((unicode & 0x3f) + 128)); - } - else if ((unicode >= 0x800 && unicode <= 0xd7ff) || (unicode >= 0xe000 && unicode <= 0xffff)) { - str.push_back(static_cast((unicode >> 12) + 224)); - str.push_back(static_cast(((unicode & 0xfff) >> 6) + 128)); - str.push_back(static_cast((unicode & 0x3f) + 128)); - } - else if (unicode >= 0x10000 && unicode <= 0x10ffff) { - str.push_back(static_cast((unicode >> 18) + 240)); - str.push_back(static_cast(((unicode & 0x3ffff) >> 12) + 128)); - str.push_back(static_cast(((unicode & 0xfff) >> 6) + 128)); - str.push_back(static_cast((unicode & 0x3f) + 128)); - } - else { -#ifdef GHC_RAISE_UNICODE_ERRORS - throw filesystem_error("Illegal code point for unicode character.", str, std::make_error_code(std::errc::illegal_byte_sequence)); -#else - appendUTF8(str, 0xfffd); -#endif - } -} - -// Thanks to Bjoern Hoehrmann (https://bjoern.hoehrmann.de/utf-8/decoder/dfa/) -// and Taylor R Campbell for the ideas to this DFA approach of UTF-8 decoding; -// Generating debugging and shrinking my own DFA from scratch was a day of fun! -GHC_INLINE unsigned consumeUtf8Fragment(const unsigned state, const uint8_t fragment, uint32_t& codepoint) -{ - static const uint32_t utf8_state_info[] = { - // encoded states - 0x11111111u, 0x11111111u, 0x77777777u, 0x77777777u, 0x88888888u, 0x88888888u, 0x88888888u, 0x88888888u, 0x22222299u, 0x22222222u, 0x22222222u, 0x22222222u, 0x3333333au, 0x33433333u, 0x9995666bu, 0x99999999u, - 0x88888880u, 0x22818108u, 0x88888881u, 0x88888882u, 0x88888884u, 0x88888887u, 0x88888886u, 0x82218108u, 0x82281108u, 0x88888888u, 0x88888883u, 0x88888885u, 0u, 0u, 0u, 0u, - }; - uint8_t category = fragment < 128 ? 0 : (utf8_state_info[(fragment >> 3) & 0xf] >> ((fragment & 7) << 2)) & 0xf; - codepoint = (state ? (codepoint << 6) | (fragment & 0x3fu) : (0xffu >> category) & fragment); - return state == S_RJCT ? static_cast(S_RJCT) : static_cast((utf8_state_info[category + 16] >> (state << 2)) & 0xf); -} - -GHC_INLINE bool validUtf8(const std::string& utf8String) -{ - std::string::const_iterator iter = utf8String.begin(); - unsigned utf8_state = S_STRT; - std::uint32_t codepoint = 0; - while (iter < utf8String.end()) { - if ((utf8_state = consumeUtf8Fragment(utf8_state, static_cast(*iter++), codepoint)) == S_RJCT) { - return false; - } - } - if (utf8_state) { - return false; - } - return true; -} - -} // namespace detail - -#endif - -namespace detail { - -template ::value && (sizeof(typename Utf8String::value_type) == 1) && (sizeof(typename StringType::value_type) == 1)>::type* = nullptr> -inline StringType fromUtf8(const Utf8String& utf8String, const typename StringType::allocator_type& alloc = typename StringType::allocator_type()) -{ - return StringType(utf8String.begin(), utf8String.end(), alloc); -} - -template ::value && (sizeof(typename Utf8String::value_type) == 1) && (sizeof(typename StringType::value_type) == 2)>::type* = nullptr> -inline StringType fromUtf8(const Utf8String& utf8String, const typename StringType::allocator_type& alloc = typename StringType::allocator_type()) -{ - StringType result(alloc); - result.reserve(utf8String.length()); - auto iter = utf8String.cbegin(); - unsigned utf8_state = S_STRT; - std::uint32_t codepoint = 0; - while (iter < utf8String.cend()) { - if ((utf8_state = consumeUtf8Fragment(utf8_state, static_cast(*iter++), codepoint)) == S_STRT) { - if (codepoint <= 0xffff) { - result += static_cast(codepoint); - } - else { - codepoint -= 0x10000; - result += static_cast((codepoint >> 10) + 0xd800); - result += static_cast((codepoint & 0x3ff) + 0xdc00); - } - codepoint = 0; - } - else if (utf8_state == S_RJCT) { -#ifdef GHC_RAISE_UNICODE_ERRORS - throw filesystem_error("Illegal byte sequence for unicode character.", utf8String, std::make_error_code(std::errc::illegal_byte_sequence)); -#else - result += static_cast(0xfffd); - utf8_state = S_STRT; - codepoint = 0; -#endif - } - } - if (utf8_state) { -#ifdef GHC_RAISE_UNICODE_ERRORS - throw filesystem_error("Illegal byte sequence for unicode character.", utf8String, std::make_error_code(std::errc::illegal_byte_sequence)); -#else - result += static_cast(0xfffd); -#endif - } - return result; -} - -template ::value && (sizeof(typename Utf8String::value_type) == 1) && (sizeof(typename StringType::value_type) == 4)>::type* = nullptr> -inline StringType fromUtf8(const Utf8String& utf8String, const typename StringType::allocator_type& alloc = typename StringType::allocator_type()) -{ - StringType result(alloc); - result.reserve(utf8String.length()); - auto iter = utf8String.cbegin(); - unsigned utf8_state = S_STRT; - std::uint32_t codepoint = 0; - while (iter < utf8String.cend()) { - if ((utf8_state = consumeUtf8Fragment(utf8_state, static_cast(*iter++), codepoint)) == S_STRT) { - result += static_cast(codepoint); - codepoint = 0; - } - else if (utf8_state == S_RJCT) { -#ifdef GHC_RAISE_UNICODE_ERRORS - throw filesystem_error("Illegal byte sequence for unicode character.", utf8String, std::make_error_code(std::errc::illegal_byte_sequence)); -#else - result += static_cast(0xfffd); - utf8_state = S_STRT; - codepoint = 0; -#endif - } - } - if (utf8_state) { -#ifdef GHC_RAISE_UNICODE_ERRORS - throw filesystem_error("Illegal byte sequence for unicode character.", utf8String, std::make_error_code(std::errc::illegal_byte_sequence)); -#else - result += static_cast(0xfffd); -#endif - } - return result; -} - -template -inline StringType fromUtf8(const charT (&utf8String)[N]) -{ -#ifdef GHC_WITH_STRING_VIEW - return fromUtf8(basic_string_view(utf8String, N - 1)); -#else - return fromUtf8(std::basic_string(utf8String, N - 1)); -#endif -} - -template ::value && (sizeof(typename strT::value_type) == 1), int>::type size = 1> -inline std::string toUtf8(const strT& unicodeString) -{ - return std::string(unicodeString.begin(), unicodeString.end()); -} - -template ::value && (sizeof(typename strT::value_type) == 2), int>::type size = 2> -inline std::string toUtf8(const strT& unicodeString) -{ - std::string result; - for (auto iter = unicodeString.begin(); iter != unicodeString.end(); ++iter) { - char32_t c = *iter; - if (is_surrogate(c)) { - ++iter; - if (iter != unicodeString.end() && is_high_surrogate(c) && is_low_surrogate(*iter)) { - appendUTF8(result, (char32_t(c) << 10) + *iter - 0x35fdc00); - } - else { -#ifdef GHC_RAISE_UNICODE_ERRORS - throw filesystem_error("Illegal code point for unicode character.", result, std::make_error_code(std::errc::illegal_byte_sequence)); -#else - appendUTF8(result, 0xfffd); - if (iter == unicodeString.end()) { - break; - } -#endif - } - } - else { - appendUTF8(result, c); - } - } - return result; -} - -template ::value && (sizeof(typename strT::value_type) == 4), int>::type size = 4> -inline std::string toUtf8(const strT& unicodeString) -{ - std::string result; - for (auto c : unicodeString) { - appendUTF8(result, static_cast(c)); - } - return result; -} - -template -inline std::string toUtf8(const charT* unicodeString) -{ -#ifdef GHC_WITH_STRING_VIEW - return toUtf8(basic_string_view>(unicodeString)); -#else - return toUtf8(std::basic_string>(unicodeString)); -#endif -} - -#ifdef GHC_USE_WCHAR_T -template ::value && (sizeof(typename WString::value_type) == 2) && (sizeof(typename StringType::value_type) == 1), bool>::type = false> -inline StringType fromWChar(const WString& wString, const typename StringType::allocator_type& alloc = typename StringType::allocator_type()) -{ - auto temp = toUtf8(wString); - return StringType(temp.begin(), temp.end(), alloc); -} - -template ::value && (sizeof(typename WString::value_type) == 2) && (sizeof(typename StringType::value_type) == 2), bool>::type = false> -inline StringType fromWChar(const WString& wString, const typename StringType::allocator_type& alloc = typename StringType::allocator_type()) -{ - return StringType(wString.begin(), wString.end(), alloc); -} - -template ::value && (sizeof(typename WString::value_type) == 2) && (sizeof(typename StringType::value_type) == 4), bool>::type = false> -inline StringType fromWChar(const WString& wString, const typename StringType::allocator_type& alloc = typename StringType::allocator_type()) -{ - auto temp = toUtf8(wString); - return fromUtf8(temp, alloc); -} - -template ::value && (sizeof(typename strT::value_type) == 1), bool>::type = false> -inline std::wstring toWChar(const strT& unicodeString) -{ - return fromUtf8(unicodeString); -} - -template ::value && (sizeof(typename strT::value_type) == 2), bool>::type = false> -inline std::wstring toWChar(const strT& unicodeString) -{ - return std::wstring(unicodeString.begin(), unicodeString.end()); -} - -template ::value && (sizeof(typename strT::value_type) == 4), bool>::type = false> -inline std::wstring toWChar(const strT& unicodeString) -{ - auto temp = toUtf8(unicodeString); - return fromUtf8(temp); -} - -template -inline std::wstring toWChar(const charT* unicodeString) -{ -#ifdef GHC_WITH_STRING_VIEW - return toWChar(basic_string_view>(unicodeString)); -#else - return toWChar(std::basic_string>(unicodeString)); -#endif -} -#endif // GHC_USE_WCHAR_T - -} // namespace detail - -#ifdef GHC_EXPAND_IMPL - -namespace detail { - -template ::value, bool>::type = true> -GHC_INLINE bool startsWith(const strT& what, const strT& with) -{ - return with.length() <= what.length() && equal(with.begin(), with.end(), what.begin()); -} - -template ::value, bool>::type = true> -GHC_INLINE bool endsWith(const strT& what, const strT& with) -{ - return with.length() <= what.length() && what.compare(what.length() - with.length(), with.size(), with) == 0; -} - -} // namespace detail - -GHC_INLINE void path::check_long_path() -{ -#if defined(GHC_OS_WINDOWS) && defined(GHC_WIN_AUTO_PREFIX_LONG_PATH) - if (is_absolute() && _path.length() >= MAX_PATH - 12 && !detail::startsWith(_path, impl_string_type(GHC_PLATFORM_LITERAL("\\\\?\\")))) { - postprocess_path_with_format(native_format); - } -#endif -} - -GHC_INLINE void path::postprocess_path_with_format(path::format fmt) -{ -#ifdef GHC_RAISE_UNICODE_ERRORS - if (!detail::validUtf8(_path)) { - path t; - t._path = _path; - throw filesystem_error("Illegal byte sequence for unicode character.", t, std::make_error_code(std::errc::illegal_byte_sequence)); - } -#endif - switch (fmt) { -#ifdef GHC_OS_WINDOWS - case path::native_format: - case path::auto_format: - case path::generic_format: - for (auto& c : _path) { - if (c == generic_separator) { - c = preferred_separator; - } - } -#ifdef GHC_WIN_AUTO_PREFIX_LONG_PATH - if (is_absolute() && _path.length() >= MAX_PATH - 12 && !detail::startsWith(_path, impl_string_type(GHC_PLATFORM_LITERAL("\\\\?\\")))) { - _path = GHC_PLATFORM_LITERAL("\\\\?\\") + _path; - } -#endif - handle_prefixes(); - break; -#else - case path::auto_format: - case path::native_format: - case path::generic_format: - // nothing to do - break; -#endif - } - if (_path.length() > _prefixLength + 2 && _path[_prefixLength] == preferred_separator && _path[_prefixLength + 1] == preferred_separator && _path[_prefixLength + 2] != preferred_separator) { - impl_string_type::iterator new_end = std::unique(_path.begin() + static_cast(_prefixLength) + 2, _path.end(), [](path::value_type lhs, path::value_type rhs) { return lhs == rhs && lhs == preferred_separator; }); - _path.erase(new_end, _path.end()); - } - else { - impl_string_type::iterator new_end = std::unique(_path.begin() + static_cast(_prefixLength), _path.end(), [](path::value_type lhs, path::value_type rhs) { return lhs == rhs && lhs == preferred_separator; }); - _path.erase(new_end, _path.end()); - } -} - -#endif // GHC_EXPAND_IMPL - -template -inline path::path(const Source& source, format fmt) -#ifdef GHC_USE_WCHAR_T - : _path(detail::toWChar(source)) -#else - : _path(detail::toUtf8(source)) -#endif -{ - postprocess_path_with_format(fmt); -} - -template -inline path u8path(const Source& source) -{ - return path(source); -} -template -inline path u8path(InputIterator first, InputIterator last) -{ - return path(first, last); -} - -template -inline path::path(InputIterator first, InputIterator last, format fmt) - : path(std::basic_string::value_type>(first, last), fmt) -{ - // delegated -} - -#ifdef GHC_EXPAND_IMPL - -namespace detail { - -GHC_INLINE bool equals_simple_insensitive(const path::value_type* str1, const path::value_type* str2) -{ -#ifdef GHC_OS_WINDOWS -#ifdef __GNUC__ - while (::tolower((unsigned char)*str1) == ::tolower((unsigned char)*str2++)) { - if (*str1++ == 0) - return true; - } - return false; -#else // __GNUC__ -#ifdef GHC_USE_WCHAR_T - return 0 == ::_wcsicmp(str1, str2); -#else // GHC_USE_WCHAR_T - return 0 == ::_stricmp(str1, str2); -#endif // GHC_USE_WCHAR_T -#endif // __GNUC__ -#else // GHC_OS_WINDOWS - return 0 == ::strcasecmp(str1, str2); -#endif // GHC_OS_WINDOWS -} - -GHC_INLINE int compare_simple_insensitive(const path::value_type* str1, size_t len1, const path::value_type* str2, size_t len2) -{ - while (len1 > 0 && len2 > 0 && ::tolower((unsigned char)*str1) == ::tolower((unsigned char)*str2)) { - --len1; - --len2; - ++str1; - ++str2; - } - if (len1 && len2) { - return *str1 < *str2 ? -1 : 1; - } - if (len1 == 0 && len2 == 0) { - return 0; - } - return len1 == 0 ? -1 : 1; -} - -GHC_INLINE const char* strerror_adapter(char* gnu, char*) -{ - return gnu; -} - -GHC_INLINE const char* strerror_adapter(int posix, char* buffer) -{ - if (posix) { - return "Error in strerror_r!"; - } - return buffer; -} - -template -GHC_INLINE std::string systemErrorText(ErrorNumber code = 0) -{ -#if defined(GHC_OS_WINDOWS) - LPVOID msgBuf; - DWORD dw = code ? static_cast(code) : ::GetLastError(); - FormatMessageW(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, dw, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPWSTR)&msgBuf, 0, NULL); - std::string msg = toUtf8(std::wstring((LPWSTR)msgBuf)); - LocalFree(msgBuf); - return msg; -#else - char buffer[512]; - return strerror_adapter(strerror_r(code ? code : errno, buffer, sizeof(buffer)), buffer); -#endif -} - -#ifdef GHC_OS_WINDOWS -using CreateSymbolicLinkW_fp = BOOLEAN(WINAPI*)(LPCWSTR, LPCWSTR, DWORD); -using CreateHardLinkW_fp = BOOLEAN(WINAPI*)(LPCWSTR, LPCWSTR, LPSECURITY_ATTRIBUTES); - -GHC_INLINE void create_symlink(const path& target_name, const path& new_symlink, bool to_directory, std::error_code& ec) -{ - std::error_code tec; - auto fs = status(target_name, tec); - if ((fs.type() == file_type::directory && !to_directory) || (fs.type() == file_type::regular && to_directory)) { - ec = detail::make_error_code(detail::portable_error::not_supported); - return; - } -#if defined(__GNUC__) && __GNUC__ >= 8 -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wcast-function-type" -#endif - static CreateSymbolicLinkW_fp api_call = reinterpret_cast(GetProcAddress(GetModuleHandleW(L"kernel32.dll"), "CreateSymbolicLinkW")); -#if defined(__GNUC__) && __GNUC__ >= 8 -#pragma GCC diagnostic pop -#endif - if (api_call) { - if (api_call(detail::fromUtf8(new_symlink.u8string()).c_str(), detail::fromUtf8(target_name.u8string()).c_str(), to_directory ? 1 : 0) == 0) { - auto result = ::GetLastError(); - if (result == ERROR_PRIVILEGE_NOT_HELD && api_call(detail::fromUtf8(new_symlink.u8string()).c_str(), detail::fromUtf8(target_name.u8string()).c_str(), to_directory ? 3 : 2) != 0) { - return; - } - ec = detail::make_system_error(result); - } - } - else { - ec = detail::make_system_error(ERROR_NOT_SUPPORTED); - } -} - -GHC_INLINE void create_hardlink(const path& target_name, const path& new_hardlink, std::error_code& ec) -{ -#if defined(__GNUC__) && __GNUC__ >= 8 -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wcast-function-type" -#endif - static CreateHardLinkW_fp api_call = reinterpret_cast(GetProcAddress(GetModuleHandleW(L"kernel32.dll"), "CreateHardLinkW")); -#if defined(__GNUC__) && __GNUC__ >= 8 -#pragma GCC diagnostic pop -#endif - if (api_call) { - if (api_call(GHC_NATIVEWP(new_hardlink), GHC_NATIVEWP(target_name), NULL) == 0) { - ec = detail::make_system_error(); - } - } - else { - ec = detail::make_system_error(ERROR_NOT_SUPPORTED); - } -} - -GHC_INLINE path getFullPathName(const wchar_t* p, std::error_code& ec) -{ - ULONG size = ::GetFullPathNameW(p, 0, 0, 0); - if (size) { - std::vector buf(size, 0); - ULONG s2 = GetFullPathNameW(p, size, buf.data(), nullptr); - if (s2 && s2 < size) { - return path(std::wstring(buf.data(), s2)); - } - } - ec = detail::make_system_error(); - return path(); -} - -#else -GHC_INLINE void create_symlink(const path& target_name, const path& new_symlink, bool, std::error_code& ec) -{ - if (::symlink(target_name.c_str(), new_symlink.c_str()) != 0) { - ec = detail::make_system_error(); - } -} - -#ifndef GHC_OS_WEB -GHC_INLINE void create_hardlink(const path& target_name, const path& new_hardlink, std::error_code& ec) -{ - if (::link(target_name.c_str(), new_hardlink.c_str()) != 0) { - ec = detail::make_system_error(); - } -} -#endif -#endif - -template -GHC_INLINE file_status file_status_from_st_mode(T mode) -{ -#ifdef GHC_OS_WINDOWS - file_type ft = file_type::unknown; - if ((mode & _S_IFDIR) == _S_IFDIR) { - ft = file_type::directory; - } - else if ((mode & _S_IFREG) == _S_IFREG) { - ft = file_type::regular; - } - else if ((mode & _S_IFCHR) == _S_IFCHR) { - ft = file_type::character; - } - perms prms = static_cast(mode & 0xfff); - return file_status(ft, prms); -#else - file_type ft = file_type::unknown; - if (S_ISDIR(mode)) { - ft = file_type::directory; - } - else if (S_ISREG(mode)) { - ft = file_type::regular; - } - else if (S_ISCHR(mode)) { - ft = file_type::character; - } - else if (S_ISBLK(mode)) { - ft = file_type::block; - } - else if (S_ISFIFO(mode)) { - ft = file_type::fifo; - } - else if (S_ISLNK(mode)) { - ft = file_type::symlink; - } - else if (S_ISSOCK(mode)) { - ft = file_type::socket; - } - perms prms = static_cast(mode & 0xfff); - return file_status(ft, prms); -#endif -} - -GHC_INLINE path resolveSymlink(const path& p, std::error_code& ec) -{ -#ifdef GHC_OS_WINDOWS -#ifndef REPARSE_DATA_BUFFER_HEADER_SIZE - typedef struct _REPARSE_DATA_BUFFER - { - ULONG ReparseTag; - USHORT ReparseDataLength; - USHORT Reserved; - union - { - struct - { - USHORT SubstituteNameOffset; - USHORT SubstituteNameLength; - USHORT PrintNameOffset; - USHORT PrintNameLength; - ULONG Flags; - WCHAR PathBuffer[1]; - } SymbolicLinkReparseBuffer; - struct - { - USHORT SubstituteNameOffset; - USHORT SubstituteNameLength; - USHORT PrintNameOffset; - USHORT PrintNameLength; - WCHAR PathBuffer[1]; - } MountPointReparseBuffer; - struct - { - UCHAR DataBuffer[1]; - } GenericReparseBuffer; - } DUMMYUNIONNAME; - } REPARSE_DATA_BUFFER; -#ifndef MAXIMUM_REPARSE_DATA_BUFFER_SIZE -#define MAXIMUM_REPARSE_DATA_BUFFER_SIZE (16 * 1024) -#endif -#endif - - std::shared_ptr file(CreateFileW(GHC_NATIVEWP(p), 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, FILE_FLAG_OPEN_REPARSE_POINT | FILE_FLAG_BACKUP_SEMANTICS, 0), CloseHandle); - if (file.get() == INVALID_HANDLE_VALUE) { - ec = detail::make_system_error(); - return path(); - } - - std::shared_ptr reparseData((REPARSE_DATA_BUFFER*)std::calloc(1, MAXIMUM_REPARSE_DATA_BUFFER_SIZE), std::free); - ULONG bufferUsed; - path result; - if (DeviceIoControl(file.get(), FSCTL_GET_REPARSE_POINT, 0, 0, reparseData.get(), MAXIMUM_REPARSE_DATA_BUFFER_SIZE, &bufferUsed, 0)) { - if (IsReparseTagMicrosoft(reparseData->ReparseTag)) { - switch (reparseData->ReparseTag) { - case IO_REPARSE_TAG_SYMLINK: { - auto printName = std::wstring(&reparseData->SymbolicLinkReparseBuffer.PathBuffer[reparseData->SymbolicLinkReparseBuffer.PrintNameOffset / sizeof(WCHAR)], reparseData->SymbolicLinkReparseBuffer.PrintNameLength / sizeof(WCHAR)); - auto substituteName = - std::wstring(&reparseData->SymbolicLinkReparseBuffer.PathBuffer[reparseData->SymbolicLinkReparseBuffer.SubstituteNameOffset / sizeof(WCHAR)], reparseData->SymbolicLinkReparseBuffer.SubstituteNameLength / sizeof(WCHAR)); - if (detail::endsWith(substituteName, printName) && detail::startsWith(substituteName, std::wstring(L"\\??\\"))) { - result = printName; - } - else { - result = substituteName; - } - if (reparseData->SymbolicLinkReparseBuffer.Flags & 0x1 /*SYMLINK_FLAG_RELATIVE*/) { - result = p.parent_path() / result; - } - break; - } - case IO_REPARSE_TAG_MOUNT_POINT: - result = std::wstring(&reparseData->MountPointReparseBuffer.PathBuffer[reparseData->MountPointReparseBuffer.SubstituteNameOffset / sizeof(WCHAR)], reparseData->MountPointReparseBuffer.SubstituteNameLength / sizeof(WCHAR)); - break; - default: - break; - } - } - } - else { - ec = detail::make_system_error(); - } - return result; -#else - size_t bufferSize = 256; - while (true) { - std::vector buffer(bufferSize, static_cast(0)); - auto rc = ::readlink(p.c_str(), buffer.data(), buffer.size()); - if (rc < 0) { - ec = detail::make_system_error(); - return path(); - } - else if (rc < static_cast(bufferSize)) { - return path(std::string(buffer.data(), static_cast(rc))); - } - bufferSize *= 2; - } - return path(); -#endif -} - -#ifdef GHC_OS_WINDOWS -GHC_INLINE time_t timeFromFILETIME(const FILETIME& ft) -{ - ULARGE_INTEGER ull; - ull.LowPart = ft.dwLowDateTime; - ull.HighPart = ft.dwHighDateTime; - return static_cast(ull.QuadPart / 10000000ULL - 11644473600ULL); -} - -GHC_INLINE void timeToFILETIME(time_t t, FILETIME& ft) -{ - LONGLONG ll; - ll = Int32x32To64(t, 10000000) + 116444736000000000; - ft.dwLowDateTime = static_cast(ll); - ft.dwHighDateTime = static_cast(ll >> 32); -} - -template -GHC_INLINE uintmax_t hard_links_from_INFO(const INFO* info) -{ - return static_cast(-1); -} - -template <> -GHC_INLINE uintmax_t hard_links_from_INFO(const BY_HANDLE_FILE_INFORMATION* info) -{ - return info->nNumberOfLinks; -} - -template -GHC_INLINE file_status status_from_INFO(const path& p, const INFO* info, std::error_code&, uintmax_t* sz = nullptr, time_t* lwt = nullptr) -{ - file_type ft = file_type::unknown; - if ((info->dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT)) { - ft = file_type::symlink; - } - else { - if ((info->dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)) { - ft = file_type::directory; - } - else { - ft = file_type::regular; - } - } - perms prms = perms::owner_read | perms::group_read | perms::others_read; - if (!(info->dwFileAttributes & FILE_ATTRIBUTE_READONLY)) { - prms = prms | perms::owner_write | perms::group_write | perms::others_write; - } - if (has_executable_extension(p)) { - prms = prms | perms::owner_exec | perms::group_exec | perms::others_exec; - } - if (sz) { - *sz = static_cast(info->nFileSizeHigh) << (sizeof(info->nFileSizeHigh) * 8) | info->nFileSizeLow; - } - if (lwt) { - *lwt = detail::timeFromFILETIME(info->ftLastWriteTime); - } - return file_status(ft, prms); -} - -#endif - -GHC_INLINE bool is_not_found_error(std::error_code& ec) -{ -#ifdef GHC_OS_WINDOWS - return ec.value() == ERROR_FILE_NOT_FOUND || ec.value() == ERROR_PATH_NOT_FOUND || ec.value() == ERROR_INVALID_NAME; -#else - return ec.value() == ENOENT || ec.value() == ENOTDIR; -#endif -} - -GHC_INLINE file_status symlink_status_ex(const path& p, std::error_code& ec, uintmax_t* sz = nullptr, uintmax_t* nhl = nullptr, time_t* lwt = nullptr) noexcept -{ -#ifdef GHC_OS_WINDOWS - file_status fs; - WIN32_FILE_ATTRIBUTE_DATA attr; - if (!GetFileAttributesExW(GHC_NATIVEWP(p), GetFileExInfoStandard, &attr)) { - ec = detail::make_system_error(); - } - else { - ec.clear(); - fs = detail::status_from_INFO(p, &attr, ec, sz, lwt); - if (nhl) { - *nhl = 0; - } - if (attr.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) { - fs.type(file_type::symlink); - } - } - if (detail::is_not_found_error(ec)) { - return file_status(file_type::not_found); - } - return ec ? file_status(file_type::none) : fs; -#else - (void)sz; - (void)nhl; - (void)lwt; - struct ::stat fs; - auto result = ::lstat(p.c_str(), &fs); - if (result == 0) { - ec.clear(); - file_status f_s = detail::file_status_from_st_mode(fs.st_mode); - return f_s; - } - ec = detail::make_system_error(); - if (detail::is_not_found_error(ec)) { - return file_status(file_type::not_found, perms::unknown); - } - return file_status(file_type::none); -#endif -} - -GHC_INLINE file_status status_ex(const path& p, std::error_code& ec, file_status* sls = nullptr, uintmax_t* sz = nullptr, uintmax_t* nhl = nullptr, time_t* lwt = nullptr, int recurse_count = 0) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - if (recurse_count > 16) { - ec = detail::make_system_error(0x2A9 /*ERROR_STOPPED_ON_SYMLINK*/); - return file_status(file_type::unknown); - } - WIN32_FILE_ATTRIBUTE_DATA attr; - if (!::GetFileAttributesExW(GHC_NATIVEWP(p), GetFileExInfoStandard, &attr)) { - ec = detail::make_system_error(); - } - else if (attr.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) { - path target = resolveSymlink(p, ec); - file_status result; - if (!ec && !target.empty()) { - if (sls) { - *sls = status_from_INFO(p, &attr, ec); - } - return detail::status_ex(target, ec, nullptr, sz, nhl, lwt, recurse_count + 1); - } - return file_status(file_type::unknown); - } - if (ec) { - if (detail::is_not_found_error(ec)) { - return file_status(file_type::not_found); - } - return file_status(file_type::none); - } - if (nhl) { - *nhl = 0; - } - return detail::status_from_INFO(p, &attr, ec, sz, lwt); -#else - (void)recurse_count; - struct ::stat st; - auto result = ::lstat(p.c_str(), &st); - if (result == 0) { - ec.clear(); - file_status fs = detail::file_status_from_st_mode(st.st_mode); - if (sls) { - *sls = fs; - } - if (fs.type() == file_type::symlink) { - result = ::stat(p.c_str(), &st); - if (result == 0) { - fs = detail::file_status_from_st_mode(st.st_mode); - } - } - if (sz) { - *sz = static_cast(st.st_size); - } - if (nhl) { - *nhl = st.st_nlink; - } - if (lwt) { - *lwt = st.st_mtime; - } - return fs; - } - else { - ec = detail::make_system_error(); - if (detail::is_not_found_error(ec)) { - return file_status(file_type::not_found, perms::unknown); - } - return file_status(file_type::none); - } -#endif -} - -} // namespace detail - -GHC_INLINE u8arguments::u8arguments(int& argc, char**& argv) - : _argc(argc) - , _argv(argv) - , _refargc(argc) - , _refargv(argv) - , _isvalid(false) -{ -#ifdef GHC_OS_WINDOWS - LPWSTR* p; - p = ::CommandLineToArgvW(::GetCommandLineW(), &argc); - _args.reserve(static_cast(argc)); - _argp.reserve(static_cast(argc)); - for (size_t i = 0; i < static_cast(argc); ++i) { - _args.push_back(detail::toUtf8(std::wstring(p[i]))); - _argp.push_back((char*)_args[i].data()); - } - argv = _argp.data(); - ::LocalFree(p); - _isvalid = true; -#else - std::setlocale(LC_ALL, ""); -#if defined(__ANDROID__) && __ANDROID_API__ < 26 - _isvalid = true; -#else - if (detail::equals_simple_insensitive(::nl_langinfo(CODESET), "UTF-8")) { - _isvalid = true; - } -#endif -#endif -} - -//----------------------------------------------------------------------------- -// 30.10.8.4.1 constructors and destructor - -GHC_INLINE path::path() noexcept {} - -GHC_INLINE path::path(const path& p) - : _path(p._path) -#if defined(GHC_OS_WINDOWS) && defined(GHC_WIN_AUTO_PREFIX_LONG_PATH) - , _prefixLength(p._prefixLength) -#endif -{ -} - -GHC_INLINE path::path(path&& p) noexcept - : _path(std::move(p._path)) -#if defined(GHC_OS_WINDOWS) && defined(GHC_WIN_AUTO_PREFIX_LONG_PATH) - , _prefixLength(p._prefixLength) -#endif -{ -} - -GHC_INLINE path::path(string_type&& source, format fmt) - : _path(std::move(source)) -{ - postprocess_path_with_format(fmt); -} - -#endif // GHC_EXPAND_IMPL - -#ifdef GHC_WITH_EXCEPTIONS -template -inline path::path(const Source& source, const std::locale& loc, format fmt) - : path(source, fmt) -{ - std::string locName = loc.name(); - if (!(locName.length() >= 5 && (locName.substr(locName.length() - 5) == "UTF-8" || locName.substr(locName.length() - 5) == "utf-8"))) { - throw filesystem_error("This implementation only supports UTF-8 locales!", path(_path), detail::make_error_code(detail::portable_error::not_supported)); - } -} - -template -inline path::path(InputIterator first, InputIterator last, const std::locale& loc, format fmt) - : path(std::basic_string::value_type>(first, last), fmt) -{ - std::string locName = loc.name(); - if (!(locName.length() >= 5 && (locName.substr(locName.length() - 5) == "UTF-8" || locName.substr(locName.length() - 5) == "utf-8"))) { - throw filesystem_error("This implementation only supports UTF-8 locales!", path(_path), detail::make_error_code(detail::portable_error::not_supported)); - } -} -#endif - -#ifdef GHC_EXPAND_IMPL - -GHC_INLINE path::~path() {} - -//----------------------------------------------------------------------------- -// 30.10.8.4.2 assignments - -GHC_INLINE path& path::operator=(const path& p) -{ - _path = p._path; -#if defined(GHC_OS_WINDOWS) && defined(GHC_WIN_AUTO_PREFIX_LONG_PATH) - _prefixLength = p._prefixLength; -#endif - return *this; -} - -GHC_INLINE path& path::operator=(path&& p) noexcept -{ - _path = std::move(p._path); -#if defined(GHC_OS_WINDOWS) && defined(GHC_WIN_AUTO_PREFIX_LONG_PATH) - _prefixLength = p._prefixLength; -#endif - return *this; -} - -GHC_INLINE path& path::operator=(path::string_type&& source) -{ - return assign(source); -} - -GHC_INLINE path& path::assign(path::string_type&& source) -{ - _path = std::move(source); - postprocess_path_with_format(native_format); - return *this; -} - -#endif // GHC_EXPAND_IMPL - -template -inline path& path::operator=(const Source& source) -{ - return assign(source); -} - -template -inline path& path::assign(const Source& source) -{ -#ifdef GHC_USE_WCHAR_T - _path.assign(detail::toWChar(source)); -#else - _path.assign(detail::toUtf8(source)); -#endif - postprocess_path_with_format(native_format); - return *this; -} - -template <> -inline path& path::assign(const path& source) -{ - _path = source._path; -#if defined(GHC_OS_WINDOWS) && defined(GHC_WIN_AUTO_PREFIX_LONG_PATH) - _prefixLength = source._prefixLength; -#endif - return *this; -} - -template -inline path& path::assign(InputIterator first, InputIterator last) -{ - _path.assign(first, last); - postprocess_path_with_format(native_format); - return *this; -} - -#ifdef GHC_EXPAND_IMPL - -//----------------------------------------------------------------------------- -// 30.10.8.4.3 appends - -GHC_INLINE path& path::operator/=(const path& p) -{ - if (p.empty()) { - // was: if ((!has_root_directory() && is_absolute()) || has_filename()) - if (!_path.empty() && _path[_path.length() - 1] != preferred_separator && _path[_path.length() - 1] != ':') { - _path += preferred_separator; - } - return *this; - } - if ((p.is_absolute() && (_path != root_name()._path || p._path != "/")) || (p.has_root_name() && p.root_name() != root_name())) { - assign(p); - return *this; - } - if (p.has_root_directory()) { - assign(root_name()); - } - else if ((!has_root_directory() && is_absolute()) || has_filename()) { - _path += preferred_separator; - } - auto iter = p.begin(); - bool first = true; - if (p.has_root_name()) { - ++iter; - } - while (iter != p.end()) { - if (!first && !(!_path.empty() && _path[_path.length() - 1] == preferred_separator)) { - _path += preferred_separator; - } - first = false; - _path += (*iter++).native(); - } - check_long_path(); - return *this; -} - -GHC_INLINE void path::append_name(const value_type* name) -{ - if (_path.empty()) { - this->operator/=(path(name)); - } - else { - if (_path.back() != path::preferred_separator) { - _path.push_back(path::preferred_separator); - } - _path += name; - check_long_path(); - } -} - -#endif // GHC_EXPAND_IMPL - -template -inline path& path::operator/=(const Source& source) -{ - return append(source); -} - -template -inline path& path::append(const Source& source) -{ - return this->operator/=(path(source)); -} - -template <> -inline path& path::append(const path& p) -{ - return this->operator/=(p); -} - -template -inline path& path::append(InputIterator first, InputIterator last) -{ - std::basic_string::value_type> part(first, last); - return append(part); -} - -#ifdef GHC_EXPAND_IMPL - -//----------------------------------------------------------------------------- -// 30.10.8.4.4 concatenation - -GHC_INLINE path& path::operator+=(const path& x) -{ - return concat(x._path); -} - -GHC_INLINE path& path::operator+=(const string_type& x) -{ - return concat(x); -} - -#ifdef GHC_WITH_STRING_VIEW -GHC_INLINE path& path::operator+=(basic_string_view x) -{ - return concat(x); -} -#endif - -GHC_INLINE path& path::operator+=(const value_type* x) -{ -#ifdef GHC_WITH_STRING_VIEW - basic_string_view part(x); -#else - string_type part(x); -#endif - return concat(part); -} - -GHC_INLINE path& path::operator+=(value_type x) -{ -#ifdef GHC_OS_WINDOWS - if (x == generic_separator) { - x = preferred_separator; - } -#endif - if (_path.empty() || _path.back() != preferred_separator) { - _path += x; - } - check_long_path(); - return *this; -} - -#endif // GHC_EXPAND_IMPL - -template -inline path::path_from_string& path::operator+=(const Source& x) -{ - return concat(x); -} - -template -inline path::path_type_EcharT& path::operator+=(EcharT x) -{ -#ifdef GHC_WITH_STRING_VIEW - basic_string_view part(&x, 1); -#else - std::basic_string part(1, x); -#endif - concat(part); - return *this; -} - -template -inline path& path::concat(const Source& x) -{ - path p(x); - _path += p._path; - postprocess_path_with_format(native_format); - return *this; -} -template -inline path& path::concat(InputIterator first, InputIterator last) -{ - _path.append(first, last); - postprocess_path_with_format(native_format); - return *this; -} - -#ifdef GHC_EXPAND_IMPL - -//----------------------------------------------------------------------------- -// 30.10.8.4.5 modifiers -GHC_INLINE void path::clear() noexcept -{ - _path.clear(); -#if defined(GHC_OS_WINDOWS) && defined(GHC_WIN_AUTO_PREFIX_LONG_PATH) - _prefixLength = 0; -#endif -} - -GHC_INLINE path& path::make_preferred() -{ - // as this filesystem implementation only uses generic_format - // internally, this must be a no-op - return *this; -} - -GHC_INLINE path& path::remove_filename() -{ - if (has_filename()) { - _path.erase(_path.size() - filename()._path.size()); - } - return *this; -} - -GHC_INLINE path& path::replace_filename(const path& replacement) -{ - remove_filename(); - return append(replacement); -} - -GHC_INLINE path& path::replace_extension(const path& replacement) -{ - if (has_extension()) { - _path.erase(_path.size() - extension()._path.size()); - } - if (!replacement.empty() && replacement._path[0] != '.') { - _path += '.'; - } - return concat(replacement); -} - -GHC_INLINE void path::swap(path& rhs) noexcept -{ - _path.swap(rhs._path); -#if defined(GHC_OS_WINDOWS) && defined(GHC_WIN_AUTO_PREFIX_LONG_PATH) - std::swap(_prefixLength, rhs._prefixLength); -#endif -} - -//----------------------------------------------------------------------------- -// 30.10.8.4.6, native format observers -GHC_INLINE const path::string_type& path::native() const noexcept -{ - return _path; -} - -GHC_INLINE const path::value_type* path::c_str() const noexcept -{ - return native().c_str(); -} - -GHC_INLINE path::operator path::string_type() const -{ - return native(); -} - -#endif // GHC_EXPAND_IMPL - -template -inline std::basic_string path::string(const Allocator& a) const -{ -#ifdef GHC_USE_WCHAR_T - return detail::fromWChar>(_path, a); -#else - return detail::fromUtf8>(_path, a); -#endif -} - -#ifdef GHC_EXPAND_IMPL - -GHC_INLINE std::string path::string() const -{ -#ifdef GHC_USE_WCHAR_T - return detail::toUtf8(native()); -#else - return native(); -#endif -} - -GHC_INLINE std::wstring path::wstring() const -{ -#ifdef GHC_USE_WCHAR_T - return native(); -#else - return detail::fromUtf8(native()); -#endif -} - -#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API) -GHC_INLINE std::u8string path::u8string() const -{ -#ifdef GHC_USE_WCHAR_T - return std::u8string(reinterpret_cast(detail::toUtf8(native()).c_str())); -#else - return std::u8string(reinterpret_cast(c_str())); -#endif -} -#else -GHC_INLINE std::string path::u8string() const -{ -#ifdef GHC_USE_WCHAR_T - return detail::toUtf8(native()); -#else - return native(); -#endif -} -#endif - -GHC_INLINE std::u16string path::u16string() const -{ - // TODO: optimize - return detail::fromUtf8(string()); -} - -GHC_INLINE std::u32string path::u32string() const -{ - // TODO: optimize - return detail::fromUtf8(string()); -} - -#endif // GHC_EXPAND_IMPL - -//----------------------------------------------------------------------------- -// 30.10.8.4.7, generic format observers -template -inline std::basic_string path::generic_string(const Allocator& a) const -{ -#ifdef GHC_OS_WINDOWS -#ifdef GHC_USE_WCHAR_T - auto result = detail::fromWChar, path::string_type>(_path, a); -#else - auto result = detail::fromUtf8>(_path, a); -#endif - for (auto& c : result) { - if (c == preferred_separator) { - c = generic_separator; - } - } - return result; -#else - return detail::fromUtf8>(_path, a); -#endif -} - -#ifdef GHC_EXPAND_IMPL - -GHC_INLINE std::string path::generic_string() const -{ -#ifdef GHC_OS_WINDOWS - return generic_string(); -#else - return _path; -#endif -} - -GHC_INLINE std::wstring path::generic_wstring() const -{ -#ifdef GHC_OS_WINDOWS - return generic_string(); -#else - return detail::fromUtf8(_path); -#endif -} // namespace filesystem - -#if defined(__cpp_lib_char8_t) && !defined(GHC_FILESYSTEM_ENFORCE_CPP17_API) -GHC_INLINE std::u8string path::generic_u8string() const -{ -#ifdef GHC_OS_WINDOWS - return generic_string(); -#else - return std::u8string(reinterpret_cast(_path.c_str())); -#endif -} -#else -GHC_INLINE std::string path::generic_u8string() const -{ -#ifdef GHC_OS_WINDOWS - return generic_string(); -#else - return _path; -#endif -} -#endif - -GHC_INLINE std::u16string path::generic_u16string() const -{ -#ifdef GHC_OS_WINDOWS - return generic_string(); -#else - return detail::fromUtf8(_path); -#endif -} - -GHC_INLINE std::u32string path::generic_u32string() const -{ -#ifdef GHC_OS_WINDOWS - return generic_string(); -#else - return detail::fromUtf8(_path); -#endif -} - -//----------------------------------------------------------------------------- -// 30.10.8.4.8, compare -GHC_INLINE int path::compare(const path& p) const noexcept -{ -#ifdef LWG_2936_BEHAVIOUR - auto rnl1 = root_name_length(); - auto rnl2 = p.root_name_length(); -#ifdef GHC_OS_WINDOWS - auto rnc = detail::compare_simple_insensitive(_path.c_str(), rnl1, p._path.c_str(), rnl2); -#else - auto rnc = _path.compare(0, rnl1, p._path, 0, (std::min(rnl1, rnl2))); -#endif - if (rnc) { - return rnc; - } - bool hrd1 = has_root_directory(), hrd2 = p.has_root_directory(); - if (hrd1 != hrd2) { - return hrd1 ? 1 : -1; - } - if (hrd1) { - ++rnl1; - ++rnl2; - } - auto iter1 = _path.begin() + static_cast(rnl1); - auto iter2 = p._path.begin() + static_cast(rnl2); - while (iter1 != _path.end() && iter2 != p._path.end() && *iter1 == *iter2) { - ++iter1; - ++iter2; - } - if (iter1 == _path.end()) { - return iter2 == p._path.end() ? 0 : -1; - } - if (iter2 == p._path.end()) { - return 1; - } - if (*iter1 == preferred_separator) { - return -1; - } - if (*iter2 == preferred_separator) { - return 1; - } - return *iter1 < *iter2 ? -1 : 1; -#else // LWG_2936_BEHAVIOUR -#ifdef GHC_OS_WINDOWS - auto rnl1 = root_name_length(); - auto rnl2 = p.root_name_length(); - auto rnc = detail::compare_simple_insensitive(_path.c_str(), rnl1, p._path.c_str(), rnl2); - if (rnc) { - return rnc; - } - return _path.compare(rnl1, std::string::npos, p._path, rnl2, std::string::npos); -#else - return _path.compare(p._path); -#endif -#endif -} - -GHC_INLINE int path::compare(const string_type& s) const -{ - return compare(path(s)); -} - -#ifdef GHC_WITH_STRING_VIEW -GHC_INLINE int path::compare(basic_string_view s) const -{ - return compare(path(s)); -} -#endif - -GHC_INLINE int path::compare(const value_type* s) const -{ - return compare(path(s)); -} - -//----------------------------------------------------------------------------- -// 30.10.8.4.9, decomposition -#ifdef GHC_OS_WINDOWS -GHC_INLINE void path::handle_prefixes() -{ -#if defined(GHC_WIN_AUTO_PREFIX_LONG_PATH) - _prefixLength = 0; - if (_path.length() >= 6 && _path[2] == '?' && std::toupper(static_cast(_path[4])) >= 'A' && std::toupper(static_cast(_path[4])) <= 'Z' && _path[5] == ':') { - if (detail::startsWith(_path, impl_string_type(GHC_PLATFORM_LITERAL("\\\\?\\"))) || detail::startsWith(_path, impl_string_type(GHC_PLATFORM_LITERAL("\\??\\")))) { - _prefixLength = 4; - } - } -#endif // GHC_WIN_AUTO_PREFIX_LONG_PATH -} -#endif - -GHC_INLINE path::string_type::size_type path::root_name_length() const noexcept -{ -#ifdef GHC_OS_WINDOWS - if (_path.length() >= _prefixLength + 2 && std::toupper(static_cast(_path[_prefixLength])) >= 'A' && std::toupper(static_cast(_path[_prefixLength])) <= 'Z' && _path[_prefixLength + 1] == ':') { - return 2; - } -#endif - if (_path.length() > _prefixLength + 2 && _path[_prefixLength] == preferred_separator && _path[_prefixLength + 1] == preferred_separator && _path[_prefixLength + 2] != preferred_separator && std::isprint(_path[_prefixLength + 2])) { - impl_string_type::size_type pos = _path.find(preferred_separator, _prefixLength + 3); - if (pos == impl_string_type::npos) { - return _path.length(); - } - else { - return pos; - } - } - return 0; -} - -GHC_INLINE path path::root_name() const -{ - return path(_path.substr(_prefixLength, root_name_length()), native_format); -} - -GHC_INLINE path path::root_directory() const -{ - if (has_root_directory()) { - static const path _root_dir(std::string(1, preferred_separator), native_format); - return _root_dir; - } - return path(); -} - -GHC_INLINE path path::root_path() const -{ - return path(root_name().string() + root_directory().string(), native_format); -} - -GHC_INLINE path path::relative_path() const -{ - auto rootPathLen = _prefixLength + root_name_length() + (has_root_directory() ? 1 : 0); - return path(_path.substr((std::min)(rootPathLen, _path.length())), generic_format); -} - -GHC_INLINE path path::parent_path() const -{ - auto rootPathLen = _prefixLength + root_name_length() + (has_root_directory() ? 1 : 0); - if (rootPathLen < _path.length()) { - if (empty()) { - return path(); - } - else { - auto piter = end(); - auto iter = piter.decrement(_path.end()); - if (iter > _path.begin() + static_cast(rootPathLen) && *iter != preferred_separator) { - --iter; - } - return path(_path.begin(), iter, native_format); - } - } - else { - return *this; - } -} - -GHC_INLINE path path::filename() const -{ - return !has_relative_path() ? path() : path(*--end()); -} - -GHC_INLINE path path::stem() const -{ - impl_string_type fn = filename().native(); - if (fn != "." && fn != "..") { - impl_string_type::size_type pos = fn.rfind('.'); - if (pos != impl_string_type::npos && pos > 0) { - return path{fn.substr(0, pos), native_format}; - } - } - return path{fn, native_format}; -} - -GHC_INLINE path path::extension() const -{ - if (has_relative_path()) { - auto iter = end(); - const auto& fn = *--iter; - impl_string_type::size_type pos = fn._path.rfind('.'); - if (pos != std::string::npos && pos > 0) { - return path(fn._path.substr(pos), native_format); - } - } - return path(); -} - -#ifdef GHC_OS_WINDOWS -namespace detail { -GHC_INLINE bool has_executable_extension(const path& p) -{ - if (p.has_relative_path()) { - auto iter = p.end(); - const auto& fn = *--iter; - auto pos = fn._path.find_last_of('.'); - if (pos == std::string::npos || pos == 0 || fn._path.length() - pos != 3) { - return false; - } - const path::value_type* ext = fn._path.c_str() + pos + 1; - if (detail::equals_simple_insensitive(ext, GHC_PLATFORM_LITERAL("exe")) || detail::equals_simple_insensitive(ext, GHC_PLATFORM_LITERAL("cmd")) || detail::equals_simple_insensitive(ext, GHC_PLATFORM_LITERAL("bat")) || detail::equals_simple_insensitive(ext, GHC_PLATFORM_LITERAL("com"))) { - return true; - } - } - return false; -} -} // namespace detail -#endif - -//----------------------------------------------------------------------------- -// 30.10.8.4.10, query -GHC_INLINE bool path::empty() const noexcept -{ - return _path.empty(); -} - -GHC_INLINE bool path::has_root_name() const -{ - return root_name_length() > 0; -} - -GHC_INLINE bool path::has_root_directory() const -{ - auto rootLen = _prefixLength + root_name_length(); - return (_path.length() > rootLen && _path[rootLen] == preferred_separator); -} - -GHC_INLINE bool path::has_root_path() const -{ - return has_root_name() || has_root_directory(); -} - -GHC_INLINE bool path::has_relative_path() const -{ - auto rootPathLen = _prefixLength + root_name_length() + (has_root_directory() ? 1 : 0); - return rootPathLen < _path.length(); -} - -GHC_INLINE bool path::has_parent_path() const -{ - return !parent_path().empty(); -} - -GHC_INLINE bool path::has_filename() const -{ - return has_relative_path() && !filename().empty(); -} - -GHC_INLINE bool path::has_stem() const -{ - return !stem().empty(); -} - -GHC_INLINE bool path::has_extension() const -{ - return !extension().empty(); -} - -GHC_INLINE bool path::is_absolute() const -{ -#ifdef GHC_OS_WINDOWS - return has_root_name() && has_root_directory(); -#else - return has_root_directory(); -#endif -} - -GHC_INLINE bool path::is_relative() const -{ - return !is_absolute(); -} - -//----------------------------------------------------------------------------- -// 30.10.8.4.11, generation -GHC_INLINE path path::lexically_normal() const -{ - path dest; - bool lastDotDot = false; - for (string_type s : *this) { - if (s == ".") { - dest /= ""; - continue; - } - else if (s == ".." && !dest.empty()) { - auto root = root_path(); - if (dest == root) { - continue; - } - else if (*(--dest.end()) != "..") { - if (dest._path.back() == preferred_separator) { - dest._path.pop_back(); - } - dest.remove_filename(); - continue; - } - } - if (!(s.empty() && lastDotDot)) { - dest /= s; - } - lastDotDot = s == ".."; - } - if (dest.empty()) { - dest = "."; - } - return dest; -} - -GHC_INLINE path path::lexically_relative(const path& base) const -{ - if (root_name() != base.root_name() || is_absolute() != base.is_absolute() || (!has_root_directory() && base.has_root_directory())) { - return path(); - } - const_iterator a = begin(), b = base.begin(); - while (a != end() && b != base.end() && *a == *b) { - ++a; - ++b; - } - if (a == end() && b == base.end()) { - return path("."); - } - int count = 0; - for (const auto& element : input_iterator_range(b, base.end())) { - if (element != "." && element != "" && element != "..") { - ++count; - } - else if (element == "..") { - --count; - } - } - if (count < 0) { - return path(); - } - path result; - for (int i = 0; i < count; ++i) { - result /= ".."; - } - for (const auto& element : input_iterator_range(a, end())) { - result /= element; - } - return result; -} - -GHC_INLINE path path::lexically_proximate(const path& base) const -{ - path result = lexically_relative(base); - return result.empty() ? *this : result; -} - -//----------------------------------------------------------------------------- -// 30.10.8.5, iterators -GHC_INLINE path::iterator::iterator() {} - -GHC_INLINE path::iterator::iterator(const path& p, const impl_string_type::const_iterator& pos) - : _first(p._path.begin()) - , _last(p._path.end()) - , _prefix(_first + static_cast(p._prefixLength)) - , _root(p.has_root_directory() ? _first + static_cast(p._prefixLength + p.root_name_length()) : _last) - , _iter(pos) -{ - if(pos != _last) { - updateCurrent(); - } -} - -GHC_INLINE path::impl_string_type::const_iterator path::iterator::increment(const path::impl_string_type::const_iterator& pos) const -{ - path::impl_string_type::const_iterator i = pos; - bool fromStart = i == _first || i == _prefix; - if (i != _last) { - if (fromStart && i == _first && _prefix > _first) { - i = _prefix; - } - else if (*i++ == preferred_separator) { - // we can only sit on a slash if it is a network name or a root - if (i != _last && *i == preferred_separator) { - if (fromStart && !(i + 1 != _last && *(i + 1) == preferred_separator)) { - // leadind double slashes detected, treat this and the - // following until a slash as one unit - i = std::find(++i, _last, preferred_separator); - } - else { - // skip redundant slashes - while (i != _last && *i == preferred_separator) { - ++i; - } - } - } - } - else { - if (fromStart && i != _last && *i == ':') { - ++i; - } - else { - i = std::find(i, _last, preferred_separator); - } - } - } - return i; -} - -GHC_INLINE path::impl_string_type::const_iterator path::iterator::decrement(const path::impl_string_type::const_iterator& pos) const -{ - path::impl_string_type::const_iterator i = pos; - if (i != _first) { - --i; - // if this is now the root slash or the trailing slash, we are done, - // else check for network name - if (i != _root && (pos != _last || *i != preferred_separator)) { -#ifdef GHC_OS_WINDOWS - static const impl_string_type seps = GHC_PLATFORM_LITERAL("\\:"); - i = std::find_first_of(std::reverse_iterator(i), std::reverse_iterator(_first), seps.begin(), seps.end()).base(); - if (i > _first && *i == ':') { - i++; - } -#else - i = std::find(std::reverse_iterator(i), std::reverse_iterator(_first), preferred_separator).base(); -#endif - // Now we have to check if this is a network name - if (i - _first == 2 && *_first == preferred_separator && *(_first + 1) == preferred_separator) { - i -= 2; - } - } - } - return i; -} - -GHC_INLINE void path::iterator::updateCurrent() -{ - if ((_iter == _last) || (_iter != _first && _iter != _last && (*_iter == preferred_separator && _iter != _root) && (_iter + 1 == _last))) { - _current.clear(); - } - else { - _current.assign(_iter, increment(_iter)); - } -} - -GHC_INLINE path::iterator& path::iterator::operator++() -{ - _iter = increment(_iter); - while (_iter != _last && // we didn't reach the end - _iter != _root && // this is not a root position - *_iter == preferred_separator && // we are on a separator - (_iter + 1) != _last // the slash is not the last char - ) { - ++_iter; - } - updateCurrent(); - return *this; -} - -GHC_INLINE path::iterator path::iterator::operator++(int) -{ - path::iterator i{*this}; - ++(*this); - return i; -} - -GHC_INLINE path::iterator& path::iterator::operator--() -{ - _iter = decrement(_iter); - updateCurrent(); - return *this; -} - -GHC_INLINE path::iterator path::iterator::operator--(int) -{ - auto i = *this; - --(*this); - return i; -} - -GHC_INLINE bool path::iterator::operator==(const path::iterator& other) const -{ - return _iter == other._iter; -} - -GHC_INLINE bool path::iterator::operator!=(const path::iterator& other) const -{ - return _iter != other._iter; -} - -GHC_INLINE path::iterator::reference path::iterator::operator*() const -{ - return _current; -} - -GHC_INLINE path::iterator::pointer path::iterator::operator->() const -{ - return &_current; -} - -GHC_INLINE path::iterator path::begin() const -{ - return iterator(*this, _path.begin()); -} - -GHC_INLINE path::iterator path::end() const -{ - return iterator(*this, _path.end()); -} - -//----------------------------------------------------------------------------- -// 30.10.8.6, path non-member functions -GHC_INLINE void swap(path& lhs, path& rhs) noexcept -{ - swap(lhs._path, rhs._path); -} - -GHC_INLINE size_t hash_value(const path& p) noexcept -{ - return std::hash()(p.generic_string()); -} - -#ifdef GHC_HAS_THREEWAY_COMP -GHC_INLINE std::strong_ordering operator<=>(const path& lhs, const path& rhs) noexcept -{ - return lhs.compare(rhs) <=> 0; -} -#endif - -GHC_INLINE bool operator==(const path& lhs, const path& rhs) noexcept -{ - return lhs.compare(rhs) == 0; -} - -GHC_INLINE bool operator!=(const path& lhs, const path& rhs) noexcept -{ - return !(lhs == rhs); -} - -GHC_INLINE bool operator<(const path& lhs, const path& rhs) noexcept -{ - return lhs.compare(rhs) < 0; -} - -GHC_INLINE bool operator<=(const path& lhs, const path& rhs) noexcept -{ - return lhs.compare(rhs) <= 0; -} - -GHC_INLINE bool operator>(const path& lhs, const path& rhs) noexcept -{ - return lhs.compare(rhs) > 0; -} - -GHC_INLINE bool operator>=(const path& lhs, const path& rhs) noexcept -{ - return lhs.compare(rhs) >= 0; -} - -GHC_INLINE path operator/(const path& lhs, const path& rhs) -{ - path result(lhs); - result /= rhs; - return result; -} - -#endif // GHC_EXPAND_IMPL - -//----------------------------------------------------------------------------- -// 30.10.8.6.1 path inserter and extractor -template -inline std::basic_ostream& operator<<(std::basic_ostream& os, const path& p) -{ - os << "\""; - auto ps = p.string(); - for (auto c : ps) { - if (c == '"' || c == '\\') { - os << '\\'; - } - os << c; - } - os << "\""; - return os; -} - -template -inline std::basic_istream& operator>>(std::basic_istream& is, path& p) -{ - std::basic_string tmp; - charT c; - is >> c; - if (c == '"') { - auto sf = is.flags(); - is >> std::noskipws; - while (is) { - auto c2 = is.get(); - if (is) { - if (c2 == '\\') { - c2 = is.get(); - if (is) { - tmp += static_cast(c2); - } - } - else if (c2 == '"') { - break; - } - else { - tmp += static_cast(c2); - } - } - } - if ((sf & std::ios_base::skipws) == std::ios_base::skipws) { - is >> std::skipws; - } - p = path(tmp); - } - else { - is >> tmp; - p = path(static_cast(c) + tmp); - } - return is; -} - -#ifdef GHC_EXPAND_IMPL - -//----------------------------------------------------------------------------- -// 30.10.9 Class filesystem_error -GHC_INLINE filesystem_error::filesystem_error(const std::string& what_arg, std::error_code ec) - : std::system_error(ec, what_arg) - , _what_arg(what_arg) - , _ec(ec) -{ -} - -GHC_INLINE filesystem_error::filesystem_error(const std::string& what_arg, const path& p1, std::error_code ec) - : std::system_error(ec, what_arg) - , _what_arg(what_arg) - , _ec(ec) - , _p1(p1) -{ - if (!_p1.empty()) { - _what_arg += ": '" + _p1.string() + "'"; - } -} - -GHC_INLINE filesystem_error::filesystem_error(const std::string& what_arg, const path& p1, const path& p2, std::error_code ec) - : std::system_error(ec, what_arg) - , _what_arg(what_arg) - , _ec(ec) - , _p1(p1) - , _p2(p2) -{ - if (!_p1.empty()) { - _what_arg += ": '" + _p1.string() + "'"; - } - if (!_p2.empty()) { - _what_arg += ", '" + _p2.string() + "'"; - } -} - -GHC_INLINE const path& filesystem_error::path1() const noexcept -{ - return _p1; -} - -GHC_INLINE const path& filesystem_error::path2() const noexcept -{ - return _p2; -} - -GHC_INLINE const char* filesystem_error::what() const noexcept -{ - return _what_arg.c_str(); -} - -//----------------------------------------------------------------------------- -// 30.10.15, filesystem operations -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE path absolute(const path& p) -{ - std::error_code ec; - path result = absolute(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE path absolute(const path& p, std::error_code& ec) -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - if (p.empty()) { - return absolute(current_path(ec), ec) / ""; - } - ULONG size = ::GetFullPathNameW(GHC_NATIVEWP(p), 0, 0, 0); - if (size) { - std::vector buf(size, 0); - ULONG s2 = GetFullPathNameW(GHC_NATIVEWP(p), size, buf.data(), nullptr); - if (s2 && s2 < size) { - path result = path(std::wstring(buf.data(), s2)); - if (p.filename() == ".") { - result /= "."; - } - return result; - } - } - ec = detail::make_system_error(); - return path(); -#else - path base = current_path(ec); - if (!ec) { - if (p.empty()) { - return base / p; - } - if (p.has_root_name()) { - if (p.has_root_directory()) { - return p; - } - else { - return p.root_name() / base.root_directory() / base.relative_path() / p.relative_path(); - } - } - else { - if (p.has_root_directory()) { - return base.root_name() / p; - } - else { - return base / p; - } - } - } - ec = detail::make_system_error(); - return path(); -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE path canonical(const path& p) -{ - std::error_code ec; - auto result = canonical(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE path canonical(const path& p, std::error_code& ec) -{ - if (p.empty()) { - ec = detail::make_error_code(detail::portable_error::not_found); - return path(); - } - path work = p.is_absolute() ? p : absolute(p, ec); - path result; - - auto fs = status(work, ec); - if (ec) { - return path(); - } - if (fs.type() == file_type::not_found) { - ec = detail::make_error_code(detail::portable_error::not_found); - return path(); - } - bool redo; - do { - auto rootPathLen = work._prefixLength + work.root_name_length() + (work.has_root_directory() ? 1 : 0); - redo = false; - result.clear(); - for (auto pe : work) { - if (pe.empty() || pe == ".") { - continue; - } - else if (pe == "..") { - result = result.parent_path(); - continue; - } - else if ((result / pe).string().length() <= rootPathLen) { - result /= pe; - continue; - } - auto sls = symlink_status(result / pe, ec); - if (ec) { - return path(); - } - if (is_symlink(sls)) { - redo = true; - auto target = read_symlink(result / pe, ec); - if (ec) { - return path(); - } - if (target.is_absolute()) { - result = target; - continue; - } - else { - result /= target; - continue; - } - } - else { - result /= pe; - } - } - work = result; - } while (redo); - ec.clear(); - return result; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void copy(const path& from, const path& to) -{ - copy(from, to, copy_options::none); -} - -GHC_INLINE void copy(const path& from, const path& to, copy_options options) -{ - std::error_code ec; - copy(from, to, options, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), from, to, ec); - } -} -#endif - -GHC_INLINE void copy(const path& from, const path& to, std::error_code& ec) noexcept -{ - copy(from, to, copy_options::none, ec); -} - -GHC_INLINE void copy(const path& from, const path& to, copy_options options, std::error_code& ec) noexcept -{ - std::error_code tec; - file_status fs_from, fs_to; - ec.clear(); - if ((options & (copy_options::skip_symlinks | copy_options::copy_symlinks | copy_options::create_symlinks)) != copy_options::none) { - fs_from = symlink_status(from, ec); - } - else { - fs_from = status(from, ec); - } - if (!exists(fs_from)) { - if (!ec) { - ec = detail::make_error_code(detail::portable_error::not_found); - } - return; - } - if ((options & (copy_options::skip_symlinks | copy_options::create_symlinks)) != copy_options::none) { - fs_to = symlink_status(to, tec); - } - else { - fs_to = status(to, tec); - } - if (is_other(fs_from) || is_other(fs_to) || (is_directory(fs_from) && is_regular_file(fs_to)) || (exists(fs_to) && equivalent(from, to, ec))) { - ec = detail::make_error_code(detail::portable_error::invalid_argument); - } - else if (is_symlink(fs_from)) { - if ((options & copy_options::skip_symlinks) == copy_options::none) { - if (!exists(fs_to) && (options & copy_options::copy_symlinks) != copy_options::none) { - copy_symlink(from, to, ec); - } - else { - ec = detail::make_error_code(detail::portable_error::invalid_argument); - } - } - } - else if (is_regular_file(fs_from)) { - if ((options & copy_options::directories_only) == copy_options::none) { - if ((options & copy_options::create_symlinks) != copy_options::none) { - create_symlink(from.is_absolute() ? from : canonical(from, ec), to, ec); - } -#ifndef GHC_OS_WEB - else if ((options & copy_options::create_hard_links) != copy_options::none) { - create_hard_link(from, to, ec); - } -#endif - else if (is_directory(fs_to)) { - copy_file(from, to / from.filename(), options, ec); - } - else { - copy_file(from, to, options, ec); - } - } - } -#ifdef LWG_2682_BEHAVIOUR - else if (is_directory(fs_from) && (options & copy_options::create_symlinks) != copy_options::none) { - ec = detail::make_error_code(detail::portable_error::is_a_directory); - } -#endif - else if (is_directory(fs_from) && (options == copy_options::none || (options & copy_options::recursive) != copy_options::none)) { - if (!exists(fs_to)) { - create_directory(to, from, ec); - if (ec) { - return; - } - } - for (auto iter = directory_iterator(from, ec); iter != directory_iterator(); iter.increment(ec)) { - if (!ec) { - copy(iter->path(), to / iter->path().filename(), options | static_cast(0x8000), ec); - } - if (ec) { - return; - } - } - } - return; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool copy_file(const path& from, const path& to) -{ - return copy_file(from, to, copy_options::none); -} - -GHC_INLINE bool copy_file(const path& from, const path& to, copy_options option) -{ - std::error_code ec; - auto result = copy_file(from, to, option, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), from, to, ec); - } - return result; -} -#endif - -GHC_INLINE bool copy_file(const path& from, const path& to, std::error_code& ec) noexcept -{ - return copy_file(from, to, copy_options::none, ec); -} - -GHC_INLINE bool copy_file(const path& from, const path& to, copy_options options, std::error_code& ec) noexcept -{ - std::error_code tecf, tect; - auto sf = status(from, tecf); - auto st = status(to, tect); - bool overwrite = false; - ec.clear(); - if (!is_regular_file(sf)) { - ec = tecf; - return false; - } - if (exists(st) && (!is_regular_file(st) || equivalent(from, to, ec) || (options & (copy_options::skip_existing | copy_options::overwrite_existing | copy_options::update_existing)) == copy_options::none)) { - ec = tect ? tect : detail::make_error_code(detail::portable_error::exists); - return false; - } - if (exists(st)) { - if ((options & copy_options::update_existing) == copy_options::update_existing) { - auto from_time = last_write_time(from, ec); - if (ec) { - ec = detail::make_system_error(); - return false; - } - auto to_time = last_write_time(to, ec); - if (ec) { - ec = detail::make_system_error(); - return false; - } - if (from_time <= to_time) { - return false; - } - } - overwrite = true; - } -#ifdef GHC_OS_WINDOWS - if (!::CopyFileW(GHC_NATIVEWP(from), GHC_NATIVEWP(to), !overwrite)) { - ec = detail::make_system_error(); - return false; - } - return true; -#else - std::vector buffer(16384, '\0'); - int in = -1, out = -1; - if ((in = ::open(from.c_str(), O_RDONLY)) < 0) { - ec = detail::make_system_error(); - return false; - } - int mode = O_CREAT | O_WRONLY | O_TRUNC; - if (!overwrite) { - mode |= O_EXCL; - } - if ((out = ::open(to.c_str(), mode, static_cast(sf.permissions() & perms::all))) < 0) { - ec = detail::make_system_error(); - ::close(in); - return false; - } - ssize_t br, bw; - while ((br = ::read(in, buffer.data(), buffer.size())) > 0) { - ssize_t offset = 0; - do { - if ((bw = ::write(out, buffer.data() + offset, static_cast(br))) > 0) { - br -= bw; - offset += bw; - } - else if (bw < 0) { - ec = detail::make_system_error(); - ::close(in); - ::close(out); - return false; - } - } while (br); - } - ::close(in); - ::close(out); - return true; -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void copy_symlink(const path& existing_symlink, const path& new_symlink) -{ - std::error_code ec; - copy_symlink(existing_symlink, new_symlink, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), existing_symlink, new_symlink, ec); - } -} -#endif - -GHC_INLINE void copy_symlink(const path& existing_symlink, const path& new_symlink, std::error_code& ec) noexcept -{ - ec.clear(); - auto to = read_symlink(existing_symlink, ec); - if (!ec) { - if (exists(to, ec) && is_directory(to, ec)) { - create_directory_symlink(to, new_symlink, ec); - } - else { - create_symlink(to, new_symlink, ec); - } - } -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool create_directories(const path& p) -{ - std::error_code ec; - auto result = create_directories(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE bool create_directories(const path& p, std::error_code& ec) noexcept -{ - path current; - ec.clear(); - bool didCreate = false; - for (path::string_type part : p) { - current /= part; - if (current != p.root_name() && current != p.root_path()) { - std::error_code tec; - auto fs = status(current, tec); - if (tec && fs.type() != file_type::not_found) { - ec = tec; - return false; - } - if (!exists(fs)) { - create_directory(current, ec); - if (ec) { - std::error_code tmp_ec; - if (is_directory(current, tmp_ec)) { - ec.clear(); - } - else { - return false; - } - } - didCreate = true; - } -#ifndef LWG_2935_BEHAVIOUR - else if (!is_directory(fs)) { - ec = detail::make_error_code(detail::portable_error::exists); - return false; - } -#endif - } - } - return didCreate; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool create_directory(const path& p) -{ - std::error_code ec; - auto result = create_directory(p, path(), ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE bool create_directory(const path& p, std::error_code& ec) noexcept -{ - return create_directory(p, path(), ec); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool create_directory(const path& p, const path& attributes) -{ - std::error_code ec; - auto result = create_directory(p, attributes, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE bool create_directory(const path& p, const path& attributes, std::error_code& ec) noexcept -{ - std::error_code tec; - ec.clear(); - auto fs = status(p, tec); -#ifdef LWG_2935_BEHAVIOUR - if (status_known(fs) && exists(fs)) { - return false; - } -#else - if (status_known(fs) && exists(fs) && is_directory(fs)) { - return false; - } -#endif -#ifdef GHC_OS_WINDOWS - if (!attributes.empty()) { - if (!::CreateDirectoryExW(GHC_NATIVEWP(attributes), GHC_NATIVEWP(p), NULL)) { - ec = detail::make_system_error(); - return false; - } - } - else if (!::CreateDirectoryW(GHC_NATIVEWP(p), NULL)) { - ec = detail::make_system_error(); - return false; - } -#else - ::mode_t attribs = static_cast(perms::all); - if (!attributes.empty()) { - struct ::stat fileStat; - if (::stat(attributes.c_str(), &fileStat) != 0) { - ec = detail::make_system_error(); - return false; - } - attribs = fileStat.st_mode; - } - if (::mkdir(p.c_str(), attribs) != 0) { - ec = detail::make_system_error(); - return false; - } -#endif - return true; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void create_directory_symlink(const path& to, const path& new_symlink) -{ - std::error_code ec; - create_directory_symlink(to, new_symlink, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), to, new_symlink, ec); - } -} -#endif - -GHC_INLINE void create_directory_symlink(const path& to, const path& new_symlink, std::error_code& ec) noexcept -{ - detail::create_symlink(to, new_symlink, true, ec); -} - -#ifndef GHC_OS_WEB -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void create_hard_link(const path& to, const path& new_hard_link) -{ - std::error_code ec; - create_hard_link(to, new_hard_link, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), to, new_hard_link, ec); - } -} -#endif - -GHC_INLINE void create_hard_link(const path& to, const path& new_hard_link, std::error_code& ec) noexcept -{ - detail::create_hardlink(to, new_hard_link, ec); -} -#endif - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void create_symlink(const path& to, const path& new_symlink) -{ - std::error_code ec; - create_symlink(to, new_symlink, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), to, new_symlink, ec); - } -} -#endif - -GHC_INLINE void create_symlink(const path& to, const path& new_symlink, std::error_code& ec) noexcept -{ - detail::create_symlink(to, new_symlink, false, ec); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE path current_path() -{ - std::error_code ec; - auto result = current_path(ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), ec); - } - return result; -} -#endif - -GHC_INLINE path current_path(std::error_code& ec) -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - DWORD pathlen = ::GetCurrentDirectoryW(0, 0); - std::unique_ptr buffer(new wchar_t[size_t(pathlen) + 1]); - if (::GetCurrentDirectoryW(pathlen, buffer.get()) == 0) { - ec = detail::make_system_error(); - return path(); - } - return path(std::wstring(buffer.get()), path::native_format); -#else - size_t pathlen = static_cast(std::max(int(::pathconf(".", _PC_PATH_MAX)), int(PATH_MAX))); - std::unique_ptr buffer(new char[pathlen + 1]); - if (::getcwd(buffer.get(), pathlen) == nullptr) { - ec = detail::make_system_error(); - return path(); - } - return path(buffer.get()); -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void current_path(const path& p) -{ - std::error_code ec; - current_path(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } -} -#endif - -GHC_INLINE void current_path(const path& p, std::error_code& ec) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - if (!::SetCurrentDirectoryW(GHC_NATIVEWP(p))) { - ec = detail::make_system_error(); - } -#else - if (::chdir(p.string().c_str()) == -1) { - ec = detail::make_system_error(); - } -#endif -} - -GHC_INLINE bool exists(file_status s) noexcept -{ - return status_known(s) && s.type() != file_type::not_found; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool exists(const path& p) -{ - return exists(status(p)); -} -#endif - -GHC_INLINE bool exists(const path& p, std::error_code& ec) noexcept -{ - file_status s = status(p, ec); - if (status_known(s)) { - ec.clear(); - } - return exists(s); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool equivalent(const path& p1, const path& p2) -{ - std::error_code ec; - bool result = equivalent(p1, p2, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p1, p2, ec); - } - return result; -} -#endif - -GHC_INLINE bool equivalent(const path& p1, const path& p2, std::error_code& ec) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - std::shared_ptr file1(::CreateFileW(GHC_NATIVEWP(p1), 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0), CloseHandle); - auto e1 = ::GetLastError(); - std::shared_ptr file2(::CreateFileW(GHC_NATIVEWP(p2), 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0), CloseHandle); - if (file1.get() == INVALID_HANDLE_VALUE || file2.get() == INVALID_HANDLE_VALUE) { -#ifdef LWG_2937_BEHAVIOUR - ec = detail::make_system_error(e1 ? e1 : ::GetLastError()); -#else - if (file1 == file2) { - ec = detail::make_system_error(e1 ? e1 : ::GetLastError()); - } -#endif - return false; - } - BY_HANDLE_FILE_INFORMATION inf1, inf2; - if (!::GetFileInformationByHandle(file1.get(), &inf1)) { - ec = detail::make_system_error(); - return false; - } - if (!::GetFileInformationByHandle(file2.get(), &inf2)) { - ec = detail::make_system_error(); - return false; - } - return inf1.ftLastWriteTime.dwLowDateTime == inf2.ftLastWriteTime.dwLowDateTime && inf1.ftLastWriteTime.dwHighDateTime == inf2.ftLastWriteTime.dwHighDateTime && inf1.nFileIndexHigh == inf2.nFileIndexHigh && inf1.nFileIndexLow == inf2.nFileIndexLow && - inf1.nFileSizeHigh == inf2.nFileSizeHigh && inf1.nFileSizeLow == inf2.nFileSizeLow && inf1.dwVolumeSerialNumber == inf2.dwVolumeSerialNumber; -#else - struct ::stat s1, s2; - auto rc1 = ::stat(p1.c_str(), &s1); - auto e1 = errno; - auto rc2 = ::stat(p2.c_str(), &s2); - if (rc1 || rc2) { -#ifdef LWG_2937_BEHAVIOUR - ec = detail::make_system_error(e1 ? e1 : errno); -#else - if (rc1 && rc2) { - ec = detail::make_system_error(e1 ? e1 : errno); - } -#endif - return false; - } - return s1.st_dev == s2.st_dev && s1.st_ino == s2.st_ino && s1.st_size == s2.st_size && s1.st_mtime == s2.st_mtime; -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE uintmax_t file_size(const path& p) -{ - std::error_code ec; - auto result = file_size(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE uintmax_t file_size(const path& p, std::error_code& ec) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - WIN32_FILE_ATTRIBUTE_DATA attr; - if (!GetFileAttributesExW(GHC_NATIVEWP(p), GetFileExInfoStandard, &attr)) { - ec = detail::make_system_error(); - return static_cast(-1); - } - return static_cast(attr.nFileSizeHigh) << (sizeof(attr.nFileSizeHigh) * 8) | attr.nFileSizeLow; -#else - struct ::stat fileStat; - if (::stat(p.c_str(), &fileStat) == -1) { - ec = detail::make_system_error(); - return static_cast(-1); - } - return static_cast(fileStat.st_size); -#endif -} - -#ifndef GHC_OS_WEB -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE uintmax_t hard_link_count(const path& p) -{ - std::error_code ec; - auto result = hard_link_count(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE uintmax_t hard_link_count(const path& p, std::error_code& ec) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - uintmax_t result = static_cast(-1); - std::shared_ptr file(::CreateFileW(GHC_NATIVEWP(p), 0, FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, 0, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, 0), CloseHandle); - BY_HANDLE_FILE_INFORMATION inf; - if (file.get() == INVALID_HANDLE_VALUE) { - ec = detail::make_system_error(); - } - else { - if (!::GetFileInformationByHandle(file.get(), &inf)) { - ec = detail::make_system_error(); - } - else { - result = inf.nNumberOfLinks; - } - } - return result; -#else - uintmax_t result = 0; - file_status fs = detail::status_ex(p, ec, nullptr, nullptr, &result, nullptr); - if (fs.type() == file_type::not_found) { - ec = detail::make_error_code(detail::portable_error::not_found); - } - return ec ? static_cast(-1) : result; -#endif -} -#endif - -GHC_INLINE bool is_block_file(file_status s) noexcept -{ - return s.type() == file_type::block; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool is_block_file(const path& p) -{ - return is_block_file(status(p)); -} -#endif - -GHC_INLINE bool is_block_file(const path& p, std::error_code& ec) noexcept -{ - return is_block_file(status(p, ec)); -} - -GHC_INLINE bool is_character_file(file_status s) noexcept -{ - return s.type() == file_type::character; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool is_character_file(const path& p) -{ - return is_character_file(status(p)); -} -#endif - -GHC_INLINE bool is_character_file(const path& p, std::error_code& ec) noexcept -{ - return is_character_file(status(p, ec)); -} - -GHC_INLINE bool is_directory(file_status s) noexcept -{ - return s.type() == file_type::directory; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool is_directory(const path& p) -{ - return is_directory(status(p)); -} -#endif - -GHC_INLINE bool is_directory(const path& p, std::error_code& ec) noexcept -{ - return is_directory(status(p, ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool is_empty(const path& p) -{ - if (is_directory(p)) { - return directory_iterator(p) == directory_iterator(); - } - else { - return file_size(p) == 0; - } -} -#endif - -GHC_INLINE bool is_empty(const path& p, std::error_code& ec) noexcept -{ - auto fs = status(p, ec); - if (ec) { - return false; - } - if (is_directory(fs)) { - directory_iterator iter(p, ec); - if (ec) { - return false; - } - return iter == directory_iterator(); - } - else { - auto sz = file_size(p, ec); - if (ec) { - return false; - } - return sz == 0; - } -} - -GHC_INLINE bool is_fifo(file_status s) noexcept -{ - return s.type() == file_type::fifo; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool is_fifo(const path& p) -{ - return is_fifo(status(p)); -} -#endif - -GHC_INLINE bool is_fifo(const path& p, std::error_code& ec) noexcept -{ - return is_fifo(status(p, ec)); -} - -GHC_INLINE bool is_other(file_status s) noexcept -{ - return exists(s) && !is_regular_file(s) && !is_directory(s) && !is_symlink(s); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool is_other(const path& p) -{ - return is_other(status(p)); -} -#endif - -GHC_INLINE bool is_other(const path& p, std::error_code& ec) noexcept -{ - return is_other(status(p, ec)); -} - -GHC_INLINE bool is_regular_file(file_status s) noexcept -{ - return s.type() == file_type::regular; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool is_regular_file(const path& p) -{ - return is_regular_file(status(p)); -} -#endif - -GHC_INLINE bool is_regular_file(const path& p, std::error_code& ec) noexcept -{ - return is_regular_file(status(p, ec)); -} - -GHC_INLINE bool is_socket(file_status s) noexcept -{ - return s.type() == file_type::socket; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool is_socket(const path& p) -{ - return is_socket(status(p)); -} -#endif - -GHC_INLINE bool is_socket(const path& p, std::error_code& ec) noexcept -{ - return is_socket(status(p, ec)); -} - -GHC_INLINE bool is_symlink(file_status s) noexcept -{ - return s.type() == file_type::symlink; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool is_symlink(const path& p) -{ - return is_symlink(symlink_status(p)); -} -#endif - -GHC_INLINE bool is_symlink(const path& p, std::error_code& ec) noexcept -{ - return is_symlink(symlink_status(p, ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE file_time_type last_write_time(const path& p) -{ - std::error_code ec; - auto result = last_write_time(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE file_time_type last_write_time(const path& p, std::error_code& ec) noexcept -{ - time_t result = 0; - ec.clear(); - file_status fs = detail::status_ex(p, ec, nullptr, nullptr, nullptr, &result); - return ec ? (file_time_type::min)() : std::chrono::system_clock::from_time_t(result); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void last_write_time(const path& p, file_time_type new_time) -{ - std::error_code ec; - last_write_time(p, new_time, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } -} -#endif - -GHC_INLINE void last_write_time(const path& p, file_time_type new_time, std::error_code& ec) noexcept -{ - ec.clear(); - auto d = new_time.time_since_epoch(); -#ifdef GHC_OS_WINDOWS - std::shared_ptr file(::CreateFileW(GHC_NATIVEWP(p), FILE_WRITE_ATTRIBUTES, FILE_SHARE_DELETE | FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL), ::CloseHandle); - FILETIME ft; - auto tt = std::chrono::duration_cast(d).count() * 10 + 116444736000000000; - ft.dwLowDateTime = static_cast(tt); - ft.dwHighDateTime = static_cast(tt >> 32); - if (!::SetFileTime(file.get(), 0, 0, &ft)) { - ec = detail::make_system_error(); - } -#elif defined(GHC_OS_MACOS) -#ifdef __MAC_OS_X_VERSION_MIN_REQUIRED -#if __MAC_OS_X_VERSION_MIN_REQUIRED < 101300 - struct ::stat fs; - if (::stat(p.c_str(), &fs) == 0) { - struct ::timeval tv[2]; - tv[0].tv_sec = fs.st_atimespec.tv_sec; - tv[0].tv_usec = static_cast(fs.st_atimespec.tv_nsec / 1000); - tv[1].tv_sec = std::chrono::duration_cast(d).count(); - tv[1].tv_usec = static_cast(std::chrono::duration_cast(d).count() % 1000000); - if (::utimes(p.c_str(), tv) == 0) { - return; - } - } - ec = detail::make_system_error(); - return; -#else - struct ::timespec times[2]; - times[0].tv_sec = 0; - times[0].tv_nsec = UTIME_OMIT; - times[1].tv_sec = std::chrono::duration_cast(d).count(); - times[1].tv_nsec = 0; // std::chrono::duration_cast(d).count() % 1000000000; - if (::utimensat(AT_FDCWD, p.c_str(), times, AT_SYMLINK_NOFOLLOW) != 0) { - ec = detail::make_system_error(); - } - return; -#endif -#endif -#else -#ifndef UTIME_OMIT -#define UTIME_OMIT ((1l << 30) - 2l) -#endif - struct ::timespec times[2]; - times[0].tv_sec = 0; - times[0].tv_nsec = UTIME_OMIT; - times[1].tv_sec = static_cast(std::chrono::duration_cast(d).count()); - times[1].tv_nsec = static_cast(std::chrono::duration_cast(d).count() % 1000000000); -#if defined(__ANDROID_API__) && __ANDROID_API__ < 12 - if (syscall(__NR_utimensat, AT_FDCWD, p.c_str(), times, AT_SYMLINK_NOFOLLOW) != 0) { -#else - if (::utimensat(AT_FDCWD, p.c_str(), times, AT_SYMLINK_NOFOLLOW) != 0) { -#endif - ec = detail::make_system_error(); - } - return; -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void permissions(const path& p, perms prms, perm_options opts) -{ - std::error_code ec; - permissions(p, prms, opts, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } -} -#endif - -GHC_INLINE void permissions(const path& p, perms prms, std::error_code& ec) noexcept -{ - permissions(p, prms, perm_options::replace, ec); -} - -GHC_INLINE void permissions(const path& p, perms prms, perm_options opts, std::error_code& ec) noexcept -{ - if (static_cast(opts & (perm_options::replace | perm_options::add | perm_options::remove)) == 0) { - ec = detail::make_error_code(detail::portable_error::invalid_argument); - return; - } - auto fs = symlink_status(p, ec); - if ((opts & perm_options::replace) != perm_options::replace) { - if ((opts & perm_options::add) == perm_options::add) { - prms = fs.permissions() | prms; - } - else { - prms = fs.permissions() & ~prms; - } - } -#ifdef GHC_OS_WINDOWS -#ifdef __GNUC__ - auto oldAttr = GetFileAttributesW(GHC_NATIVEWP(p)); - if (oldAttr != INVALID_FILE_ATTRIBUTES) { - DWORD newAttr = ((prms & perms::owner_write) == perms::owner_write) ? oldAttr & ~(static_cast(FILE_ATTRIBUTE_READONLY)) : oldAttr | FILE_ATTRIBUTE_READONLY; - if (oldAttr == newAttr || SetFileAttributesW(GHC_NATIVEWP(p), newAttr)) { - return; - } - } - ec = detail::make_system_error(); -#else - int mode = 0; - if ((prms & perms::owner_read) == perms::owner_read) { - mode |= _S_IREAD; - } - if ((prms & perms::owner_write) == perms::owner_write) { - mode |= _S_IWRITE; - } - if (::_wchmod(p.wstring().c_str(), mode) != 0) { - ec = detail::make_system_error(); - } -#endif -#else - if ((opts & perm_options::nofollow) != perm_options::nofollow) { - if (::chmod(p.c_str(), static_cast(prms)) != 0) { - ec = detail::make_system_error(); - } - } -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE path proximate(const path& p, std::error_code& ec) -{ - auto cp = current_path(ec); - if (!ec) { - return proximate(p, cp, ec); - } - return path(); -} -#endif - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE path proximate(const path& p, const path& base) -{ - return weakly_canonical(p).lexically_proximate(weakly_canonical(base)); -} -#endif - -GHC_INLINE path proximate(const path& p, const path& base, std::error_code& ec) -{ - return weakly_canonical(p, ec).lexically_proximate(weakly_canonical(base, ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE path read_symlink(const path& p) -{ - std::error_code ec; - auto result = read_symlink(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE path read_symlink(const path& p, std::error_code& ec) -{ - file_status fs = symlink_status(p, ec); - if (fs.type() != file_type::symlink) { - ec = detail::make_error_code(detail::portable_error::invalid_argument); - return path(); - } - auto result = detail::resolveSymlink(p, ec); - return ec ? path() : result; -} - -GHC_INLINE path relative(const path& p, std::error_code& ec) -{ - return relative(p, current_path(ec), ec); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE path relative(const path& p, const path& base) -{ - return weakly_canonical(p).lexically_relative(weakly_canonical(base)); -} -#endif - -GHC_INLINE path relative(const path& p, const path& base, std::error_code& ec) -{ - return weakly_canonical(p, ec).lexically_relative(weakly_canonical(base, ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool remove(const path& p) -{ - std::error_code ec; - auto result = remove(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE bool remove(const path& p, std::error_code& ec) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS -#ifdef GHC_USE_WCHAR_T - auto cstr = p.c_str(); -#else - std::wstring np = detail::fromUtf8(p.u8string()); - auto cstr = np.c_str(); -#endif - DWORD attr = GetFileAttributesW(cstr); - if (attr == INVALID_FILE_ATTRIBUTES) { - auto error = ::GetLastError(); - if (error == ERROR_FILE_NOT_FOUND || error == ERROR_PATH_NOT_FOUND) { - return false; - } - ec = detail::make_system_error(error); - } - if (!ec) { - if (attr & FILE_ATTRIBUTE_DIRECTORY) { - if (!RemoveDirectoryW(cstr)) { - ec = detail::make_system_error(); - } - } - else { - if (!DeleteFileW(cstr)) { - ec = detail::make_system_error(); - } - } - } -#else - if (::remove(p.c_str()) == -1) { - auto error = errno; - if (error == ENOENT) { - return false; - } - ec = detail::make_system_error(); - } -#endif - return ec ? false : true; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE uintmax_t remove_all(const path& p) -{ - std::error_code ec; - auto result = remove_all(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE uintmax_t remove_all(const path& p, std::error_code& ec) noexcept -{ - ec.clear(); - uintmax_t count = 0; - if (p == "/") { - ec = detail::make_error_code(detail::portable_error::not_supported); - return static_cast(-1); - } - std::error_code tec; - auto fs = status(p, tec); - if (exists(fs) && is_directory(fs)) { - for (auto iter = directory_iterator(p, ec); iter != directory_iterator(); iter.increment(ec)) { - if (ec) { - break; - } - bool is_symlink_result = iter->is_symlink(ec); - if (ec) - return static_cast(-1); - bool is_directory_result = iter->is_directory(ec); - if (ec) - return static_cast(-1); - if (!is_symlink_result && is_directory_result) { - count += remove_all(iter->path(), ec); - if (ec) { - return static_cast(-1); - } - } - else { - remove(iter->path(), ec); - if (ec) { - return static_cast(-1); - } - ++count; - } - } - } - if (!ec) { - if (remove(p, ec)) { - ++count; - } - } - if (ec) { - return static_cast(-1); - } - return count; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void rename(const path& from, const path& to) -{ - std::error_code ec; - rename(from, to, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), from, to, ec); - } -} -#endif - -GHC_INLINE void rename(const path& from, const path& to, std::error_code& ec) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - if (from != to) { - if (!MoveFileExW(GHC_NATIVEWP(from), GHC_NATIVEWP(to), (DWORD)MOVEFILE_REPLACE_EXISTING)) { - ec = detail::make_system_error(); - } - } -#else - if (from != to) { - if (::rename(from.c_str(), to.c_str()) != 0) { - ec = detail::make_system_error(); - } - } -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void resize_file(const path& p, uintmax_t size) -{ - std::error_code ec; - resize_file(p, size, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } -} -#endif - -GHC_INLINE void resize_file(const path& p, uintmax_t size, std::error_code& ec) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - LARGE_INTEGER lisize; - lisize.QuadPart = static_cast(size); - if (lisize.QuadPart < 0) { -#ifdef ERROR_FILE_TOO_LARGE - ec = detail::make_system_error(ERROR_FILE_TOO_LARGE); -#else - ec = detail::make_system_error(223); -#endif - return; - } - std::shared_ptr file(CreateFileW(GHC_NATIVEWP(p), GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL), CloseHandle); - if (file.get() == INVALID_HANDLE_VALUE) { - ec = detail::make_system_error(); - } - else if (SetFilePointerEx(file.get(), lisize, NULL, FILE_BEGIN) == 0 || SetEndOfFile(file.get()) == 0) { - ec = detail::make_system_error(); - } -#else - if (::truncate(p.c_str(), static_cast(size)) != 0) { - ec = detail::make_system_error(); - } -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE space_info space(const path& p) -{ - std::error_code ec; - auto result = space(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE space_info space(const path& p, std::error_code& ec) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - ULARGE_INTEGER freeBytesAvailableToCaller = {{ 0, 0 }}; - ULARGE_INTEGER totalNumberOfBytes = {{ 0, 0 }}; - ULARGE_INTEGER totalNumberOfFreeBytes = {{ 0, 0 }}; - if (!GetDiskFreeSpaceExW(GHC_NATIVEWP(p), &freeBytesAvailableToCaller, &totalNumberOfBytes, &totalNumberOfFreeBytes)) { - ec = detail::make_system_error(); - return {static_cast(-1), static_cast(-1), static_cast(-1)}; - } - return {static_cast(totalNumberOfBytes.QuadPart), static_cast(totalNumberOfFreeBytes.QuadPart), static_cast(freeBytesAvailableToCaller.QuadPart)}; -#else - struct ::statvfs sfs; - if (::statvfs(p.c_str(), &sfs) != 0) { - ec = detail::make_system_error(); - return {static_cast(-1), static_cast(-1), static_cast(-1)}; - } - return {static_cast(sfs.f_blocks * sfs.f_frsize), static_cast(sfs.f_bfree * sfs.f_frsize), static_cast(sfs.f_bavail * sfs.f_frsize)}; -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE file_status status(const path& p) -{ - std::error_code ec; - auto result = status(p, ec); - if (result.type() == file_type::none) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE file_status status(const path& p, std::error_code& ec) noexcept -{ - return detail::status_ex(p, ec); -} - -GHC_INLINE bool status_known(file_status s) noexcept -{ - return s.type() != file_type::none; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE file_status symlink_status(const path& p) -{ - std::error_code ec; - auto result = symlink_status(p, ec); - if (result.type() == file_type::none) { - throw filesystem_error(detail::systemErrorText(ec.value()), ec); - } - return result; -} -#endif - -GHC_INLINE file_status symlink_status(const path& p, std::error_code& ec) noexcept -{ - return detail::symlink_status_ex(p, ec); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE path temp_directory_path() -{ - std::error_code ec; - path result = temp_directory_path(ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), ec); - } - return result; -} -#endif - -GHC_INLINE path temp_directory_path(std::error_code& ec) noexcept -{ - ec.clear(); -#ifdef GHC_OS_WINDOWS - wchar_t buffer[512]; - auto rc = GetTempPathW(511, buffer); - if (!rc || rc > 511) { - ec = detail::make_system_error(); - return path(); - } - return path(std::wstring(buffer)); -#else - static const char* temp_vars[] = {"TMPDIR", "TMP", "TEMP", "TEMPDIR", nullptr}; - const char* temp_path = nullptr; - for (auto temp_name = temp_vars; *temp_name != nullptr; ++temp_name) { - temp_path = std::getenv(*temp_name); - if (temp_path) { - return path(temp_path); - } - } - return path("/tmp"); -#endif -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE path weakly_canonical(const path& p) -{ - std::error_code ec; - auto result = weakly_canonical(p, ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), p, ec); - } - return result; -} -#endif - -GHC_INLINE path weakly_canonical(const path& p, std::error_code& ec) noexcept -{ - path result; - ec.clear(); - bool scan = true; - for (auto pe : p) { - if (scan) { - std::error_code tec; - if (exists(result / pe, tec)) { - result /= pe; - } - else { - if (ec) { - return path(); - } - scan = false; - if (!result.empty()) { - result = canonical(result, ec) / pe; - if (ec) { - break; - } - } - else { - result /= pe; - } - } - } - else { - result /= pe; - } - } - if (scan) { - if (!result.empty()) { - result = canonical(result, ec); - } - } - return ec ? path() : result.lexically_normal(); -} - -//----------------------------------------------------------------------------- -// 30.10.11 class file_status -// 30.10.11.1 constructors and destructor -GHC_INLINE file_status::file_status() noexcept - : file_status(file_type::none) -{ -} - -GHC_INLINE file_status::file_status(file_type ft, perms prms) noexcept - : _type(ft) - , _perms(prms) -{ -} - -GHC_INLINE file_status::file_status(const file_status& other) noexcept - : _type(other._type) - , _perms(other._perms) -{ -} - -GHC_INLINE file_status::file_status(file_status&& other) noexcept - : _type(other._type) - , _perms(other._perms) -{ -} - -GHC_INLINE file_status::~file_status() {} - -// assignments: -GHC_INLINE file_status& file_status::operator=(const file_status& rhs) noexcept -{ - _type = rhs._type; - _perms = rhs._perms; - return *this; -} - -GHC_INLINE file_status& file_status::operator=(file_status&& rhs) noexcept -{ - _type = rhs._type; - _perms = rhs._perms; - return *this; -} - -// 30.10.11.3 modifiers -GHC_INLINE void file_status::type(file_type ft) noexcept -{ - _type = ft; -} - -GHC_INLINE void file_status::permissions(perms prms) noexcept -{ - _perms = prms; -} - -// 30.10.11.2 observers -GHC_INLINE file_type file_status::type() const noexcept -{ - return _type; -} - -GHC_INLINE perms file_status::permissions() const noexcept -{ - return _perms; -} - -//----------------------------------------------------------------------------- -// 30.10.12 class directory_entry -// 30.10.12.1 constructors and destructor -// directory_entry::directory_entry() noexcept = default; -// directory_entry::directory_entry(const directory_entry&) = default; -// directory_entry::directory_entry(directory_entry&&) noexcept = default; -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE directory_entry::directory_entry(const filesystem::path& p) - : _path(p) - , _file_size(0) -#ifndef GHC_OS_WINDOWS - , _hard_link_count(0) -#endif - , _last_write_time(0) -{ - refresh(); -} -#endif - -GHC_INLINE directory_entry::directory_entry(const filesystem::path& p, std::error_code& ec) - : _path(p) - , _file_size(0) -#ifndef GHC_OS_WINDOWS - , _hard_link_count(0) -#endif - , _last_write_time(0) -{ - refresh(ec); -} - -GHC_INLINE directory_entry::~directory_entry() {} - -// assignments: -// directory_entry& directory_entry::operator=(const directory_entry&) = default; -// directory_entry& directory_entry::operator=(directory_entry&&) noexcept = default; - -// 30.10.12.2 directory_entry modifiers -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void directory_entry::assign(const filesystem::path& p) -{ - _path = p; - refresh(); -} -#endif - -GHC_INLINE void directory_entry::assign(const filesystem::path& p, std::error_code& ec) -{ - _path = p; - refresh(ec); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void directory_entry::replace_filename(const filesystem::path& p) -{ - _path.replace_filename(p); - refresh(); -} -#endif - -GHC_INLINE void directory_entry::replace_filename(const filesystem::path& p, std::error_code& ec) -{ - _path.replace_filename(p); - refresh(ec); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void directory_entry::refresh() -{ - std::error_code ec; - refresh(ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), _path, ec); - } -} -#endif - -GHC_INLINE void directory_entry::refresh(std::error_code& ec) noexcept -{ -#ifdef GHC_OS_WINDOWS - _status = detail::status_ex(_path, ec, &_symlink_status, &_file_size, nullptr, &_last_write_time); -#else - _status = detail::status_ex(_path, ec, &_symlink_status, &_file_size, &_hard_link_count, &_last_write_time); -#endif -} - -// 30.10.12.3 directory_entry observers -GHC_INLINE const filesystem::path& directory_entry::path() const noexcept -{ - return _path; -} - -GHC_INLINE directory_entry::operator const filesystem::path&() const noexcept -{ - return _path; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool directory_entry::exists() const -{ - return filesystem::exists(status()); -} -#endif - -GHC_INLINE bool directory_entry::exists(std::error_code& ec) const noexcept -{ - return filesystem::exists(status(ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool directory_entry::is_block_file() const -{ - return filesystem::is_block_file(status()); -} -#endif -GHC_INLINE bool directory_entry::is_block_file(std::error_code& ec) const noexcept -{ - return filesystem::is_block_file(status(ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool directory_entry::is_character_file() const -{ - return filesystem::is_character_file(status()); -} -#endif - -GHC_INLINE bool directory_entry::is_character_file(std::error_code& ec) const noexcept -{ - return filesystem::is_character_file(status(ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool directory_entry::is_directory() const -{ - return filesystem::is_directory(status()); -} -#endif - -GHC_INLINE bool directory_entry::is_directory(std::error_code& ec) const noexcept -{ - return filesystem::is_directory(status(ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool directory_entry::is_fifo() const -{ - return filesystem::is_fifo(status()); -} -#endif - -GHC_INLINE bool directory_entry::is_fifo(std::error_code& ec) const noexcept -{ - return filesystem::is_fifo(status(ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool directory_entry::is_other() const -{ - return filesystem::is_other(status()); -} -#endif - -GHC_INLINE bool directory_entry::is_other(std::error_code& ec) const noexcept -{ - return filesystem::is_other(status(ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool directory_entry::is_regular_file() const -{ - return filesystem::is_regular_file(status()); -} -#endif - -GHC_INLINE bool directory_entry::is_regular_file(std::error_code& ec) const noexcept -{ - return filesystem::is_regular_file(status(ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool directory_entry::is_socket() const -{ - return filesystem::is_socket(status()); -} -#endif - -GHC_INLINE bool directory_entry::is_socket(std::error_code& ec) const noexcept -{ - return filesystem::is_socket(status(ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE bool directory_entry::is_symlink() const -{ - return filesystem::is_symlink(symlink_status()); -} -#endif - -GHC_INLINE bool directory_entry::is_symlink(std::error_code& ec) const noexcept -{ - return filesystem::is_symlink(symlink_status(ec)); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE uintmax_t directory_entry::file_size() const -{ - if (_status.type() != file_type::none) { - return _file_size; - } - return filesystem::file_size(path()); -} -#endif - -GHC_INLINE uintmax_t directory_entry::file_size(std::error_code& ec) const noexcept -{ - if (_status.type() != file_type::none) { - ec.clear(); - return _file_size; - } - return filesystem::file_size(path(), ec); -} - -#ifndef GHC_OS_WEB -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE uintmax_t directory_entry::hard_link_count() const -{ -#ifndef GHC_OS_WINDOWS - if (_status.type() != file_type::none) { - return _hard_link_count; - } -#endif - return filesystem::hard_link_count(path()); -} -#endif - -GHC_INLINE uintmax_t directory_entry::hard_link_count(std::error_code& ec) const noexcept -{ -#ifndef GHC_OS_WINDOWS - if (_status.type() != file_type::none) { - ec.clear(); - return _hard_link_count; - } -#endif - return filesystem::hard_link_count(path(), ec); -} -#endif - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE file_time_type directory_entry::last_write_time() const -{ - if (_status.type() != file_type::none) { - return std::chrono::system_clock::from_time_t(_last_write_time); - } - return filesystem::last_write_time(path()); -} -#endif - -GHC_INLINE file_time_type directory_entry::last_write_time(std::error_code& ec) const noexcept -{ - if (_status.type() != file_type::none) { - ec.clear(); - return std::chrono::system_clock::from_time_t(_last_write_time); - } - return filesystem::last_write_time(path(), ec); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE file_status directory_entry::status() const -{ - if (_status.type() != file_type::none) { - return _status; - } - return filesystem::status(path()); -} -#endif - -GHC_INLINE file_status directory_entry::status(std::error_code& ec) const noexcept -{ - if (_status.type() != file_type::none) { - ec.clear(); - return _status; - } - return filesystem::status(path(), ec); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE file_status directory_entry::symlink_status() const -{ - if (_symlink_status.type() != file_type::none) { - return _symlink_status; - } - return filesystem::symlink_status(path()); -} -#endif - -GHC_INLINE file_status directory_entry::symlink_status(std::error_code& ec) const noexcept -{ - if (_symlink_status.type() != file_type::none) { - ec.clear(); - return _symlink_status; - } - return filesystem::symlink_status(path(), ec); -} - -#ifdef GHC_HAS_THREEWAY_COMP -GHC_INLINE std::strong_ordering directory_entry::operator<=>(const directory_entry& rhs) const noexcept -{ - return _path <=> rhs._path; -} -#endif - -GHC_INLINE bool directory_entry::operator<(const directory_entry& rhs) const noexcept -{ - return _path < rhs._path; -} - -GHC_INLINE bool directory_entry::operator==(const directory_entry& rhs) const noexcept -{ - return _path == rhs._path; -} - -GHC_INLINE bool directory_entry::operator!=(const directory_entry& rhs) const noexcept -{ - return _path != rhs._path; -} - -GHC_INLINE bool directory_entry::operator<=(const directory_entry& rhs) const noexcept -{ - return _path <= rhs._path; -} - -GHC_INLINE bool directory_entry::operator>(const directory_entry& rhs) const noexcept -{ - return _path > rhs._path; -} - -GHC_INLINE bool directory_entry::operator>=(const directory_entry& rhs) const noexcept -{ - return _path >= rhs._path; -} - -//----------------------------------------------------------------------------- -// 30.10.13 class directory_iterator - -#ifdef GHC_OS_WINDOWS -class directory_iterator::impl -{ -public: - impl(const path& p, directory_options options) - : _base(p) - , _options(options) - , _dirHandle(INVALID_HANDLE_VALUE) - { - if (!_base.empty()) { - ZeroMemory(&_findData, sizeof(WIN32_FIND_DATAW)); - if ((_dirHandle = FindFirstFileW(GHC_NATIVEWP((_base / "*")), &_findData)) != INVALID_HANDLE_VALUE) { - if (std::wstring(_findData.cFileName) == L"." || std::wstring(_findData.cFileName) == L"..") { - increment(_ec); - } - else { - _current = _base / std::wstring(_findData.cFileName); - copyToDirEntry(_ec); - } - } - else { - auto error = ::GetLastError(); - _base = filesystem::path(); - if (error != ERROR_ACCESS_DENIED || (options & directory_options::skip_permission_denied) == directory_options::none) { - _ec = detail::make_system_error(); - } - } - } - } - impl(const impl& other) = delete; - ~impl() - { - if (_dirHandle != INVALID_HANDLE_VALUE) { - FindClose(_dirHandle); - _dirHandle = INVALID_HANDLE_VALUE; - } - } - void increment(std::error_code& ec) - { - if (_dirHandle != INVALID_HANDLE_VALUE) { - do { - if (FindNextFileW(_dirHandle, &_findData)) { - _current = _base; -#ifdef GHC_USE_WCHAR_T - _current.append_name(_findData.cFileName); -#else -#ifdef GHC_RAISE_UNICODE_ERRORS - try { - _current.append_name(detail::toUtf8(_findData.cFileName).c_str()); - } - catch (filesystem_error& fe) { - ec = fe.code(); - return; - } -#else - _current.append_name(detail::toUtf8(_findData.cFileName).c_str()); -#endif -#endif - copyToDirEntry(ec); - } - else { - auto err = ::GetLastError(); - if (err != ERROR_NO_MORE_FILES) { - _ec = ec = detail::make_system_error(err); - } - FindClose(_dirHandle); - _dirHandle = INVALID_HANDLE_VALUE; - _current = filesystem::path(); - break; - } - } while (std::wstring(_findData.cFileName) == L"." || std::wstring(_findData.cFileName) == L".."); - } - else { - ec = _ec; - } - } - void copyToDirEntry(std::error_code& ec) - { - _dir_entry._path = _current; - if (_findData.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) { - _dir_entry._status = detail::status_ex(_current, ec, &_dir_entry._symlink_status, &_dir_entry._file_size, nullptr, &_dir_entry._last_write_time); - } - else { - _dir_entry._status = detail::status_from_INFO(_current, &_findData, ec, &_dir_entry._file_size, &_dir_entry._last_write_time); - _dir_entry._symlink_status = _dir_entry._status; - } - if (ec) { - if (_dir_entry._status.type() != file_type::none && _dir_entry._symlink_status.type() != file_type::none) { - ec.clear(); - } - else { - _dir_entry._file_size = static_cast(-1); - _dir_entry._last_write_time = 0; - } - } - } - path _base; - directory_options _options; - WIN32_FIND_DATAW _findData; - HANDLE _dirHandle; - path _current; - directory_entry _dir_entry; - std::error_code _ec; -}; -#else -// POSIX implementation -class directory_iterator::impl -{ -public: - impl(const path& path, directory_options options) - : _base(path) - , _options(options) - , _dir(nullptr) - , _entry(nullptr) - { - if (!path.empty()) { - _dir = ::opendir(path.native().c_str()); - if (!_dir) { - auto error = errno; - _base = filesystem::path(); - if ((error != EACCES && error != EPERM) || (options & directory_options::skip_permission_denied) == directory_options::none) { - _ec = detail::make_system_error(); - } - } - else { - increment(_ec); - } - } - } - impl(const impl& other) = delete; - ~impl() - { - if (_dir) { - ::closedir(_dir); - } - } - void increment(std::error_code& ec) - { - if (_dir) { - bool skip; - do { - skip = false; - errno = 0; - _entry = ::readdir(_dir); - if (_entry) { - _current = _base; - _current.append_name(_entry->d_name); - _dir_entry.assign(_current, ec); - if (ec && (ec.value() == EACCES || ec.value() == EPERM) && (_options & directory_options::skip_permission_denied) == directory_options::skip_permission_denied) { - ec.clear(); - skip = true; - } - } - else { - ::closedir(_dir); - _dir = nullptr; - _current = path(); - if (errno) { - ec = detail::make_system_error(); - } - break; - } - } while (skip || std::strcmp(_entry->d_name, ".") == 0 || std::strcmp(_entry->d_name, "..") == 0); - } - } - path _base; - directory_options _options; - path _current; - DIR* _dir; - struct ::dirent* _entry; - directory_entry _dir_entry; - std::error_code _ec; -}; -#endif - -// 30.10.13.1 member functions -GHC_INLINE directory_iterator::directory_iterator() noexcept - : _impl(new impl(path(), directory_options::none)) -{ -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE directory_iterator::directory_iterator(const path& p) - : _impl(new impl(p, directory_options::none)) -{ - if (_impl->_ec) { - throw filesystem_error(detail::systemErrorText(_impl->_ec.value()), p, _impl->_ec); - } - _impl->_ec.clear(); -} - -GHC_INLINE directory_iterator::directory_iterator(const path& p, directory_options options) - : _impl(new impl(p, options)) -{ - if (_impl->_ec) { - throw filesystem_error(detail::systemErrorText(_impl->_ec.value()), p, _impl->_ec); - } -} -#endif - -GHC_INLINE directory_iterator::directory_iterator(const path& p, std::error_code& ec) noexcept - : _impl(new impl(p, directory_options::none)) -{ - if (_impl->_ec) { - ec = _impl->_ec; - } -} - -GHC_INLINE directory_iterator::directory_iterator(const path& p, directory_options options, std::error_code& ec) noexcept - : _impl(new impl(p, options)) -{ - if (_impl->_ec) { - ec = _impl->_ec; - } -} - -GHC_INLINE directory_iterator::directory_iterator(const directory_iterator& rhs) - : _impl(rhs._impl) -{ -} - -GHC_INLINE directory_iterator::directory_iterator(directory_iterator&& rhs) noexcept - : _impl(std::move(rhs._impl)) -{ -} - -GHC_INLINE directory_iterator::~directory_iterator() {} - -GHC_INLINE directory_iterator& directory_iterator::operator=(const directory_iterator& rhs) -{ - _impl = rhs._impl; - return *this; -} - -GHC_INLINE directory_iterator& directory_iterator::operator=(directory_iterator&& rhs) noexcept -{ - _impl = std::move(rhs._impl); - return *this; -} - -GHC_INLINE const directory_entry& directory_iterator::operator*() const -{ - return _impl->_dir_entry; -} - -GHC_INLINE const directory_entry* directory_iterator::operator->() const -{ - return &_impl->_dir_entry; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE directory_iterator& directory_iterator::operator++() -{ - std::error_code ec; - _impl->increment(ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), _impl->_current, ec); - } - return *this; -} -#endif - -GHC_INLINE directory_iterator& directory_iterator::increment(std::error_code& ec) noexcept -{ - _impl->increment(ec); - return *this; -} - -GHC_INLINE bool directory_iterator::operator==(const directory_iterator& rhs) const -{ - return _impl->_current == rhs._impl->_current; -} - -GHC_INLINE bool directory_iterator::operator!=(const directory_iterator& rhs) const -{ - return _impl->_current != rhs._impl->_current; -} - -// 30.10.13.2 directory_iterator non-member functions - -GHC_INLINE directory_iterator begin(directory_iterator iter) noexcept -{ - return iter; -} - -GHC_INLINE directory_iterator end(const directory_iterator&) noexcept -{ - return directory_iterator(); -} - -//----------------------------------------------------------------------------- -// 30.10.14 class recursive_directory_iterator - -GHC_INLINE recursive_directory_iterator::recursive_directory_iterator() noexcept - : _impl(new recursive_directory_iterator_impl(directory_options::none, true)) -{ - _impl->_dir_iter_stack.push(directory_iterator()); -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE recursive_directory_iterator::recursive_directory_iterator(const path& p) - : _impl(new recursive_directory_iterator_impl(directory_options::none, true)) -{ - _impl->_dir_iter_stack.push(directory_iterator(p)); -} - -GHC_INLINE recursive_directory_iterator::recursive_directory_iterator(const path& p, directory_options options) - : _impl(new recursive_directory_iterator_impl(options, true)) -{ - _impl->_dir_iter_stack.push(directory_iterator(p, options)); -} -#endif - -GHC_INLINE recursive_directory_iterator::recursive_directory_iterator(const path& p, directory_options options, std::error_code& ec) noexcept - : _impl(new recursive_directory_iterator_impl(options, true)) -{ - _impl->_dir_iter_stack.push(directory_iterator(p, options, ec)); -} - -GHC_INLINE recursive_directory_iterator::recursive_directory_iterator(const path& p, std::error_code& ec) noexcept - : _impl(new recursive_directory_iterator_impl(directory_options::none, true)) -{ - _impl->_dir_iter_stack.push(directory_iterator(p, ec)); -} - -GHC_INLINE recursive_directory_iterator::recursive_directory_iterator(const recursive_directory_iterator& rhs) - : _impl(rhs._impl) -{ -} - -GHC_INLINE recursive_directory_iterator::recursive_directory_iterator(recursive_directory_iterator&& rhs) noexcept - : _impl(std::move(rhs._impl)) -{ -} - -GHC_INLINE recursive_directory_iterator::~recursive_directory_iterator() {} - -// 30.10.14.1 observers -GHC_INLINE directory_options recursive_directory_iterator::options() const -{ - return _impl->_options; -} - -GHC_INLINE int recursive_directory_iterator::depth() const -{ - return static_cast(_impl->_dir_iter_stack.size() - 1); -} - -GHC_INLINE bool recursive_directory_iterator::recursion_pending() const -{ - return _impl->_recursion_pending; -} - -GHC_INLINE const directory_entry& recursive_directory_iterator::operator*() const -{ - return *(_impl->_dir_iter_stack.top()); -} - -GHC_INLINE const directory_entry* recursive_directory_iterator::operator->() const -{ - return &(*(_impl->_dir_iter_stack.top())); -} - -// 30.10.14.1 modifiers recursive_directory_iterator& -GHC_INLINE recursive_directory_iterator& recursive_directory_iterator::operator=(const recursive_directory_iterator& rhs) -{ - _impl = rhs._impl; - return *this; -} - -GHC_INLINE recursive_directory_iterator& recursive_directory_iterator::operator=(recursive_directory_iterator&& rhs) noexcept -{ - _impl = std::move(rhs._impl); - return *this; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE recursive_directory_iterator& recursive_directory_iterator::operator++() -{ - std::error_code ec; - increment(ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), _impl->_dir_iter_stack.empty() ? path() : _impl->_dir_iter_stack.top()->path(), ec); - } - return *this; -} -#endif - -GHC_INLINE recursive_directory_iterator& recursive_directory_iterator::increment(std::error_code& ec) noexcept -{ - bool isDir = (*this)->is_directory(ec); - bool isSymLink = !ec && (*this)->is_symlink(ec); - if(!ec) { - if (recursion_pending() && isDir && (!isSymLink || (options() & directory_options::follow_directory_symlink) != directory_options::none)) { - _impl->_dir_iter_stack.push(directory_iterator((*this)->path(), _impl->_options, ec)); - } - else { - _impl->_dir_iter_stack.top().increment(ec); - } - if (!ec) { - while (depth() && _impl->_dir_iter_stack.top() == directory_iterator()) { - _impl->_dir_iter_stack.pop(); - _impl->_dir_iter_stack.top().increment(ec); - } - } - else if (!_impl->_dir_iter_stack.empty()) { - _impl->_dir_iter_stack.pop(); - } - _impl->_recursion_pending = true; - } - return *this; -} - -#ifdef GHC_WITH_EXCEPTIONS -GHC_INLINE void recursive_directory_iterator::pop() -{ - std::error_code ec; - pop(ec); - if (ec) { - throw filesystem_error(detail::systemErrorText(ec.value()), _impl->_dir_iter_stack.empty() ? path() : _impl->_dir_iter_stack.top()->path(), ec); - } -} -#endif - -GHC_INLINE void recursive_directory_iterator::pop(std::error_code& ec) -{ - if (depth() == 0) { - *this = recursive_directory_iterator(); - } - else { - do { - _impl->_dir_iter_stack.pop(); - _impl->_dir_iter_stack.top().increment(ec); - } while (depth() && _impl->_dir_iter_stack.top() == directory_iterator()); - } -} - -GHC_INLINE void recursive_directory_iterator::disable_recursion_pending() -{ - _impl->_recursion_pending = false; -} - -// other members as required by 27.2.3, input iterators -GHC_INLINE bool recursive_directory_iterator::operator==(const recursive_directory_iterator& rhs) const -{ - return _impl->_dir_iter_stack.top() == rhs._impl->_dir_iter_stack.top(); -} - -GHC_INLINE bool recursive_directory_iterator::operator!=(const recursive_directory_iterator& rhs) const -{ - return _impl->_dir_iter_stack.top() != rhs._impl->_dir_iter_stack.top(); -} - -// 30.10.14.2 directory_iterator non-member functions -GHC_INLINE recursive_directory_iterator begin(recursive_directory_iterator iter) noexcept -{ - return iter; -} - -GHC_INLINE recursive_directory_iterator end(const recursive_directory_iterator&) noexcept -{ - return recursive_directory_iterator(); -} - -#endif // GHC_EXPAND_IMPL - -} // namespace filesystem -} // namespace ghc - -// cleanup some macros -#undef GHC_INLINE -#undef GHC_EXPAND_IMPL - -#endif // GHC_FILESYSTEM_H diff --git a/external_libraries/pybind11/attr.h b/external_libraries/pybind11/attr.h index 60ed9fd90ea9..db7cd8efff0b 100644 --- a/external_libraries/pybind11/attr.h +++ b/external_libraries/pybind11/attr.h @@ -10,73 +10,113 @@ #pragma once +#include "detail/common.h" #include "cast.h" +#include + PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) /// \addtogroup annotations /// @{ /// Annotation for methods -struct is_method { handle class_; is_method(const handle &c) : class_(c) { } }; +struct is_method { + handle class_; + explicit is_method(const handle &c) : class_(c) {} +}; /// Annotation for operators -struct is_operator { }; +struct is_operator {}; /// Annotation for classes that cannot be subclassed -struct is_final { }; +struct is_final {}; /// Annotation for parent scope -struct scope { handle value; scope(const handle &s) : value(s) { } }; +struct scope { + handle value; + explicit scope(const handle &s) : value(s) {} +}; /// Annotation for documentation -struct doc { const char *value; doc(const char *value) : value(value) { } }; +struct doc { + const char *value; + explicit doc(const char *value) : value(value) {} +}; /// Annotation for function names -struct name { const char *value; name(const char *value) : value(value) { } }; +struct name { + const char *value; + explicit name(const char *value) : value(value) {} +}; /// Annotation indicating that a function is an overload associated with a given "sibling" -struct sibling { handle value; sibling(const handle &value) : value(value.ptr()) { } }; +struct sibling { + handle value; + explicit sibling(const handle &value) : value(value.ptr()) {} +}; /// Annotation indicating that a class derives from another given type -template struct base { +template +struct base { - PYBIND11_DEPRECATED("base() was deprecated in favor of specifying 'T' as a template argument to class_") - base() { } // NOLINT(modernize-use-equals-default): breaks MSVC 2015 when adding an attribute + PYBIND11_DEPRECATED( + "base() was deprecated in favor of specifying 'T' as a template argument to class_") + base() = default; }; /// Keep patient alive while nurse lives -template struct keep_alive { }; +template +struct keep_alive {}; /// Annotation indicating that a class is involved in a multiple inheritance relationship -struct multiple_inheritance { }; +struct multiple_inheritance {}; /// Annotation which enables dynamic attributes, i.e. adds `__dict__` to a class -struct dynamic_attr { }; +struct dynamic_attr {}; /// Annotation which enables the buffer protocol for a type -struct buffer_protocol { }; +struct buffer_protocol {}; /// Annotation which requests that a special metaclass is created for a type struct metaclass { handle value; PYBIND11_DEPRECATED("py::metaclass() is no longer required. It's turned on by default now.") - // NOLINTNEXTLINE(modernize-use-equals-default): breaks MSVC 2015 when adding an attribute - metaclass() {} + metaclass() = default; /// Override pybind11's default metaclass - explicit metaclass(handle value) : value(value) { } + explicit metaclass(handle value) : value(value) {} +}; + +/// Specifies a custom callback with signature `void (PyHeapTypeObject*)` that +/// may be used to customize the Python type. +/// +/// The callback is invoked immediately before `PyType_Ready`. +/// +/// Note: This is an advanced interface, and uses of it may require changes to +/// work with later versions of pybind11. You may wish to consult the +/// implementation of `make_new_python_type` in `detail/classes.h` to understand +/// the context in which the callback will be run. +struct custom_type_setup { + using callback = std::function; + + explicit custom_type_setup(callback value) : value(std::move(value)) {} + + callback value; }; /// Annotation that marks a class as local to the module: -struct module_local { const bool value; constexpr module_local(bool v = true) : value(v) { } }; +struct module_local { + const bool value; + constexpr explicit module_local(bool v = true) : value(v) {} +}; /// Annotation to mark enums as an arithmetic type -struct arithmetic { }; +struct arithmetic {}; /// Mark a function for addition at the beginning of the existing overload chain instead of the end -struct prepend { }; +struct prepend {}; /** \rst A call policy which places one or more guard variables (``Ts...``) around the function call. @@ -96,9 +136,13 @@ struct prepend { }; return foo(args...); // forwarded arguments }); \endrst */ -template struct call_guard; +template +struct call_guard; -template <> struct call_guard<> { using type = detail::void_type; }; +template <> +struct call_guard<> { + using type = detail::void_type; +}; template struct call_guard { @@ -123,8 +167,9 @@ PYBIND11_NAMESPACE_BEGIN(detail) enum op_id : int; enum op_type : int; struct undefined_t; -template struct op_; -inline void keep_alive_impl(size_t Nurse, size_t Patient, function_call &call, handle ret); +template +struct op_; +void keep_alive_impl(size_t Nurse, size_t Patient, function_call &call, handle ret); /// Internal data structure which holds metadata about a keyword argument struct argument_record { @@ -135,15 +180,16 @@ struct argument_record { bool none : 1; ///< True if None is allowed when loading argument_record(const char *name, const char *descr, handle value, bool convert, bool none) - : name(name), descr(descr), value(value), convert(convert), none(none) { } + : name(name), descr(descr), value(value), convert(convert), none(none) {} }; -/// Internal data structure which holds metadata about a bound function (signature, overloads, etc.) +/// Internal data structure which holds metadata about a bound function (signature, overloads, +/// etc.) struct function_record { function_record() : is_constructor(false), is_new_style_constructor(false), is_stateless(false), - is_operator(false), is_method(false), has_args(false), - has_kwargs(false), has_kw_only_args(false), prepend(false) { } + is_operator(false), is_method(false), has_args(false), has_kwargs(false), + prepend(false) {} /// Function name char *name = nullptr; /* why no C++ strings? They generate heavier code.. */ @@ -158,13 +204,13 @@ struct function_record { std::vector args; /// Pointer to lambda function which converts arguments and performs the actual call - handle (*impl) (function_call &) = nullptr; + handle (*impl)(function_call &) = nullptr; /// Storage for the wrapped function pointer and captured data, if any - void *data[3] = { }; + void *data[3] = {}; /// Pointer to custom destructor for 'data' (if needed) - void (*free_data) (function_record *ptr) = nullptr; + void (*free_data)(function_record *ptr) = nullptr; /// Return value policy associated with this function return_value_policy policy = return_value_policy::automatic; @@ -190,17 +236,15 @@ struct function_record { /// True if the function has a '**kwargs' argument bool has_kwargs : 1; - /// True once a 'py::kw_only' is encountered (any following args are keyword-only) - bool has_kw_only_args : 1; - /// True if this function is to be inserted at the beginning of the overload resolution chain bool prepend : 1; /// Number of arguments (including py::args and/or py::kwargs, if present) std::uint16_t nargs; - /// Number of trailing arguments (counted in `nargs`) that are keyword-only - std::uint16_t nargs_kw_only = 0; + /// Number of leading positional arguments, which are terminated by a py::args or py::kwargs + /// argument or by a py::kw_only annotation. + std::uint16_t nargs_pos = 0; /// Number of leading arguments (counted in `nargs`) that are positional-only std::uint16_t nargs_pos_only = 0; @@ -222,7 +266,7 @@ struct function_record { struct type_record { PYBIND11_NOINLINE type_record() : multiple_inheritance(false), dynamic_attr(false), buffer_protocol(false), - default_holder(true), module_local(false), is_final(false) { } + default_holder(true), module_local(false), is_final(false) {} /// Handle to the parent scope handle scope; @@ -260,6 +304,9 @@ struct type_record { /// Custom metaclass (optional) handle metaclass; + /// Custom type setup. + custom_type_setup::callback custom_type_setup_callback; + /// Multiple inheritance marker bool multiple_inheritance : 1; @@ -278,42 +325,45 @@ struct type_record { /// Is the class inheritable from python classes? bool is_final : 1; - PYBIND11_NOINLINE void add_base(const std::type_info &base, void *(*caster)(void *)) { - auto base_info = detail::get_type_info(base, false); + PYBIND11_NOINLINE void add_base(const std::type_info &base, void *(*caster)(void *) ) { + auto *base_info = detail::get_type_info(base, false); if (!base_info) { std::string tname(base.name()); detail::clean_type_id(tname); - pybind11_fail("generic_type: type \"" + std::string(name) + - "\" referenced unknown base type \"" + tname + "\""); + pybind11_fail("generic_type: type \"" + std::string(name) + + "\" referenced unknown base type \"" + tname + "\""); } if (default_holder != base_info->default_holder) { std::string tname(base.name()); detail::clean_type_id(tname); - pybind11_fail("generic_type: type \"" + std::string(name) + "\" " + - (default_holder ? "does not have" : "has") + - " a non-default holder type while its base \"" + tname + "\" " + - (base_info->default_holder ? "does not" : "does")); + pybind11_fail("generic_type: type \"" + std::string(name) + "\" " + + (default_holder ? "does not have" : "has") + + " a non-default holder type while its base \"" + tname + "\" " + + (base_info->default_holder ? "does not" : "does")); } bases.append((PyObject *) base_info->type); - if (base_info->type->tp_dictoffset != 0) - dynamic_attr = true; +#if PY_VERSION_HEX < 0x030B0000 + dynamic_attr |= base_info->type->tp_dictoffset != 0; +#else + dynamic_attr |= (base_info->type->tp_flags & Py_TPFLAGS_MANAGED_DICT) != 0; +#endif - if (caster) + if (caster) { base_info->implicit_casts.emplace_back(type, caster); + } } }; -inline function_call::function_call(const function_record &f, handle p) : - func(f), parent(p) { +inline function_call::function_call(const function_record &f, handle p) : func(f), parent(p) { args.reserve(f.nargs); args_convert.reserve(f.nargs); } /// Tag for a new-style `__init__` defined in `detail/init.h` -struct is_new_style_constructor { }; +struct is_new_style_constructor {}; /** * Partial template specializations to process custom attributes provided to @@ -321,129 +371,177 @@ struct is_new_style_constructor { }; * fields in the type_record and function_record data structures or executed at * runtime to deal with custom call policies (e.g. keep_alive). */ -template struct process_attribute; +template +struct process_attribute; -template struct process_attribute_default { +template +struct process_attribute_default { /// Default implementation: do nothing - static void init(const T &, function_record *) { } - static void init(const T &, type_record *) { } - static void precall(function_call &) { } - static void postcall(function_call &, handle) { } + static void init(const T &, function_record *) {} + static void init(const T &, type_record *) {} + static void precall(function_call &) {} + static void postcall(function_call &, handle) {} }; /// Process an attribute specifying the function's name -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const name &n, function_record *r) { r->name = const_cast(n.value); } }; /// Process an attribute specifying the function's docstring -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const doc &n, function_record *r) { r->doc = const_cast(n.value); } }; /// Process an attribute specifying the function's docstring (provided as a C-style string) -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const char *d, function_record *r) { r->doc = const_cast(d); } static void init(const char *d, type_record *r) { r->doc = const_cast(d); } }; -template <> struct process_attribute : process_attribute { }; +template <> +struct process_attribute : process_attribute {}; /// Process an attribute indicating the function's return value policy -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const return_value_policy &p, function_record *r) { r->policy = p; } }; -/// Process an attribute which indicates that this is an overloaded function associated with a given sibling -template <> struct process_attribute : process_attribute_default { +/// Process an attribute which indicates that this is an overloaded function associated with a +/// given sibling +template <> +struct process_attribute : process_attribute_default { static void init(const sibling &s, function_record *r) { r->sibling = s.value; } }; /// Process an attribute which indicates that this function is a method -template <> struct process_attribute : process_attribute_default { - static void init(const is_method &s, function_record *r) { r->is_method = true; r->scope = s.class_; } +template <> +struct process_attribute : process_attribute_default { + static void init(const is_method &s, function_record *r) { + r->is_method = true; + r->scope = s.class_; + } }; /// Process an attribute which indicates the parent scope of a method -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const scope &s, function_record *r) { r->scope = s.value; } }; /// Process an attribute which indicates that this function is an operator -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const is_operator &, function_record *r) { r->is_operator = true; } }; -template <> struct process_attribute : process_attribute_default { - static void init(const is_new_style_constructor &, function_record *r) { r->is_new_style_constructor = true; } +template <> +struct process_attribute + : process_attribute_default { + static void init(const is_new_style_constructor &, function_record *r) { + r->is_new_style_constructor = true; + } }; -inline void process_kw_only_arg(const arg &a, function_record *r) { - if (!a.name || a.name[0] == '\0') - pybind11_fail("arg(): cannot specify an unnamed argument after an kw_only() annotation"); - ++r->nargs_kw_only; +inline void check_kw_only_arg(const arg &a, function_record *r) { + if (r->args.size() > r->nargs_pos && (!a.name || a.name[0] == '\0')) { + pybind11_fail("arg(): cannot specify an unnamed argument after a kw_only() annotation or " + "args() argument"); + } +} + +inline void append_self_arg_if_needed(function_record *r) { + if (r->is_method && r->args.empty()) { + r->args.emplace_back("self", nullptr, handle(), /*convert=*/true, /*none=*/false); + } } /// Process a keyword argument attribute (*without* a default value) -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const arg &a, function_record *r) { - if (r->is_method && r->args.empty()) - r->args.emplace_back("self", nullptr, handle(), true /*convert*/, false /*none not allowed*/); + append_self_arg_if_needed(r); r->args.emplace_back(a.name, nullptr, handle(), !a.flag_noconvert, a.flag_none); - if (r->has_kw_only_args) process_kw_only_arg(a, r); + check_kw_only_arg(a, r); } }; /// Process a keyword argument attribute (*with* a default value) -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const arg_v &a, function_record *r) { - if (r->is_method && r->args.empty()) - r->args.emplace_back("self", nullptr /*descr*/, handle() /*parent*/, true /*convert*/, false /*none not allowed*/); + if (r->is_method && r->args.empty()) { + r->args.emplace_back( + "self", /*descr=*/nullptr, /*parent=*/handle(), /*convert=*/true, /*none=*/false); + } if (!a.value) { -#if !defined(NDEBUG) +#if defined(PYBIND11_DETAILED_ERROR_MESSAGES) std::string descr("'"); - if (a.name) descr += std::string(a.name) + ": "; + if (a.name) { + descr += std::string(a.name) + ": "; + } descr += a.type + "'"; if (r->is_method) { - if (r->name) - descr += " in method '" + (std::string) str(r->scope) + "." + (std::string) r->name + "'"; - else + if (r->name) { + descr += " in method '" + (std::string) str(r->scope) + "." + + (std::string) r->name + "'"; + } else { descr += " in method of '" + (std::string) str(r->scope) + "'"; + } } else if (r->name) { descr += " in function '" + (std::string) r->name + "'"; } - pybind11_fail("arg(): could not convert default argument " - + descr + " into a Python object (type not registered yet?)"); + pybind11_fail("arg(): could not convert default argument " + descr + + " into a Python object (type not registered yet?)"); #else pybind11_fail("arg(): could not convert default argument " "into a Python object (type not registered yet?). " - "Compile in debug mode for more information."); + "#define PYBIND11_DETAILED_ERROR_MESSAGES or compile in debug mode for " + "more information."); #endif } r->args.emplace_back(a.name, a.descr, a.value.inc_ref(), !a.flag_noconvert, a.flag_none); - if (r->has_kw_only_args) process_kw_only_arg(a, r); + check_kw_only_arg(a, r); } }; /// Process a keyword-only-arguments-follow pseudo argument -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const kw_only &, function_record *r) { - r->has_kw_only_args = true; + append_self_arg_if_needed(r); + if (r->has_args && r->nargs_pos != static_cast(r->args.size())) { + pybind11_fail("Mismatched args() and kw_only(): they must occur at the same relative " + "argument location (or omit kw_only() entirely)"); + } + r->nargs_pos = static_cast(r->args.size()); } }; /// Process a positional-only-argument maker -template <> struct process_attribute : process_attribute_default { +template <> +struct process_attribute : process_attribute_default { static void init(const pos_only &, function_record *r) { + append_self_arg_if_needed(r); r->nargs_pos_only = static_cast(r->args.size()); + if (r->nargs_pos_only > r->nargs_pos) { + pybind11_fail("pos_only(): cannot follow a py::args() argument"); + } + // It also can't follow a kw_only, but a static_assert in pybind11.h checks that } }; -/// Process a parent class attribute. Single inheritance only (class_ itself already guarantees that) +/// Process a parent class attribute. Single inheritance only (class_ itself already guarantees +/// that) template -struct process_attribute::value>> : process_attribute_default { +struct process_attribute::value>> + : process_attribute_default { static void init(const handle &h, type_record *r) { r->bases.append(h); } }; @@ -456,7 +554,9 @@ struct process_attribute> : process_attribute_default> { /// Process a multiple inheritance attribute template <> struct process_attribute : process_attribute_default { - static void init(const multiple_inheritance &, type_record *r) { r->multiple_inheritance = true; } + static void init(const multiple_inheritance &, type_record *r) { + r->multiple_inheritance = true; + } }; template <> @@ -464,6 +564,13 @@ struct process_attribute : process_attribute_default static void init(const dynamic_attr &, type_record *r) { r->dynamic_attr = true; } }; +template <> +struct process_attribute { + static void init(const custom_type_setup &value, type_record *r) { + r->custom_type_setup_callback = value.value; + } +}; + template <> struct process_attribute : process_attribute_default { static void init(const is_final &, type_record *r) { r->is_final = true; } @@ -495,41 +602,59 @@ template <> struct process_attribute : process_attribute_default {}; template -struct process_attribute> : process_attribute_default> { }; +struct process_attribute> : process_attribute_default> {}; /** * Process a keep_alive call policy -- invokes keep_alive_impl during the * pre-call handler if both Nurse, Patient != 0 and use the post-call handler * otherwise */ -template struct process_attribute> : public process_attribute_default> { +template +struct process_attribute> + : public process_attribute_default> { template = 0> - static void precall(function_call &call) { keep_alive_impl(Nurse, Patient, call, handle()); } + static void precall(function_call &call) { + keep_alive_impl(Nurse, Patient, call, handle()); + } template = 0> - static void postcall(function_call &, handle) { } + static void postcall(function_call &, handle) {} template = 0> - static void precall(function_call &) { } + static void precall(function_call &) {} template = 0> - static void postcall(function_call &call, handle ret) { keep_alive_impl(Nurse, Patient, call, ret); } + static void postcall(function_call &call, handle ret) { + keep_alive_impl(Nurse, Patient, call, ret); + } }; /// Recursively iterate over variadic template arguments -template struct process_attributes { - static void init(const Args&... args, function_record *r) { - int unused[] = { 0, (process_attribute::type>::init(args, r), 0) ... }; - ignore_unused(unused); +template +struct process_attributes { + static void init(const Args &...args, function_record *r) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(r); + PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(r); + using expander = int[]; + (void) expander{ + 0, ((void) process_attribute::type>::init(args, r), 0)...}; } - static void init(const Args&... args, type_record *r) { - int unused[] = { 0, (process_attribute::type>::init(args, r), 0) ... }; - ignore_unused(unused); + static void init(const Args &...args, type_record *r) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(r); + PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(r); + using expander = int[]; + (void) expander{0, + (process_attribute::type>::init(args, r), 0)...}; } static void precall(function_call &call) { - int unused[] = { 0, (process_attribute::type>::precall(call), 0) ... }; - ignore_unused(unused); + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(call); + using expander = int[]; + (void) expander{0, + (process_attribute::type>::precall(call), 0)...}; } static void postcall(function_call &call, handle fn_ret) { - int unused[] = { 0, (process_attribute::type>::postcall(call, fn_ret), 0) ... }; - ignore_unused(unused); + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(call, fn_ret); + PYBIND11_WORKAROUND_INCORRECT_GCC_UNUSED_BUT_SET_PARAMETER(fn_ret); + using expander = int[]; + (void) expander{ + 0, (process_attribute::type>::postcall(call, fn_ret), 0)...}; } }; @@ -543,8 +668,9 @@ using extract_guard_t = typename exactly_one_t, Extr /// Check the number of named arguments at compile time template ::value...), - size_t self = constexpr_sum(std::is_same::value...)> + size_t self = constexpr_sum(std::is_same::value...)> constexpr bool expected_num_args(size_t nargs, bool has_args, bool has_kwargs) { + PYBIND11_WORKAROUND_INCORRECT_MSVC_C4100(nargs, has_args, has_kwargs); return named == 0 || (self + named + size_t(has_args) + size_t(has_kwargs)) == nargs; } diff --git a/external_libraries/pybind11/buffer_info.h b/external_libraries/pybind11/buffer_info.h index 47dc39d4eac7..06120d5563f5 100644 --- a/external_libraries/pybind11/buffer_info.h +++ b/external_libraries/pybind11/buffer_info.h @@ -19,9 +19,11 @@ PYBIND11_NAMESPACE_BEGIN(detail) inline std::vector c_strides(const std::vector &shape, ssize_t itemsize) { auto ndim = shape.size(); std::vector strides(ndim, itemsize); - if (ndim > 0) - for (size_t i = ndim - 1; i > 0; --i) + if (ndim > 0) { + for (size_t i = ndim - 1; i > 0; --i) { strides[i - 1] = strides[i] * shape[i]; + } + } return strides; } @@ -29,8 +31,9 @@ inline std::vector c_strides(const std::vector &shape, ssize_t inline std::vector f_strides(const std::vector &shape, ssize_t itemsize) { auto ndim = shape.size(); std::vector strides(ndim, itemsize); - for (size_t i = 1; i < ndim; ++i) + for (size_t i = 1; i < ndim; ++i) { strides[i] = strides[i - 1] * shape[i - 1]; + } return strides; } @@ -41,55 +44,85 @@ struct buffer_info { void *ptr = nullptr; // Pointer to the underlying storage ssize_t itemsize = 0; // Size of individual items in bytes ssize_t size = 0; // Total number of entries - std::string format; // For homogeneous buffers, this should be set to format_descriptor::format() + std::string format; // For homogeneous buffers, this should be set to + // format_descriptor::format() ssize_t ndim = 0; // Number of dimensions std::vector shape; // Shape of the tensor (1 entry per dimension) - std::vector strides; // Number of bytes between adjacent entries (for each per dimension) + std::vector strides; // Number of bytes between adjacent entries + // (for each per dimension) bool readonly = false; // flag to indicate if the underlying storage may be written to buffer_info() = default; - buffer_info(void *ptr, ssize_t itemsize, const std::string &format, ssize_t ndim, - detail::any_container shape_in, detail::any_container strides_in, bool readonly=false) - : ptr(ptr), itemsize(itemsize), size(1), format(format), ndim(ndim), - shape(std::move(shape_in)), strides(std::move(strides_in)), readonly(readonly) { - if (ndim != (ssize_t) shape.size() || ndim != (ssize_t) strides.size()) + buffer_info(void *ptr, + ssize_t itemsize, + const std::string &format, + ssize_t ndim, + detail::any_container shape_in, + detail::any_container strides_in, + bool readonly = false) + : ptr(ptr), itemsize(itemsize), size(1), format(format), ndim(ndim), + shape(std::move(shape_in)), strides(std::move(strides_in)), readonly(readonly) { + if (ndim != (ssize_t) shape.size() || ndim != (ssize_t) strides.size()) { pybind11_fail("buffer_info: ndim doesn't match shape and/or strides length"); - for (size_t i = 0; i < (size_t) ndim; ++i) + } + for (size_t i = 0; i < (size_t) ndim; ++i) { size *= shape[i]; + } } template - buffer_info(T *ptr, detail::any_container shape_in, detail::any_container strides_in, bool readonly=false) - : buffer_info(private_ctr_tag(), ptr, sizeof(T), format_descriptor::format(), static_cast(shape_in->size()), std::move(shape_in), std::move(strides_in), readonly) { } - - buffer_info(void *ptr, ssize_t itemsize, const std::string &format, ssize_t size, bool readonly=false) - : buffer_info(ptr, itemsize, format, 1, {size}, {itemsize}, readonly) { } + buffer_info(T *ptr, + detail::any_container shape_in, + detail::any_container strides_in, + bool readonly = false) + : buffer_info(private_ctr_tag(), + ptr, + sizeof(T), + format_descriptor::format(), + static_cast(shape_in->size()), + std::move(shape_in), + std::move(strides_in), + readonly) {} + + buffer_info(void *ptr, + ssize_t itemsize, + const std::string &format, + ssize_t size, + bool readonly = false) + : buffer_info(ptr, itemsize, format, 1, {size}, {itemsize}, readonly) {} template - buffer_info(T *ptr, ssize_t size, bool readonly=false) - : buffer_info(ptr, sizeof(T), format_descriptor::format(), size, readonly) { } + buffer_info(T *ptr, ssize_t size, bool readonly = false) + : buffer_info(ptr, sizeof(T), format_descriptor::format(), size, readonly) {} template - buffer_info(const T *ptr, ssize_t size, bool readonly=true) - : buffer_info(const_cast(ptr), sizeof(T), format_descriptor::format(), size, readonly) { } + buffer_info(const T *ptr, ssize_t size, bool readonly = true) + : buffer_info( + const_cast(ptr), sizeof(T), format_descriptor::format(), size, readonly) {} explicit buffer_info(Py_buffer *view, bool ownview = true) - : buffer_info(view->buf, view->itemsize, view->format, view->ndim, + : buffer_info( + view->buf, + view->itemsize, + view->format, + view->ndim, {view->shape, view->shape + view->ndim}, /* Though buffer::request() requests PyBUF_STRIDES, ctypes objects * ignore this flag and return a view with NULL strides. * When strides are NULL, build them manually. */ view->strides - ? std::vector(view->strides, view->strides + view->ndim) - : detail::c_strides({view->shape, view->shape + view->ndim}, view->itemsize), - view->readonly) { + ? std::vector(view->strides, view->strides + view->ndim) + : detail::c_strides({view->shape, view->shape + view->ndim}, view->itemsize), + (view->readonly != 0)) { + // NOLINTNEXTLINE(cppcoreguidelines-prefer-member-initializer) this->m_view = view; + // NOLINTNEXTLINE(cppcoreguidelines-prefer-member-initializer) this->ownview = ownview; } buffer_info(const buffer_info &) = delete; - buffer_info& operator=(const buffer_info &) = delete; + buffer_info &operator=(const buffer_info &) = delete; buffer_info(buffer_info &&other) noexcept { (*this) = std::move(other); } @@ -108,17 +141,28 @@ struct buffer_info { } ~buffer_info() { - if (m_view && ownview) { PyBuffer_Release(m_view); delete m_view; } + if (m_view && ownview) { + PyBuffer_Release(m_view); + delete m_view; + } } Py_buffer *view() const { return m_view; } Py_buffer *&view() { return m_view; } -private: - struct private_ctr_tag { }; - buffer_info(private_ctr_tag, void *ptr, ssize_t itemsize, const std::string &format, ssize_t ndim, - detail::any_container &&shape_in, detail::any_container &&strides_in, bool readonly) - : buffer_info(ptr, itemsize, format, ndim, std::move(shape_in), std::move(strides_in), readonly) { } +private: + struct private_ctr_tag {}; + + buffer_info(private_ctr_tag, + void *ptr, + ssize_t itemsize, + const std::string &format, + ssize_t ndim, + detail::any_container &&shape_in, + detail::any_container &&strides_in, + bool readonly) + : buffer_info( + ptr, itemsize, format, ndim, std::move(shape_in), std::move(strides_in), readonly) {} Py_buffer *m_view = nullptr; bool ownview = false; @@ -126,17 +170,22 @@ struct buffer_info { PYBIND11_NAMESPACE_BEGIN(detail) -template struct compare_buffer_info { - static bool compare(const buffer_info& b) { +template +struct compare_buffer_info { + static bool compare(const buffer_info &b) { return b.format == format_descriptor::format() && b.itemsize == (ssize_t) sizeof(T); } }; -template struct compare_buffer_info::value>> { - static bool compare(const buffer_info& b) { - return (size_t) b.itemsize == sizeof(T) && (b.format == format_descriptor::value || - ((sizeof(T) == sizeof(long)) && b.format == (std::is_unsigned::value ? "L" : "l")) || - ((sizeof(T) == sizeof(size_t)) && b.format == (std::is_unsigned::value ? "N" : "n"))); +template +struct compare_buffer_info::value>> { + static bool compare(const buffer_info &b) { + return (size_t) b.itemsize == sizeof(T) + && (b.format == format_descriptor::value + || ((sizeof(T) == sizeof(long)) + && b.format == (std::is_unsigned::value ? "L" : "l")) + || ((sizeof(T) == sizeof(size_t)) + && b.format == (std::is_unsigned::value ? "N" : "n"))); } }; diff --git a/external_libraries/pybind11/cast.h b/external_libraries/pybind11/cast.h index a748c77c0fa6..a0e32281bcf5 100644 --- a/external_libraries/pybind11/cast.h +++ b/external_libraries/pybind11/cast.h @@ -10,11 +10,12 @@ #pragma once -#include "pytypes.h" #include "detail/common.h" #include "detail/descr.h" #include "detail/type_caster_base.h" #include "detail/typeid.h" +#include "pytypes.h" + #include #include #include @@ -27,62 +28,55 @@ #include #include -#if defined(PYBIND11_CPP17) -# if defined(__has_include) -# if __has_include() -# define PYBIND11_HAS_STRING_VIEW -# endif -# elif defined(_MSC_VER) -# define PYBIND11_HAS_STRING_VIEW -# endif -#endif -#ifdef PYBIND11_HAS_STRING_VIEW -#include -#endif - -#if defined(__cpp_lib_char8_t) && __cpp_lib_char8_t >= 201811L -# define PYBIND11_HAS_U8STRING -#endif - PYBIND11_NAMESPACE_BEGIN(PYBIND11_NAMESPACE) PYBIND11_NAMESPACE_BEGIN(detail) -template class type_caster : public type_caster_base { }; -template using make_caster = type_caster>; +template +class type_caster : public type_caster_base {}; +template +using make_caster = type_caster>; // Shortcut for calling a caster's `cast_op_type` cast operator for casting a type_caster to a T -template typename make_caster::template cast_op_type cast_op(make_caster &caster) { +template +typename make_caster::template cast_op_type cast_op(make_caster &caster) { return caster.operator typename make_caster::template cast_op_type(); } -template typename make_caster::template cast_op_type::type> +template +typename make_caster::template cast_op_type::type> cast_op(make_caster &&caster) { - return std::move(caster).operator - typename make_caster::template cast_op_type::type>(); + return std::move(caster).operator typename make_caster:: + template cast_op_type::type>(); } -template class type_caster> { +template +class type_caster> { private: using caster_t = make_caster; caster_t subcaster; - using reference_t = type&; - using subcaster_cast_op_type = - typename caster_t::template cast_op_type; - - static_assert(std::is_same::type &, subcaster_cast_op_type>::value || - std::is_same::value, - "std::reference_wrapper caster requires T to have a caster with an " - "`operator T &()` or `operator const T &()`"); + using reference_t = type &; + using subcaster_cast_op_type = typename caster_t::template cast_op_type; + + static_assert( + std::is_same::type &, subcaster_cast_op_type>::value + || std::is_same::value, + "std::reference_wrapper caster requires T to have a caster with an " + "`operator T &()` or `operator const T &()`"); + public: bool load(handle src, bool convert) { return subcaster.load(src, convert); } static constexpr auto name = caster_t::name; - static handle cast(const std::reference_wrapper &src, return_value_policy policy, handle parent) { + static handle + cast(const std::reference_wrapper &src, return_value_policy policy, handle parent) { // It is definitely wrong to take ownership of this pointer, so mask that rvp - if (policy == return_value_policy::take_ownership || policy == return_value_policy::automatic) + if (policy == return_value_policy::take_ownership + || policy == return_value_policy::automatic) { policy = return_value_policy::automatic_reference; + } return caster_t::cast(&src.get(), policy, parent); } - template using cast_op_type = std::reference_wrapper; - operator std::reference_wrapper() { return cast_op(subcaster); } + template + using cast_op_type = std::reference_wrapper; + explicit operator std::reference_wrapper() { return cast_op(subcaster); } }; #define PYBIND11_TYPE_CASTER(type, py_name) \ @@ -91,46 +85,52 @@ protected: \ public: \ static constexpr auto name = py_name; \ - template >::value, int> = 0> \ - static handle cast(T_ *src, return_value_policy policy, handle parent) { \ + template >::value, \ + int> = 0> \ + static ::pybind11::handle cast( \ + T_ *src, ::pybind11::return_value_policy policy, ::pybind11::handle parent) { \ if (!src) \ - return none().release(); \ - if (policy == return_value_policy::take_ownership) { \ + return ::pybind11::none().release(); \ + if (policy == ::pybind11::return_value_policy::take_ownership) { \ auto h = cast(std::move(*src), policy, parent); \ delete src; \ return h; \ } \ return cast(*src, policy, parent); \ } \ - operator type *() { return &value; } \ - operator type &() { return value; } \ - operator type &&() && { return std::move(value); } \ + operator type *() { return &value; } /* NOLINT(bugprone-macro-parentheses) */ \ + operator type &() { return value; } /* NOLINT(bugprone-macro-parentheses) */ \ + operator type &&() && { return std::move(value); } /* NOLINT(bugprone-macro-parentheses) */ \ template \ - using cast_op_type = pybind11::detail::movable_cast_op_type + using cast_op_type = ::pybind11::detail::movable_cast_op_type -template using is_std_char_type = any_of< - std::is_same, /* std::string */ +template +using is_std_char_type = any_of, /* std::string */ #if defined(PYBIND11_HAS_U8STRING) - std::is_same, /* std::u8string */ + std::is_same, /* std::u8string */ #endif - std::is_same, /* std::u16string */ - std::is_same, /* std::u32string */ - std::is_same /* std::wstring */ ->; - + std::is_same, /* std::u16string */ + std::is_same, /* std::u32string */ + std::is_same /* std::wstring */ + >; template struct type_caster::value && !is_std_char_type::value>> { using _py_type_0 = conditional_t; - using _py_type_1 = conditional_t::value, _py_type_0, typename std::make_unsigned<_py_type_0>::type>; + using _py_type_1 = conditional_t::value, + _py_type_0, + typename std::make_unsigned<_py_type_0>::type>; using py_type = conditional_t::value, double, _py_type_1>; -public: +public: bool load(handle src, bool convert) { py_type py_value; - if (!src) + if (!src) { return false; + } #if !defined(PYPY_VERSION) auto index_check = [](PyObject *o) { return PyIndex_Check(o); }; @@ -141,26 +141,26 @@ struct type_caster::value && !is_std_char_t #endif if (std::is_floating_point::value) { - if (convert || PyFloat_Check(src.ptr())) + if (convert || PyFloat_Check(src.ptr())) { py_value = (py_type) PyFloat_AsDouble(src.ptr()); - else + } else { return false; - } else if (PyFloat_Check(src.ptr())) { - return false; - } else if (!convert && !PYBIND11_LONG_CHECK(src.ptr()) && !index_check(src.ptr())) { + } + } else if (PyFloat_Check(src.ptr()) + || (!convert && !PYBIND11_LONG_CHECK(src.ptr()) && !index_check(src.ptr()))) { return false; } else { handle src_or_index = src; -#if PY_VERSION_HEX < 0x03080000 + // PyPy: 7.3.7's 3.8 does not implement PyLong_*'s __index__ calls. +#if PY_VERSION_HEX < 0x03080000 || defined(PYPY_VERSION) object index; - if (!PYBIND11_LONG_CHECK(src.ptr())) { // So: index_check(src.ptr()) + if (!PYBIND11_LONG_CHECK(src.ptr())) { // So: index_check(src.ptr()) index = reinterpret_steal(PyNumber_Index(src.ptr())); if (!index) { PyErr_Clear(); if (!convert) return false; - } - else { + } else { src_or_index = index; } } @@ -169,8 +169,8 @@ struct type_caster::value && !is_std_char_t py_value = as_unsigned(src_or_index.ptr()); } else { // signed integer: py_value = sizeof(T) <= sizeof(long) - ? (py_type) PyLong_AsLong(src_or_index.ptr()) - : (py_type) PYBIND11_LONG_AS_LONGLONG(src_or_index.ptr()); + ? (py_type) PyLong_AsLong(src_or_index.ptr()) + : (py_type) PYBIND11_LONG_AS_LONGLONG(src_or_index.ptr()); } } @@ -179,12 +179,14 @@ struct type_caster::value && !is_std_char_t // Check to see if the conversion is valid (integers should match exactly) // Signed/unsigned checks happen elsewhere - if (py_err || (std::is_integral::value && sizeof(py_type) != sizeof(T) && py_value != (py_type) (T) py_value)) { + if (py_err + || (std::is_integral::value && sizeof(py_type) != sizeof(T) + && py_value != (py_type) (T) py_value)) { PyErr_Clear(); - if (py_err && convert && PyNumber_Check(src.ptr())) { + if (py_err && convert && (PyNumber_Check(src.ptr()) != 0)) { auto tmp = reinterpret_steal(std::is_floating_point::value - ? PyNumber_Float(src.ptr()) - : PyNumber_Long(src.ptr())); + ? PyNumber_Float(src.ptr()) + : PyNumber_Long(src.ptr())); PyErr_Clear(); return load(tmp, false); } @@ -195,55 +197,67 @@ struct type_caster::value && !is_std_char_t return true; } - template + template static typename std::enable_if::value, handle>::type cast(U src, return_value_policy /* policy */, handle /* parent */) { return PyFloat_FromDouble((double) src); } - template - static typename std::enable_if::value && std::is_signed::value && (sizeof(U) <= sizeof(long)), handle>::type + template + static typename std::enable_if::value && std::is_signed::value + && (sizeof(U) <= sizeof(long)), + handle>::type cast(U src, return_value_policy /* policy */, handle /* parent */) { return PYBIND11_LONG_FROM_SIGNED((long) src); } - template - static typename std::enable_if::value && std::is_unsigned::value && (sizeof(U) <= sizeof(unsigned long)), handle>::type + template + static typename std::enable_if::value && std::is_unsigned::value + && (sizeof(U) <= sizeof(unsigned long)), + handle>::type cast(U src, return_value_policy /* policy */, handle /* parent */) { return PYBIND11_LONG_FROM_UNSIGNED((unsigned long) src); } - template - static typename std::enable_if::value && std::is_signed::value && (sizeof(U) > sizeof(long)), handle>::type + template + static typename std::enable_if::value && std::is_signed::value + && (sizeof(U) > sizeof(long)), + handle>::type cast(U src, return_value_policy /* policy */, handle /* parent */) { return PyLong_FromLongLong((long long) src); } - template - static typename std::enable_if::value && std::is_unsigned::value && (sizeof(U) > sizeof(unsigned long)), handle>::type + template + static typename std::enable_if::value && std::is_unsigned::value + && (sizeof(U) > sizeof(unsigned long)), + handle>::type cast(U src, return_value_policy /* policy */, handle /* parent */) { return PyLong_FromUnsignedLongLong((unsigned long long) src); } - PYBIND11_TYPE_CASTER(T, _::value>("int", "float")); + PYBIND11_TYPE_CASTER(T, const_name::value>("int", "float")); }; -template struct void_caster { +template +struct void_caster { public: bool load(handle src, bool) { - if (src && src.is_none()) + if (src && src.is_none()) { return true; + } return false; } static handle cast(T, return_value_policy /* policy */, handle /* parent */) { return none().inc_ref(); } - PYBIND11_TYPE_CASTER(T, _("None")); + PYBIND11_TYPE_CASTER(T, const_name("None")); }; -template <> class type_caster : public void_caster {}; +template <> +class type_caster : public void_caster {}; -template <> class type_caster : public type_caster { +template <> +class type_caster : public type_caster { public: using type_caster::cast; @@ -263,7 +277,7 @@ template <> class type_caster : public type_caster { } /* Check if this is a C++ type */ - auto &bases = all_type_info((PyTypeObject *) type::handle_of(h).ptr()); + const auto &bases = all_type_info((PyTypeObject *) type::handle_of(h).ptr()); if (bases.size() == 1) { // Only allowing loading from a single-value type value = values_and_holders(reinterpret_cast(h.ptr())).begin()->value_ptr(); return true; @@ -274,24 +288,31 @@ template <> class type_caster : public type_caster { } static handle cast(const void *ptr, return_value_policy /* policy */, handle /* parent */) { - if (ptr) + if (ptr) { return capsule(ptr).release(); + } return none().inc_ref(); } - template using cast_op_type = void*&; - operator void *&() { return value; } - static constexpr auto name = _("capsule"); + template + using cast_op_type = void *&; + explicit operator void *&() { return value; } + static constexpr auto name = const_name("capsule"); + private: void *value = nullptr; }; -template <> class type_caster : public void_caster { }; +template <> +class type_caster : public void_caster {}; -template <> class type_caster { +template <> +class type_caster { public: bool load(handle src, bool convert) { - if (!src) return false; + if (!src) { + return false; + } if (src.ptr() == Py_True) { value = true; return true; @@ -300,29 +321,29 @@ template <> class type_caster { value = false; return true; } - if (convert || !std::strcmp("numpy.bool_", Py_TYPE(src.ptr())->tp_name)) { + if (convert || (std::strcmp("numpy.bool_", Py_TYPE(src.ptr())->tp_name) == 0)) { // (allow non-implicit conversion for numpy booleans) Py_ssize_t res = -1; if (src.is_none()) { - res = 0; // None is implicitly converted to False + res = 0; // None is implicitly converted to False } - #if defined(PYPY_VERSION) - // On PyPy, check that "__bool__" (or "__nonzero__" on Python 2.7) attr exists +#if defined(PYPY_VERSION) + // On PyPy, check that "__bool__" attr exists else if (hasattr(src, PYBIND11_BOOL_ATTR)) { res = PyObject_IsTrue(src.ptr()); } - #else +#else // Alternate approach for CPython: this does the same as the above, but optimized // using the CPython API so as to avoid an unneeded attribute lookup. - else if (auto tp_as_number = src.ptr()->ob_type->tp_as_number) { + else if (auto *tp_as_number = src.ptr()->ob_type->tp_as_number) { if (PYBIND11_NB_BOOL(tp_as_number)) { res = (*PYBIND11_NB_BOOL(tp_as_number))(src.ptr()); } } - #endif +#endif if (res == 0 || res == 1) { - value = (bool) res; + value = (res != 0); return true; } PyErr_Clear(); @@ -332,138 +353,182 @@ template <> class type_caster { static handle cast(bool src, return_value_policy /* policy */, handle /* parent */) { return handle(src ? Py_True : Py_False).inc_ref(); } - PYBIND11_TYPE_CASTER(bool, _("bool")); + PYBIND11_TYPE_CASTER(bool, const_name("bool")); }; // Helper class for UTF-{8,16,32} C++ stl strings: -template struct string_caster { +template +struct string_caster { using CharT = typename StringType::value_type; // Simplify life by being able to assume standard char sizes (the standard only guarantees // minimums, but Python requires exact sizes) - static_assert(!std::is_same::value || sizeof(CharT) == 1, "Unsupported char size != 1"); + static_assert(!std::is_same::value || sizeof(CharT) == 1, + "Unsupported char size != 1"); #if defined(PYBIND11_HAS_U8STRING) - static_assert(!std::is_same::value || sizeof(CharT) == 1, "Unsupported char8_t size != 1"); + static_assert(!std::is_same::value || sizeof(CharT) == 1, + "Unsupported char8_t size != 1"); #endif - static_assert(!std::is_same::value || sizeof(CharT) == 2, "Unsupported char16_t size != 2"); - static_assert(!std::is_same::value || sizeof(CharT) == 4, "Unsupported char32_t size != 4"); + static_assert(!std::is_same::value || sizeof(CharT) == 2, + "Unsupported char16_t size != 2"); + static_assert(!std::is_same::value || sizeof(CharT) == 4, + "Unsupported char32_t size != 4"); // wchar_t can be either 16 bits (Windows) or 32 (everywhere else) static_assert(!std::is_same::value || sizeof(CharT) == 2 || sizeof(CharT) == 4, - "Unsupported wchar_t size != 2/4"); + "Unsupported wchar_t size != 2/4"); static constexpr size_t UTF_N = 8 * sizeof(CharT); bool load(handle src, bool) { -#if PY_MAJOR_VERSION < 3 - object temp; -#endif handle load_src = src; if (!src) { return false; } if (!PyUnicode_Check(load_src.ptr())) { -#if PY_MAJOR_VERSION >= 3 - return load_bytes(load_src); -#else - if (std::is_same::value) { - return load_bytes(load_src); - } + return load_raw(load_src); + } - // The below is a guaranteed failure in Python 3 when PyUnicode_Check returns false - if (!PYBIND11_BYTES_CHECK(load_src.ptr())) + // For UTF-8 we avoid the need for a temporary `bytes` object by using + // `PyUnicode_AsUTF8AndSize`. + if (PYBIND11_SILENCE_MSVC_C4127(UTF_N == 8)) { + Py_ssize_t size = -1; + const auto *buffer + = reinterpret_cast(PyUnicode_AsUTF8AndSize(load_src.ptr(), &size)); + if (!buffer) { + PyErr_Clear(); return false; - - temp = reinterpret_steal(PyUnicode_FromObject(load_src.ptr())); - if (!temp) { PyErr_Clear(); return false; } - load_src = temp; -#endif + } + value = StringType(buffer, static_cast(size)); + return true; } - auto utfNbytes = reinterpret_steal(PyUnicode_AsEncodedString( - load_src.ptr(), UTF_N == 8 ? "utf-8" : UTF_N == 16 ? "utf-16" : "utf-32", nullptr)); - if (!utfNbytes) { PyErr_Clear(); return false; } + auto utfNbytes + = reinterpret_steal(PyUnicode_AsEncodedString(load_src.ptr(), + UTF_N == 8 ? "utf-8" + : UTF_N == 16 ? "utf-16" + : "utf-32", + nullptr)); + if (!utfNbytes) { + PyErr_Clear(); + return false; + } - const auto *buffer = reinterpret_cast(PYBIND11_BYTES_AS_STRING(utfNbytes.ptr())); + const auto *buffer + = reinterpret_cast(PYBIND11_BYTES_AS_STRING(utfNbytes.ptr())); size_t length = (size_t) PYBIND11_BYTES_SIZE(utfNbytes.ptr()) / sizeof(CharT); - if (UTF_N > 8) { buffer++; length--; } // Skip BOM for UTF-16/32 + // Skip BOM for UTF-16/32 + if (PYBIND11_SILENCE_MSVC_C4127(UTF_N > 8)) { + buffer++; + length--; + } value = StringType(buffer, length); // If we're loading a string_view we need to keep the encoded Python object alive: - if (IsView) + if (IsView) { loader_life_support::add_patient(utfNbytes); + } return true; } - static handle cast(const StringType &src, return_value_policy /* policy */, handle /* parent */) { + static handle + cast(const StringType &src, return_value_policy /* policy */, handle /* parent */) { const char *buffer = reinterpret_cast(src.data()); auto nbytes = ssize_t(src.size() * sizeof(CharT)); handle s = decode_utfN(buffer, nbytes); - if (!s) throw error_already_set(); + if (!s) { + throw error_already_set(); + } return s; } - PYBIND11_TYPE_CASTER(StringType, _(PYBIND11_STRING_NAME)); + PYBIND11_TYPE_CASTER(StringType, const_name(PYBIND11_STRING_NAME)); private: static handle decode_utfN(const char *buffer, ssize_t nbytes) { #if !defined(PYPY_VERSION) - return - UTF_N == 8 ? PyUnicode_DecodeUTF8(buffer, nbytes, nullptr) : - UTF_N == 16 ? PyUnicode_DecodeUTF16(buffer, nbytes, nullptr, nullptr) : - PyUnicode_DecodeUTF32(buffer, nbytes, nullptr, nullptr); + return UTF_N == 8 ? PyUnicode_DecodeUTF8(buffer, nbytes, nullptr) + : UTF_N == 16 ? PyUnicode_DecodeUTF16(buffer, nbytes, nullptr, nullptr) + : PyUnicode_DecodeUTF32(buffer, nbytes, nullptr, nullptr); #else - // PyPy segfaults when on PyUnicode_DecodeUTF16 (and possibly on PyUnicode_DecodeUTF32 as well), - // so bypass the whole thing by just passing the encoding as a string value, which works properly: - return PyUnicode_Decode(buffer, nbytes, UTF_N == 8 ? "utf-8" : UTF_N == 16 ? "utf-16" : "utf-32", nullptr); + // PyPy segfaults when on PyUnicode_DecodeUTF16 (and possibly on PyUnicode_DecodeUTF32 as + // well), so bypass the whole thing by just passing the encoding as a string value, which + // works properly: + return PyUnicode_Decode(buffer, + nbytes, + UTF_N == 8 ? "utf-8" + : UTF_N == 16 ? "utf-16" + : "utf-32", + nullptr); #endif } - // When loading into a std::string or char*, accept a bytes object as-is (i.e. + // When loading into a std::string or char*, accept a bytes/bytearray object as-is (i.e. // without any encoding/decoding attempt). For other C++ char sizes this is a no-op. // which supports loading a unicode from a str, doesn't take this path. template - bool load_bytes(enable_if_t::value, handle> src) { + bool load_raw(enable_if_t::value, handle> src) { if (PYBIND11_BYTES_CHECK(src.ptr())) { - // We were passed a Python 3 raw bytes; accept it into a std::string or char* + // We were passed raw bytes; accept it into a std::string or char* // without any encoding attempt. const char *bytes = PYBIND11_BYTES_AS_STRING(src.ptr()); - if (bytes) { - value = StringType(bytes, (size_t) PYBIND11_BYTES_SIZE(src.ptr())); - return true; + if (!bytes) { + pybind11_fail("Unexpected PYBIND11_BYTES_AS_STRING() failure."); + } + value = StringType(bytes, (size_t) PYBIND11_BYTES_SIZE(src.ptr())); + return true; + } + if (PyByteArray_Check(src.ptr())) { + // We were passed a bytearray; accept it into a std::string or char* + // without any encoding attempt. + const char *bytearray = PyByteArray_AsString(src.ptr()); + if (!bytearray) { + pybind11_fail("Unexpected PyByteArray_AsString() failure."); } + value = StringType(bytearray, (size_t) PyByteArray_Size(src.ptr())); + return true; } return false; } template - bool load_bytes(enable_if_t::value, handle>) { return false; } + bool load_raw(enable_if_t::value, handle>) { + return false; + } }; template -struct type_caster, enable_if_t::value>> +struct type_caster, + enable_if_t::value>> : string_caster> {}; #ifdef PYBIND11_HAS_STRING_VIEW template -struct type_caster, enable_if_t::value>> +struct type_caster, + enable_if_t::value>> : string_caster, true> {}; #endif // Type caster for C-style strings. We basically use a std::string type caster, but also add the // ability to use None as a nullptr char* (which the string caster doesn't allow). -template struct type_caster::value>> { +template +struct type_caster::value>> { using StringType = std::basic_string; - using StringCaster = type_caster; + using StringCaster = make_caster; StringCaster str_caster; bool none = false; CharT one_char = 0; + public: bool load(handle src, bool convert) { - if (!src) return false; + if (!src) { + return false; + } if (src.is_none()) { // Defer accepting None to other overloads (if we aren't in convert mode): - if (!convert) return false; + if (!convert) { + return false; + } none = true; return true; } @@ -471,45 +536,58 @@ template struct type_caster::value) { handle s = PyUnicode_DecodeLatin1((const char *) &src, 1, nullptr); - if (!s) throw error_already_set(); + if (!s) { + throw error_already_set(); + } return s; } return StringCaster::cast(StringType(1, src), policy, parent); } - operator CharT*() { return none ? nullptr : const_cast(static_cast(str_caster).c_str()); } - operator CharT&() { - if (none) + explicit operator CharT *() { + return none ? nullptr : const_cast(static_cast(str_caster).c_str()); + } + explicit operator CharT &() { + if (none) { throw value_error("Cannot convert None to a character"); + } auto &value = static_cast(str_caster); size_t str_len = value.size(); - if (str_len == 0) + if (str_len == 0) { throw value_error("Cannot convert empty string to a character"); + } // If we're in UTF-8 mode, we have two possible failures: one for a unicode character that - // is too high, and one for multiple unicode characters (caught later), so we need to figure - // out how long the first encoded character is in bytes to distinguish between these two - // errors. We also allow want to allow unicode characters U+0080 through U+00FF, as those - // can fit into a single char value. - if (StringCaster::UTF_N == 8 && str_len > 1 && str_len <= 4) { + // is too high, and one for multiple unicode characters (caught later), so we need to + // figure out how long the first encoded character is in bytes to distinguish between these + // two errors. We also allow want to allow unicode characters U+0080 through U+00FF, as + // those can fit into a single char value. + if (PYBIND11_SILENCE_MSVC_C4127(StringCaster::UTF_N == 8) && str_len > 1 && str_len <= 4) { auto v0 = static_cast(value[0]); - size_t char0_bytes = !(v0 & 0x80) ? 1 : // low bits only: 0-127 - (v0 & 0xE0) == 0xC0 ? 2 : // 0b110xxxxx - start of 2-byte sequence - (v0 & 0xF0) == 0xE0 ? 3 : // 0b1110xxxx - start of 3-byte sequence - 4; // 0b11110xxx - start of 4-byte sequence + // low bits only: 0-127 + // 0b110xxxxx - start of 2-byte sequence + // 0b1110xxxx - start of 3-byte sequence + // 0b11110xxx - start of 4-byte sequence + size_t char0_bytes = (v0 & 0x80) == 0 ? 1 + : (v0 & 0xE0) == 0xC0 ? 2 + : (v0 & 0xF0) == 0xE0 ? 3 + : 4; if (char0_bytes == str_len) { // If we have a 128-255 value, we can decode it into a single char: if (char0_bytes == 2 && (v0 & 0xFC) == 0xC0) { // 0x110000xx 0x10xxxxxx - one_char = static_cast(((v0 & 3) << 6) + (static_cast(value[1]) & 0x3F)); + one_char = static_cast(((v0 & 3) << 6) + + (static_cast(value[1]) & 0x3F)); return one_char; } // Otherwise we have a single character, but it's > U+00FF @@ -520,36 +598,42 @@ template struct type_caster(value[0]); - if (one_char >= 0xD800 && one_char < 0xE000) + if (one_char >= 0xD800 && one_char < 0xE000) { throw value_error("Character code point not in range(0x10000)"); + } } - if (str_len != 1) + if (str_len != 1) { throw value_error("Expected a character, but multi-character string found"); + } one_char = value[0]; return one_char; } - static constexpr auto name = _(PYBIND11_STRING_NAME); - template using cast_op_type = pybind11::detail::cast_op_type<_T>; + static constexpr auto name = const_name(PYBIND11_STRING_NAME); + template + using cast_op_type = pybind11::detail::cast_op_type<_T>; }; // Base implementation for std::tuple and std::pair -template class Tuple, typename... Ts> class tuple_caster { +template