diff --git a/.conda/bld.bat b/.conda/bld.bat deleted file mode 100644 index 6de1123c892..00000000000 --- a/.conda/bld.bat +++ /dev/null @@ -1,7 +0,0 @@ -:: Install RMG -mingw32-make install - -:: lazy "install" of everything in our 'external' folder. -:: most of which should probably be elsewhere -mkdir %SP_DIR%\external -xcopy %SRC_DIR%\external %SP_DIR%\external /E /Y diff --git a/.conda/build.sh b/.conda/build.sh deleted file mode 100644 index c942c713eb1..00000000000 --- a/.conda/build.sh +++ /dev/null @@ -1,6 +0,0 @@ -# Install RMG -make install - -# lazy "install" of everything in our 'external' folder. -# most of which should probably be elsewhere -cp -R ${SRC_DIR}/external ${SP_DIR} diff --git a/.conda/conda_build_config.yaml b/.conda/conda_build_config.yaml deleted file mode 100644 index 6a0cca7f0c7..00000000000 --- a/.conda/conda_build_config.yaml +++ /dev/null @@ -1,8 +0,0 @@ -python: - - 3.7 -numpy: - - 1.15 - -# Specifically for Travis build. Should change if building locally. -CONDA_BUILD_SYSROOT: - - /Library/Developer/CommandLineTools/SDKs/MacOSX10.15.sdk # [osx] diff --git a/.conda/meta.yaml b/.conda/meta.yaml index b1df7678e67..20466c88d3b 100644 --- a/.conda/meta.yaml +++ b/.conda/meta.yaml @@ -1,87 +1,185 @@ -# For conda build +# meta.yaml +# +# welcome to meta.yaml, poor soul that you are. this file specifies the 'recipe' for compiling +# RMG-Py into binaries which can then be uploaded for access via the conda package manager +# to use this file, you can follow the procedure shown in .github/workflows/conda_build.yml +# package: name: rmg - version: 3.2.0 + version: 3.3.0 source: path: ../ build: - number: {{ environ.get('GIT_DESCRIBE_NUMBER', 0) }} + number: 0 + script: | + python utilities.py check-pydas # write the rmgpy/solver/settings.pxi file + python setup.py install --single-version-externally-managed --record=record.txt requirements: build: - - {{ compiler('c') }} # [unix] + - {{ compiler('c') }} host: - - cython >=0.25.2 - - lpsolve55 - - numpy - - openbabel >=3 - - pydas >=1.0.2 - - pydqed >=1.0.1 - - pyrdl - - python - - quantities - - rdkit >=2018 - - scipy - - setuptools + - conda-forge::cairo + - conda-forge::cairocffi + - conda-forge::ffmpeg >=7 + - conda-forge::xlrd + - conda-forge::xlwt + - conda-forge::h5py + - conda-forge::graphviz >=12 + - conda-forge::markupsafe + - conda-forge::psutil + - conda-forge::ncurses + - conda-forge::suitesparse + - conda-forge::graphviz + - conda-forge::pyopenssl >20 + - conda-forge::coolprop + - conda-forge::cantera =2.6 + - conda-forge::mopac + - conda-forge::cclib >=1.6.3,<1.9 + - conda-forge::openbabel >=3 + - conda-forge::rdkit >=2022.09.1 + - conda-forge::python >=3.9 + - conda-forge::setuptools <80 + - conda-forge::coverage + - conda-forge::cython >=0.25.2,<3.1 + - conda-forge::scikit-learn + - conda-forge::scipy >=1.9 + - conda-forge::numpy >=1.10.0,<2 + - conda-forge::pydot + - conda-forge::jinja2 + - conda-forge::jupyter + - conda-forge::pymongo + - conda-forge::pyparsing + - conda-forge::pyyaml + - conda-forge::networkx + - conda-forge::pytest + - conda-forge::pytest-cov + - conda-forge::pytest-check + - conda-forge::pyutilib + - conda-forge::matplotlib >=1.5 + - conda-forge::mpmath + - conda-forge::pandas + - conda-forge::gprof2dot + - conda-forge::numdifftools + - conda-forge::quantities !=0.16.0,!=0.16.1 + - conda-forge::ringdecomposerlib-python + - rmg::pydas >=1.0.3 + - rmg::pydqed >=1.0.3 + - rmg::symmetry + - rmg::rmgdatabase =3.3.0 + - blas=*=openblas run: - - cairo - - cairocffi - - cantera >=2.3.0 - - cclib >=1.6.3 - - chemprop - - coolprop - - coverage - - cython >=0.25.2 - - ffmpeg - - gprof2dot - - graphviz - - h5py - - jinja2 - - jupyter - - lpsolve55 - - markupsafe - - matplotlib >=1.5 - - mopac - - mpmath - - muq2 - - networkx - - nose - - numdifftools - - {{ pin_compatible('numpy') }} - - openbabel >=3 - - pandas - - psutil - - pydas >=1.0.2 - - pydot - - pydqed >=1.0.1 - - pymongo - - pyparsing - - pyrdl - - python - - pyyaml - - pyzmq - - quantities - - rdkit >=2018 - - rmgdatabase >=3.2.0 - - scikit-learn - - scipy - - symmetry - - xlrd - - xlwt + - conda-forge::cairo + - conda-forge::cairocffi + - conda-forge::ffmpeg >=7 + - conda-forge::xlrd + - conda-forge::xlwt + - conda-forge::h5py + - conda-forge::graphviz >=12 + - conda-forge::markupsafe + - conda-forge::psutil + - conda-forge::ncurses + - conda-forge::suitesparse + - conda-forge::graphviz + - conda-forge::pyopenssl >20 + - conda-forge::coolprop + - conda-forge::cantera =2.6 + - conda-forge::mopac + - conda-forge::cclib >=1.6.3,<1.9 + - conda-forge::openbabel >=3 + - conda-forge::rdkit >=2022.09.1 + - conda-forge::python >=3.9 + - conda-forge::setuptools <80 + - conda-forge::coverage + - conda-forge::cython >=0.25.2,<3.1 + - conda-forge::scikit-learn + - conda-forge::scipy >=1.9 + - conda-forge::numpy >=1.10.0,<2 + - conda-forge::pydot + - conda-forge::jinja2 + - conda-forge::jupyter + - conda-forge::pymongo + - conda-forge::pyparsing + - conda-forge::pyyaml + - conda-forge::networkx + - conda-forge::pytest + - conda-forge::pytest-cov + - conda-forge::pytest-check + - conda-forge::pyutilib + - conda-forge::matplotlib >=1.5 + - conda-forge::mpmath + - conda-forge::pandas + - conda-forge::gprof2dot + - conda-forge::numdifftools + - conda-forge::quantities !=0.16.0,!=0.16.1 + - conda-forge::ringdecomposerlib-python + - rmg::pydas >=1.0.3 + - rmg::pydqed >=1.0.3 + - rmg::symmetry + - rmg::rmgdatabase =3.3.0 + - blas=*=openblas test: + requires: + - conda-forge::cairo + - conda-forge::cairocffi + - conda-forge::ffmpeg >=7 + - conda-forge::xlrd + - conda-forge::xlwt + - conda-forge::h5py + - conda-forge::graphviz >=12 + - conda-forge::markupsafe + - conda-forge::psutil + - conda-forge::ncurses + - conda-forge::suitesparse + - conda-forge::graphviz + - conda-forge::pyopenssl >20 + - conda-forge::coolprop + - conda-forge::cantera =2.6 + - conda-forge::mopac + - conda-forge::cclib >=1.6.3,<1.9 + - conda-forge::openbabel >=3 + - conda-forge::rdkit >=2022.09.1 + - conda-forge::python >=3.9 + - conda-forge::setuptools <80 + - conda-forge::coverage + - conda-forge::cython >=0.25.2,<3.1 + - conda-forge::scikit-learn + - conda-forge::scipy >=1.9 + - conda-forge::numpy >=1.10.0,<2 + - conda-forge::pydot + - conda-forge::jinja2 + - conda-forge::jupyter + - conda-forge::pymongo + - conda-forge::pyparsing + - conda-forge::pyyaml + - conda-forge::networkx + - conda-forge::pytest + - conda-forge::pytest-cov + - conda-forge::pytest-check + - conda-forge::pyutilib + - conda-forge::matplotlib >=1.5 + - conda-forge::mpmath + - conda-forge::pandas + - conda-forge::gprof2dot + - conda-forge::numdifftools + - conda-forge::quantities !=0.16.0,!=0.16.1 + - conda-forge::ringdecomposerlib-python + - rmg::pydas >=1.0.3 + - rmg::pydqed >=1.0.3 + - rmg::symmetry + - rmg::rmgdatabase =3.3.0 + - blas=*=openblas source_files: - 'examples/rmg/superminimal' - - 'examples/arkane/networks/n-butanol' + - 'examples/arkane/networks/n-butanol_msc' imports: - rmgpy - arkane commands: - - rmg.py examples/rmg/superminimal/input.py # [unix] - - Arkane.py examples/arkane/networks/n-butanol/input.py # [unix] - - python %SCRIPTS%\rmg.py examples\rmg\superminimal\input.py # [win] - - python %SCRIPTS\Arkane.py examples\arkane\networks\n-butanol\input.py # [win] + - rmg.py examples/rmg/superminimal/input.py + - Arkane.py examples/arkane/networks/n-butanol_msc/input.py about: home: https://github.com/ReactionMechanismGenerator/RMG-Py diff --git a/.coveragerc b/.coveragerc deleted file mode 100644 index b5e80239714..00000000000 --- a/.coveragerc +++ /dev/null @@ -1,35 +0,0 @@ -# .coveragerc to control coverage.py -[run] -plugins = Cython.Coverage -branch = True -source = - arkane - Arkane.py - rmgpy - rmg.py -omit = - *Test.py - */test_data/* - arkane/data/* - -[report] -show_missing = False -exclude_lines = - pragma: no cover - def __repr__ - if self.debug: - if settings.DEBUG - raise AssertionError - raise NotImplementedError - if 0: - if __name__ == .__main__.: -include = - arkane/* - rmgpy/* -omit = - *Test.py - */test_data/* - arkane/data/* - -[html] -directory = testing/coverage diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 251fa9cd4f2..e815da269d9 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -12,10 +12,6 @@ # them. These 'answers' are re-generated daily, or on any push to main, and retrieved whenever # a push is made to a non-main branch. The new proposed changes are referred to as "Dynamic". # -# The `workflow_call` section below allows running this exact file from RMG-database, saving -# us from having to maintain two copies of it. The only liens needed to facilitate that are -# the `workflow_call` block in the `on` section and the passed `rmg-db-branch` so that we can -# pull appropriately for RMG-database. # # Changelog: # 2023-04 - Jackson Burns - Added this header, regression tests, cleanup of action in @@ -28,16 +24,23 @@ # 2023-06-27 - add option to run from RMG-database with GitHub resuable workflows # 2023-07-17 - made it pass by default # 2023-07-21 - upload the regression results summary as artifact (for use as a comment on PRs) +# 2023-07-31 - removed option to run from RMG-database with GitHub resuable workflows +# 2024-10-01 - deprecated Mambaforge with Miniforge3 for environment creation + name: Continuous Integration on: schedule: # * is a special character in YAML so you have to quote this string - cron: "0 8 * * *" - # runs on all branches on both RMG-Py and forks - push: + # allow running on RMG-Py on a pushed branch, only if triggered manually + workflow_dispatch: # runs on PRs against RMG-Py (and anywhere else, but we add this for RMG-Py) pull_request: + # runs on pushes to main branch + push: + branches: + - main # this prevents one PR from simultaneously running multiple runners, which will clog up the queue # and prevent other PRs from running the CI @@ -49,11 +52,25 @@ env: # if running on RMG-Py but requiring changes on an un-merged branch of RMG-database, replace # main with the name of the branch RMG_DATABASE_BRANCH: main + # RMS branch to use for ReactionMechanismSimulator installation + RMS_BRANCH: for_rmg + # julia parallel pre-compilation leads to race conditions and hangs, so we limit it to run in serial + JULIA_NUM_PRECOMPILE_TASKS: 1 jobs: - build-osx: - runs-on: macos-latest + build-and-test: + strategy: + fail-fast: false + matrix: + python-version: ["3.9"] + os: [macos-13, macos-latest, ubuntu-latest] + include-rms: ["", "with RMS"] + exclude: + - os: macos-13 # GitHub's runners just aren't up to the task of installing Julia + include-rms: 'with RMS' + runs-on: ${{ matrix.os }} + name: Python ${{ matrix.python-version }} ${{ matrix.os }} Build and Test ${{ matrix.include-rms }} # skip scheduled runs from forks if: ${{ !( github.repository != 'ReactionMechanismGenerator/RMG-Py' && github.event_name == 'schedule' ) }} defaults: @@ -61,26 +78,25 @@ jobs: shell: bash -l {0} steps: - name: Checkout RMG-Py - uses: actions/checkout@v3 - with: - repository: ReactionMechanismGenerator/RMG-Py + uses: actions/checkout@v4 - # configures the mamba environment manager and builds the environment - - name: Setup Mambaforge Python 3.7 - uses: conda-incubator/setup-miniconda@v2 + - name: Setup Miniforge Python ${{ matrix.python-version }} + uses: conda-incubator/setup-miniconda@v3 with: environment-file: environment.yml - miniforge-variant: Mambaforge + miniforge-variant: Miniforge3 miniforge-version: latest - python-version: 3.7 + python-version: ${{ matrix.python-version }} activate-environment: rmg_env - use-mamba: true + auto-update-conda: true + show-channel-urls: true + conda-remove-defaults: "true" # list the environment for debugging purposes - - name: mamba info + - name: conda info run: | - mamba info - mamba list + conda info + conda list # Clone RMG-database - name: Clone RMG-database @@ -88,21 +104,31 @@ jobs: cd .. git clone -b $RMG_DATABASE_BRANCH https://github.com/ReactionMechanismGenerator/RMG-database.git - # modify env variables as directed in the RMG installation instructions - - name: Set Environment Variables - run: | - RUNNER_CWD=$(pwd) - echo "PYTHONPATH=$RUNNER_CWD/RMG-Py:$PYTHONPATH" >> $GITHUB_ENV - echo "$RUNNER_CWD/RMG-Py" >> $GITHUB_PATH - # RMG build step - - name: make RMG - run: | - make clean - make + - run: make install + + - name: Setup Juliaup + if: matrix.include-rms == 'with RMS' + uses: julia-actions/install-juliaup@v2 + with: + channel: '1.10' - build-and-test-linux: + # RMS installation and linking to Julia + - name: Install and link Julia dependencies + if: matrix.include-rms == 'with RMS' + timeout-minutes: 120 # this usually takes 20-45 minutes (or hangs for 6+ hours). + run: . install_rms.sh + + - name: Install Q2DTor + run: echo "" | make q2dtor + + # non-regression testing + - name: Run Unit, Functional, and Database Tests + run: make test-all + + regression-test: runs-on: ubuntu-latest + name: Regression Test # skip scheduled runs from forks if: ${{ !( github.repository != 'ReactionMechanismGenerator/RMG-Py' && github.event_name == 'schedule' ) }} env: @@ -113,71 +139,60 @@ jobs: shell: bash -l {0} steps: - name: Checkout RMG-Py - uses: actions/checkout@v3 - with: - repository: ReactionMechanismGenerator/RMG-Py + uses: actions/checkout@v4 - # configures the mamba environment manager and builds the environment - - name: Setup Mambaforge Python 3.7 - uses: conda-incubator/setup-miniconda@v2 + - name: Setup Miniforge Python 3.9 + uses: conda-incubator/setup-miniconda@v3 with: environment-file: environment.yml - miniforge-variant: Mambaforge + miniforge-variant: Miniforge3 miniforge-version: latest - python-version: 3.7 + python-version: 3.9 activate-environment: rmg_env - use-mamba: true + auto-update-conda: true + show-channel-urls: true + conda-remove-defaults: "true" # list the environment for debugging purposes - - name: mamba info + - name: conda info run: | - mamba info - mamba list + conda info + conda list # Clone RMG-database - name: Clone RMG-database - if: github.repository != 'ReactionMechanismGenerator/RMG-database' run: | cd .. git clone -b $RMG_DATABASE_BRANCH https://github.com/ReactionMechanismGenerator/RMG-database.git - # modify env variables as directed in the RMG installation instructions - - name: Set Environment Variables - run: | - RUNNER_CWD=$(pwd) - echo "PYTHONPATH=$RUNNER_CWD/RMG-Py:$PYTHONPATH" >> $GITHUB_ENV - echo "$RUNNER_CWD/RMG-Py" >> $GITHUB_PATH - # RMG build step - - name: make RMG + - run: make install + + - name: Make separate No-RMS conda env run: | - make clean - make + conda create --name rmg_env_without_rms --clone rmg_env + + - name: Setup Juliaup + uses: julia-actions/install-juliaup@v2 + with: + channel: '1.10' # RMS installation and linking to Julia - # Allow these installs to 'fail' (as they do in RMG-Tests) with the command || True trick - name: Install and link Julia dependencies timeout-minutes: 120 # this usually takes 20-45 minutes (or hangs for 6+ hours). run: | - python -c "import julia; julia.install(); import diffeqpy; diffeqpy.install()" || true - julia -e 'using Pkg; Pkg.add(PackageSpec(name="ReactionMechanismSimulator",rev="main")); using ReactionMechanismSimulator' || true + . install_rms.sh - # non-regression testing - - name: Unit tests - run: make test-unittests - - name: Functional tests - run: make test-functional - - name: Database tests - run: make test-database + - name: Install Q2DTor + run: echo "" | make q2dtor # Regression Testing - Test Execution - name: Regression Tests - Execution id: regression-execution - timeout-minutes: 60 run: | - for regr_test in aromatics liquid_oxidation nitrogen oxidation sulfur superminimal RMS_constantVIdealGasReactor_superminimal RMS_CSTR_liquid_oxidation RMS_liquidSurface_ch4o2cat; + for regr_test in aromatics liquid_oxidation nitrogen oxidation sulfur superminimal RMS_constantVIdealGasReactor_superminimal RMS_CSTR_liquid_oxidation RMS_liquidSurface_ch4o2cat fragment RMS_constantVIdealGasReactor_fragment minimal_surface; do - if python-jl rmg.py test/regression/"$regr_test"/input.py; then + if python rmg.py test/regression/"$regr_test"/input.py; then echo "$regr_test" "Executed Successfully" else echo "$regr_test" "Failed to Execute" | tee -a $GITHUB_STEP_SUMMARY @@ -193,7 +208,7 @@ jobs: # Upload Regression Results as Failed if above step failed - name: Upload Failed Results if: ${{ failure() && steps.regression-execution.conclusion == 'failure' }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: failed_regression_results path: | @@ -203,7 +218,7 @@ jobs: - name: Upload Results as Reference # upload the results for scheduled CI (on main) and pushes to main if: ${{ env.REFERENCE_JOB == 'true' }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: stable_regression_results path: | @@ -212,7 +227,7 @@ jobs: # Upload Regression Results as Dynamic if Push to non-main Branch - name: Upload Results as Dynamic if: ${{ env.REFERENCE_JOB == 'false' }} - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: dynamic_regression_results path: | @@ -223,23 +238,28 @@ jobs: run: mkdir stable_regression_results # Retrieve Stable Results for reference - # Will need to use this -> https://github.com/dawidd6/action-download-artifact + - name: Find ID of Reference Results + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # this will search for the last successful execution of CI on main + run: | + run_id=$(gh run list -R ReactionMechanismGenerator/RMG-Py --workflow="Continuous Integration" --branch main --limit 15 --json databaseId,conclusion --jq 'map(select(.conclusion == "success")) | .[0].databaseId') + if [ -z "$run_id" ] || [ "$run_id" = "null" ]; then + echo "::error::No successful reference run found" + exit 1 + fi + echo "CI_RUN_ID=$run_id" >> $GITHUB_ENV + - name: Retrieve Stable Regression Results if: ${{ env.REFERENCE_JOB == 'false' }} - uses: dsnopek/action-download-artifact@91dda23aa09c68860977dd0ed11d93c0ed3795e7 # see https://github.com/ReactionMechanismGenerator/RMG-Py/pull/2459#issuecomment-1582850815 + uses: actions/download-artifact@v4 with: - # this will search for the last successful execution of CI on main and download - # the stable regression results - workflow: CI.yml - workflow_conclusion: success - repo: ReactionMechanismGenerator/RMG-Py - branch: main + # download stable regression results + run-id: ${{ env.CI_RUN_ID }} + repository: ReactionMechanismGenerator/RMG-Py + github-token: ${{ secrets.GITHUB_TOKEN }} name: stable_regression_results path: stable_regression_results - search_artifacts: true # retrieves the last run result, either scheduled daily or on push to main - ensure_latest: true # ensures that the latest run is retrieved - # should result in a set of folders inside stable_regression_results - # each of which has the stable result for that example/test # Regression Testing - Actual Comparisons - name: Regression Tests - Compare to Baseline @@ -248,9 +268,11 @@ jobs: env: REFERENCE: stable_regression_results run: | + conda activate rmg_env_without_rms + exec 2> >(tee -a regression.stderr >&2) 1> >(tee -a regression.stdout) mkdir -p "test/regression-diff" - for regr_test in aromatics liquid_oxidation nitrogen oxidation sulfur superminimal RMS_constantVIdealGasReactor_superminimal RMS_CSTR_liquid_oxidation; + for regr_test in aromatics liquid_oxidation nitrogen oxidation sulfur superminimal RMS_constantVIdealGasReactor_superminimal RMS_CSTR_liquid_oxidation fragment RMS_constantVIdealGasReactor_fragment minimal_surface; do echo "" echo "### Regression test $regr_test:" @@ -266,12 +288,12 @@ jobs: echo "
" # Compare the edge and core - if python-jl scripts/checkModels.py \ + if python scripts/checkModels.py \ "$regr_test-core" \ $REFERENCE/"$regr_test"/chemkin/chem_annotated.inp \ $REFERENCE/"$regr_test"/chemkin/species_dictionary.txt \ test/regression/"$regr_test"/chemkin/chem_annotated.inp \ - test/regression/"$regr_test"/chemkin/species_dictionary.txt + test/regression/"$regr_test"/chemkin/species_dictionary.txt &> checkModels.err then echo "$regr_test Passed Core Comparison ✅" else @@ -280,15 +302,21 @@ jobs: export FAILED=Yes fi echo "" # blank line so next block is interpreted as markdown - cat "$regr_test-core.log" + cat "$regr_test-core.log" || (echo "Dumping the whole log failed, please download it from GitHub actions. Here are the first 100 lines:" && head -n100 "$regr_test-core.log") echo "
" + if [ -s checkModels.err ]; then + echo "
" + echo "Errors occurred during core comparison ⚠️" + cat checkModels.err + echo "
" + fi echo "
" - if python-jl scripts/checkModels.py \ + if python scripts/checkModels.py \ "$regr_test-edge" \ $REFERENCE/"$regr_test"/chemkin/chem_edge_annotated.inp \ $REFERENCE/"$regr_test"/chemkin/species_edge_dictionary.txt \ test/regression/"$regr_test"/chemkin/chem_edge_annotated.inp \ - test/regression/"$regr_test"/chemkin/species_edge_dictionary.txt + test/regression/"$regr_test"/chemkin/species_edge_dictionary.txt &> checkModels.err then echo "$regr_test Passed Edge Comparison ✅" else @@ -297,17 +325,23 @@ jobs: export FAILED=Yes fi echo "" # blank line so next block is interpreted as markdown - cat "$regr_test-edge.log" + cat "$regr_test-edge.log" || (echo "Dumping the whole log failed, please download it from GitHub actions. Here are the first 100 lines:" && head -n100 "$regr_test-edge.log") echo "
" + if [ -s checkModels.err ]; then + echo "
" + echo "Errors occurred during edge comparison ⚠️" + cat checkModels.err + echo "
" + fi # Check for Regression between Reference and Dynamic (skip superminimal) if [ -f test/regression/"$regr_test"/regression_input.py ]; then echo "
" - if python-jl rmgpy/tools/regression.py \ + if python rmgpy/tools/regression.py \ test/regression/"$regr_test"/regression_input.py \ $REFERENCE/"$regr_test"/chemkin \ - test/regression/"$regr_test"/chemkin + test/regression/"$regr_test"/chemkin 2> regression.py.err then echo "$regr_test Passed Observable Testing ✅" else @@ -315,6 +349,12 @@ jobs: export FAILED=Yes fi echo "
" + if [ -s regression.py.err ]; then + echo "
" + echo "Errors occurred during observable testing ⚠️" + cat regression.py.err + echo "
" + fi fi echo "" done @@ -340,15 +380,15 @@ jobs: cat summary.txt > $GITHUB_STEP_SUMMARY - name: Upload regression summary artifact - # the annotate workflow uses this artifact to add a comment to the PR - uses: actions/upload-artifact@v3 - if : ${{ github.event_name == 'pull_request' }} + # the annotate workflow uses this artifact to add a comment to the PR + uses: actions/upload-artifact@v4 + if: ${{ github.event_name == 'pull_request' }} with: name: regression_summary path: summary.txt - name: Upload Comparison Results - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: regression_test_comparison_results path: | @@ -358,34 +398,41 @@ jobs: - name: Code coverage install and run if: success() || ( failure() && steps.regression-execution.conclusion == 'success' ) run: | - mamba install -y -c conda-forge codecov + conda install -y -c conda-forge codecov codecov build-and-push-docker: # after testing and on pushes to main, build and push docker image - # technically we could live without the 'needs' since _in theory_ - # nothing will ever be merged into main that fails the tests, but - # who knows ¯\_(ツ)_/¯ # # taken from https://github.com/docker/build-push-action - needs: build-and-test-linux + needs: [build-and-test, regression-test] runs-on: ubuntu-latest - if: github.ref == 'refs/heads/main' && github.repository == 'ReactionMechanismGenerator/RMG-Py' + # Run on push to main or on pull requests from official fork. + if: | + (github.ref == 'refs/heads/main' && github.repository == 'ReactionMechanismGenerator/RMG-Py') || + (github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == 'ReactionMechanismGenerator/RMG-Py') steps: - name: Set up QEMU - uses: docker/setup-qemu-action@v2 + uses: docker/setup-qemu-action@v3 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v2 + uses: docker/setup-buildx-action@v3 - name: Login to Docker Hub - uses: docker/login-action@v2 + if: github.ref == 'refs/heads/main' && github.repository == 'ReactionMechanismGenerator/RMG-Py' + uses: docker/login-action@v3 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - - name: Build and Push - uses: docker/build-push-action@v4 + - name: Build (and Push if on main) + uses: docker/build-push-action@v6 + env: + BUILDKIT_PROGRESS: plain with: - push: true - tags: reactionmechanismgenerator/rmg:latest \ No newline at end of file + push: ${{ github.ref == 'refs/heads/main' && github.repository == 'ReactionMechanismGenerator/RMG-Py' }} + tags: reactionmechanismgenerator/rmg:latest + build-args: | + RMG_Py_Branch=${{ github.head_ref || github.ref_name }} + RMG_Database_Branch=${{ env.RMG_DATABASE_BRANCH }} + RMS_Branch=${{ env.RMS_BRANCH }} diff --git a/.github/workflows/annotate.yml b/.github/workflows/annotate.yml index 6a67c9b9e98..3052005bb05 100644 --- a/.github/workflows/annotate.yml +++ b/.github/workflows/annotate.yml @@ -12,7 +12,7 @@ on: types: - completed -run-name: Annotate PR ${{ github.event.workflow_run.event.display_title }}. +run-name: Annotate "${{ github.event.workflow_run.display_title }}" jobs: on-success: diff --git a/.github/workflows/conda_build.yml b/.github/workflows/conda_build.yml index 8ddbef08771..9e5b0e874ab 100644 --- a/.github/workflows/conda_build.yml +++ b/.github/workflows/conda_build.yml @@ -1,58 +1,66 @@ name: Conda Build +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + on: + pull_request: + workflow_dispatch: push: branches: - stable jobs: - build-linux: - runs-on: ubuntu-latest + build: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, macos-13, macos-latest] + numpy-version: ["1.26"] + python-version: ["3.9"] + runs-on: ${{ matrix.os }} + name: Build ${{ matrix.os }} Python ${{ matrix.python-version }} Numpy ${{ matrix.numpy-version }} defaults: run: shell: bash -l {0} steps: - - uses: actions/checkout@v2 - - uses: conda-incubator/setup-miniconda@v2 + - uses: actions/checkout@v4 + + - name: Setup Miniforge + uses: conda-incubator/setup-miniconda@v3 with: - environment-file: environment.yml - python-version: 3.7 - activate-environment: rmg_env - - name: Conda info + miniforge-variant: Miniforge3 + miniforge-version: latest + auto-update-conda: true + show-channel-urls: true + conda-remove-defaults: "true" + auto-activate-base: "true" + activate-environment: "" + + - name: Install Build Tools + run: conda install python anaconda-client conda-build + + - name: Configure Auto-Upload + if: github.ref == 'refs/heads/stable' run: | - conda info - conda list + conda config --set anaconda_upload yes + - name: Build Binary - env: - CONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} run: | - conda install -y conda-build - conda install -y anaconda-client + # set a default value to the conda_token if needed (like from forks) + : "${CONDA_TOKEN:=${{ secrets.ANACONDA_TOKEN }}}" + : "${CONDA_TOKEN:=default_value}" + echo "CONDA_TOKEN=$CONDA_TOKEN" >> $GITHUB_ENV conda config --add channels rmg - conda config --set anaconda_upload yes - conda build --token $CONDA_TOKEN --user rmg .conda - build-osx: - runs-on: macos-latest - defaults: - run: - shell: bash -l {0} + conda config --add channels conda-forge + CONDA_NPY=${{ matrix.numpy-version }} CONDA_PY=${{ matrix.python-version }} conda build --token $CONDA_TOKEN --user rmg . + + result: + if: ${{ always() }} + runs-on: ubuntu-latest + name: Final Results + needs: [build] steps: - - uses: actions/checkout@v2 - - uses: conda-incubator/setup-miniconda@v2 - with: - environment-file: environment.yml - python-version: 3.7 - activate-environment: rmg_env - - name: Conda info - run: | - conda info - conda list - - name: Build Binary - env: - CONDA_TOKEN: ${{ secrets.ANACONDA_TOKEN }} - run: | - conda install -y conda-build - conda install -y anaconda-client - conda config --add channels rmg - conda config --set anaconda_upload yes - xcrun --show-sdk-path - conda build --token $CONDA_TOKEN --user rmg .conda + - run: exit 1 + # see https://github.com/orgs/community/discussions/26822?sort=new#discussioncomment-8285141 + if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 3a1da9440ed..8aefce11149 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -5,76 +5,93 @@ on: branches: - main pull_request: + schedule: + # * is a special character in YAML so you have to quote this string + - cron: "0 8 * * 1" jobs: build-documentation: runs-on: ubuntu-latest - strategy: - max-parallel: 5 defaults: run: shell: bash -l {0} steps: - - uses: actions/checkout@v2 - - name: Patch the environment file + - name: Sign into GitHub Actions Bot run: | - echo -e "\n - libstdcxx-ng < 13\n" >> environment.yml - cat environment.yml - - name: Setup Mambaforge Python 3.7 - uses: conda-incubator/setup-miniconda@v2 + git config --global user.name "github-actions" + git config --global user.email "github-actions@github.com" + + - name: Clone RMG-Py + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Miniforge Python 3.9 + uses: conda-incubator/setup-miniconda@v3 with: environment-file: environment.yml - miniforge-variant: Mambaforge + miniforge-variant: Miniforge3 miniforge-version: latest - python-version: 3.7 + python-version: "3.9" activate-environment: rmg_env - use-mamba: true + auto-update-conda: true + show-channel-urls: true + conda-remove-defaults: "true" + + - name: Make libtiff Symlink to Avoid Runner Bug + run: | # This action may need to be removed/adjusted in future runs. + if [ ! -f /usr/lib/x86_64-linux-gnu/libtiff.so.5 ] && [ -f /usr/lib/x86_64-linux-gnu/libtiff.so.6 ]; then sudo ln -s /usr/lib/x86_64-linux-gnu/libtiff.so.6 /usr/lib/x86_64-linux-gnu/libtiff.so.5; fi + find /usr/lib -name libtiff* + - name: Install sphinx - run: mamba install -y sphinx - - name: Mamba info - run: | - mamba info - mamba list - - name: Install and link Julia dependencies + run: conda install -y sphinx~=5.0 + + - name: conda info run: | - julia -e "using Pkg; Pkg.add(PackageSpec(url=\"https://github.com/ReactionMechanismGenerator/ReactionMechanismSimulator.jl\", rev=\"main\"))" - julia -e "using Pkg; Pkg.add(\"PyCall\"); Pkg.add(\"DifferentialEquations\")" - python -c "import julia; julia.install()" - - name: Install and compile RMG + conda info + conda list + + - name: Clone RMG-database run: | cd .. git clone https://github.com/ReactionMechanismGenerator/RMG-database.git - cd RMG-Py - sed -i '/embedsignature/s/# //g' setup.py - make - - name: Make documentation - for testing - if: ${{ github.event_name != 'push' || github.repository != 'ReactionMechanismGenerator/RMG-Py' }} + + - name: Set Environment Variables run: | - cd documentation - sphinx-build -b html -d build/doctrees/ source/ build/html -w errors.log -W --keep-going - - name: Report documentation errors - if: ${{ failure() }} + RUNNER_CWD=$(pwd) + echo "PYTHONPATH=$RUNNER_CWD/RMG-Py:$PYTHONPATH" >> $GITHUB_ENV + echo "$RUNNER_CWD/RMG-Py" >> $GITHUB_PATH + + - name: make RMG run: | - cat documentation/errors.log - - name: Make documentation - to publish - if: ${{ github.event_name == 'push' && github.repository == 'ReactionMechanismGenerator/RMG-Py' }} - env: - GH_TOKEN: ${{ secrets.RMG_DEV_TOKEN }} + make clean + make + + - name: Checkout gh-pages Branch + uses: actions/checkout@v2 + with: + ref: gh-pages + fetch-depth: 0 + path: documentation/build/html + clean: false + + - name: Build Documentation run: | - make -C documentation continous_integration_setup clean html + cd documentation + make html + cd build/html + touch .nojekyll + git add -A --force . + git diff --staged --exit-code --quiet || git commit -m "Automated documentation rebuild" # only commit if changes were made + - name: Check documentation links continue-on-error: true run: | cd documentation sphinx-build -b linkcheck -d build/doctrees/ source/ build/linkcheck | grep -e broken -e redirect | grep -v -e 'redirect https://doi.org/' -e 'broken https://doi.org/.* 403 Client Error: Forbidden' - - name: Publish documentation + + - name: Publish Updated Documentation if: ${{ github.event_name == 'push' && github.repository == 'ReactionMechanismGenerator/RMG-Py' }} - env: - GH_TOKEN: ${{ secrets.RMG_DEV_TOKEN }} - COMMITMESSAGE: "Automatic documentation rebuild" - GIT_AUTHOR_NAME: "RMG Bot" - GIT_AUTHOR_EMAIL: "rmg_dev@mit.edu" - GIT_COMMITTER_NAME: "RMG Bot" - GIT_COMMITTER_EMAIL: "rmg_dev@mit.edu" run: | - make -C documentation publish + cd documentation/build/html + git push origin gh-pages diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index e760f241c6b..d52056b4798 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -24,7 +24,7 @@ jobs: stale-issue-label: stale stale-pr-label: stale operations-per-run: 1000 - exempt-issue-labels: bug + exempt-issue-labels: bug,Announcement exempt-pr-labels: bug close-issue-label: abandoned - close-pr-label: abandoned \ No newline at end of file + close-pr-label: abandoned diff --git a/.gitignore b/.gitignore index 97e993156bb..8f6b5127433 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,9 @@ # ################################################################################ +# build dir +reactionmechanismgenerator.egg-info/ + # MacOS files .DS_Store @@ -11,6 +14,8 @@ *.pyc *.so *.pyd +# and intermediate source files +*.c # Image files generated by RMG *.png @@ -27,10 +32,8 @@ documentation/build/* # (These will be unique to each developer's setup) make.inc -# Example output files -examples/* -!examples/*/input.py -!examples/**/*.ipynb +# output files +rmgpy/output/* # NetBeans project files nbproject/* @@ -49,7 +52,7 @@ nbproject/* .vscode/* # Unit test files -.coverage +.coverage* testing/* htmlcov/* @@ -88,11 +91,44 @@ RMG_Py.egg-info/* # RMG configuration file rmgpy/rmgrc +# treegen log files scripts/treegen.log - scripts/treegen_backup.log # regression testing files - ignore everything but input and regression input test/regression/* !test/regression/*/input.py !test/regression/*/regression_input.py + +# testing files +test/arkane/data/two_parameter_arrhenius_fit/arkane.log +test/arkane/data/two_parameter_arrhenius_fit/output.py +test/arkane/data/two_parameter_arrhenius_fit/chem.inp +test/rmgpy/test_data/temp_dir_for_testing/cantera/chem001.yaml +rmgpy/test_data/copied_kinetic_lib/ +testing/qm/* +test_log.txt +rmgpy/tools/data/flux/flux/1/*.dot + +# example directory - save the inputs but not the outputs +examples/**/chem.inp +# log files from the runs +examples/**/arkane.log +# results from the runs +examples/**/species_dictionary.txt +examples/**/output*py +examples/**/network*py +examples/**/dictionary.txt +examples/**/reactions.py +examples/**/RMG_libraries +examples/**/species +examples/**/plots +examples/**/chemkin/*.inp +examples/**/chemkin/tran.dat +examples/**/chemkin/*dictionary.txt +examples/**/chem*.yaml +examples/**/rms/*.rms +examples/**/output*.html +examples/**/restart_from_seed.py +examples/**/seed/filters +examples/**/statistics.xls diff --git a/Arkane.py b/Arkane.py index c0d4203770c..0b409f4d326 100644 --- a/Arkane.py +++ b/Arkane.py @@ -1,68 +1,4 @@ -#!/usr/bin/env python3 +from arkane import __main__ -############################################################################### -# # -# RMG - Reaction Mechanism Generator # -# # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # -# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # -# # -# 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. # -# # -############################################################################### - -""" -This is the main executable script for Arkane, a tool for computing chemical -reaction rates and other properties used in detailed kinetics models using -various methodologies and theories. To run Arkane, use the command :: - - $ python Arkane.py FILE - -where ``FILE`` is the path to an Arkane input file describing the job to -execute. Arkane will run the specified job, writing the output to -``output.py`` and a log to both the console and to ``Arkane.log``, with both -files appearing in the same directory as the input file. Some additional -command-line arguments are available; run the command :: - - $ python Arkane.py -h - -for more information. -""" - -import os -import logging - -from arkane.main import Arkane - -arkane = Arkane() - -# Parse and validate the command-line arguments -arkane.parse_command_line_arguments() - -# Execute the job -arkane.execute() - -try: - import psutil - - process = psutil.Process(os.getpid()) - memory_info = process.memory_info() - logging.info('Memory used: %.2f MB' % (memory_info.rss / 1024.0 / 1024.0)) -except ImportError: - logging.info('Optional package dependency "psutil" not found; memory profiling information will not be saved.') +if __name__ == "__main__": + __main__.main() diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000000..a2a1f95a38d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,58 @@ +## How to contribute to RMG-Py + +Thank you for contributing to RMG-Py! Please take a moment to review our guidelines: + +### **Did you find a bug? Do you want to see a new feature?** + +* Please open an Issue to the corresponding repository: + * [RMG-Py](https://github.com/ReactionMechanismGenerator/RMG-Py/issues): For functionality of the RMG and Arkane software packages + * [RMG-database](https://github.com/ReactionMechanismGenerator/RMG-database/issues): For issues related to the data available to RMG + * [RMG-website](https://github.com/ReactionMechanismGenerator/RMG-website/issues): For issues related to the [RMG website](https://rmg.mit.edu) + + +### **Did you write code that fixes a bug or adds a new feature?** + +* Open a new GitHub PR to merge into the main branch. Make sure the PR clearly describes the problem + solution. If applicable, include the relevant issue. + +* Your PR must pass unit tests, regression tests, and code coverage, and receive approval from at least one reviewer before it can be merged in. + +* If you wrote a new feature, please [add unit tests](https://github.com/ReactionMechanismGenerator/RMG-Py/tree/main/test/rmgpy). We currently use [pytest](https://docs.pytest.org/en/stable/) for our unit testing. + +* If you wrote a significant new feature, please add a regression test: + * First, please create an input file that includes your new feature. Ensure `saveEdgeSpecies` is set to `True` so that the edge model will also be saved to a file. If applicable, include diverse sets of input conditions to test compatibility with other features. + * Generate the reaction mechanism corresponding to the input file. Ensure that the simulation does not take more than 15 minutes maximum. You can reduce simulation times in multiple ways, e.g. by increasing the `toleranceMoveToCore` flag. + * In the `test/regression` folder, create a new folder with a relevant name, and copy the RMG-Py simulation input file in this folder. Include this new folder in your PR. + * In `.github/workflows/CI.yml`, edit the two lists of regression tests in the `Regression Tests - Execution` and `Regression Tests - Compare to Baseline` steps to add the name of your folder. Be sure to follow BASH syntax. + + * > Warning: This will __fail__ CI because of directory not found errors. This is because the baseline files used for comparison in the regression tests do not exist yet. Your PR will need to be merged by bypassing branch protection restrictions. + + +### **Do you want to contribute to the documentation?** + +* Documentation is [hosted here](https://reactionmechanismgenerator.github.io/RMG-Py/) using [Sphinx](https://www.sphinx-doc.org/en/master/). + +* The live version of the documentation is hosted on the `gh-pages` branch which is updated upon pushes to the `main` branch of RMG-Py. + +* To add new documentation, create or modify `.rst` (reStructuredText) files under the `documentation` directory and create a PR to push to `main`. For a primer on how to write `.rst` markup, please [check out the Sphinx documentation.](https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html) + +* Please test the documentation on a local build (e.g., via `make html` in the `documentation` directory) before pushing changes. + +### **Do you have questions?** + +* Email us at rmg_dev@mit.edu. + +### **Best practices for PRs** + +* Rebase to the main branch before working, to avoid merge conflicts. + +* Keep PRs small and aim to merge quickly. + +* Commits should be specific and as small as required; commit messages should be descriptive and as long as required. Commit messages should explain *why* the change is needed. We recommend following [these guidelines.](https://wiki.openstack.org/wiki/GitCommitMessages) + +* Submit a PR only when the code is polished and ready for review. Consider opening a draft PR for work in progress that requires collaborator input. + +* Please follow the [PEP8 Python style guide.](https://peps.python.org/pep-0008/) + +Thank you! + +RMG Developers \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 803374c02a3..9f63298725e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,41 +11,57 @@ RUN ln -snf /bin/bash /bin/sh # - git for downloading RMG respoitories # - wget for downloading conda install script # - libxrender1 required by RDKit +# - ca-certificates added for HTTPS downloads RUN apt-get update && \ apt-get install -y \ - make \ - gcc \ - wget \ - git \ - g++ \ - libxrender1 && \ + make \ + gcc \ + wget \ + git \ + g++ \ + libxrender1 \ + ca-certificates && \ apt-get autoremove -y && \ apt-get clean -y + +# Install Julia 1.10 using juliaup +RUN wget -qO- https://install.julialang.org | sh -s -- --yes --default-channel 1.10 && \ + /root/.juliaup/bin/juliaup add 1.10 && \ + /root/.juliaup/bin/juliaup default 1.10 && \ + /root/.juliaup/bin/juliaup list && \ + rm -rf /root/.juliaup/downloads /root/.juliaup/tmp +ENV PATH="/root/.juliaup/bin:$PATH" + # Install conda RUN wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh && \ bash Miniconda3-latest-Linux-x86_64.sh -b -p /miniconda && \ rm Miniconda3-latest-Linux-x86_64.sh -ENV PATH="$PATH:/miniconda/bin" - -# Set solver backend to mamba for speed -RUN conda install -n base conda-libmamba-solver && \ - conda config --set solver libmamba +ENV PATH="/miniconda/bin:$PATH" # Set Bash as the default shell for following commands SHELL ["/bin/bash", "-c"] +# Add build arguments for RMG-Py, RMG-database, and RMS branches. +# The defaults are set here, but they can be overridden at build time +# using the --build-arg option, or in the continous integration CI.yml file. +ARG RMG_Py_Branch=main +ARG RMG_Database_Branch=main +ARG RMS_Branch=for_rmg + # cd WORKDIR /rmg # Clone the RMG base and database repositories -RUN git clone --single-branch --branch main --depth 1 https://github.com/ReactionMechanismGenerator/RMG-Py.git && \ - git clone --single-branch --branch main --depth 1 https://github.com/ReactionMechanismGenerator/RMG-database.git +RUN git clone --single-branch --branch ${RMG_Py_Branch} --depth 1 https://github.com/ReactionMechanismGenerator/RMG-Py.git && \ + git clone --single-branch --branch ${RMG_Database_Branch} --depth 1 https://github.com/ReactionMechanismGenerator/RMG-database.git -# build the conda environment WORKDIR /rmg/RMG-Py -RUN conda env create --file environment.yml && \ - conda clean --all --yes + +# build the conda environment +RUN conda env create --file environment.yml +# Remove conda package cache to reduce image size +RUN rm -rf /miniconda/pkgs # This runs all subsequent commands inside the rmg_env conda environment # @@ -54,24 +70,31 @@ RUN conda env create --file environment.yml && \ # in a Dockerfile build script) SHELL ["conda", "run", "--no-capture-output", "-n", "rmg_env", "/bin/bash", "-c"] +RUN conda clean --all --yes + # Set environment variables as directed in the RMG installation instructions ENV RUNNER_CWD=/rmg -ENV PYTHONPATH="$RUNNER_CWD/RMG-Py:$PYTHONPATH" ENV PATH="$RUNNER_CWD/RMG-Py:$PATH" -# 1. Build RMG -# 2. Install and link Julia dependencies for RMS -RUN make && \ - julia -e 'using Pkg; Pkg.add(PackageSpec(name="PyCall",rev="master")); Pkg.add(PackageSpec(name="ReactionMechanismSimulator",rev="main")); using ReactionMechanismSimulator' && \ - python -c "import julia; julia.install(); import diffeqpy; diffeqpy.install()" +# Build RMG +RUN make + +# Install and link Julia dependencies for RMS +# setting this env variable fixes an issue with Julia precompilation on Windows +ENV JULIA_CPU_TARGET="x86-64,haswell,skylake,broadwell,znver1,znver2,znver3,cascadelake,icelake-client,cooperlake,generic" +ENV RMS_BRANCH=${RMS_Branch} +# Usually this is set automatically, but we're not actually running +# in an active conda environment when building the Docker so we need to set it manually +ENV PYTHON_JULIAPKG_PROJECT="/miniconda/envs/rmg_env/julia_env" +RUN source install_rms.sh # RMG-Py should now be installed and ready - trigger precompilation and test run -RUN python-jl rmg.py examples/rmg/minimal/input.py -# delete the results, preserve input.py -RUN mv examples/rmg/minimal/input.py . && \ - rm -rf examples/rmg/minimal/* && \ - mv input.py examples/rmg/minimal/ +RUN python rmg.py examples/rmg/rms_constant_V/input.py +# delete the results, restore input.py from git +RUN rm -rf examples/rmg/rms_constant_V/* && \ + git checkout -- examples/rmg/rms_constant_V/ # when running this image, open an interactive bash terminal inside the conda environment -RUN echo "source activate rmg_env" > ~/.bashrc +RUN conda init +RUN echo "conda activate rmg_env" >> ~/.bashrc ENTRYPOINT ["/bin/bash", "--login"] diff --git a/Makefile b/Makefile index 7ec4bae3527..1f1997af760 100644 --- a/Makefile +++ b/Makefile @@ -4,28 +4,16 @@ # ################################################################################ -.PHONY : all minimal main solver check pycheck arkane clean install decython documentation mopac_travis test +CC=gcc +CXX=g++ -all: pycheck main solver check +.PHONY : all check clean install decython documentation test q2dtor -minimal: - python setup.py build_ext minimal --inplace --build-temp . - -main: - python setup.py build_ext main --inplace --build-temp . - -solver: - @ python utilities.py check-pydas - python setup.py build_ext solver --inplace --build-temp . - -arkane: - python setup.py build_ext arkane --inplace --build-temp . +all: check install check check: @ python utilities.py check-dependencies - -pycheck: - @ python utilities.py check-python + @ python utilities.py check-pydas documentation: $(MAKE) -C documentation html @@ -33,13 +21,14 @@ documentation: clean: @ python utilities.py clean + python -m pip uninstall --yes reactionmechanismgenerator || true # can fail if RMG not installed at all clean-solver: @ python utilities.py clean-solver install: @ python utilities.py check-pydas - python setup.py install + python -m pip install -vv -e . q2dtor: @ echo -e "\nInstalling Q2DTor...\n" @@ -50,24 +39,25 @@ q2dtor: and HinderedRotor2D within Arkane please cite: \n\nD. Ferro-Costas, M. N. D. S.Cordeiro, D. G. Truhlar, A.\ Fernández-Ramos, Comput. Phys. Commun. 232, 190-205, 2018.\n" @ read -p "Press ENTER to continue" dummy - @ git clone https://github.com/mjohnson541/Q2DTor.git external/Q2DTor --branch arkanepy3 - + @ mkdir -p external + @ git clone https://github.com/cathedralpkg/Q2DTor external/Q2DTor + decython: # de-cythonize all but the 'minimal'. Helpful for debugging in "pure python" mode. find . -name *.so ! \( -name _statmech.so -o -name quantity.so -o -regex '.*rmgpy/solver/.*' \) -exec rm -f '{}' \; find . -name *.pyc -exec rm -f '{}' \; test-all: - nosetests --nocapture --nologcapture --all-modules --verbose --with-coverage --cover-inclusive --cover-erase --cover-html --cover-html-dir=testing/coverage --exe rmgpy arkane + python -m pytest test test-unittests: - nosetests --nocapture --nologcapture --all-modules -A 'not functional' --verbose --with-coverage --cover-inclusive --cover-erase --cover-html --cover-html-dir=testing/coverage --exe rmgpy arkane + python -m pytest -m "not functional and not database" test-functional: - nosetests --nologcapture --all-modules -A 'functional' --verbose --exe rmgpy arkane + python -m pytest -m "functional" test-database: - nosetests --nocapture --nologcapture --verbose --detailed-errors testing/databaseTest.py + python -m pytest -m "database" eg0: all mkdir -p testing/eg0 @@ -85,25 +75,22 @@ eg1: all coverage run rmg.py -p testing/eg1/input.py coverage report coverage html + eg2: all mkdir -p testing/eg2 rm -rf testing/eg2/* cp examples/rmg/1,3-hexadiene/input.py testing/eg2/input.py coverage erase - @ echo "Running eg2: 1,3-hexadiene example with coverage tracking AND profiling" - coverage run rmg.py -p testing/eg2/input.py - coverage report - coverage html + @ echo "Running eg2: 1,3-hexadiene example with profiling" + python rmg.py -p testing/eg2/input.py eg3: all mkdir -p testing/eg3 rm -rf testing/eg3/* cp examples/rmg/liquid_phase/input.py testing/eg3/input.py coverage erase - @ echo "Running eg3: liquid_phase example with coverage tracking AND profiling" - coverage run rmg.py -p testing/eg3/input.py - coverage report - coverage html + @ echo "Running eg3: liquid_phase example with profiling" + python rmg.py -p testing/eg3/input.py eg5: all mkdir -p testing/eg5 @@ -140,3 +127,25 @@ eg4: all cp examples/thermoEstimator/input.py testing/eg4/input.py @ echo "Running thermo data estimator example. This tests QM." python scripts/thermoEstimator.py testing/eg4/input.py + +# RMS reactor examples (require Julia) +eg8: all + mkdir -p testing/eg8 + rm -rf testing/eg8/* + cp examples/rmg/rms_constant_V/input.py testing/eg8/input.py + @ echo "Running RMS constantVIdealGasReactor example (requires Julia)" + python rmg.py testing/eg8/input.py + +eg9: all + mkdir -p testing/eg9 + rm -rf testing/eg9/* + cp examples/rmg/nox_transitory_edge/input.py testing/eg9/input.py + @ echo "Running RMS constantTPIdealGasReactor example (requires Julia)" + python rmg.py testing/eg9/input.py + +eg10: all + mkdir -p testing/eg10 + rm -rf testing/eg10/* + cp examples/rmg/liquid_cat/input.py testing/eg10/input.py + @ echo "Running RMS liquidSurfaceReactor example (requires Julia)" + python rmg.py testing/eg10/input.py diff --git a/README.md b/README.md index ac1df861fce..dc29b16fe0a 100644 --- a/README.md +++ b/README.md @@ -22,33 +22,32 @@ Gaussian, Q-Chem, Molpro, Orca, Psi4, and TeraChem. ## How to Install You can either download the source from GitHub and compile yourself, or download the binaries from Anaconda. -Please see the [Download and Install](http://reactionmechanismgenerator.github.io/RMG-Py/users/rmg/installation/index.html) page for detailed instructions. +Please see the [Download and Install](https://reactionmechanismgenerator.github.io/RMG-Py/users/rmg/installation/index.html) page for detailed instructions. ## Documentation -- [RMG Documentation](http://ReactionMechanismGenerator.github.io/RMG-Py/users/rmg/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_and_Arkane_Documentation.pdf)) -- [Arkane Documentation](http://ReactionMechanismGenerator.github.io/RMG-Py/users/arkane/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_and_Arkane_Documentation.pdf)) -- [RMG API Reference](http://reactionmechanismgenerator.github.io/RMG-Py/reference/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_API_Reference.pdf)) +- [RMG Documentation](https://ReactionMechanismGenerator.github.io/RMG-Py/users/rmg/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_and_Arkane_Documentation.pdf)) +- [Arkane Documentation](https://ReactionMechanismGenerator.github.io/RMG-Py/users/arkane/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_and_Arkane_Documentation.pdf)) +- [RMG API Reference](https://reactionmechanismgenerator.github.io/RMG-Py/reference/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_API_Reference.pdf)) ## How to Contribute -Please see the [Contributor Guidelines](https://github.com/ReactionMechanismGenerator/RMG-Py/wiki/RMG-Contributor-Guidelines) +Please see the [Contributor Guidelines](https://github.com/ReactionMechanismGenerator/RMG-Py/blob/main/CONTRIBUTING.md) for details on how to contribute to RMG-Py, Arkane, or RMG-database. ## How to Give Feedback Please post any issues you may have to the [issues page](https://github.com/ReactionMechanismGenerator/RMG-Py/issues/) -or drop in to the [chat room](https://gitter.im/ReactionMechanismGenerator/RMG-Py) or email [rmg_dev@mit.edu](mailto:rmg_dev@mit.edu) if you have questions. +or email [rmg_dev@mit.edu](mailto:rmg_dev@mit.edu) if you have questions. ## Useful Links - [Interactive Website](https://rmg.mit.edu): Visit this site to visualize RMG-generated models, view the databases, and perform thermodynamics and kinetics searches -- [Wiki](https://github.com/ReactionMechanismGenerator/RMG-Py/wiki): a wiki for developer notes - [Issues Page](https://github.com/ReactionMechanismGenerator/RMG-Py/issues/): view current issues and feature requests ## Credits -- [Professor William H. Green's research group](http://cheme.scripts.mit.edu/green-group/) at the -[Massachusetts Institute of Technology](http://web.mit.edu/) -- [Professor Richard H. West's research group](http://www.northeastern.edu/comocheng/) at -[Northeastern University](http://www.northeastern.edu/). +- [Professor William H. Green's research group](https://greengroup.mit.edu/) at the +[Massachusetts Institute of Technology](https://web.mit.edu/) +- [Professor Richard H. West's research group](https://www.northeastern.edu/comocheng/) at +[Northeastern University](https://www.northeastern.edu/). ## Resources and References The resources and relevant publications are listed [here](https://rmg.mit.edu/resources) on the RMG-website. diff --git a/arkane/README.md b/arkane/README.md index 98512510bec..86a87dd6606 100644 --- a/arkane/README.md +++ b/arkane/README.md @@ -13,13 +13,13 @@ Arkane is distributed via the [RMG-Py repository](https://github.com/ReactionMec as a [root module](https://github.com/ReactionMechanismGenerator/RMG-Py/tree/main/arkane). ## How to Install -Please follow the [installation instructions](http://reactionmechanismgenerator.github.io/RMG-Py/users/rmg/installation/index.html) +Please follow the [installation instructions](https://reactionmechanismgenerator.github.io/RMG-Py/users/rmg/installation/index.html) for RMG-Py. ## Documentation -- [RMG Documentation](http://ReactionMechanismGenerator.github.io/RMG-Py/users/rmg/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_and_Arkane_Documentation.pdf)) -- [Arkane Documentation](http://ReactionMechanismGenerator.github.io/RMG-Py/users/arkane/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_and_Arkane_Documentation.pdf)) -- [RMG API Reference](http://reactionmechanismgenerator.github.io/RMG-Py/reference/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_API_Reference.pdf)) +- [RMG Documentation](https://ReactionMechanismGenerator.github.io/RMG-Py/users/rmg/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_and_Arkane_Documentation.pdf)) +- [Arkane Documentation](https://ReactionMechanismGenerator.github.io/RMG-Py/users/arkane/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_and_Arkane_Documentation.pdf)) +- [RMG API Reference](https://reactionmechanismgenerator.github.io/RMG-Py/reference/index.html) ([PDF version](https://github.com/ReactionMechanismGenerator/RMG-Py/raw/main/documentation/RMG-Py_API_Reference.pdf)) ## How to cite A. Grinberg Dana, M.S. Johnson, J.W. Allen, S. Sharma, S. Raman, M. Liu, C.W. Gao, C.A. Grambow, M.J. Goldman, @@ -32,7 +32,7 @@ A statistical mechanics, thermodynamics, transition state theory, and master equ DOI: [10.1002/kin.21637](https://doi.org/10.1002/kin.21637) ## How to Contribute -Please see the [Contributor Guidelines](https://github.com/ReactionMechanismGenerator/RMG-Py/wiki/RMG-Contributor-Guidelines) +Please see the [Contributor Guidelines](https://github.com/ReactionMechanismGenerator/RMG-Py/blob/main/CONTRIBUTING.md) for details on how to contribute to RMG-Py or RMG-database. ## How to Give Feedback diff --git a/arkane/__main__.py b/arkane/__main__.py new file mode 100644 index 00000000000..39a6afe915b --- /dev/null +++ b/arkane/__main__.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 + +############################################################################### +# # +# RMG - Reaction Mechanism Generator # +# # +# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # +# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # +# # +# 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. # +# # +############################################################################### + +""" +This is the main executable script for Arkane, a tool for computing chemical +reaction rates and other properties used in detailed kinetics models using +various methodologies and theories. To run Arkane, use the command :: + + $ python Arkane.py FILE + +where ``FILE`` is the path to an Arkane input file describing the job to +execute. Arkane will run the specified job, writing the output to +``output.py`` and a log to both the console and to ``Arkane.log``, with both +files appearing in the same directory as the input file. Some additional +command-line arguments are available; run the command :: + + $ python Arkane.py -h + +for more information. +""" + +import os +import logging + +from arkane.main import Arkane + +def main(): + arkane = Arkane() + + # Parse and validate the command-line arguments + arkane.parse_command_line_arguments() + + # Execute the job + arkane.execute() + + try: + import psutil + + process = psutil.Process(os.getpid()) + memory_info = process.memory_info() + logging.info('Memory used: %.2f MB' % (memory_info.rss / 1024.0 / 1024.0)) + except ImportError: + logging.info('Optional package dependency "psutil" not found; memory profiling information will not be saved.') + +if __name__ == "__main__": + main() diff --git a/arkane/common.py b/arkane/common.py index ef425442203..a706417b886 100644 --- a/arkane/common.py +++ b/arkane/common.py @@ -191,11 +191,11 @@ def update_species_attributes(self, species=None): self.multiplicity = species.molecule[0].multiplicity self.formula = species.molecule[0].get_formula() try: - inchi = to_inchi(species.molecule[0], backend='try-all', aug_level=0) + inchi = to_inchi(species.molecule[0], backend='openbabel-first', aug_level=0) except ValueError: inchi = '' try: - inchi_key = to_inchi_key(species.molecule[0], backend='try-all', aug_level=0) + inchi_key = to_inchi_key(species.molecule[0], backend='openbabel-first', aug_level=0) except ValueError: inchi_key = '' self.inchi = inchi @@ -367,7 +367,7 @@ def check_conformer_energy(energies, path): is not 0.5 kcal/mol (or more) higher than any other energies in the scan. If so, print and log a warning message. """ - energies = np.array(energies, np.float64) + energies = np.array(energies, float) e_diff = (energies[0] - np.min(energies)) * constants.E_h * constants.Na / 1000 if e_diff >= 2: # we choose 2 kJ/mol to be the critical energy logging.warning(f'The species corresponding to {os.path.basename(path)} is different in energy from the ' @@ -628,7 +628,7 @@ def get_center_of_mass(coords, numbers=None, symbols=None): raise IndexError('Either symbols or numbers must be given.') if numbers is not None: symbols = [symbol_by_number[number] for number in numbers] - center, total_mass = np.zeros(3, np.float64), 0 + center, total_mass = np.zeros(3, float), 0 for coord, symbol in zip(coords, symbols): mass = get_element_mass(symbol)[0] center += mass * coord @@ -661,7 +661,7 @@ def get_moment_of_inertia_tensor(coords, numbers=None, symbols=None): if len(coords) != len(symbols): raise InputError(f'The number of atoms ({len(symbols)}) is not equal to the number of ' f'atomic coordinates ({len(list(coords))})') - tensor = np.zeros((3, 3), np.float64) + tensor = np.zeros((3, 3), float) center_of_mass = get_center_of_mass(coords=coords, numbers=numbers, symbols=symbols) for symbol, coord in zip(symbols, coords): mass = get_element_mass(symbol)[0] diff --git a/arkane/commonTest.py b/arkane/commonTest.py deleted file mode 100644 index 3a1af6e27f5..00000000000 --- a/arkane/commonTest.py +++ /dev/null @@ -1,572 +0,0 @@ -#!/usr/bin/env python3 - -############################################################################### -# # -# RMG - Reaction Mechanism Generator # -# # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # -# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # -# # -# 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. # -# # -############################################################################### - -""" -This module contains unit tests of the :mod:`arkane.common` module. -""" - -import logging -import os -import shutil -import unittest - -import numpy as np - -import rmgpy -import rmgpy.constants as constants -from rmgpy.pdep.collision import SingleExponentialDown -from rmgpy.quantity import ScalarQuantity -from rmgpy.species import Species, TransitionState -from rmgpy.thermo import NASA, ThermoData - -from arkane import Arkane, input -from arkane.common import (ArkaneSpecies, - convert_imaginary_freq_to_negative_float, - get_element_mass, - get_center_of_mass, - get_moment_of_inertia_tensor, - get_principal_moments_of_inertia, - ) -from arkane.input import job_list -from arkane.modelchem import LevelOfTheory -from arkane.statmech import InputError, StatMechJob - -################################################################################ - - -class CommonTest(unittest.TestCase): - """ - Contains unit tests of Arkane's common functions. - """ - - def test_check_conformer_energy(self): - """ - test the check_conformer_energy function with an list of energies. - """ - v_list = [-272.2779012225, -272.2774933703, -272.2768397635, -272.2778432059, -272.278645477, -272.2789602654, - -272.2788749196, -272.278496709, -272.2779350675, -272.2777008843, -272.2777167286, -272.2780937643, - -272.2784838846, -272.2788050464, -272.2787865352, -272.2785091607, -272.2779977452, -272.2777957743, - -272.2779134906, -272.2781827547, -272.278443339, -272.2788244214, -272.2787748749] - v_list = np.array(v_list, np.float64) - v_diff = (v_list[0] - np.min(v_list)) * constants.E_h * constants.Na / 1000 - self.assertAlmostEqual(v_diff / 2.7805169838282797, 1, 5) - - -class TestArkaneJob(unittest.TestCase): - """ - Contains unit tests of the Arkane module and its interactions with other RMG modules. - """ - - @classmethod - def setUp(cls): - """A method that is run before each unit test in this class""" - arkane = Arkane() - job_list = arkane.load_input_file(os.path.join(os.path.dirname(os.path.abspath(__file__)), - 'data', 'methoxy.py')) - pdepjob = job_list[-1] - cls.kineticsjob = job_list[0] - pdepjob.active_j_rotor = True - network = pdepjob.network - cls.Nisom = len(network.isomers) - cls.Nreac = len(network.reactants) - cls.Nprod = len(network.products) - cls.Npath = len(network.path_reactions) - cls.PathReaction2 = network.path_reactions[2] - cls.TminValue = pdepjob.Tmin.value - cls.Tmaxvalue = pdepjob.Tmax.value - cls.TmaxUnits = pdepjob.Tmax.units - cls.TlistValue = pdepjob.Tlist.value - cls.PminValue = pdepjob.Pmin.value - cls.Pcount = pdepjob.Pcount - cls.Tcount = pdepjob.Tcount - cls.GenTlist = pdepjob.generate_T_list() - cls.PlistValue = pdepjob.Plist.value - cls.maximum_grain_size_value = pdepjob.maximum_grain_size.value - cls.method = pdepjob.method - cls.rmgmode = pdepjob.rmgmode - - # test Arkane's interactions with the network module - def test_num_isom(self): - """ - Test the number of isomers identified. - """ - self.assertEqual(self.Nisom, 2) - - def test_num_reac(self): - """ - Test the number of reactants identified. - """ - self.assertEqual(self.Nreac, 1) - - def test_num_prod(self): - """ - Test the number of products identified. - """ - self.assertEqual(self.Nprod, 1) - - def test_n_path_reactions(self): - """ - Test the whether or not RMG mode is turned on. - """ - self.assertEqual(self.Npath, 3) - - def test_path_reactions(self): - """ - Test a path reaction label - """ - self.assertEqual(str(self.PathReaction2), 'CH2OH <=> methoxy') - - # test Arkane's interactions with the pdep module - def test_temperatures_units(self): - """ - Test the Temperature Units. - """ - self.assertEqual(str(self.TmaxUnits), 'K') - - def test_temperatures_value(self): - """ - Test the temperature value. - """ - self.assertEqual(self.TminValue, 450.0) - - def test_temperatures_list(self): - """ - Test the temperature list. - """ - self.assertTrue(np.array_equal(self.TlistValue, np.array([450, 500, 678, 700]))) - - def test_min_pressure_value(self): - """ - Test the minimum pressure value. - """ - self.assertEqual("%0.7f" % self.PminValue, str(0.0101325)) - - def test_pressure_count(self): - """ - Test the number pressures specified. - """ - self.assertEqual(self.Pcount, 7) - - def test_temperature_count(self): - """ - Test the number temperatures specified. - """ - self.assertEqual(self.Tcount, 4) - - def test_pressure_list(self): - """ - Test the pressure list. - """ - self.assertTrue(np.array_equal(self.PlistValue, np.array([0.01, 0.1, 1, 3, 10, 100, 1000]))) - - def test_generate_temperature_list(self): - """ - Test the generated temperature list. - """ - self.assertEqual(list(self.GenTlist), [450.0, 500.0, 678.0, 700.0]) - - def test_maximum_grain_size_value(self): - """ - Test the max grain size value. - """ - self.assertEqual(self.maximum_grain_size_value, 0.5) - - def test_method(self): - """ - Test the master equation solution method chosen. - """ - self.assertEqual(self.method, 'modified strong collision') - - def test_rmg_mode(self): - """ - Test the whether or not RMG mode is turned on. - """ - self.assertEqual(self.rmgmode, False) - - # Test Arkane's interactions with the kinetics module - def test_calculate_tst_rate_coefficient(self): - """ - Test the calculation of the high-pressure limit rate coef for one of the kinetics jobs at Tmin and Tmax. - """ - self.assertEqual("%0.7f" % self.kineticsjob.reaction.calculate_tst_rate_coefficient(self.TminValue), - str(46608.5904933)) - self.assertEqual("%0.5f" % self.kineticsjob.reaction.calculate_tst_rate_coefficient(self.Tmaxvalue), - str(498796.64535)) - - def test_tunneling(self): - """ - Test the whether or not tunneling has been included in a specific kinetics job. - """ - self.assertEqual(self.kineticsjob.reaction.transition_state.tunneling, None) - - -class TestArkaneInput(unittest.TestCase): - """ - Contains unit tests for loading and processing Arkane input files. - """ - - @classmethod - def setUp(cls): - """Preparation for all unit tests in this class.""" - cls.directory = os.path.join(os.path.dirname(os.path.dirname(rmgpy.__file__)), 'examples', 'arkane') - cls.level_of_theory = LevelOfTheory("cbs-qb3") - cls.frequencyScaleFactor = 0.99 - cls.useHinderedRotors = False - cls.useBondCorrections = True - - def test_species(self): - """Test loading of species input file.""" - spec = input.species('C2H4', os.path.join(self.directory, 'species', 'C2H4', 'ethene.py')) - self.assertTrue(isinstance(spec, Species)) - self.assertEqual(len(spec.molecule), 0) - - def test_species_statmech(self): - """Test loading of statmech job from species input file.""" - job = job_list[-1] - self.assertTrue(isinstance(job, StatMechJob)) - job.level_of_theory = self.level_of_theory - job.frequencyScaleFactor = self.frequencyScaleFactor - job.includeHinderedRotors = self.useHinderedRotors - job.applyBondEnergyCorrections = self.useBondCorrections - job.load() - self.assertTrue(isinstance(job.species.props['element_counts'], dict)) - self.assertEqual(job.species.props['element_counts']['C'], 2) - self.assertEqual(job.species.props['element_counts']['H'], 4) - - def test_species_thermo(self): - """Test thermo job execution for species from separate input file.""" - input.thermo('C2H4', 'NASA') - job = job_list[-1] - filepath = os.path.join(self.directory, 'reactions', 'H+C2H4=C2H5') - job.execute(output_directory=filepath) - self.assertTrue(os.path.isfile(os.path.join(filepath, 'output.py'))) - self.assertTrue(os.path.isfile(os.path.join(filepath, 'chem.inp'))) - os.remove(os.path.join(filepath, 'output.py')) - os.remove(os.path.join(filepath, 'chem.inp')) - - def test_transition_state(self): - """Test loading of transition state input file.""" - ts = input.transitionState('TS', os.path.join(self.directory, 'reactions', 'H+C2H4=C2H5', 'TS.py')) - self.assertTrue(isinstance(ts, TransitionState)) - - def test_transition_state_statmech(self): - """Test loading of statmech job from transition state input file.""" - job = job_list[-1] - self.assertTrue(isinstance(job, StatMechJob)) - job.level_of_theory = self.level_of_theory - job.frequencyScaleFactor = self.frequencyScaleFactor - job.includeHinderedRotors = self.useHinderedRotors - job.applyBondEnergyCorrections = self.useBondCorrections - job.load() - - -class TestStatmech(unittest.TestCase): - """ - Contains unit tests of statmech.py - """ - - @classmethod - def setUp(cls): - """A method that is run before each unit test in this class""" - arkane = Arkane() - cls.job_list = arkane.load_input_file(os.path.join(os.path.dirname(os.path.abspath(__file__)), - 'data', 'Benzyl', 'input.py')) - - def test_gaussian_log_file_error(self): - """Test that the proper error is raised if gaussian geometry and frequency file paths are the same""" - job = self.job_list[-2] - self.assertTrue(isinstance(job, StatMechJob)) - with self.assertRaises(InputError): - job.load() - - -class TestArkaneSpecies(unittest.TestCase): - """ - Contains YAML dump and load unit tests for :class:ArkaneSpecies - """ - - @classmethod - def setUpClass(cls): - """ - A method that is run ONCE before all unit tests in this class. - """ - cls.arkane = Arkane() - path = os.path.join(os.path.dirname(os.path.dirname(rmgpy.__file__)), - 'examples', 'arkane', 'species') - cls.dump_path = os.path.join(path, 'C2H6') - cls.dump_input_path = os.path.join(cls.dump_path, 'input.py') - cls.dump_output_file = os.path.join(cls.dump_path, 'output.py') - cls.dump_yaml_file = os.path.join(cls.dump_path, 'species', 'C2H6.yml') - - cls.load_path = os.path.join(path, 'C2H6_from_yaml') - cls.load_input_path = os.path.join(cls.load_path, 'input.py') - cls.load_output_file = os.path.join(cls.load_path, 'output.py') - - cls.data_path = os.path.join(os.path.dirname(os.path.dirname(rmgpy.__file__)), 'arkane', 'data') - - if os.path.exists(cls.dump_yaml_file): - logging.debug('removing existing yaml file {0} before running tests'.format(cls.dump_yaml_file)) - os.remove(cls.dump_yaml_file) - - def test_dump_yaml(self): - """ - Test properly dumping the ArkaneSpecies object and respective sub-objects - """ - job_list = self.arkane.load_input_file(self.dump_input_path) - for job in job_list: - job.execute(output_directory=self.dump_path) - self.assertTrue(os.path.isfile(self.dump_output_file)) - - def test_create_and_load_yaml(self): - """ - Test properly loading the ArkaneSpecies object and respective sub-objects - """ - # Create YAML file by running Arkane - job_list = self.arkane.load_input_file(self.dump_input_path) - for job in job_list: - job.execute(output_directory=self.dump_path) - - # Load in newly created YAML file - arkane_spc_old = job_list[0].arkane_species - arkane_spc = ArkaneSpecies.__new__(ArkaneSpecies) - arkane_spc.load_yaml(path=os.path.join(self.dump_path, 'species', arkane_spc_old.label + '.yml')) - - self.assertIsInstance(arkane_spc, ArkaneSpecies) # checks make_object - self.assertIsInstance(arkane_spc.molecular_weight, ScalarQuantity) - self.assertIsInstance(arkane_spc.thermo, NASA) - self.assertNotEqual(arkane_spc.author, '') - self.assertEqual(arkane_spc.inchi, 'InChI=1S/C2H6/c1-2/h1-2H3') - self.assertEqual(arkane_spc.inchi_key, 'OTMSDBZUPAUEDD-UHFFFAOYSA-N') - self.assertEqual(arkane_spc.smiles, 'CC') - self.assertTrue('8 H u0 p0 c0 {2,S}' in arkane_spc.adjacency_list) - self.assertEqual(arkane_spc.label, 'C2H6') - self.assertEqual(arkane_spc.frequency_scale_factor, 0.99 * 1.014) # checks float conversion - self.assertFalse(arkane_spc.use_bond_corrections) - self.assertAlmostEqual(arkane_spc.conformer.modes[2].frequencies.value_si[0], 830.38202, 4) # HarmonicOsc. - self.assertIsInstance(arkane_spc.energy_transfer_model, SingleExponentialDown) - self.assertFalse(arkane_spc.is_ts) - self.assertEqual(arkane_spc.level_of_theory, LevelOfTheory('cbs-qb3')) - self.assertIsInstance(arkane_spc.thermo_data, ThermoData) - self.assertTrue(arkane_spc.use_hindered_rotors) - self.assertIsInstance(arkane_spc.chemkin_thermo_string, str) - expected_xyz = """8 -C2H6 -C 0.00075400 0.00119300 0.00055200 -H 0.00074000 0.00117100 1.09413800 -H 1.04376600 0.00117100 -0.32820200 -H -0.44760300 0.94289500 -0.32825300 -C -0.76014200 -1.20389600 -0.55748300 -H -0.76012800 -1.20387400 -1.65106900 -H -0.31178500 -2.14559800 -0.22867800 -H -1.80315400 -1.20387400 -0.22872900""" - self.assertEqual(arkane_spc.xyz, expected_xyz) - - def test_load_existing_yaml(self): - """ - Test that existing Arkane YAML files can still be loaded - """ - # Load in YAML file - arkane_spc = ArkaneSpecies.__new__(ArkaneSpecies) - arkane_spc.load_yaml(path=os.path.join(self.load_path, 'C2H6.yml')) - - self.assertIsInstance(arkane_spc, ArkaneSpecies) # checks make_object - self.assertIsInstance(arkane_spc.molecular_weight, ScalarQuantity) - self.assertIsInstance(arkane_spc.thermo, NASA) - self.assertNotEqual(arkane_spc.author, '') - self.assertEqual(arkane_spc.inchi, 'InChI=1S/C2H6/c1-2/h1-2H3') - self.assertEqual(arkane_spc.inchi_key, 'OTMSDBZUPAUEDD-UHFFFAOYSA-N') - self.assertEqual(arkane_spc.smiles, 'CC') - self.assertTrue('8 H u0 p0 c0 {2,S}' in arkane_spc.adjacency_list) - self.assertEqual(arkane_spc.label, 'C2H6') - self.assertEqual(arkane_spc.frequency_scale_factor, 0.99) # checks float conversion - self.assertFalse(arkane_spc.use_bond_corrections) - self.assertAlmostEqual(arkane_spc.conformer.modes[2].frequencies.value_si[0], 818.91718, 4) # HarmonicOsc. - self.assertIsInstance(arkane_spc.energy_transfer_model, SingleExponentialDown) - self.assertFalse(arkane_spc.is_ts) - self.assertTrue(arkane_spc.use_hindered_rotors) - self.assertTrue('C 7.54e-14 1.193e-13 5.52e-14' in arkane_spc.xyz) - self.assertIsInstance(arkane_spc.chemkin_thermo_string, str) - - def test_loading_different_versions_of_yaml(self): - """Test loading a YAML file generated by RMG v 2.4.1 and by a more recent version""" - arkane_spc_v_241 = ArkaneSpecies.__new__(ArkaneSpecies) - arkane_spc_v_241.load_yaml(path=os.path.join(self.data_path, 'vinoxy_v_2.4.1.yml')) - self.assertIsInstance(arkane_spc_v_241, ArkaneSpecies) # checks make_object - self.assertEqual(arkane_spc_v_241.conformer.spin_multiplicity, 2) - - arkane_current = ArkaneSpecies.__new__(ArkaneSpecies) - arkane_current.load_yaml(path=os.path.join(self.data_path, 'vinoxy_current.yml')) - self.assertIsInstance(arkane_current, ArkaneSpecies) # checks make_object - self.assertEqual(arkane_current.conformer.spin_multiplicity, 2) - - @classmethod - def tearDownClass(cls): - """ - A method that is run ONCE after all unit tests in this class. - """ - path = os.path.join(os.path.dirname(os.path.dirname(rmgpy.__file__)), - 'examples', 'arkane', 'species') - cls.dump_path = os.path.join(path, 'C2H6') - cls.load_path = os.path.join(path, 'C2H6_from_yaml') - cls.extensions_to_delete = ['pdf', 'txt', 'inp', 'csv'] - cls.files_to_delete = ['arkane.log', 'output.py'] - cls.files_to_keep = ['C2H6.yml'] - for path in [cls.dump_path, cls.load_path]: - for name in os.listdir(path): - item_path = os.path.join(path, name) - if os.path.isfile(item_path): - extension = name.split('.')[-1] - if name in cls.files_to_delete or \ - (extension in cls.extensions_to_delete and name not in cls.files_to_keep): - os.remove(item_path) - else: - # This is a sub-directory. remove. - shutil.rmtree(item_path) - - -class TestMomentOfInertia(unittest.TestCase): - """ - Contains unit tests for attaining moments of inertia from the 3D coordinates. - """ - - def test_get_mass(self): - """Test that the correct mass/number/isotope is returned from get_element_mass""" - self.assertEqual(get_element_mass(1), (1.00782503224, 1)) # test input by integer - self.assertEqual(get_element_mass('Si'), (27.97692653465, 14)) # test string input and most common isotope - self.assertEqual(get_element_mass('SI'), (27.97692653465, 14)) # test string in all caps - self.assertEqual(get_element_mass('C', 13), (13.00335483507, 6)) # test specific isotope - self.assertEqual(get_element_mass('Bk'), (247.0703073, 97)) # test a two-element array (no isotope data) - - def test_get_center_of_mass(self): - """Test attaining the center of mass""" - symbols = ['C', 'H', 'H', 'H', 'H'] - coords = np.array([[0.0000000, 0.0000000, 0.0000000], - [0.6269510, 0.6269510, 0.6269510], - [-0.6269510, -0.6269510, 0.6269510], - [-0.6269510, 0.6269510, -0.6269510], - [0.6269510, -0.6269510, -0.6269510]], np.float64) - center_of_mass = get_center_of_mass(coords=coords, symbols=symbols) - for cm_coord in center_of_mass: - self.assertEqual(cm_coord, 0.0) - - symbols = ['O', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] - coords = np.array([[1.28706525, 0.52121353, 0.04219198], - [0.39745682, -0.35265044, -0.63649234], - [0.36441173, -1.68197093, 0.08682400], - [-0.59818222, 0.10068325, -0.65235399], - [0.74799641, -0.48357798, -1.66461710], - [0.03647269, -1.54932006, 1.12314420], - [-0.31340646, -2.38081353, -0.41122551], - [1.36475837, -2.12581592, 0.12433596], - [2.16336803, 0.09985803, 0.03295192]], np.float64) - center_of_mass = get_center_of_mass(coords=coords, symbols=symbols) - self.assertAlmostEqual(center_of_mass[0], 0.7201, 3) - self.assertAlmostEqual(center_of_mass[1], -0.4880, 3) - self.assertAlmostEqual(center_of_mass[2], -0.1603, 3) - - numbers = [6, 6, 8, 1, 1, 1, 1, 1, 1] - coords = np.array([[1.1714680, -0.4048940, 0.0000000], - [0.0000000, 0.5602500, 0.0000000], - [-1.1945070, -0.2236470, 0.0000000], - [-1.9428910, 0.3834580, 0.0000000], - [2.1179810, 0.1394450, 0.0000000], - [1.1311780, -1.0413680, 0.8846660], - [1.1311780, -1.0413680, -0.8846660], - [0.0448990, 1.2084390, 0.8852880], - [0.0448990, 1.2084390, -0.8852880]], np.float64) - center_of_mass = get_center_of_mass(coords=coords, numbers=numbers) - self.assertAlmostEqual(center_of_mass[0], -0.0540, 3) - self.assertAlmostEqual(center_of_mass[1], -0.0184, 3) - self.assertAlmostEqual(center_of_mass[2], -0.0000, 3) - - def test_get_moment_of_inertia_tensor(self): - """Test calculating the moment of inertia tensor""" - symbols = ['O', 'C', 'C', 'H', 'H', 'H', 'H', 'H', 'H'] - coords = np.array([[1.28706525, 0.52121353, 0.04219198], - [0.39745682, -0.35265044, -0.63649234], - [0.36441173, -1.68197093, 0.08682400], - [-0.59818222, 0.10068325, -0.65235399], - [0.74799641, -0.48357798, -1.66461710], - [0.03647269, -1.54932006, 1.12314420], - [-0.31340646, -2.38081353, -0.41122551], - [1.36475837, -2.12581592, 0.12433596], - [2.16336803, 0.09985803, 0.03295192]], np.float64) - tensor = get_moment_of_inertia_tensor(coords=coords, symbols=symbols) - expected_tensor = [[50.24197604, -15.43600683, -3.07977736], - [-15.43600683, 22.20416597, 2.5935549], - [-3.07977736, 2.5935549, 55.49144794]] - np.testing.assert_almost_equal(tensor, expected_tensor) - - def test_get_principal_moments_of_inertia(self): - """Test calculating the principal moments of inertia""" - numbers = [6, 6, 8, 1, 1, 1, 1, 1, 1] - coords = np.array([[1.235366, -0.257231, -0.106315], - [0.083698, 0.554942, 0.046628], - [-1.210594, -0.239505, -0.021674], - [0.132571, 1.119728, 0.987719], - [0.127795, 1.278999, -0.769346], - [-1.272620, -0.962700, 0.798216], - [-2.074974, 0.426198, 0.055846], - [-1.275744, -0.785745, -0.965493], - [1.241416, -0.911257, 0.593856]], np.float64) - principal_moments_of_inertia = get_principal_moments_of_inertia(coords=coords, numbers=numbers)[0] - expected_principal_moments_of_inertia = [60.98026894, 53.83156297, 14.48858465] - for moment, expected_moment in zip(principal_moments_of_inertia, expected_principal_moments_of_inertia): - self.assertAlmostEqual(moment, expected_moment) - - symbols = ['N', 'O', 'O'] # test a linear molecule - coords = np.array([[0.000000, 0.000000, 1.106190], - [0.000000, 0.000000, -0.072434], - [0.000000, 0.000000, -1.191782]], np.float64) - with self.assertRaises(InputError): - get_principal_moments_of_inertia(coords=coords, numbers=numbers) - principal_moments_of_inertia, axes = get_principal_moments_of_inertia(coords=coords, symbols=symbols) - expected_principal_moments_of_inertia = [39.4505153, 39.4505153, 0.0] - expected_axes = [[1, 0, 0], [0, 1, 0], [0, 0, 1]] - for moment, expected_moment in zip(principal_moments_of_inertia, expected_principal_moments_of_inertia): - self.assertAlmostEqual(moment, expected_moment) - for axis, expected_axis in zip(axes, expected_axes): - for entry, expected_entry in zip(axis, expected_axis): - self.assertAlmostEqual(entry, expected_entry) - self.assertIsInstance(principal_moments_of_inertia, tuple) - self.assertIsInstance(axes, tuple) - - def test_convert_imaginary_freq_to_negative_float(self): - self.assertEqual(convert_imaginary_freq_to_negative_float(1), 1) - self.assertEqual(convert_imaginary_freq_to_negative_float(-5.2), -5.2) - self.assertEqual(convert_imaginary_freq_to_negative_float('-5.2'), -5.2) - self.assertEqual(convert_imaginary_freq_to_negative_float('5.2'), 5.2) - self.assertEqual(convert_imaginary_freq_to_negative_float('5.2i'), -5.2) - self.assertEqual(convert_imaginary_freq_to_negative_float('635.8i'), -635.8) - -################################################################################ - - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/arkane/data/gaussian/starred_rotational_constant.log b/arkane/data/gaussian/starred_rotational_constant.log new file mode 100644 index 00000000000..0a095d54386 --- /dev/null +++ b/arkane/data/gaussian/starred_rotational_constant.log @@ -0,0 +1,2964 @@ + Entering Gaussian System, Link 0=g16 + Input=conformer_0000.com + Output=conformer_0000.log + Initial command: + /shared/centos7/gaussian/g16/l1.exe "/scratch/harris.se/guassian_scratch/Gau-22528.inp" -scrdir="/scratch/harris.se/guassian_scratch/" + Entering Link 1 = /shared/centos7/gaussian/g16/l1.exe PID= 22529. + + Copyright (c) 1988,1990,1992,1993,1995,1998,2003,2009,2016, + Gaussian, Inc. All Rights Reserved. + + This is part of the Gaussian(R) 16 program. It is based on + the Gaussian(R) 09 system (copyright 2009, Gaussian, Inc.), + the Gaussian(R) 03 system (copyright 2003, Gaussian, Inc.), + the Gaussian(R) 98 system (copyright 1998, Gaussian, Inc.), + the Gaussian(R) 94 system (copyright 1995, Gaussian, Inc.), + the Gaussian 92(TM) system (copyright 1992, Gaussian, Inc.), + the Gaussian 90(TM) system (copyright 1990, Gaussian, Inc.), + the Gaussian 88(TM) system (copyright 1988, Gaussian, Inc.), + the Gaussian 86(TM) system (copyright 1986, Carnegie Mellon + University), and the Gaussian 82(TM) system (copyright 1983, + Carnegie Mellon University). Gaussian is a federally registered + trademark of Gaussian, Inc. + + This software contains proprietary and confidential information, + including trade secrets, belonging to Gaussian, Inc. + + This software is provided under written license and may be + used, copied, transmitted, or stored only in accord with that + written license. + + The following legend is applicable only to US Government + contracts under FAR: + + RESTRICTED RIGHTS LEGEND + + Use, reproduction and disclosure by the US Government is + subject to restrictions as set forth in subparagraphs (a) + and (c) of the Commercial Computer Software - Restricted + Rights clause in FAR 52.227-19. + + Gaussian, Inc. + 340 Quinnipiac St., Bldg. 40, Wallingford CT 06492 + + + --------------------------------------------------------------- + Warning -- This program may not be used in any manner that + competes with the business of Gaussian, Inc. or will provide + assistance to any competitor of Gaussian, Inc. The licensee + of this program is prohibited from giving any competitor of + Gaussian, Inc. access to this program. By using this program, + the user acknowledges that Gaussian, Inc. is engaged in the + business of creating and licensing software in the field of + computational chemistry and represents and warrants to the + licensee that it is not a competitor of Gaussian, Inc. and that + it will not use this program in any manner prohibited above. + --------------------------------------------------------------- + + + Cite this work as: + Gaussian 16, Revision A.03, + M. J. Frisch, G. W. Trucks, H. B. Schlegel, G. E. Scuseria, + M. A. Robb, J. R. Cheeseman, G. Scalmani, V. Barone, + G. A. Petersson, H. Nakatsuji, X. Li, M. Caricato, A. V. Marenich, + J. Bloino, B. G. Janesko, R. Gomperts, B. Mennucci, H. P. Hratchian, + J. V. Ortiz, A. F. Izmaylov, J. L. Sonnenberg, D. Williams-Young, + F. Ding, F. Lipparini, F. Egidi, J. Goings, B. Peng, A. Petrone, + T. Henderson, D. Ranasinghe, V. G. Zakrzewski, J. Gao, N. Rega, + G. Zheng, W. Liang, M. Hada, M. Ehara, K. Toyota, R. Fukuda, + J. Hasegawa, M. Ishida, T. Nakajima, Y. Honda, O. Kitao, H. Nakai, + T. Vreven, K. Throssell, J. A. Montgomery, Jr., J. E. Peralta, + F. Ogliaro, M. J. Bearpark, J. J. Heyd, E. N. Brothers, K. N. Kudin, + V. N. Staroverov, T. A. Keith, R. Kobayashi, J. Normand, + K. Raghavachari, A. P. Rendell, J. C. Burant, S. S. Iyengar, + J. Tomasi, M. Cossi, J. M. Millam, M. Klene, C. Adamo, R. Cammi, + J. W. Ochterski, R. L. Martin, K. Morokuma, O. Farkas, + J. B. Foresman, and D. J. Fox, Gaussian, Inc., Wallingford CT, 2016. + + ****************************************** + Gaussian 16: EM64L-G16RevA.03 25-Dec-2016 + 6-Jan-2024 + ****************************************** + %mem=5GB + %nprocshared=24 + Will use up to 24 processors via shared memory. + ---------------------------------------------------------------------- + #P m062x/cc-pVTZ opt=(calcfc,maxcycles=900,) freq IOP(7/33=1,2/16=3) s + cf=(maxcycle=900) + ---------------------------------------------------------------------- + 1/6=900,10=4,18=20,19=15,26=3,38=1/1,3; + 2/9=110,12=2,16=3,17=6,18=5,40=1/2; + 3/5=16,6=1,11=2,25=1,30=1,71=2,74=-55,140=1/1,2,3; + 4//1; + 5/5=2,7=900,38=5/2; + 8/6=4,10=90,11=11/1; + 11/6=1,8=1,9=11,15=111,16=1/1,2,10; + 10/6=1,13=1/2; + 6/7=2,8=2,9=2,10=2,28=1/1; + 7/10=1,18=20,25=1,33=1/1,2,3,16; + 1/6=900,10=4,18=20,19=15,26=3/3(2); + 2/9=110,16=3/2; + 99//99; + 2/9=110,16=3/2; + 3/5=16,6=1,11=2,25=1,30=1,71=1,74=-55/1,2,3; + 4/5=5,16=3,69=1/1; + 5/5=2,7=900,38=5/2; + 7/33=1/1,2,3,16; + 1/6=900,18=20,19=15,26=3/3(-5); + 2/9=110,16=3/2; + 6/7=2,8=2,9=2,10=2,19=2,28=1/1; + 99/9=1/99; + Leave Link 1 at Sat Jan 6 14:14:09 2024, MaxMem= 671088640 cpu: 4.5 elap: 0.3 + (Enter /shared/centos7/gaussian/g16/l101.exe) + ------------------------------ + Gaussian input prepared by ASE + ------------------------------ + Symbolic Z-matrix: + Charge = 0 Multiplicity = 2 + C -0.0479 -0.0004 0. + C 1.1506 -0.0145 0. + H -1.1027 0.0149 0. + + ITRead= 0 0 0 + MicOpt= -1 -1 -1 + NAtoms= 3 NQM= 3 NQMF= 0 NMMI= 0 NMMIF= 0 + NMic= 0 NMicF= 0. + Isotopes and Nuclear Properties: + (Nuclear quadrupole moments (NQMom) in fm**2, nuclear magnetic moments (NMagM) + in nuclear magnetons) + + Atom 1 2 3 + IAtWgt= 12 12 1 + AtmWgt= 12.0000000 12.0000000 1.0078250 + NucSpn= 0 0 1 + AtZEff= -0.0000000 -0.0000000 -0.0000000 + NQMom= 0.0000000 0.0000000 0.0000000 + NMagM= 0.0000000 0.0000000 2.7928460 + AtZNuc= 6.0000000 6.0000000 1.0000000 + Leave Link 101 at Sat Jan 6 14:14:10 2024, MaxMem= 671088640 cpu: 4.5 elap: 0.4 + (Enter /shared/centos7/gaussian/g16/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Initialization pass. + ---------------------------- + ! Initial Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 1.1986 calculate D2E/DX2 analytically ! + ! R2 R(1,3) 1.0549 calculate D2E/DX2 analytically ! + ! A1 L(2,1,3,-3,-1) 180.157 calculate D2E/DX2 analytically ! + ! A2 L(2,1,3,-2,-2) 180.0 calculate D2E/DX2 analytically ! + -------------------------------------------------------------------------------- + Trust Radius=3.00D-01 FncErr=1.00D-07 GrdErr=1.00D-06 EigMax=2.50D+02 EigMin=1.00D-04 + Number of steps in this run= 100 maximum allowed number of steps= 100. + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Sat Jan 6 14:14:10 2024, MaxMem= 671088640 cpu: 2.2 elap: 0.2 + (Enter /shared/centos7/gaussian/g16/l202.exe) + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 -0.047900 -0.000400 0.000000 + 2 6 0 1.150600 -0.014500 0.000000 + 3 1 0 -1.102700 0.014900 0.000000 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 + 1 C 0.000000 + 2 C 1.198583 0.000000 + 3 H 1.054911 2.253492 0.000000 + This structure is nearly, but not quite of a higher symmetry. + Consider Symm=Loose if the higher symmetry is desired. + Stoichiometry C2H(2) + Framework group CS[SG(C2H)] + Deg. of freedom 3 + Full point group CS NOp 2 + Largest Abelian subgroup CS NOp 2 + Largest concise Abelian subgroup C1 NOp 1 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 0.000222 0.472045 -0.000000 + 2 6 0 0.000222 -0.726538 0.000000 + 3 1 0 -0.002668 1.526952 -0.000000 + --------------------------------------------------------------------- + Rotational constants (GHZ): 81747872.2750126 44.8577711 44.8577465 + Leave Link 202 at Sat Jan 6 14:14:11 2024, MaxMem= 671088640 cpu: 5.8 elap: 0.4 + (Enter /shared/centos7/gaussian/g16/l301.exe) + Standard basis: CC-pVTZ (5D, 7F) + Ernie: Thresh= 0.10000D-02 Tol= 0.10000D-05 Strict=F. + Ernie: 6 primitive shells out of 60 were deleted. + There are 59 symmetry adapted cartesian basis functions of A' symmetry. + There are 26 symmetry adapted cartesian basis functions of A" symmetry. + There are 50 symmetry adapted basis functions of A' symmetry. + There are 24 symmetry adapted basis functions of A" symmetry. + 74 basis functions, 121 primitive gaussians, 85 cartesian basis functions + 7 alpha electrons 6 beta electrons + nuclear repulsion energy 20.3128307422 Hartrees. + IExCor= 4336 DFT=T Ex+Corr=M062X ExCW=0 ScaHFX= 0.540000 + ScaDFX= 1.000000 1.000000 1.000000 1.000000 ScalE2= 1.000000 1.000000 + IRadAn= 5 IRanWt= -1 IRanGd= 0 ICorTp=0 IEmpDi= 4 + NAtoms= 3 NActive= 3 NUniq= 3 SFac= 1.00D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 2 integral format. + Two-electron integral symmetry is turned on. + Leave Link 301 at Sat Jan 6 14:14:11 2024, MaxMem= 671088640 cpu: 3.1 elap: 0.4 + (Enter /shared/centos7/gaussian/g16/l302.exe) + NPDir=0 NMtPBC= 1 NCelOv= 1 NCel= 1 NClECP= 1 NCelD= 1 + NCelK= 1 NCelE2= 1 NClLst= 1 CellRange= 0.0. + One-electron integrals computed using PRISM. + One-electron integral symmetry used in STVInt + NBasis= 74 RedAO= T EigKep= 4.27D-04 NBF= 50 24 + NBsUse= 74 1.00D-06 EigRej= -1.00D+00 NBFU= 50 24 + Precomputing XC quadrature grid using + IXCGrd= 4 IRadAn= 5 IRanWt= -1 IRanGd= 0 AccXCQ= 0.00D+00. + Generated NRdTot= 0 NPtTot= 0 NUsed= 0 NTot= 32 + NSgBfM= 85 85 85 85 85 MxSgAt= 3 MxSgA2= 3. + Leave Link 302 at Sat Jan 6 14:14:14 2024, MaxMem= 671088640 cpu: 50.7 elap: 3.2 + (Enter /shared/centos7/gaussian/g16/l303.exe) + DipDrv: MaxL=1. + Leave Link 303 at Sat Jan 6 14:14:15 2024, MaxMem= 671088640 cpu: 11.9 elap: 0.8 + (Enter /shared/centos7/gaussian/g16/l401.exe) + ExpMin= 1.03D-01 ExpMax= 8.24D+03 ExpMxC= 2.81D+02 IAcc=3 IRadAn= 5 AccDes= 0.00D+00 + Harris functional with IExCor= 1009 and IRadAn= 5 diagonalized for initial guess. + HarFok: IExCor= 1009 AccDes= 0.00D+00 IRadAn= 5 IDoV= 1 UseB2=F ITyADJ=14 + ICtDFT= 3500011 ScaDFX= 1.000000 1.000000 1.000000 1.000000 + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 0 + NFxFlg= 0 DoJE=T BraDBF=F KetDBF=T FulRan=T + wScrn= 0.000000 ICntrl= 500 IOpCl= 0 I1Cent= 200000004 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + Harris En= -76.5637186004528 + JPrj=0 DoOrth=F DoCkMO=F. + Initial guess orbital symmetries: + Alpha Orbitals: + Occupied (A') (A') (A') (A') (A') (A") (A') + Virtual (A') (A") (A') (A') (A') (A") (A') (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A') (A') (A") (A') + (A') (A") (A') (A") (A') (A') (A") (A') (A') (A') + (A") (A') (A") (A') (A") (A') (A') (A") (A') (A') + (A") (A') (A") (A') (A") (A') (A') (A") (A') (A") + (A') (A") (A') (A') (A") (A') (A') (A") (A') (A') + (A") (A') (A") (A') (A') (A') (A') + Beta Orbitals: + Occupied (A') (A') (A') (A') (A') (A") + Virtual (A') (A') (A") (A') (A') (A') (A") (A') (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A') (A') (A") + (A') (A') (A") (A') (A") (A') (A') (A") (A') (A') + (A') (A") (A') (A") (A') (A") (A') (A') (A") (A') + (A') (A") (A') (A") (A') (A") (A') (A') (A") (A') + (A") (A') (A") (A') (A') (A") (A') (A') (A") (A') + (A') (A") (A') (A") (A') (A') (A') (A') + The electronic state of the initial guess is 2-A'. + Initial guess = 0.0000 = 0.0000 = 0.5000 = 0.7500 S= 0.5000 + Leave Link 401 at Sat Jan 6 14:14:18 2024, MaxMem= 671088640 cpu: 50.3 elap: 3.3 + (Enter /shared/centos7/gaussian/g16/l502.exe) + Keep R1 and R2 ints in memory in symmetry-blocked form, NReq=25755234. + FoFCou: FMM=F IPFlag= 0 FMFlag= 0 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 600 IOpCl= 0 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 2775 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + UHF open shell SCF: + Using DIIS extrapolation, IDIIS= 1040. + NGot= 671088640 LenX= 667141186 LenY= 667133520 + Requested convergence on RMS density matrix=1.00D-08 within 900 cycles. + Requested convergence on MAX density matrix=1.00D-06. + Requested convergence on energy=1.00D-06. + No special actions if energy rises. + Integral accuracy reduced to 1.0D-05 until final iterations. + + Cycle 1 Pass 0 IDiag 1: + E= -76.5167179746585 + DIIS: error= 5.74D-02 at cycle 1 NSaved= 1. + NSaved= 1 IEnMin= 1 EnMin= -76.5167179746585 IErMin= 1 ErrMin= 5.74D-02 + ErrMax= 5.74D-02 0.00D+00 EMaxC= 1.00D-01 BMatC= 3.98D-01 BMatP= 3.98D-01 + IDIUse=3 WtCom= 4.26D-01 WtEn= 5.74D-01 + Coeff-Com: 0.100D+01 + Coeff-En: 0.100D+01 + Coeff: 0.100D+01 + Gap= 0.417 Goal= None Shift= 0.000 + Gap= 0.035 Goal= None Shift= 0.000 + GapD= 0.035 DampG=0.250 DampE=0.500 DampFc=0.2500 IDamp=-1. + Damping current iteration by 2.50D-01 + RMSDP=8.64D-03 MaxDP=2.08D-01 OVMax= 9.76D-01 + + Cycle 2 Pass 0 IDiag 1: + E= -76.4941049166980 Delta-E= 0.022613057961 Rises=F Damp=T + DIIS: error= 2.53D-02 at cycle 2 NSaved= 2. + NSaved= 2 IEnMin= 1 EnMin= -76.5167179746585 IErMin= 2 ErrMin= 2.53D-02 + ErrMax= 2.53D-02 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.12D-01 BMatP= 3.98D-01 + IDIUse=3 WtCom= 7.47D-01 WtEn= 2.53D-01 + Coeff-Com: -0.411D+00 0.141D+01 + Coeff-En: 0.792D+00 0.208D+00 + Coeff: -0.106D+00 0.111D+01 + Gap= 0.424 Goal= None Shift= 0.000 + Gap= -0.176 Goal= None Shift= 0.000 + RMSDP=2.84D-03 MaxDP=5.28D-02 DE= 2.26D-02 OVMax= 9.99D-01 + + Cycle 3 Pass 0 IDiag 1: + E= -76.5958151740611 Delta-E= -0.101710257363 Rises=F Damp=F + DIIS: error= 1.29D-02 at cycle 3 NSaved= 3. + NSaved= 3 IEnMin= 3 EnMin= -76.5958151740611 IErMin= 3 ErrMin= 1.29D-02 + ErrMax= 1.29D-02 0.00D+00 EMaxC= 1.00D-01 BMatC= 3.57D-02 BMatP= 1.12D-01 + IDIUse=3 WtCom= 8.71D-01 WtEn= 1.29D-01 + Coeff-Com: -0.187D+00 0.552D+00 0.634D+00 + Coeff-En: 0.000D+00 0.000D+00 0.100D+01 + Coeff: -0.162D+00 0.481D+00 0.681D+00 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.131 Goal= None Shift= 0.000 + RMSDP=9.73D-04 MaxDP=1.77D-02 DE=-1.02D-01 OVMax= 4.69D-02 + + Cycle 4 Pass 0 IDiag 1: + E= -76.6053979537940 Delta-E= -0.009582779733 Rises=F Damp=F + DIIS: error= 4.92D-03 at cycle 4 NSaved= 4. + NSaved= 4 IEnMin= 4 EnMin= -76.6053979537940 IErMin= 4 ErrMin= 4.92D-03 + ErrMax= 4.92D-03 0.00D+00 EMaxC= 1.00D-01 BMatC= 3.44D-03 BMatP= 3.57D-02 + IDIUse=3 WtCom= 9.51D-01 WtEn= 4.92D-02 + Coeff-Com: -0.322D-01 0.668D-01 0.198D+00 0.767D+00 + Coeff-En: 0.000D+00 0.000D+00 0.000D+00 0.100D+01 + Coeff: -0.306D-01 0.635D-01 0.189D+00 0.779D+00 + Gap= 0.443 Goal= None Shift= 0.000 + Gap= 0.152 Goal= None Shift= 0.000 + RMSDP=3.24D-04 MaxDP=6.89D-03 DE=-9.58D-03 OVMax= 1.86D-02 + + Cycle 5 Pass 0 IDiag 1: + E= -76.6063302350365 Delta-E= -0.000932281242 Rises=F Damp=F + DIIS: error= 1.77D-03 at cycle 5 NSaved= 5. + NSaved= 5 IEnMin= 5 EnMin= -76.6063302350365 IErMin= 5 ErrMin= 1.77D-03 + ErrMax= 1.77D-03 0.00D+00 EMaxC= 1.00D-01 BMatC= 4.31D-04 BMatP= 3.44D-03 + IDIUse=3 WtCom= 9.82D-01 WtEn= 1.77D-02 + Coeff-Com: -0.158D-01 0.122D-01-0.151D-01 0.168D+00 0.851D+00 + Coeff-En: 0.000D+00 0.000D+00 0.000D+00 0.000D+00 0.100D+01 + Coeff: -0.156D-01 0.120D-01-0.148D-01 0.165D+00 0.854D+00 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.174 Goal= None Shift= 0.000 + RMSDP=1.64D-04 MaxDP=3.93D-03 DE=-9.32D-04 OVMax= 7.70D-03 + + Cycle 6 Pass 0 IDiag 1: + E= -76.6064885874676 Delta-E= -0.000158352431 Rises=F Damp=F + DIIS: error= 9.44D-04 at cycle 6 NSaved= 6. + NSaved= 6 IEnMin= 6 EnMin= -76.6064885874676 IErMin= 6 ErrMin= 9.44D-04 + ErrMax= 9.44D-04 0.00D+00 EMaxC= 1.00D-01 BMatC= 7.44D-05 BMatP= 4.31D-04 + IDIUse=3 WtCom= 9.91D-01 WtEn= 9.44D-03 + Coeff-Com: -0.323D-02 0.176D-02-0.209D-01-0.168D-01 0.255D+00 0.785D+00 + Coeff-En: 0.000D+00 0.000D+00 0.000D+00 0.000D+00 0.000D+00 0.100D+01 + Coeff: -0.320D-02 0.175D-02-0.207D-01-0.167D-01 0.252D+00 0.787D+00 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=7.53D-05 MaxDP=1.34D-03 DE=-1.58D-04 OVMax= 4.52D-03 + + Cycle 7 Pass 0 IDiag 1: + E= -76.6065335504687 Delta-E= -0.000044963001 Rises=F Damp=F + DIIS: error= 4.88D-04 at cycle 7 NSaved= 7. + NSaved= 7 IEnMin= 7 EnMin= -76.6065335504687 IErMin= 7 ErrMin= 4.88D-04 + ErrMax= 4.88D-04 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.54D-05 BMatP= 7.44D-05 + IDIUse=3 WtCom= 9.95D-01 WtEn= 4.88D-03 + Coeff-Com: 0.305D-02-0.254D-02 0.583D-02-0.189D-01-0.202D+00-0.252D+00 + Coeff-Com: 0.147D+01 + Coeff-En: 0.000D+00 0.000D+00 0.000D+00 0.000D+00 0.000D+00 0.000D+00 + Coeff-En: 0.100D+01 + Coeff: 0.303D-02-0.253D-02 0.581D-02-0.189D-01-0.201D+00-0.251D+00 + Coeff: 0.146D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.168 Goal= None Shift= 0.000 + RMSDP=7.14D-05 MaxDP=1.33D-03 DE=-4.50D-05 OVMax= 5.10D-03 + + Cycle 8 Pass 0 IDiag 1: + E= -76.6065642370856 Delta-E= -0.000030686617 Rises=F Damp=F + DIIS: error= 2.04D-04 at cycle 8 NSaved= 8. + NSaved= 8 IEnMin= 8 EnMin= -76.6065642370856 IErMin= 8 ErrMin= 2.04D-04 + ErrMax= 2.04D-04 0.00D+00 EMaxC= 1.00D-01 BMatC= 3.81D-06 BMatP= 1.54D-05 + IDIUse=3 WtCom= 9.98D-01 WtEn= 2.04D-03 + Coeff-Com: -0.903D-03 0.118D-02 0.567D-02 0.154D-01-0.267D-02-0.232D+00 + Coeff-Com: -0.409D+00 0.162D+01 + Coeff-En: 0.000D+00 0.000D+00 0.000D+00 0.000D+00 0.000D+00 0.000D+00 + Coeff-En: 0.000D+00 0.100D+01 + Coeff: -0.901D-03 0.118D-02 0.566D-02 0.154D-01-0.266D-02-0.231D+00 + Coeff: -0.408D+00 0.162D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=5.43D-05 MaxDP=8.86D-04 DE=-3.07D-05 OVMax= 3.53D-03 + + Cycle 9 Pass 0 IDiag 1: + E= -76.6065729253893 Delta-E= -0.000008688304 Rises=F Damp=F + DIIS: error= 4.85D-05 at cycle 9 NSaved= 9. + NSaved= 9 IEnMin= 9 EnMin= -76.6065729253893 IErMin= 9 ErrMin= 4.85D-05 + ErrMax= 4.85D-05 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.87D-07 BMatP= 3.81D-06 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.497D-04-0.978D-04-0.224D-02-0.431D-02 0.183D-01 0.741D-01 + Coeff-Com: 0.128D-02-0.401D+00 0.131D+01 + Coeff: 0.497D-04-0.978D-04-0.224D-02-0.431D-02 0.183D-01 0.741D-01 + Coeff: 0.128D-02-0.401D+00 0.131D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.166 Goal= None Shift= 0.000 + RMSDP=9.49D-06 MaxDP=1.52D-04 DE=-8.69D-06 OVMax= 1.15D-03 + + Initial convergence to 1.0D-05 achieved. Increase integral accuracy. + Cycle 10 Pass 1 IDiag 1: + E= -76.6065746222212 Delta-E= -0.000001696832 Rises=F Damp=F + DIIS: error= 3.83D-05 at cycle 1 NSaved= 1. + NSaved= 1 IEnMin= 1 EnMin= -76.6065746222212 IErMin= 1 ErrMin= 3.83D-05 + ErrMax= 3.83D-05 0.00D+00 EMaxC= 1.00D-01 BMatC= 2.92D-07 BMatP= 2.92D-07 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.100D+01 + Coeff: 0.100D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=9.49D-06 MaxDP=1.52D-04 DE=-1.70D-06 OVMax= 5.33D-04 + + Cycle 11 Pass 1 IDiag 1: + E= -76.6065747677486 Delta-E= -0.000000145527 Rises=F Damp=F + DIIS: error= 2.81D-05 at cycle 2 NSaved= 2. + NSaved= 2 IEnMin= 2 EnMin= -76.6065747677486 IErMin= 2 ErrMin= 2.81D-05 + ErrMax= 2.81D-05 0.00D+00 EMaxC= 1.00D-01 BMatC= 5.07D-08 BMatP= 2.92D-07 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.263D-01 0.974D+00 + Coeff: 0.263D-01 0.974D+00 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.166 Goal= None Shift= 0.000 + RMSDP=3.09D-06 MaxDP=4.70D-05 DE=-1.46D-07 OVMax= 4.35D-04 + + Cycle 12 Pass 1 IDiag 1: + E= -76.6065748453665 Delta-E= -0.000000077618 Rises=F Damp=F + DIIS: error= 2.41D-05 at cycle 3 NSaved= 3. + NSaved= 3 IEnMin= 3 EnMin= -76.6065748453665 IErMin= 3 ErrMin= 2.41D-05 + ErrMax= 2.41D-05 0.00D+00 EMaxC= 1.00D-01 BMatC= 3.34D-08 BMatP= 5.07D-08 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.682D-01 0.301D+00 0.767D+00 + Coeff: -0.682D-01 0.301D+00 0.767D+00 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=2.13D-06 MaxDP=3.52D-05 DE=-7.76D-08 OVMax= 3.22D-04 + + Cycle 13 Pass 1 IDiag 1: + E= -76.6065748947997 Delta-E= -0.000000049433 Rises=F Damp=F + DIIS: error= 2.09D-05 at cycle 4 NSaved= 4. + NSaved= 4 IEnMin= 4 EnMin= -76.6065748947997 IErMin= 4 ErrMin= 2.09D-05 + ErrMax= 2.09D-05 0.00D+00 EMaxC= 1.00D-01 BMatC= 2.11D-08 BMatP= 3.34D-08 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.931D-02-0.653D+00-0.100D+00 0.174D+01 + Coeff: 0.931D-02-0.653D+00-0.100D+00 0.174D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=4.89D-06 MaxDP=8.33D-05 DE=-4.94D-08 OVMax= 7.65D-04 + + Cycle 14 Pass 1 IDiag 1: + E= -76.6065749798076 Delta-E= -0.000000085008 Rises=F Damp=F + DIIS: error= 1.36D-05 at cycle 5 NSaved= 5. + NSaved= 5 IEnMin= 5 EnMin= -76.6065749798076 IErMin= 5 ErrMin= 1.36D-05 + ErrMax= 1.36D-05 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.77D-08 BMatP= 2.11D-08 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.808D-01-0.103D+01-0.872D+00 0.184D+01 0.975D+00 + Coeff: 0.808D-01-0.103D+01-0.872D+00 0.184D+01 0.975D+00 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=6.41D-06 MaxDP=1.10D-04 DE=-8.50D-08 OVMax= 1.00D-03 + + Cycle 15 Pass 1 IDiag 1: + E= -76.6065750383788 Delta-E= -0.000000058571 Rises=F Damp=F + DIIS: error= 3.83D-06 at cycle 6 NSaved= 6. + NSaved= 6 IEnMin= 6 EnMin= -76.6065750383788 IErMin= 6 ErrMin= 3.83D-06 + ErrMax= 3.83D-06 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.41D-09 BMatP= 1.77D-08 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.252D-01 0.461D+00 0.237D+00-0.978D+00-0.171D+00 0.148D+01 + Coeff: -0.252D-01 0.461D+00 0.237D+00-0.978D+00-0.171D+00 0.148D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=2.11D-06 MaxDP=3.60D-05 DE=-5.86D-08 OVMax= 3.29D-04 + + Cycle 16 Pass 1 IDiag 1: + E= -76.6065750437892 Delta-E= -0.000000005410 Rises=F Damp=F + DIIS: error= 2.28D-06 at cycle 7 NSaved= 7. + NSaved= 7 IEnMin= 7 EnMin= -76.6065750437892 IErMin= 7 ErrMin= 2.28D-06 + ErrMax= 2.28D-06 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.55D-10 BMatP= 1.41D-09 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.123D-01 0.162D+00 0.146D+00-0.272D+00-0.183D+00-0.152D-01 + Coeff-Com: 0.117D+01 + Coeff: -0.123D-01 0.162D+00 0.146D+00-0.272D+00-0.183D+00-0.152D-01 + Coeff: 0.117D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=3.54D-07 MaxDP=5.27D-06 DE=-5.41D-09 OVMax= 5.10D-05 + + Cycle 17 Pass 1 IDiag 1: + E= -76.6065750440967 Delta-E= -0.000000000308 Rises=F Damp=F + DIIS: error= 5.80D-07 at cycle 8 NSaved= 8. + NSaved= 8 IEnMin= 8 EnMin= -76.6065750440967 IErMin= 8 ErrMin= 5.80D-07 + ErrMax= 5.80D-07 0.00D+00 EMaxC= 1.00D-01 BMatC= 2.58D-11 BMatP= 1.55D-10 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.606D-03-0.333D-01-0.437D-02 0.947D-01-0.247D-01-0.223D+00 + Coeff-Com: 0.261D+00 0.929D+00 + Coeff: 0.606D-03-0.333D-01-0.437D-02 0.947D-01-0.247D-01-0.223D+00 + Coeff: 0.261D+00 0.929D+00 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=8.00D-08 MaxDP=1.46D-06 DE=-3.08D-10 OVMax= 1.04D-05 + + Cycle 18 Pass 1 IDiag 1: + E= -76.6065750441262 Delta-E= -0.000000000029 Rises=F Damp=F + DIIS: error= 2.10D-07 at cycle 9 NSaved= 9. + NSaved= 9 IEnMin= 9 EnMin= -76.6065750441262 IErMin= 9 ErrMin= 2.10D-07 + ErrMax= 2.10D-07 0.00D+00 EMaxC= 1.00D-01 BMatC= 3.21D-12 BMatP= 2.58D-11 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.984D-03-0.961D-02-0.154D-01 0.901D-02 0.236D-01 0.410D-01 + Coeff-Com: -0.173D+00-0.169D+00 0.129D+01 + Coeff: 0.984D-03-0.961D-02-0.154D-01 0.901D-02 0.236D-01 0.410D-01 + Coeff: -0.173D+00-0.169D+00 0.129D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=4.68D-08 MaxDP=6.59D-07 DE=-2.95D-11 OVMax= 6.19D-06 + + Cycle 19 Pass 1 IDiag 1: + E= -76.6065750441326 Delta-E= -0.000000000006 Rises=F Damp=F + DIIS: error= 1.17D-07 at cycle 10 NSaved= 10. + NSaved=10 IEnMin=10 EnMin= -76.6065750441326 IErMin=10 ErrMin= 1.17D-07 + ErrMax= 1.17D-07 0.00D+00 EMaxC= 1.00D-01 BMatC= 7.84D-13 BMatP= 3.21D-12 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.632D-03 0.117D-01 0.684D-02-0.224D-01-0.433D-02 0.255D-01 + Coeff-Com: 0.309D-01-0.109D+00-0.711D+00 0.177D+01 + Coeff: -0.632D-03 0.117D-01 0.684D-02-0.224D-01-0.433D-02 0.255D-01 + Coeff: 0.309D-01-0.109D+00-0.711D+00 0.177D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=2.32D-08 MaxDP=4.07D-07 DE=-6.35D-12 OVMax= 1.62D-06 + + Cycle 20 Pass 1 IDiag 1: + E= -76.6065750441344 Delta-E= -0.000000000002 Rises=F Damp=F + DIIS: error= 3.78D-08 at cycle 11 NSaved= 11. + NSaved=11 IEnMin=11 EnMin= -76.6065750441344 IErMin=11 ErrMin= 3.78D-08 + ErrMax= 3.78D-08 0.00D+00 EMaxC= 1.00D-01 BMatC= 5.39D-14 BMatP= 7.84D-13 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.129D-04-0.505D-03 0.333D-05 0.213D-02-0.114D-02-0.726D-02 + Coeff-Com: 0.143D-01 0.302D-01-0.810D-01-0.188D+00 0.123D+01 + Coeff: -0.129D-04-0.505D-03 0.333D-05 0.213D-02-0.114D-02-0.726D-02 + Coeff: 0.143D-01 0.302D-01-0.810D-01-0.188D+00 0.123D+01 + Gap= 0.444 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=6.27D-09 MaxDP=1.20D-07 DE=-1.86D-12 OVMax= 4.26D-07 + + SCF Done: E(UM062X) = -76.6065750441 A.U. after 20 cycles + NFock= 20 Conv=0.63D-08 -V/T= 2.0055 + = 0.0000 = 0.0000 = 0.5000 = 0.7750 S= 0.5124 + = 0.000000000000E+00 + KE= 7.618939806922D+01 PE=-2.183734898316D+02 EE= 4.526468597607D+01 + Annihilation of the first spin contaminant: + S**2 before annihilation 0.7750, after 0.7504 + Leave Link 502 at Sat Jan 6 14:15:50 2024, MaxMem= 671088640 cpu: 1456.6 elap: 91.4 + (Enter /shared/centos7/gaussian/g16/l801.exe) + DoSCS=F DFT=T ScalE2(SS,OS)= 1.000000 1.000000 + Range of M.O.s used for correlation: 1 74 + NBasis= 74 NAE= 7 NBE= 6 NFC= 0 NFV= 0 + NROrb= 74 NOA= 7 NOB= 6 NVA= 67 NVB= 68 + + **** Warning!!: The largest alpha MO coefficient is 0.21626521D+02 + + + **** Warning!!: The largest beta MO coefficient is 0.22388322D+02 + + Leave Link 801 at Sat Jan 6 14:15:50 2024, MaxMem= 671088640 cpu: 3.8 elap: 0.3 + (Enter /shared/centos7/gaussian/g16/l1101.exe) + Using compressed storage, NAtomX= 3. + Will process 4 centers per pass. + Leave Link 1101 at Sat Jan 6 14:15:53 2024, MaxMem= 671088640 cpu: 46.8 elap: 3.0 + (Enter /shared/centos7/gaussian/g16/l1102.exe) + Symmetrizing basis deriv contribution to polar: + IMax=3 JMax=2 DiffMx= 0.00D+00 + Leave Link 1102 at Sat Jan 6 14:15:54 2024, MaxMem= 671088640 cpu: 5.3 elap: 0.4 + (Enter /shared/centos7/gaussian/g16/l1110.exe) + Forming Gx(P) for the SCF density, NAtomX= 3. + Integral derivatives from FoFJK, PRISM(SPDF). + Do as many integral derivatives as possible in FoFJK. + G2DrvN: MDV= 671088300. + G2DrvN: will do 4 centers at a time, making 1 passes. + Calling FoFCou, ICntrl= 3107 FMM=F I1Cent= 0 AccDes= 0.00D+00. + FoFJK: IHMeth= 1 ICntrl= 3107 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F + IRaf= 0 NMat= 1 IRICut= 1 DoRegI=T DoRafI=F ISym2E= 1 IDoP0=0 IntGTp=1. + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 3107 IOpCl= 1 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + End of G2Drv F.D. properties file 721 does not exist. + End of G2Drv F.D. properties file 722 does not exist. + End of G2Drv F.D. properties file 788 does not exist. + Leave Link 1110 at Sat Jan 6 14:16:00 2024, MaxMem= 671088640 cpu: 95.9 elap: 6.1 + (Enter /shared/centos7/gaussian/g16/l1002.exe) + Minotr: UHF open shell wavefunction. + IDoAtm=111 + Direct CPHF calculation. + Differentiating once with respect to nuclear coordinates. + Using symmetry in CPHF. + Requested convergence is 1.0D-08 RMS, and 1.0D-07 maximum. + Secondary convergence is 1.0D-12 RMS, and 1.0D-12 maximum. + NewPWx=T KeepS1=F KeepF1=F KeepIn=T MapXYZ=F SortEE=F KeepMc=T. + 881 words used for storage of precomputed grid. + Keep R1 and R2 ints in memory in symmetry-blocked form, NReq=25674046. + FoFCou: FMM=F IPFlag= 0 FMFlag= 0 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 600 IOpCl= 0 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 2775 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + MDV= 671088640 using IRadAn= 1. + Solving linear equations simultaneously, MaxMat= 0. + There are 12 degrees of freedom in the 1st order CPHF. IDoFFX=6 NUNeed= 0. + 6 vectors produced by pass 0 Test12= 7.31D-15 8.33D-09 XBig12= 2.39D-01 1.48D-01. + AX will form 6 AO Fock derivatives at one time. + 6 vectors produced by pass 1 Test12= 7.31D-15 8.33D-09 XBig12= 6.82D-02 1.14D-01. + 6 vectors produced by pass 2 Test12= 7.31D-15 8.33D-09 XBig12= 2.56D-03 1.55D-02. + 6 vectors produced by pass 3 Test12= 7.31D-15 8.33D-09 XBig12= 7.60D-04 1.44D-02. + 6 vectors produced by pass 4 Test12= 7.31D-15 8.33D-09 XBig12= 4.83D-05 2.44D-03. + 6 vectors produced by pass 5 Test12= 7.31D-15 8.33D-09 XBig12= 5.69D-07 2.34D-04. + 6 vectors produced by pass 6 Test12= 7.31D-15 8.33D-09 XBig12= 1.08D-08 3.71D-05. + 6 vectors produced by pass 7 Test12= 7.31D-15 8.33D-09 XBig12= 1.54D-10 3.02D-06. + 4 vectors produced by pass 8 Test12= 7.31D-15 8.33D-09 XBig12= 2.75D-12 4.12D-07. + 1 vectors produced by pass 9 Test12= 7.31D-15 8.33D-09 XBig12= 4.02D-14 6.55D-08. + InvSVY: IOpt=1 It= 1 EMax= 2.22D-16 + Solved reduced A of dimension 53 with 6 vectors. + End of Minotr F.D. properties file 721 does not exist. + End of Minotr F.D. properties file 722 does not exist. + End of Minotr F.D. properties file 788 does not exist. + Leave Link 1002 at Sat Jan 6 14:16:31 2024, MaxMem= 671088640 cpu: 487.1 elap: 30.6 + (Enter /shared/centos7/gaussian/g16/l601.exe) + Copying SCF densities to generalized density rwf, IOpCl= 1 IROHF=0. + + ********************************************************************** + + Population analysis using the SCF density. + + ********************************************************************** + + Orbital symmetries: + Alpha Orbitals: + Occupied (A') (A') (A') (A') (A') (A') (A") + Virtual (A') (A") (A') (A') (A') (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A') (A") (A') (A') + (A") (A') (A') (A") (A') (A') (A') (A") (A') (A') + (A") (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A") (A') (A") (A') (A") (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A") (A') (A') (A') + (A") (A') (A") (A') (A') (A') (A') + Beta Orbitals: + Occupied (A') (A') (A') (A') (A') (A") + Virtual (A') (A') (A") (A') (A') (A') (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A') (A") (A') + (A') (A') (A") (A') (A") (A') (A') (A') (A") (A') + (A') (A") (A') (A") (A') (A') (A") (A') (A') (A") + (A') (A") (A') (A") (A') (A") (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A') (A") (A') (A") (A') (A') (A') (A') + The electronic state is 2-A'. + Alpha occ. eigenvalues -- -10.60458 -10.56273 -0.87561 -0.63276 -0.46875 + Alpha occ. eigenvalues -- -0.38166 -0.38166 + Alpha virt. eigenvalues -- 0.06254 0.06254 0.09444 0.22979 0.26826 + Alpha virt. eigenvalues -- 0.32470 0.32470 0.44313 0.44313 0.45152 + Alpha virt. eigenvalues -- 0.48033 0.62201 0.62201 0.71232 0.71246 + Alpha virt. eigenvalues -- 0.72009 0.82195 0.92568 0.92568 1.06098 + Alpha virt. eigenvalues -- 1.06311 1.06312 1.38209 1.38209 1.49403 + Alpha virt. eigenvalues -- 1.66701 2.00418 2.00418 2.20628 2.34201 + Alpha virt. eigenvalues -- 2.34201 2.38003 2.44944 2.44944 2.51665 + Alpha virt. eigenvalues -- 2.51665 2.59357 2.66657 2.66657 2.85504 + Alpha virt. eigenvalues -- 2.90662 2.90662 2.91317 2.91318 2.92202 + Alpha virt. eigenvalues -- 2.92202 3.03362 3.03362 3.26611 3.26611 + Alpha virt. eigenvalues -- 3.32957 3.32958 3.49848 3.83816 3.83816 + Alpha virt. eigenvalues -- 3.95333 3.96470 3.96470 4.36775 4.69917 + Alpha virt. eigenvalues -- 4.69917 5.26750 5.57079 5.57080 5.95394 + Alpha virt. eigenvalues -- 7.54174 14.65840 + Beta occ. eigenvalues -- -10.58875 -10.56132 -0.84908 -0.61977 -0.36148 + Beta occ. eigenvalues -- -0.36148 + Beta virt. eigenvalues -- -0.19494 0.08159 0.08160 0.09555 0.15421 + Beta virt. eigenvalues -- 0.25232 0.31985 0.31985 0.43712 0.43712 + Beta virt. eigenvalues -- 0.45366 0.47489 0.62257 0.62257 0.69511 + Beta virt. eigenvalues -- 0.71387 0.71392 0.77180 0.92339 0.92340 + Beta virt. eigenvalues -- 1.00162 1.04651 1.04652 1.36626 1.36627 + Beta virt. eigenvalues -- 1.48686 1.62525 2.00849 2.00849 2.19593 + Beta virt. eigenvalues -- 2.32531 2.32531 2.36142 2.44285 2.44285 + Beta virt. eigenvalues -- 2.51528 2.51528 2.58277 2.70228 2.70228 + Beta virt. eigenvalues -- 2.76007 2.88545 2.88545 2.91405 2.91405 + Beta virt. eigenvalues -- 2.91725 2.91725 3.05705 3.05706 3.25455 + Beta virt. eigenvalues -- 3.25455 3.32369 3.32369 3.43565 3.82623 + Beta virt. eigenvalues -- 3.82623 3.92388 3.95249 3.95250 4.32935 + Beta virt. eigenvalues -- 4.66385 4.66386 5.25218 5.54181 5.54181 + Beta virt. eigenvalues -- 5.94060 7.52152 14.61498 + Condensed to atoms (all electrons): + 1 2 3 + 1 C 4.850592 0.863227 0.384438 + 2 C 0.863227 5.280366 -0.059097 + 3 H 0.384438 -0.059097 0.491905 + Atomic-Atomic Spin Densities. + 1 2 3 + 1 C -0.149549 -0.065412 0.006625 + 2 C -0.065412 1.258920 -0.000874 + 3 H 0.006625 -0.000874 0.009951 + Mulliken charges and spin densities: + 1 2 + 1 C -0.098258 -0.208336 + 2 C -0.084497 1.192635 + 3 H 0.182754 0.015701 + Sum of Mulliken charges = -0.00000 1.00000 + Mulliken charges and spin densities with hydrogens summed into heavy atoms: + 1 2 + 1 C 0.084497 -0.192635 + 2 C -0.084497 1.192635 + APT charges: + 1 + 1 C -0.420088 + 2 C 0.016547 + 3 H 0.403541 + Sum of APT charges = -0.00000 + APT charges with hydrogens summed into heavy atoms: + 1 + 1 C -0.016547 + 2 C 0.016547 + Electronic spatial extent (au): = 49.5378 + Charge= -0.0000 electrons + Dipole moment (field-independent basis, Debye): + X= -0.0011 Y= 0.7561 Z= -0.0000 Tot= 0.7561 + Quadrupole moment (field-independent basis, Debye-Ang): + XX= -12.8151 YY= -8.1666 ZZ= -12.8151 + XY= -0.0086 XZ= -0.0000 YZ= 0.0000 + Traceless Quadrupole moment (field-independent basis, Debye-Ang): + XX= -1.5495 YY= 3.0990 ZZ= -1.5495 + XY= -0.0086 XZ= -0.0000 YZ= 0.0000 + Octapole moment (field-independent basis, Debye-Ang**2): + XXX= -0.0016 YYY= 4.6943 ZZZ= -0.0000 XYY= -0.0067 + XXY= 0.4841 XXZ= -0.0000 XZZ= -0.0005 YZZ= 0.4841 + YYZ= -0.0000 XYZ= 0.0000 + Hexadecapole moment (field-independent basis, Debye-Ang**3): + XXXX= -15.2493 YYYY= -36.3419 ZZZZ= -15.2493 XXXY= 0.0041 + XXXZ= -0.0000 YYYX= -0.0144 YYYZ= 0.0000 ZZZX= -0.0000 + ZZZY= 0.0000 XXYY= -10.0560 XXZZ= -5.0831 YYZZ= -10.0560 + XXYZ= 0.0000 YYXZ= -0.0000 ZZXY= 0.0014 + N-N= 2.031283074221D+01 E-N=-2.183734897572D+02 KE= 7.618939806922D+01 + Symmetry A' KE= 7.392419229578D+01 + Symmetry A" KE= 2.265205773448D+00 + Symmetry A' SP= 1.000000000000D+00 + Symmetry A" SP= 1.830074652476D-14 + Exact polarizability: 0.000 0.000 0.000 0.000 0.000 0.000 + Approx polarizability: 14.984 0.022 37.904 0.000 -0.000 14.984 + Isotropic Fermi Contact Couplings + Atom a.u. MegaHertz Gauss 10(-4) cm-1 + 1 C(13) 0.19473 218.91043 78.11269 73.02066 + 2 C(13) 0.96020 1079.44745 385.17369 360.06491 + 3 H(1) 0.01091 48.76224 17.39958 16.26533 + -------------------------------------------------------- + Center ---- Spin Dipole Couplings ---- + 3XX-RR 3YY-RR 3ZZ-RR + -------------------------------------------------------- + 1 Atom -0.180814 0.361631 -0.180817 + 2 Atom -0.363663 0.727331 -0.363667 + 3 Atom -0.005600 0.011200 -0.005600 + -------------------------------------------------------- + XY XZ YZ + -------------------------------------------------------- + 1 Atom 0.000563 -0.000000 -0.000000 + 2 Atom -0.002110 0.000000 -0.000000 + 3 Atom -0.000026 0.000000 -0.000000 + -------------------------------------------------------- + + + --------------------------------------------------------------------------------- + Anisotropic Spin Dipole Couplings in Principal Axis System + --------------------------------------------------------------------------------- + + Atom a.u. MegaHertz Gauss 10(-4) cm-1 Axes + + Baa -0.1808 -24.264 -8.658 -8.094 0.0000 0.0000 1.0000 + 1 C(13) Bbb -0.1808 -24.264 -8.658 -8.093 1.0000 -0.0010 -0.0000 + Bcc 0.3616 48.527 17.316 16.187 0.0010 1.0000 -0.0000 + + Baa -0.3637 -48.801 -17.413 -16.278 1.0000 0.0019 -0.0000 + 2 C(13) Bbb -0.3637 -48.801 -17.413 -16.278 0.0000 0.0000 1.0000 + Bcc 0.7273 97.601 34.827 32.556 -0.0019 1.0000 -0.0000 + + Baa -0.0056 -2.988 -1.066 -0.997 0.0000 0.0000 1.0000 + 3 H(1) Bbb -0.0056 -2.988 -1.066 -0.997 1.0000 0.0015 0.0000 + Bcc 0.0112 5.976 2.132 1.993 -0.0015 1.0000 -0.0000 + + + --------------------------------------------------------------------------------- + + No NMR shielding tensors so no spin-rotation constants. + Leave Link 601 at Sat Jan 6 14:16:38 2024, MaxMem= 671088640 cpu: 111.4 elap: 7.0 + (Enter /shared/centos7/gaussian/g16/l701.exe) + SCFChk: SCF convergence 6.27D-09 required 1.00D-08 + ... and contract with generalized density number 0. + Compute integral second derivatives. + Entering OneElI... + Calculate overlap and kinetic energy integrals + NBasis = 85 MinDer = 2 MaxDer = 2 + Requested accuracy = 0.1000D-12 + PrmmSu-InSpLW: IPartL= 0 NPrtUS= 24 NPrtUL= 1 DoSpLW=F IThBeg= 0 IThEnd= 23 NThAct= 24. + PrsmSu: NPrtUS= 24 ThrOK=T IAlg=1 NPAlg=1 LenDen= 0 ISkipM=0 DoSpLW=F IThBeg= 0 IThEnd= 23. + Prism: IPart= 0 DynPar=F LinDyn=F Incr= 1. + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 9 NShTot= 19 NBatch= 18 AvBLen= 1.1 + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 0 NShTot= 44 NBatch= 41 AvBLen= 1.1 + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 17 NShTot= 6 NBatch= 6 AvBLen= 1.0 + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 22 NShTot= 3 NBatch= 3 AvBLen= 1.0 + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 12 NShTot= 7 NBatch= 7 AvBLen= 1.0 + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 14 NShTot= 7 NBatch= 7 AvBLen= 1.0 + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 1 NShTot= 36 NBatch= 33 AvBLen= 1.1 + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 18 NShTot= 5 NBatch= 5 AvBLen= 1.0 + IPart= 16 NShTot= 6 NBatch= 6 AvBLen= 1.0 + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 19 NShTot= 5 NBatch= 5 AvBLen= 1.0 + IPart= 20 NShTot= 5 NBatch= 5 AvBLen= 1.0 + IPart= 6 NShTot= 19 NBatch= 18 AvBLen= 1.1 + IPart= 15 NShTot= 6 NBatch= 6 AvBLen= 1.0 + IPart= 8 NShTot= 19 NBatch= 18 AvBLen= 1.1 + IPart= 2 NShTot= 30 NBatch= 27 AvBLen= 1.1 + PRISM was handed 27947372 working-precision words and 351 shell-pairs + IPart= 10 NShTot= 15 NBatch= 14 AvBLen= 1.1 + IPart= 11 NShTot= 15 NBatch= 14 AvBLen= 1.1 + IPart= 23 NShTot= 3 NBatch= 3 AvBLen= 1.0 + IPart= 3 NShTot= 27 NBatch= 24 AvBLen= 1.1 + IPart= 5 NShTot= 22 NBatch= 19 AvBLen= 1.2 + IPart= 7 NShTot= 19 NBatch= 18 AvBLen= 1.1 + IPart= 13 NShTot= 7 NBatch= 7 AvBLen= 1.0 + IPart= 21 NShTot= 3 NBatch= 3 AvBLen= 1.0 + IPart= 4 NShTot= 23 NBatch= 20 AvBLen= 1.2 + PrSmSu: NxtVal= 25. + Entering OneElI... + Calculate potential energy integrals + NBasis = 85 MinDer = 2 MaxDer = 2 + Requested accuracy = 0.1000D-12 + PrmmSu-InSpLW: IPartL= 0 NPrtUS= 24 NPrtUL= 1 DoSpLW=F IThBeg= 0 IThEnd= 23 NThAct= 24. + PrsmSu: NPrtUS= 24 ThrOK=T IAlg=1 NPAlg=1 LenDen= 0 ISkipM=0 DoSpLW=F IThBeg= 0 IThEnd= 23. + Prism: IPart= 0 DynPar=F LinDyn=F Incr= 1. + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + PRISM was handed 27948069 working-precision words and 351 shell-pairs + IPart= 12 NShTot= 24 NBatch= 8 AvBLen= 3.0 + IPart= 16 NShTot= 18 NBatch= 6 AvBLen= 3.0 + IPart= 15 NShTot= 18 NBatch= 6 AvBLen= 3.0 + IPart= 9 NShTot= 57 NBatch= 19 AvBLen= 3.0 + IPart= 0 NShTot= 135 NBatch= 45 AvBLen= 3.0 + IPart= 22 NShTot= 9 NBatch= 3 AvBLen= 3.0 + IPart= 10 NShTot= 45 NBatch= 15 AvBLen= 3.0 + IPart= 11 NShTot= 45 NBatch= 15 AvBLen= 3.0 + IPart= 8 NShTot= 57 NBatch= 19 AvBLen= 3.0 + IPart= 17 NShTot= 18 NBatch= 6 AvBLen= 3.0 + IPart= 14 NShTot= 21 NBatch= 7 AvBLen= 3.0 + IPart= 20 NShTot= 15 NBatch= 5 AvBLen= 3.0 + IPart= 19 NShTot= 15 NBatch= 5 AvBLen= 3.0 + IPart= 7 NShTot= 57 NBatch= 19 AvBLen= 3.0 + IPart= 23 NShTot= 9 NBatch= 3 AvBLen= 3.0 + IPart= 2 NShTot= 81 NBatch= 27 AvBLen= 3.0 + IPart= 1 NShTot= 114 NBatch= 38 AvBLen= 3.0 + IPart= 13 NShTot= 21 NBatch= 7 AvBLen= 3.0 + IPart= 4 NShTot= 69 NBatch= 23 AvBLen= 3.0 + IPart= 5 NShTot= 66 NBatch= 22 AvBLen= 3.0 + IPart= 21 NShTot= 9 NBatch= 3 AvBLen= 3.0 + IPart= 18 NShTot= 15 NBatch= 5 AvBLen= 3.0 + IPart= 3 NShTot= 78 NBatch= 26 AvBLen= 3.0 + IPart= 6 NShTot= 57 NBatch= 19 AvBLen= 3.0 + PrSmSu: NxtVal= 25. + Polarizability after L701: + 1 2 3 + 1 0.000000D+00 + 2 0.000000D+00 0.000000D+00 + 3 0.000000D+00 0.000000D+00 0.000000D+00 + Dipole Derivatives after L701: + 1 2 3 4 5 + 1 -0.546477D-01 0.181150D-02 0.000000D+00 -0.798261D-01 -0.628590D-03 + 2 0.273070D-02 -0.115097D+01 0.000000D+00 0.160106D-04 0.209293D+00 + 3 0.000000D+00 0.000000D+00 -0.546440D-01 0.000000D+00 0.000000D+00 + 6 7 8 9 + 1 0.000000D+00 0.134474D+00 -0.118291D-02 0.000000D+00 + 2 0.000000D+00 -0.274672D-02 0.941679D+00 0.000000D+00 + 3 -0.798260D-01 0.000000D+00 0.000000D+00 0.134470D+00 + Hessian after L701: + 1 2 3 4 5 + 1 0.109476D+02 + 2 0.441268D-02 -0.173737D+01 + 3 0.000000D+00 0.000000D+00 0.109476D+02 + 4 -0.899052D+01 0.987890D-05 0.000000D+00 0.890548D+01 + 5 0.871825D-03 0.228587D+01 0.000000D+00 -0.777772D-03 -0.204821D+01 + 6 0.000000D+00 0.000000D+00 -0.899053D+01 0.000000D+00 0.000000D+00 + 7 -0.195706D+01 -0.442256D-02 0.000000D+00 0.850410D-01 -0.940533D-04 + 8 -0.528451D-02 -0.548503D+00 0.000000D+00 0.767893D-03 -0.237663D+00 + 9 0.000000D+00 0.000000D+00 -0.195707D+01 0.000000D+00 0.000000D+00 + 6 7 8 9 + 6 0.890548D+01 + 7 0.000000D+00 0.187202D+01 + 8 0.000000D+00 0.451662D-02 0.786167D+00 + 9 0.850420D-01 0.000000D+00 0.000000D+00 0.187203D+01 + Leave Link 701 at Sat Jan 6 14:16:40 2024, MaxMem= 671088640 cpu: 28.3 elap: 1.8 + (Enter /shared/centos7/gaussian/g16/l702.exe) + L702 exits ... SP integral derivatives will be done elsewhere. + Leave Link 702 at Sat Jan 6 14:16:40 2024, MaxMem= 671088640 cpu: 2.7 elap: 0.2 + (Enter /shared/centos7/gaussian/g16/l703.exe) + Integral derivatives from FoFJK, PRISM(SPDF). + Compute integral second derivatives, UseDBF=F ICtDFT= 0. + ICntrl= 100147. + Calling FoFJK, ICntrl= 100147 FMM=F ISym2X=1 I1Cent= 0 IOpClX= 1 NMat=1 NMatS=1 NMatT=0. + FoFJK: IHMeth= 1 ICntrl= 100147 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F + IRaf= 0 NMat= 1 IRICut= 1 DoRegI=T DoRafI=F ISym2E= 1 IDoP0=0 IntGTp=1. + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 800 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 100147 IOpCl= 1 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + FoFCou: KetSym=F NOpSet= 2 NOpAb=2 NOp= 2. + FoFCou: CnvScl= 1.00D+00 Thresh= 1.00D-08 IAcrcy= 12. + PrismS was handed 671034481 working-precision words and 351 shell-pairs + FoFCou: LinMIO=F DoNuc=F BraDBF=F KetDBF=F HaveP=T PDBF=F HaveZ=T HaveW=F + NIJTC = 10 NIJTAt= 0 NIJTCD= 0 NIJTT = 10 + IJTBeg= 1 IJTEnd= 10 KLTBeg= 1 KLTEnd= 10 + IPTBeg= 1 IPTEnd= 10 IPTBCv= 1 IPTECv= 10 + IZTBeg= 1 IZTEnd= 10 IZTBCv= 1 IZTECv= 10 + IWTBeg= 11 IWTEnd= 10 IWTBCv= 11 IWTECv= 10 + INTBeg= 1 INTEnd= 0 IFTBCv= 1 IFTECv= 10 + NCel replicated for PrismC: 1 + CoulSu-InSpLW: IPartL= 0 NPrtUS= 24 NPrtUL= 1 DoSpLW=F IThBeg= 0 IThEnd= 23 NThAct= 24. + CoulSu: IncDef= 1024 NBBP= 61776 NTPThr= 100 NPartT= 24 Incr= 25 LDynOK=F GPUOK=T. + CoulSu: NPrtUS= 24 ThrOK=T IAlg=1 NPAlg=1 LenDen= 0 LWGrdD= 0 DoCopy=F ISkipM=0 + DoSpLW=F IThBeg= 0 IThEnd= 23. + Enter PrismC: IPart= 0 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 0 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 9 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 9 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 20 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 12 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 12 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 8 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 20 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC: IPart= 8 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 19 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 19 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 7 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 18 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 15 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 11 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 13 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 18 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC: IPart= 15 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC: IPart= 7 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC: IPart= 11 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC: IPart= 13 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 2 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 2 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 17 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 17 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 6 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 6 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 23 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 10 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 22 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 4 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 23 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC: IPart= 10 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC: IPart= 4 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC: IPart= 22 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 21 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 21 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 14 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 5 JobTyp=22 DoJE=F Cont=F. + Enter PrismC: IPart= 16 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 14 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC: IPart= 5 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 1 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 1 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + PrismC: IPart= 16 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 3 JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 3 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948134 working-precision words and 351 shell-pairs + IPart= 15 NShTot= 2427 NShNF= 2427 NShFF= 0 MinMC= 7 + NShCPU= 2427 NBCPU= 563 AvBCPU= 4.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 20 NShTot= 2292 NShNF= 2292 NShFF= 0 MinMC= 7 + NShCPU= 2292 NBCPU= 503 AvBCPU= 4.6 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 9 NShTot= 2493 NShNF= 2493 NShFF= 0 MinMC= 7 + NShCPU= 2493 NBCPU= 638 AvBCPU= 3.9 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 23 NShTot= 2245 NShNF= 2245 NShFF= 0 MinMC= 7 + NShCPU= 2245 NBCPU= 486 AvBCPU= 4.6 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 11 NShTot= 2548 NShNF= 2548 NShFF= 0 MinMC= 7 + NShCPU= 2548 NBCPU= 625 AvBCPU= 4.1 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 6 NShTot= 2688 NShNF= 2688 NShFF= 0 MinMC= 7 + NShCPU= 2688 NBCPU= 708 AvBCPU= 3.8 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 12 NShTot= 2459 NShNF= 2459 NShFF= 0 MinMC= 7 + NShCPU= 2459 NBCPU= 570 AvBCPU= 4.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 13 NShTot= 2450 NShNF= 2450 NShFF= 0 MinMC= 7 + NShCPU= 2450 NBCPU= 572 AvBCPU= 4.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 0 NShTot= 3006 NShNF= 3006 NShFF= 0 MinMC= 7 + NShCPU= 3006 NBCPU= 933 AvBCPU= 3.2 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 17 NShTot= 2385 NShNF= 2385 NShFF= 0 MinMC= 7 + NShCPU= 2385 NBCPU= 556 AvBCPU= 4.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 7 NShTot= 2673 NShNF= 2673 NShFF= 0 MinMC= 7 + NShCPU= 2673 NBCPU= 707 AvBCPU= 3.8 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 5 NShTot= 2724 NShNF= 2724 NShFF= 0 MinMC= 7 + NShCPU= 2724 NBCPU= 726 AvBCPU= 3.8 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 2 NShTot= 2849 NShNF= 2849 NShFF= 0 MinMC= 7 + NShCPU= 2849 NBCPU= 821 AvBCPU= 3.5 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 19 NShTot= 2338 NShNF= 2338 NShFF= 0 MinMC= 7 + NShCPU= 2338 NBCPU= 540 AvBCPU= 4.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 21 NShTot= 2174 NShNF= 2174 NShFF= 0 MinMC= 7 + NShCPU= 2174 NBCPU= 465 AvBCPU= 4.7 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 14 NShTot= 2428 NShNF= 2428 NShFF= 0 MinMC= 7 + NShCPU= 2428 NBCPU= 569 AvBCPU= 4.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 8 NShTot= 2634 NShNF= 2634 NShFF= 0 MinMC= 7 + NShCPU= 2634 NBCPU= 677 AvBCPU= 3.9 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 16 NShTot= 2402 NShNF= 2402 NShFF= 0 MinMC= 7 + NShCPU= 2402 NBCPU= 555 AvBCPU= 4.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 22 NShTot= 2258 NShNF= 2258 NShFF= 0 MinMC= 7 + NShCPU= 2258 NBCPU= 487 AvBCPU= 4.6 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 18 NShTot= 2354 NShNF= 2354 NShFF= 0 MinMC= 7 + NShCPU= 2354 NBCPU= 545 AvBCPU= 4.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 4 NShTot= 2751 NShNF= 2751 NShFF= 0 MinMC= 7 + NShCPU= 2751 NBCPU= 734 AvBCPU= 3.7 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 10 NShTot= 2564 NShNF= 2564 NShFF= 0 MinMC= 7 + NShCPU= 2564 NBCPU= 631 AvBCPU= 4.1 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 1 NShTot= 2931 NShNF= 2931 NShFF= 0 MinMC= 7 + NShCPU= 2931 NBCPU= 891 AvBCPU= 3.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 3 NShTot= 2846 NShNF= 2846 NShFF= 0 MinMC= 7 + NShCPU= 2846 NBCPU= 818 AvBCPU= 3.5 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + CoulSu: NxtVal= 601 LenVP= 27948135 MinMC= 7. + ReadGW: IGet=0 IStart= 1 Next= 1 LGW= 0. + Remaining memory in FofDFT 639.99 Mw + CkSvGd: ISavGI= -1 IRadAn= 5 IRASav= 5 ISavGd= -1. + CalDSu-InSpLW: IPartL= 0 NPrtUS= 24 NPrtUL= 1 DoSpLW=F IThBeg= 0 IThEnd= 23 NThAct= 24. + CalDSu: NPrtUS= 24 ThrOK=T IAlg=1 NPAlg=2 DoDPD=T LenP= 3655 LenD1P= 0 GPUOK=F + ISkipM=0 DoSpLW=F IThBeg= 0 IThEnd= 23. + IPart= 0 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T. + IPart= 0 1804 of 1855 points in 3 batches and 5 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 16 1494 of 1558 points in 3 batches and 13 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 15 1768 of 1867 points in 4 batches and 19 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 19 618 of 618 points in 1 batches and 2 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 23 1538 of 1558 points in 3 batches and 9 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 11 1723 of 1780 points in 3 batches and 17 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 7 1797 of 1880 points in 4 batches and 21 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 21 912 of 940 points in 2 batches and 12 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 5 1474 of 1558 points in 3 batches and 12 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 17 1448 of 1558 points in 3 batches and 14 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 13 1659 of 1687 points in 2 batches and 13 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 1 576 of 631 points in 2 batches and 11 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 20 1474 of 1558 points in 3 batches and 16 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 18 916 of 940 points in 2 batches and 8 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 8 909 of 940 points in 2 batches and 13 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 12 2200 of 2228 points in 3 batches and 15 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 2 1372 of 1372 points in 1 batches and 3 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 10 866 of 966 points in 3 batches and 30 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 4 1195 of 1236 points in 2 batches and 4 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 14 1176 of 1236 points in 2 batches and 4 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 9 2811 of 2879 points in 4 batches and 8 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 6 1899 of 2009 points in 3 batches and 5 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 3 1127 of 1127 points in 1 batches and 3 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 22 1127 of 1127 points in 1 batches and 3 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + Polarizability after L703: + 1 2 3 + 1 0.000000D+00 + 2 0.000000D+00 0.000000D+00 + 3 0.000000D+00 0.000000D+00 0.000000D+00 + Dipole Derivatives after L703: + 1 2 3 4 5 + 1 -0.546477D-01 0.181150D-02 0.000000D+00 -0.798261D-01 -0.628590D-03 + 2 0.273070D-02 -0.115097D+01 0.000000D+00 0.160106D-04 0.209293D+00 + 3 0.000000D+00 0.000000D+00 -0.546440D-01 0.000000D+00 0.000000D+00 + 6 7 8 9 + 1 0.000000D+00 0.134474D+00 -0.118291D-02 0.000000D+00 + 2 0.000000D+00 -0.274672D-02 0.941679D+00 0.000000D+00 + 3 -0.798260D-01 0.000000D+00 0.000000D+00 0.134470D+00 + Hessian after L703: + 1 2 3 4 5 + 1 0.268905D-01 + 2 -0.177849D-02 0.155846D+01 + 3 0.000000D+00 0.000000D+00 0.268850D-01 + 4 -0.149799D-01 0.281865D-03 0.000000D+00 0.770117D-02 + 5 0.713007D-03 -0.111425D+01 0.000000D+00 -0.330761D-03 0.110290D+01 + 6 0.000000D+00 0.000000D+00 -0.149795D-01 0.000000D+00 0.000000D+00 + 7 -0.119106D-01 0.149662D-02 0.000000D+00 0.727872D-02 -0.382246D-03 + 8 0.106548D-02 -0.444213D+00 0.000000D+00 0.488954D-04 0.113532D-01 + 9 0.000000D+00 0.000000D+00 -0.119054D-01 0.000000D+00 0.000000D+00 + 6 7 8 9 + 6 0.770096D-02 + 7 0.000000D+00 0.463191D-02 + 8 0.000000D+00 -0.111437D-02 0.432860D+00 + 9 0.727859D-02 0.000000D+00 0.000000D+00 0.462683D-02 + Leave Link 703 at Sat Jan 6 14:16:46 2024, MaxMem= 671088640 cpu: 93.7 elap: 5.9 + (Enter /shared/centos7/gaussian/g16/l716.exe) + FrcOut: + IF = 70 IFX = 79 IFXYZ = 88 + IFFX = 97 IFFFX = 142 IFLen = 9 + IFFLen= 45 IFFFLn= 0 IEDerv= 142 + LEDerv= 485 IFroze= 763 ICStrt= 11905 + Dipole =-4.32954946D-04 2.97481865D-01-3.16884095D-20 + DipoleDeriv =-5.46477394D-02 2.73070443D-03 4.06723543D-22 + 1.81149604D-03-1.15097280D+00 8.46986073D-20 + 3.76947032D-22 1.53087511D-19-5.46440072D-02 + -7.98260572D-02 1.60106073D-05 5.68466630D-21 + -6.28590330D-04 2.09293383D-01-2.50371001D-20 + 5.78464835D-21-5.39835750D-20-7.98260187D-02 + 1.34473797D-01-2.74671503D-03-6.09138984D-21 + -1.18290571D-03 9.41679416D-01-5.96615071D-20 + -6.16159538D-21-9.91039365D-20 1.34470026D-01 + Polarizability= 0.00000000D+00 0.00000000D+00 0.00000000D+00 + 0.00000000D+00 0.00000000D+00 0.00000000D+00 + Quadrupole =-1.15199336D+00 2.30400073D+00-1.15200737D+00 + -6.36322587D-03-8.20897881D-18 5.06664022D-21 + Forces in standard orientation: + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 6 0.000066419 0.010563509 -0.000000000 + 2 6 -0.000039934 -0.003563749 0.000000000 + 3 1 -0.000026484 -0.006999760 -0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.010563509 RMS 0.004388006 + ***** Axes restored to original set ***** + Rotating derivatives, DoTrsp=F IDiff=-2 LEDeriv= 484 LFDPrp= 0 LDFDPr= 0. + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 6 0.010563559 -0.000057854 -0.000000000 + 2 6 -0.003563972 0.000001992 0.000000000 + 3 1 -0.006999587 0.000055862 0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.010563559 RMS 0.004388006 + Force constants in Cartesian coordinates: + 1 2 3 4 5 + 1 0.155821D+01 + 2 -0.197940D-01 0.271443D-01 + 3 0.000000D+00 0.000000D+00 0.268850D-01 + 4 -0.111409D+01 0.136437D-01 0.000000D+00 0.110274D+01 + 5 0.132125D-01 -0.151437D-01 0.000000D+00 -0.132136D-01 0.786052D-02 + 6 0.000000D+00 0.000000D+00 -0.149795D-01 0.000000D+00 0.000000D+00 + 7 -0.444123D+00 0.615033D-02 0.000000D+00 0.113487D-01 0.101266D-05 + 8 0.658147D-02 -0.120006D-01 0.000000D+00 -0.430129D-03 0.728320D-02 + 9 0.000000D+00 0.000000D+00 -0.119054D-01 0.000000D+00 0.000000D+00 + 6 7 8 9 + 6 0.770096D-02 + 7 0.000000D+00 0.432774D+00 + 8 0.000000D+00 -0.615134D-02 0.471739D-02 + 9 0.727859D-02 0.000000D+00 0.000000D+00 0.462683D-02 + Cartesian forces in FCRed: + I= 1 X= 1.056355904785D-02 Y= -5.785396351830D-05 Z= 0.000000000000D+00 + I= 2 X= -3.563971834704D-03 Y= 1.991920601011D-06 Z= 0.000000000000D+00 + I= 3 X= -6.999587213162D-03 Y= 5.586204291744D-05 Z= 0.000000000000D+00 + Cartesian force constants in FCRed: + 1 2 3 4 5 + 1 0.155821D+01 + 2 -0.197940D-01 0.271443D-01 + 3 0.000000D+00 0.000000D+00 0.268850D-01 + 4 -0.111409D+01 0.136437D-01 0.000000D+00 0.110274D+01 + 5 0.132125D-01 -0.151437D-01 0.000000D+00 -0.132136D-01 0.786052D-02 + 6 0.000000D+00 0.000000D+00 -0.149795D-01 0.000000D+00 0.000000D+00 + 7 -0.444123D+00 0.615033D-02 0.000000D+00 0.113487D-01 0.101266D-05 + 8 0.658147D-02 -0.120006D-01 0.000000D+00 -0.430129D-03 0.728320D-02 + 9 0.000000D+00 0.000000D+00 -0.119054D-01 0.000000D+00 0.000000D+00 + 6 7 8 9 + 6 0.770096D-02 + 7 0.000000D+00 0.432774D+00 + 8 0.000000D+00 -0.615134D-02 0.471739D-02 + 9 0.727859D-02 0.000000D+00 0.000000D+00 0.462683D-02 + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + Internal forces: + 1 + 1 -0.528200D-02 + 2 0.528141D-02 + 3 -0.775523D-04 + 4 0.000000D+00 + Internal force constants: + 1 2 3 4 + 1 0.389625D+00 + 2 -0.389617D+00 0.389610D+00 + 3 0.108865D-02 -0.853309D-03 0.306065D-01 + 4 0.000000D+00 0.000000D+00 0.000000D+00 0.305832D-01 + Force constants in internal coordinates: + 1 2 3 4 + 1 0.389625D+00 + 2 -0.389617D+00 0.389610D+00 + 3 0.108865D-02 -0.853309D-03 0.306065D-01 + 4 0.000000D+00 0.000000D+00 0.000000D+00 0.305832D-01 + Final forces over variables, Energy=-7.66065750D+01: + -5.28200207D-03 5.28140909D-03-7.75522994D-05-6.15280082D-17 + Leave Link 716 at Sat Jan 6 14:16:46 2024, MaxMem= 671088640 cpu: 3.9 elap: 0.4 + (Enter /shared/centos7/gaussian/g16/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Red2BG is reusing G-inverse. + Internal Forces: Max 0.005282002 RMS 0.003734931 + Search for a local minimum. + Step number 1 out of a maximum of 100 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + RMS Force = .37349D-02 SwitMx=.10000D-02 MixMth= 1 + Mixed Optimization -- RFO/linear search + Second derivative matrix not updated -- analytic derivatives used. + The second derivative matrix: + R1 R2 A1 A2 + R1 0.38962 + R2 -0.38962 0.38961 + A1 0.00109 -0.00085 0.03061 + A2 -0.00000 0.00000 0.00000 0.03058 + ITU= 0 + Eigenvalues --- 0.03058 0.03060 0.77924 + RFO step: Lambda=-7.17350351D-05 EMin= 3.05832367D-02 + Linear search not attempted -- first point. + Iteration 1 RMS(Cart)= 0.00291099 RMS(Int)= 0.00000097 + Iteration 2 RMS(Cart)= 0.00000094 RMS(Int)= 0.00000000 + ITry= 1 IFail=0 DXMaxC= 4.54D-03 DCOld= 1.00D+10 DXMaxT= 3.00D-01 DXLimC= 3.00D+00 Rises=F + ClnCor: largest displacement from symmetrization is 5.56D-17 for atom 1. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 2.26499 -0.00528 0.00000 -0.00678 -0.00678 2.25821 + R2 1.99349 0.00528 0.00000 0.00677 0.00677 2.00026 + A1 3.14433 -0.00008 0.00000 -0.00210 -0.00210 3.14223 + A2 3.14159 -0.00000 0.00000 -0.00000 0.00000 3.14159 + Item Value Threshold Converged? + Maximum Force 0.005282 0.000450 NO + RMS Force 0.003735 0.000300 NO + Maximum Displacement 0.004536 0.001800 NO + RMS Displacement 0.002911 0.001200 NO + Predicted change in Energy=-3.586752D-05 + Lowest energy point so far. Saving SCF results. + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Sat Jan 6 14:16:48 2024, MaxMem= 671088640 cpu: 22.3 elap: 1.4 + (Enter /shared/centos7/gaussian/g16/l202.exe) + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 -0.045500 0.000353 -0.000000 + 2 6 0 1.149397 -0.014853 0.000000 + 3 1 0 -1.103897 0.014500 -0.000000 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 + 1 C 0.000000 + 2 C 1.194994 0.000000 + 3 H 1.058492 2.253485 0.000000 + Stoichiometry C2H(2) + Framework group CS[SG(C2H)] + Deg. of freedom 3 + Full point group CS NOp 2 + RotChk: IX=0 Diff= 1.36D-03 + Largest Abelian subgroup CS NOp 2 + Largest concise Abelian subgroup C1 NOp 1 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 0.000052 0.470113 -0.000000 + 2 6 0 0.000052 -0.724881 0.000000 + 3 1 0 -0.000626 1.528605 -0.000000 + --------------------------------------------------------------------- + Rotational constants (GHZ): 1486707351.5879690 45.0409517 45.0409504 + Leave Link 202 at Sat Jan 6 14:16:48 2024, MaxMem= 671088640 cpu: 5.6 elap: 0.4 + (Enter /shared/centos7/gaussian/g16/l301.exe) + Standard basis: CC-pVTZ (5D, 7F) + Ernie: Thresh= 0.10000D-02 Tol= 0.10000D-05 Strict=F. + Ernie: 6 primitive shells out of 60 were deleted. + There are 59 symmetry adapted cartesian basis functions of A' symmetry. + There are 26 symmetry adapted cartesian basis functions of A" symmetry. + There are 50 symmetry adapted basis functions of A' symmetry. + There are 24 symmetry adapted basis functions of A" symmetry. + 74 basis functions, 121 primitive gaussians, 85 cartesian basis functions + 7 alpha electrons 6 beta electrons + nuclear repulsion energy 20.3503933336 Hartrees. + IExCor= 4336 DFT=T Ex+Corr=M062X ExCW=0 ScaHFX= 0.540000 + ScaDFX= 1.000000 1.000000 1.000000 1.000000 ScalE2= 1.000000 1.000000 + IRadAn= 5 IRanWt= -1 IRanGd= 0 ICorTp=0 IEmpDi= 4 + NAtoms= 3 NActive= 3 NUniq= 3 SFac= 1.00D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 2 integral format. + Two-electron integral symmetry is turned on. + Leave Link 301 at Sat Jan 6 14:16:48 2024, MaxMem= 671088640 cpu: 2.6 elap: 0.2 + (Enter /shared/centos7/gaussian/g16/l302.exe) + NPDir=0 NMtPBC= 1 NCelOv= 1 NCel= 1 NClECP= 1 NCelD= 1 + NCelK= 1 NCelE2= 1 NClLst= 1 CellRange= 0.0. + One-electron integrals computed using PRISM. + One-electron integral symmetry used in STVInt + NBasis= 74 RedAO= T EigKep= 4.23D-04 NBF= 50 24 + NBsUse= 74 1.00D-06 EigRej= -1.00D+00 NBFU= 50 24 + Precomputing XC quadrature grid using + IXCGrd= 4 IRadAn= 5 IRanWt= -1 IRanGd= 0 AccXCQ= 0.00D+00. + Generated NRdTot= 0 NPtTot= 0 NUsed= 0 NTot= 32 + NSgBfM= 85 85 85 85 85 MxSgAt= 3 MxSgA2= 3. + Leave Link 302 at Sat Jan 6 14:16:52 2024, MaxMem= 671088640 cpu: 54.0 elap: 3.4 + (Enter /shared/centos7/gaussian/g16/l303.exe) + DipDrv: MaxL=1. + Leave Link 303 at Sat Jan 6 14:16:53 2024, MaxMem= 671088640 cpu: 10.0 elap: 0.7 + (Enter /shared/centos7/gaussian/g16/l401.exe) + Initial guess from the checkpoint file: "/scratch/harris.se/guassian_scratch/Gau-22529.chk" + B after Tr= -0.000000 -0.000000 -0.000000 + Rot= 1.000000 0.000000 -0.000000 0.000248 Ang= 0.03 deg. + Guess basis will be translated and rotated to current coordinates. + JPrj=2 DoOrth=T DoCkMO=T. + Initial guess orbital symmetries: + Alpha Orbitals: + Occupied (A') (A') (A') (A') (A') (A') (A") + Virtual (A') (A") (A') (A') (A') (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A') (A") (A') (A') + (A") (A') (A') (A") (A') (A') (A') (A") (A') (A') + (A") (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A") (A') (A") (A') (A") (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A") (A') (A') (A') + (A") (A') (A") (A') (A') (A') (A') + Beta Orbitals: + Occupied (A') (A') (A') (A') (A') (A") + Virtual (A') (A') (A") (A') (A') (A') (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A') (A") (A') + (A') (A') (A") (A') (A") (A') (A') (A') (A") (A') + (A') (A") (A') (A") (A') (A') (A") (A') (A') (A") + (A') (A") (A') (A") (A') (A") (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A') (A") (A') (A") (A') (A') (A') (A') + The electronic state of the initial guess is 2-A'. + Initial guess = 0.0000 = 0.0000 = 0.5000 = 0.7749 S= 0.5124 + Leave Link 401 at Sat Jan 6 14:16:57 2024, MaxMem= 671088640 cpu: 60.4 elap: 3.8 + (Enter /shared/centos7/gaussian/g16/l502.exe) + Keep R1 and R2 ints in memory in symmetry-blocked form, NReq=25755234. + FoFCou: FMM=F IPFlag= 0 FMFlag= 0 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 600 IOpCl= 0 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 2775 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + UHF open shell SCF: + Using DIIS extrapolation, IDIIS= 1040. + NGot= 671088640 LenX= 667141186 LenY= 667133520 + Requested convergence on RMS density matrix=1.00D-08 within 900 cycles. + Requested convergence on MAX density matrix=1.00D-06. + Requested convergence on energy=1.00D-06. + No special actions if energy rises. + + Cycle 1 Pass 1 IDiag 1: + E= -76.6066005876703 + DIIS: error= 5.58D-04 at cycle 1 NSaved= 1. + NSaved= 1 IEnMin= 1 EnMin= -76.6066005876703 IErMin= 1 ErrMin= 5.58D-04 + ErrMax= 5.58D-04 0.00D+00 EMaxC= 1.00D-01 BMatC= 5.67D-05 BMatP= 5.67D-05 + IDIUse=3 WtCom= 9.94D-01 WtEn= 5.58D-03 + Coeff-Com: 0.100D+01 + Coeff-En: 0.100D+01 + Coeff: 0.100D+01 + Gap= 0.447 Goal= None Shift= 0.000 + Gap= 0.177 Goal= None Shift= 0.000 + RMSDP=3.71D-05 MaxDP=6.27D-04 OVMax= 1.32D-03 + + Cycle 2 Pass 1 IDiag 1: + E= -76.6066083778639 Delta-E= -0.000007790194 Rises=F Damp=F + DIIS: error= 2.52D-04 at cycle 2 NSaved= 2. + NSaved= 2 IEnMin= 2 EnMin= -76.6066083778639 IErMin= 2 ErrMin= 2.52D-04 + ErrMax= 2.52D-04 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.06D-05 BMatP= 5.67D-05 + IDIUse=3 WtCom= 9.97D-01 WtEn= 2.52D-03 + Coeff-Com: 0.246D+00 0.754D+00 + Coeff-En: 0.000D+00 0.100D+01 + Coeff: 0.246D+00 0.754D+00 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=1.81D-05 MaxDP=3.11D-04 DE=-7.79D-06 OVMax= 8.60D-04 + + Cycle 3 Pass 1 IDiag 1: + E= -76.6066100501215 Delta-E= -0.000001672258 Rises=F Damp=F + DIIS: error= 1.25D-04 at cycle 3 NSaved= 3. + NSaved= 3 IEnMin= 3 EnMin= -76.6066100501215 IErMin= 3 ErrMin= 1.25D-04 + ErrMax= 1.25D-04 0.00D+00 EMaxC= 1.00D-01 BMatC= 2.84D-06 BMatP= 1.06D-05 + IDIUse=3 WtCom= 9.99D-01 WtEn= 1.25D-03 + Coeff-Com: 0.309D-01 0.330D+00 0.639D+00 + Coeff-En: 0.000D+00 0.162D+00 0.838D+00 + Coeff: 0.309D-01 0.330D+00 0.640D+00 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=7.74D-06 MaxDP=1.23D-04 DE=-1.67D-06 OVMax= 4.99D-04 + + Cycle 4 Pass 1 IDiag 1: + E= -76.6066105973841 Delta-E= -0.000000547263 Rises=F Damp=F + DIIS: error= 9.06D-05 at cycle 4 NSaved= 4. + NSaved= 4 IEnMin= 4 EnMin= -76.6066105973841 IErMin= 4 ErrMin= 9.06D-05 + ErrMax= 9.06D-05 0.00D+00 EMaxC= 1.00D-01 BMatC= 7.12D-07 BMatP= 2.84D-06 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.789D-02 0.964D-01 0.369D+00 0.543D+00 + Coeff: -0.789D-02 0.964D-01 0.369D+00 0.543D+00 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=2.93D-06 MaxDP=5.46D-05 DE=-5.47D-07 OVMax= 2.02D-04 + + Cycle 5 Pass 1 IDiag 1: + E= -76.6066107789062 Delta-E= -0.000000181522 Rises=F Damp=F + DIIS: error= 1.48D-05 at cycle 5 NSaved= 5. + NSaved= 5 IEnMin= 5 EnMin= -76.6066107789062 IErMin= 5 ErrMin= 1.48D-05 + ErrMax= 1.48D-05 0.00D+00 EMaxC= 1.00D-01 BMatC= 2.08D-08 BMatP= 7.12D-07 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.389D-02-0.109D-01 0.331D-01 0.147D+00 0.835D+00 + Coeff: -0.389D-02-0.109D-01 0.331D-01 0.147D+00 0.835D+00 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=1.32D-06 MaxDP=3.63D-05 DE=-1.82D-07 OVMax= 1.06D-04 + + Cycle 6 Pass 1 IDiag 1: + E= -76.6066107906389 Delta-E= -0.000000011733 Rises=F Damp=F + DIIS: error= 6.07D-06 at cycle 6 NSaved= 6. + NSaved= 6 IEnMin= 6 EnMin= -76.6066107906389 IErMin= 6 ErrMin= 6.07D-06 + ErrMax= 6.07D-06 0.00D+00 EMaxC= 1.00D-01 BMatC= 4.52D-09 BMatP= 2.08D-08 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.735D-03-0.152D-01-0.394D-01-0.275D-01 0.191D+00 0.891D+00 + Coeff: 0.735D-03-0.152D-01-0.394D-01-0.275D-01 0.191D+00 0.891D+00 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=8.90D-07 MaxDP=1.88D-05 DE=-1.17D-08 OVMax= 9.62D-05 + + Cycle 7 Pass 1 IDiag 1: + E= -76.6066107966955 Delta-E= -0.000000006057 Rises=F Damp=F + DIIS: error= 4.87D-06 at cycle 7 NSaved= 7. + NSaved= 7 IEnMin= 7 EnMin= -76.6066107966955 IErMin= 7 ErrMin= 4.87D-06 + ErrMax= 4.87D-06 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.86D-09 BMatP= 4.52D-09 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.105D-02 0.120D-01-0.154D-02-0.608D-01-0.442D+00-0.538D+00 + Coeff-Com: 0.203D+01 + Coeff: 0.105D-02 0.120D-01-0.154D-02-0.608D-01-0.442D+00-0.538D+00 + Coeff: 0.203D+01 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=1.55D-06 MaxDP=2.36D-05 DE=-6.06D-09 OVMax= 2.01D-04 + + Cycle 8 Pass 1 IDiag 1: + E= -76.6066108036943 Delta-E= -0.000000006999 Rises=F Damp=F + DIIS: error= 2.73D-06 at cycle 8 NSaved= 8. + NSaved= 8 IEnMin= 8 EnMin= -76.6066108036943 IErMin= 8 ErrMin= 2.73D-06 + ErrMax= 2.73D-06 0.00D+00 EMaxC= 1.00D-01 BMatC= 4.30D-10 BMatP= 1.86D-09 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.534D-03 0.350D-02 0.161D-01 0.226D-01 0.685D-01-0.175D+00 + Coeff-Com: -0.399D+00 0.146D+01 + Coeff: -0.534D-03 0.350D-02 0.161D-01 0.226D-01 0.685D-01-0.175D+00 + Coeff: -0.399D+00 0.146D+01 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=7.75D-07 MaxDP=1.24D-05 DE=-7.00D-09 OVMax= 1.14D-04 + + Cycle 9 Pass 1 IDiag 1: + E= -76.6066108054059 Delta-E= -0.000000001712 Rises=F Damp=F + DIIS: error= 1.74D-06 at cycle 9 NSaved= 9. + NSaved= 9 IEnMin= 9 EnMin= -76.6066108054059 IErMin= 9 ErrMin= 1.74D-06 + ErrMax= 1.74D-06 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.54D-10 BMatP= 4.30D-10 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.504D-03-0.807D-02-0.215D-01-0.167D-01 0.466D-02 0.394D+00 + Coeff-Com: 0.378D-01-0.199D+01 0.260D+01 + Coeff: 0.504D-03-0.807D-02-0.215D-01-0.167D-01 0.466D-02 0.394D+00 + Coeff: 0.378D-01-0.199D+01 0.260D+01 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=6.39D-07 MaxDP=1.06D-05 DE=-1.71D-09 OVMax= 9.73D-05 + + Cycle 10 Pass 1 IDiag 1: + E= -76.6066108062535 Delta-E= -0.000000000848 Rises=F Damp=F + DIIS: error= 8.30D-07 at cycle 10 NSaved= 10. + NSaved=10 IEnMin=10 EnMin= -76.6066108062535 IErMin=10 ErrMin= 8.30D-07 + ErrMax= 8.30D-07 0.00D+00 EMaxC= 1.00D-01 BMatC= 3.61D-11 BMatP= 1.54D-10 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.270D-04 0.313D-02 0.422D-02-0.541D-03-0.500D-01-0.118D+00 + Coeff-Com: 0.167D+00 0.383D+00-0.142D+01 0.203D+01 + Coeff: -0.270D-04 0.313D-02 0.422D-02-0.541D-03-0.500D-01-0.118D+00 + Coeff: 0.167D+00 0.383D+00-0.142D+01 0.203D+01 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=4.76D-07 MaxDP=8.08D-06 DE=-8.48D-10 OVMax= 7.43D-05 + + Cycle 11 Pass 1 IDiag 1: + E= -76.6066108064712 Delta-E= -0.000000000218 Rises=F Damp=F + DIIS: error= 5.25D-08 at cycle 11 NSaved= 11. + NSaved=11 IEnMin=11 EnMin= -76.6066108064712 IErMin=11 ErrMin= 5.25D-08 + ErrMax= 5.25D-08 0.00D+00 EMaxC= 1.00D-01 BMatC= 3.98D-13 BMatP= 3.61D-11 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.207D-04 0.449D-07 0.602D-03 0.686D-03 0.599D-02-0.251D-02 + Coeff-Com: -0.253D-01 0.423D-01 0.669D-01-0.260D+00 0.117D+01 + Coeff: -0.207D-04 0.449D-07 0.602D-03 0.686D-03 0.599D-02-0.251D-02 + Coeff: -0.253D-01 0.423D-01 0.669D-01-0.260D+00 0.117D+01 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=3.39D-08 MaxDP=7.61D-07 DE=-2.18D-10 OVMax= 4.44D-06 + + Cycle 12 Pass 1 IDiag 1: + E= -76.6066108064721 Delta-E= -0.000000000001 Rises=F Damp=F + DIIS: error= 1.08D-08 at cycle 12 NSaved= 12. + NSaved=12 IEnMin=12 EnMin= -76.6066108064721 IErMin=12 ErrMin= 1.08D-08 + ErrMax= 1.08D-08 0.00D+00 EMaxC= 1.00D-01 BMatC= 1.64D-14 BMatP= 3.98D-13 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.106D-05-0.115D-03-0.887D-04 0.704D-04 0.223D-02 0.464D-02 + Coeff-Com: -0.939D-02-0.818D-02 0.571D-01-0.969D-01 0.108D+00 0.942D+00 + Coeff: -0.106D-05-0.115D-03-0.887D-04 0.704D-04 0.223D-02 0.464D-02 + Coeff: -0.939D-02-0.818D-02 0.571D-01-0.969D-01 0.108D+00 0.942D+00 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=1.60D-09 MaxDP=5.40D-08 DE=-8.53D-13 OVMax= 5.52D-08 + + SCF Done: E(UM062X) = -76.6066108065 A.U. after 12 cycles + NFock= 12 Conv=0.16D-08 -V/T= 2.0053 + = 0.0000 = 0.0000 = 0.5000 = 0.7745 S= 0.5122 + = 0.000000000000E+00 + KE= 7.620087136333D+01 PE=-2.184623177386D+02 EE= 4.530444223521D+01 + Annihilation of the first spin contaminant: + S**2 before annihilation 0.7745, after 0.7503 + Leave Link 502 at Sat Jan 6 14:17:44 2024, MaxMem= 671088640 cpu: 758.7 elap: 47.6 + (Enter /shared/centos7/gaussian/g16/l701.exe) + SCFChk: SCF convergence 1.60D-09 required 1.00D-08 + ... and contract with generalized density number 0. + Compute integral first derivatives. + DipInt: DoE/N= T T RetVal/Mat= T F Init=T NMatP= 1 IDeriv=0 Min/MaxMlt= 1 1 + Entering OneElI... + Multipole integrals L=1 to 1 MinM= 0 MaxM= 0. + Requested accuracy = 0.1000D-12 + PrmmSu-InSpLW: IPartL= 0 NPrtUS= 1 NPrtUL= 1 DoSpLW=F IThBeg= 0 IThEnd= 0 NThAct= 1. + PrsmSu: NPrtUS= 1 ThrOK=F IAlg=1 NPAlg=1 LenDen= 0 ISkipM=0 DoSpLW=F IThBeg= 0 IThEnd= 0. + Prism: IPart= 0 DynPar=F LinDyn=F Incr= 3. + PRISM was handed 671031846 working-precision words and 351 shell-pairs + IPart= 0 NShTot= 351 NBatch= 41 AvBLen= 8.6 + PrSmSu: NxtVal= 4. + Entering OneElI... + Calculate overlap and kinetic energy integrals + NBasis = 85 MinDer = 1 MaxDer = 1 + Requested accuracy = 0.1000D-12 + PrmmSu-InSpLW: IPartL= 0 NPrtUS= 24 NPrtUL= 1 DoSpLW=F IThBeg= 0 IThEnd= 23 NThAct= 24. + PrsmSu: NPrtUS= 24 ThrOK=T IAlg=1 NPAlg=1 LenDen= 0 ISkipM=0 DoSpLW=F IThBeg= 0 IThEnd= 23. + Prism: IPart= 0 DynPar=F LinDyn=F Incr= 1. + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + IPart= 19 NShTot= 5 NBatch= 5 AvBLen= 1.0 + IPart= 8 NShTot= 19 NBatch= 18 AvBLen= 1.1 + IPart= 22 NShTot= 3 NBatch= 3 AvBLen= 1.0 + IPart= 4 NShTot= 23 NBatch= 20 AvBLen= 1.2 + IPart= 12 NShTot= 8 NBatch= 8 AvBLen= 1.0 + IPart= 9 NShTot= 19 NBatch= 18 AvBLen= 1.1 + IPart= 21 NShTot= 3 NBatch= 3 AvBLen= 1.0 + IPart= 10 NShTot= 15 NBatch= 14 AvBLen= 1.1 + IPart= 15 NShTot= 6 NBatch= 6 AvBLen= 1.0 + IPart= 2 NShTot= 29 NBatch= 26 AvBLen= 1.1 + IPart= 5 NShTot= 22 NBatch= 19 AvBLen= 1.2 + IPart= 6 NShTot= 19 NBatch= 18 AvBLen= 1.1 + IPart= 0 NShTot= 44 NBatch= 41 AvBLen= 1.1 + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + PRISM was handed 27947496 working-precision words and 351 shell-pairs + IPart= 20 NShTot= 5 NBatch= 5 AvBLen= 1.0 + IPart= 16 NShTot= 6 NBatch= 6 AvBLen= 1.0 + IPart= 3 NShTot= 26 NBatch= 23 AvBLen= 1.1 + IPart= 13 NShTot= 7 NBatch= 7 AvBLen= 1.0 + PRISM was handed 27947496 working-precision words and 351 shell-pairs + IPart= 14 NShTot= 7 NBatch= 7 AvBLen= 1.0 + IPart= 7 NShTot= 19 NBatch= 18 AvBLen= 1.1 + IPart= 23 NShTot= 3 NBatch= 3 AvBLen= 1.0 + IPart= 18 NShTot= 5 NBatch= 5 AvBLen= 1.0 + IPart= 17 NShTot= 6 NBatch= 6 AvBLen= 1.0 + IPart= 11 NShTot= 15 NBatch= 14 AvBLen= 1.1 + IPart= 1 NShTot= 37 NBatch= 34 AvBLen= 1.1 + PrSmSu: NxtVal= 25. + Entering OneElI... + Calculate potential energy integrals + NBasis = 85 MinDer = 1 MaxDer = 1 + Requested accuracy = 0.1000D-12 + PrmmSu-InSpLW: IPartL= 0 NPrtUS= 24 NPrtUL= 1 DoSpLW=F IThBeg= 0 IThEnd= 23 NThAct= 24. + PrsmSu: NPrtUS= 24 ThrOK=T IAlg=1 NPAlg=1 LenDen= 0 ISkipM=0 DoSpLW=F IThBeg= 0 IThEnd= 23. + Prism: IPart= 0 DynPar=F LinDyn=F Incr= 1. + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + PRISM was handed 27948185 working-precision words and 351 shell-pairs + IPart= 13 NShTot= 21 NBatch= 7 AvBLen= 3.0 + IPart= 8 NShTot= 57 NBatch= 19 AvBLen= 3.0 + IPart= 12 NShTot= 24 NBatch= 8 AvBLen= 3.0 + IPart= 9 NShTot= 57 NBatch= 19 AvBLen= 3.0 + IPart= 2 NShTot= 81 NBatch= 27 AvBLen= 3.0 + IPart= 4 NShTot= 69 NBatch= 23 AvBLen= 3.0 + IPart= 10 NShTot= 45 NBatch= 15 AvBLen= 3.0 + IPart= 0 NShTot= 141 NBatch= 47 AvBLen= 3.0 + IPart= 1 NShTot= 111 NBatch= 37 AvBLen= 3.0 + IPart= 18 NShTot= 15 NBatch= 5 AvBLen= 3.0 + IPart= 22 NShTot= 9 NBatch= 3 AvBLen= 3.0 + IPart= 21 NShTot= 9 NBatch= 3 AvBLen= 3.0 + IPart= 6 NShTot= 57 NBatch= 19 AvBLen= 3.0 + IPart= 16 NShTot= 18 NBatch= 6 AvBLen= 3.0 + IPart= 20 NShTot= 15 NBatch= 5 AvBLen= 3.0 + IPart= 17 NShTot= 18 NBatch= 6 AvBLen= 3.0 + IPart= 19 NShTot= 15 NBatch= 5 AvBLen= 3.0 + IPart= 23 NShTot= 9 NBatch= 3 AvBLen= 3.0 + IPart= 14 NShTot= 21 NBatch= 7 AvBLen= 3.0 + IPart= 5 NShTot= 66 NBatch= 22 AvBLen= 3.0 + IPart= 15 NShTot= 18 NBatch= 6 AvBLen= 3.0 + IPart= 11 NShTot= 42 NBatch= 14 AvBLen= 3.0 + IPart= 7 NShTot= 57 NBatch= 19 AvBLen= 3.0 + IPart= 3 NShTot= 78 NBatch= 26 AvBLen= 3.0 + PrSmSu: NxtVal= 25. + Force l701 out + I= 0 X= -1.076934785709D-04 Y= 2.986952482948D-01 Z= 0.000000000000D+00 + I= 1 X= 2.354049184622D-03 Y= 8.221620460684D+00 Z= 0.000000000000D+00 + I= 2 X= -6.547765661449D-04 Y= -1.034757421152D+01 Z= 0.000000000000D+00 + I= 3 X= -1.699272618477D-03 Y= 2.125953750831D+00 Z= 0.000000000000D+00 + Leave Link 701 at Sat Jan 6 14:17:46 2024, MaxMem= 671088640 cpu: 20.6 elap: 1.4 + (Enter /shared/centos7/gaussian/g16/l702.exe) + L702 exits ... SP integral derivatives will be done elsewhere. + Leave Link 702 at Sat Jan 6 14:17:46 2024, MaxMem= 671088640 cpu: 3.1 elap: 0.3 + (Enter /shared/centos7/gaussian/g16/l703.exe) + Integral derivatives from FoFJK, PRISM(SPDF). + Compute integral first derivatives, UseDBF=F ICtDFT= 0. + ICntrl= 2127. + Calling FoFJK, ICntrl= 2127 FMM=F ISym2X=1 I1Cent= 0 IOpClX= 1 NMat=1 NMatS=1 NMatT=0. + FoFJK: IHMeth= 1 ICntrl= 2127 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F + IRaf= 0 NMat= 1 IRICut= 1 DoRegI=T DoRafI=F ISym2E= 1 IDoP0=0 IntGTp=1. + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 800 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 2127 IOpCl= 1 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + FoFCou: KetSym=F NOpSet= 2 NOpAb=2 NOp= 2. + FoFCou: CnvScl= 1.00D+00 Thresh= 1.00D-12 IAcrcy= 10. + PrismS was handed 671034731 working-precision words and 351 shell-pairs + FoFCou: LinMIO=F DoNuc=F BraDBF=F KetDBF=F HaveP=T PDBF=F HaveZ=T HaveW=F + NIJTC = 10 NIJTAt= 0 NIJTCD= 0 NIJTT = 10 + IJTBeg= 1 IJTEnd= 10 KLTBeg= 1 KLTEnd= 10 + IPTBeg= 1 IPTEnd= 10 IPTBCv= 1 IPTECv= 10 + IZTBeg= 1 IZTEnd= 10 IZTBCv= 1 IZTECv= 10 + IWTBeg= 11 IWTEnd= 10 IWTBCv= 11 IWTECv= 10 + INTBeg= 1 INTEnd= 0 IFTBCv= 1 IFTECv= 10 + NCel replicated for PrismC: 1 + CoulSu-InSpLW: IPartL= 0 NPrtUS= 24 NPrtUL= 1 DoSpLW=F IThBeg= 0 IThEnd= 23 NThAct= 24. + CoulSu: IncDef= 1024 NBBP= 61776 NTPThr= 100 NPartT= 24 Incr= 25 LDynOK=F GPUOK=T. + CoulSu: NPrtUS= 24 ThrOK=T IAlg=1 NPAlg=1 LenDen= 0 LWGrdD= 0 DoCopy=F ISkipM=0 + DoSpLW=F IThBeg= 0 IThEnd= 23. + Enter PrismC: IPart= 0 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 0 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 7 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 7 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 20 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 20 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 16 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 4 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 15 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 15 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 4 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 16 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 11 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 21 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 21 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 11 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 10 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 1 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 12 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 10 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 1 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 9 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 18 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 23 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 12 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 9 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 18 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 23 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 3 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 3 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 6 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 19 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 6 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 14 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 14 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 19 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 17 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 2 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 17 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + Enter PrismC: IPart= 8 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 2 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 8 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC was handed 27948223 working-precision words and 351 shell-pairs + Enter PrismC: IPart= 22 JobTyp=21 DoJE=F Cont=F. + Enter PrismC: IPart= 13 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 22 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + Enter PrismC: IPart= 5 JobTyp=21 DoJE=F Cont=F. + PrismC: IPart= 13 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC was handed 27948223 working-precision words and 351 shell-pairs + PrismC: IPart= 5 DynPar=F LinDyn=F Incr= 25 UseFst=F UseS4=T ISplat=2. + PrismC was handed 27948223 working-precision words and 351 shell-pairs + IPart= 0 NShTot= 3018 NShNF= 3018 NShFF= 0 MinMC= 7 + NShCPU= 3018 NBCPU= 912 AvBCPU= 3.3 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 21 NShTot= 2295 NShNF= 2295 NShFF= 0 MinMC= 7 + NShCPU= 2295 NBCPU= 479 AvBCPU= 4.8 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 7 NShTot= 2692 NShNF= 2692 NShFF= 0 MinMC= 7 + NShCPU= 2692 NBCPU= 691 AvBCPU= 3.9 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 16 NShTot= 2430 NShNF= 2430 NShFF= 0 MinMC= 7 + NShCPU= 2430 NBCPU= 548 AvBCPU= 4.4 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 11 NShTot= 2575 NShNF= 2575 NShFF= 0 MinMC= 7 + NShCPU= 2575 NBCPU= 611 AvBCPU= 4.2 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 15 NShTot= 2456 NShNF= 2456 NShFF= 0 MinMC= 7 + NShCPU= 2456 NBCPU= 555 AvBCPU= 4.4 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 9 NShTot= 2623 NShNF= 2623 NShFF= 0 MinMC= 7 + NShCPU= 2623 NBCPU= 653 AvBCPU= 4.0 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 19 NShTot= 2373 NShNF= 2373 NShFF= 0 MinMC= 7 + NShCPU= 2373 NBCPU= 542 AvBCPU= 4.4 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 20 NShTot= 2316 NShNF= 2316 NShFF= 0 MinMC= 7 + NShCPU= 2316 NBCPU= 492 AvBCPU= 4.7 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 13 NShTot= 2479 NShNF= 2479 NShFF= 0 MinMC= 7 + NShCPU= 2479 NBCPU= 563 AvBCPU= 4.4 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 23 NShTot= 2277 NShNF= 2277 NShFF= 0 MinMC= 7 + NShCPU= 2277 NBCPU= 479 AvBCPU= 4.8 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 12 NShTot= 2488 NShNF= 2488 NShFF= 0 MinMC= 7 + NShCPU= 2488 NBCPU= 564 AvBCPU= 4.4 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 1 NShTot= 2952 NShNF= 2952 NShFF= 0 MinMC= 7 + NShCPU= 2952 NBCPU= 875 AvBCPU= 3.4 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 6 NShTot= 2706 NShNF= 2706 NShFF= 0 MinMC= 7 + NShCPU= 2706 NBCPU= 692 AvBCPU= 3.9 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 5 NShTot= 2744 NShNF= 2744 NShFF= 0 MinMC= 7 + NShCPU= 2744 NBCPU= 710 AvBCPU= 3.9 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 14 NShTot= 2466 NShNF= 2466 NShFF= 0 MinMC= 7 + NShCPU= 2466 NBCPU= 562 AvBCPU= 4.4 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 17 NShTot= 2414 NShNF= 2414 NShFF= 0 MinMC= 7 + NShCPU= 2414 NBCPU= 549 AvBCPU= 4.4 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 3 NShTot= 2873 NShNF= 2873 NShFF= 0 MinMC= 7 + NShCPU= 2873 NBCPU= 810 AvBCPU= 3.5 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 2 NShTot= 2887 NShNF= 2887 NShFF= 0 MinMC= 7 + NShCPU= 2887 NBCPU= 813 AvBCPU= 3.6 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 22 NShTot= 2289 NShNF= 2289 NShFF= 0 MinMC= 7 + NShCPU= 2289 NBCPU= 479 AvBCPU= 4.8 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 8 NShTot= 2651 NShNF= 2651 NShFF= 0 MinMC= 7 + NShCPU= 2651 NBCPU= 657 AvBCPU= 4.0 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 10 NShTot= 2592 NShNF= 2592 NShFF= 0 MinMC= 7 + NShCPU= 2592 NBCPU= 620 AvBCPU= 4.2 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 4 NShTot= 2767 NShNF= 2767 NShFF= 0 MinMC= 7 + NShCPU= 2767 NBCPU= 717 AvBCPU= 3.9 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + IPart= 18 NShTot= 2387 NShNF= 2387 NShFF= 0 MinMC= 7 + NShCPU= 2387 NBCPU= 544 AvBCPU= 4.4 + NShGPU= 0 NBGPU= 0 AvBGPU= 0.0 + CoulSu: NxtVal= 601 LenVP= 27948224 MinMC= 7. + ReadGW: IGet=0 IStart= 1 Next= 1 LGW= 0. + Remaining memory in FofDFT 639.99 Mw + CkSvGd: ISavGI= -1 IRadAn= 5 IRASav= 5 ISavGd= -1. + CalDSu-InSpLW: IPartL= 0 NPrtUS= 24 NPrtUL= 1 DoSpLW=F IThBeg= 0 IThEnd= 23 NThAct= 24. + CalDSu: NPrtUS= 24 ThrOK=T IAlg=1 NPAlg=2 DoDPD=T LenP= 3655 LenD1P= 0 GPUOK=T + ISkipM=0 DoSpLW=F IThBeg= 0 IThEnd= 23. + IPart= 0 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T. + IPart= 13 1000 of 1101 points in 3 batches and 18 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 12 1147 of 1262 points in 3 batches and 13 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 18 1181 of 1262 points in 3 batches and 18 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 16 1180 of 1262 points in 3 batches and 11 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 10 1158 of 1275 points in 4 batches and 29 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 19 1510 of 1558 points in 3 batches and 9 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 5 1514 of 1558 points in 3 batches and 9 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 1 1466 of 1558 points in 3 batches and 19 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 0 1532 of 1558 points in 3 batches and 11 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 7 1182 of 1262 points in 3 batches and 8 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 21 1372 of 1372 points in 1 batches and 3 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 17 1510 of 1558 points in 3 batches and 12 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 4 1127 of 1127 points in 1 batches and 3 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 20 1525 of 1558 points in 3 batches and 12 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 14 1490 of 1545 points in 3 batches and 10 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 9 2175 of 2228 points in 3 batches and 18 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 22 1127 of 1127 points in 1 batches and 3 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 15 1172 of 1236 points in 2 batches and 5 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 2 1696 of 1806 points in 4 batches and 22 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 6 1198 of 1236 points in 2 batches and 6 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 3 1372 of 1372 points in 1 batches and 3 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 8 1365 of 1365 points in 1 batches and 3 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 23 1365 of 1365 points in 1 batches and 3 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + IPart= 11 2520 of 2557 points in 3 batches and 8 microbatches, Max-NSigAt= 3 Max-NSgAt2= 3 + Force at end of L703 + I= 0 X= -1.076934785709D-04 Y= 2.986952482948D-01 Z= 0.000000000000D+00 + I= 1 X= 1.837839358385D-05 Y= -4.426605421237D-05 Z= 0.000000000000D+00 + I= 2 X= -9.812135482835D-06 Y= 4.069816734168D-03 Z= 0.000000000000D+00 + I= 3 X= -8.566258101018D-06 Y= -4.025550679957D-03 Z= 0.000000000000D+00 + Leave Link 703 at Sat Jan 6 14:17:49 2024, MaxMem= 671088640 cpu: 48.0 elap: 3.1 + (Enter /shared/centos7/gaussian/g16/l716.exe) + FrcOut: + IF = 70 IFX = 79 IFXYZ = 88 + IFFX = 97 IFFFX = 97 IFLen = 9 + IFFLen= 0 IFFFLn= 0 IEDerv= 97 + LEDerv= 485 IFroze= 718 ICStrt= 11860 + Dipole =-1.07693479D-04 2.98695248D-01-2.52640143D-32 + Forces in standard orientation: + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 6 0.000018378 -0.000044266 0.000000000 + 2 6 -0.000009812 0.004069817 0.000000000 + 3 1 -0.000008566 -0.004025551 -0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.004069817 RMS 0.001908197 + ***** Axes restored to original set ***** + Rotating derivatives, DoTrsp=F IDiff=-1 LEDeriv= 484 LFDPrp= 0 LDFDPr= 0. + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 6 -0.000044029 0.000018940 -0.000000000 + 2 6 0.004069362 -0.000061598 0.000000000 + 3 1 -0.004025334 0.000042658 -0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.004069362 RMS 0.001908197 + Final forces over variables, Energy=-7.66066108D+01: + -5.28200207D-03 5.28140909D-03-7.75522994D-05-6.15280082D-17 + Leave Link 716 at Sat Jan 6 14:17:49 2024, MaxMem= 671088640 cpu: 2.1 elap: 0.2 + (Enter /shared/centos7/gaussian/g16/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Using GEDIIS/GDIIS optimizer. + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + Internal Forces: Max 0.000022150 RMS 0.000017341 + Search for a local minimum. + Step number 2 out of a maximum of 100 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + RMS Force = .17341D-04 SwitMx=.10000D-02 MixMth= 2 + Mixed Optimization -- En-DIIS/RFO-DIIS + Update second derivatives using D2CorX and points 1 2 + DE= -3.58D-05 DEPred=-3.59D-05 R= 9.97D-01 + TightC=F SS= 1.41D+00 RLast= 9.81D-03 DXNew= 5.0454D-01 2.9425D-02 + Trust test= 9.97D-01 RLast= 9.81D-03 DXMaxT set to 3.00D-01 + The second derivative matrix: + R1 R2 A1 A2 + R1 0.39146 + R2 -0.39145 0.39145 + A1 0.00000 0.00023 0.03058 + A2 -0.00000 0.00000 0.00000 0.03058 + ITU= 1 0 + Use linear search instead of GDIIS. + Eigenvalues --- 0.03058 0.03058 0.78291 + RFO step: Lambda= 0.00000000D+00 EMin= 3.05778222D-02 + Quartic linear search produced a step of -0.00372. + Iteration 1 RMS(Cart)= 0.00021172 RMS(Int)= 0.00000004 + Iteration 2 RMS(Cart)= 0.00000004 RMS(Int)= 0.00000000 + ITry= 1 IFail=0 DXMaxC= 3.45D-04 DCOld= 1.00D+10 DXMaxT= 3.00D-01 DXLimC= 3.00D+00 Rises=F + ClnCor: largest displacement from symmetrization is 1.78D-15 for atom 3. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 2.25821 0.00002 0.00003 0.00000 0.00003 2.25824 + R2 2.00026 -0.00002 -0.00003 -0.00000 -0.00003 2.00023 + A1 3.14223 -0.00001 0.00001 -0.00050 -0.00049 3.14175 + A2 3.14159 -0.00000 0.00000 0.00000 0.00000 3.14159 + Item Value Threshold Converged? + Maximum Force 0.000022 0.000450 YES + RMS Force 0.000017 0.000300 YES + Maximum Displacement 0.000345 0.001800 YES + RMS Displacement 0.000212 0.001200 YES + Predicted change in Energy=-4.266505D-09 + Optimization completed. + -- Stationary point found. + ---------------------------- + ! Optimized Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 1.195 -DE/DX = 0.0 ! + ! R2 R(1,3) 1.0585 -DE/DX = 0.0 ! + ! A1 L(2,1,3,-3,-1) 180.0367 -DE/DX = 0.0 ! + ! A2 L(2,1,3,-2,-2) 180.0 -DE/DX = 0.0 ! + -------------------------------------------------------------------------------- + Lowest energy point so far. Saving SCF results. + Largest change from initial coordinates is atom 3 0.003 Angstoms. + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Sat Jan 6 14:17:51 2024, MaxMem= 671088640 cpu: 19.2 elap: 1.5 + (Enter /shared/centos7/gaussian/g16/l202.exe) + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 -0.045500 0.000353 -0.000000 + 2 6 0 1.149397 -0.014853 -0.000000 + 3 1 0 -1.103897 0.014500 -0.000000 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 + 1 C 0.000000 + 2 C 1.194994 0.000000 + 3 H 1.058492 2.253485 0.000000 + Stoichiometry C2H(2) + Framework group CS[SG(C2H)] + Deg. of freedom 3 + Full point group CS NOp 2 + RotChk: IX=0 Diff= 3.16D-16 + Largest Abelian subgroup CS NOp 2 + Largest concise Abelian subgroup C1 NOp 1 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 0.000052 0.470113 -0.000000 + 2 6 0 0.000052 -0.724881 0.000000 + 3 1 0 -0.000626 1.528605 -0.000000 + --------------------------------------------------------------------- + Rotational constants (GHZ): 1486707351.5879370 45.0409517 45.0409504 + Leave Link 202 at Sat Jan 6 14:17:51 2024, MaxMem= 671088640 cpu: 2.8 elap: 0.3 + (Enter /shared/centos7/gaussian/g16/l601.exe) + Copying SCF densities to generalized density rwf, IOpCl= 1 IROHF=0. + + ********************************************************************** + + Population analysis using the SCF density. + + ********************************************************************** + + Orbital symmetries: + Alpha Orbitals: + Occupied (A') (A') (A') (A') (A') (A') (A") + Virtual (A') (A") (A') (A') (A') (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A') (A") (A') (A') + (A") (A') (A') (A") (A') (A') (A') (A") (A') (A') + (A") (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A") (A') (A") (A') (A") (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A") (A') (A') (A') + (A") (A') (A") (A') (A') (A') (A') + Beta Orbitals: + Occupied (A') (A') (A') (A') (A') (A") + Virtual (A') (A') (A") (A') (A') (A') (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A') (A") (A') + (A') (A') (A") (A') (A") (A') (A') (A') (A") (A') + (A') (A") (A') (A") (A') (A') (A") (A') (A') (A") + (A') (A") (A') (A") (A') (A") (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A') (A") (A') (A") (A') (A') (A') (A') + The electronic state is 2-A'. + Alpha occ. eigenvalues -- -10.60347 -10.56197 -0.87634 -0.63135 -0.46843 + Alpha occ. eigenvalues -- -0.38223 -0.38223 + Alpha virt. eigenvalues -- 0.06368 0.06368 0.09428 0.22990 0.26817 + Alpha virt. eigenvalues -- 0.32451 0.32451 0.44368 0.44368 0.45158 + Alpha virt. eigenvalues -- 0.48060 0.62214 0.62214 0.71284 0.71285 + Alpha virt. eigenvalues -- 0.72044 0.82410 0.92654 0.92654 1.06170 + Alpha virt. eigenvalues -- 1.06352 1.06352 1.38155 1.38155 1.49108 + Alpha virt. eigenvalues -- 1.66999 2.00325 2.00325 2.20703 2.34511 + Alpha virt. eigenvalues -- 2.34511 2.38191 2.45058 2.45058 2.51604 + Alpha virt. eigenvalues -- 2.51604 2.59407 2.66895 2.66895 2.85562 + Alpha virt. eigenvalues -- 2.90724 2.90725 2.91229 2.91229 2.92409 + Alpha virt. eigenvalues -- 2.92409 3.03383 3.03384 3.26747 3.26747 + Alpha virt. eigenvalues -- 3.33112 3.33112 3.49733 3.83871 3.83871 + Alpha virt. eigenvalues -- 3.95589 3.96478 3.96479 4.36935 4.70024 + Alpha virt. eigenvalues -- 4.70024 5.25879 5.56609 5.56609 5.95923 + Alpha virt. eigenvalues -- 7.51094 14.72792 + Beta occ. eigenvalues -- -10.58766 -10.56053 -0.84974 -0.61853 -0.36206 + Beta occ. eigenvalues -- -0.36206 + Beta virt. eigenvalues -- -0.19507 0.08263 0.08263 0.09532 0.15433 + Beta virt. eigenvalues -- 0.25216 0.31961 0.31961 0.43768 0.43768 + Beta virt. eigenvalues -- 0.45339 0.47504 0.62272 0.62272 0.69601 + Beta virt. eigenvalues -- 0.71419 0.71419 0.77216 0.92426 0.92426 + Beta virt. eigenvalues -- 1.00340 1.04664 1.04664 1.36567 1.36567 + Beta virt. eigenvalues -- 1.48360 1.62831 2.00767 2.00767 2.19656 + Beta virt. eigenvalues -- 2.32824 2.32824 2.36361 2.44401 2.44401 + Beta virt. eigenvalues -- 2.51470 2.51470 2.58292 2.70481 2.70481 + Beta virt. eigenvalues -- 2.75958 2.88450 2.88450 2.91472 2.91472 + Beta virt. eigenvalues -- 2.91935 2.91935 3.05720 3.05720 3.25603 + Beta virt. eigenvalues -- 3.25603 3.32481 3.32481 3.43415 3.82690 + Beta virt. eigenvalues -- 3.82690 3.92643 3.95263 3.95263 4.33065 + Beta virt. eigenvalues -- 4.66486 4.66486 5.24354 5.53742 5.53742 + Beta virt. eigenvalues -- 5.94598 7.49071 14.68412 + Condensed to atoms (all electrons): + 1 2 3 + 1 C 4.849183 0.865036 0.384523 + 2 C 0.865036 5.276805 -0.058718 + 3 H 0.384523 -0.058718 0.492330 + Atomic-Atomic Spin Densities. + 1 2 3 + 1 C -0.147972 -0.065622 0.006536 + 2 C -0.065622 1.258330 -0.000989 + 3 H 0.006536 -0.000989 0.009792 + Mulliken charges and spin densities: + 1 2 + 1 C -0.098743 -0.207058 + 2 C -0.083123 1.191719 + 3 H 0.181866 0.015339 + Sum of Mulliken charges = -0.00000 1.00000 + Mulliken charges and spin densities with hydrogens summed into heavy atoms: + 1 2 + 1 C 0.083123 -0.191719 + 2 C -0.083123 1.191719 + Electronic spatial extent (au): = 49.4468 + Charge= -0.0000 electrons + Dipole moment (field-independent basis, Debye): + X= -0.0003 Y= 0.7592 Z= 0.0000 Tot= 0.7592 + Quadrupole moment (field-independent basis, Debye-Ang): + XX= -12.8041 YY= -8.1637 ZZ= -12.8041 + XY= -0.0020 XZ= 0.0000 YZ= -0.0000 + Traceless Quadrupole moment (field-independent basis, Debye-Ang): + XX= -1.5468 YY= 3.0936 ZZ= -1.5468 + XY= -0.0020 XZ= 0.0000 YZ= -0.0000 + Octapole moment (field-independent basis, Debye-Ang**2): + XXX= -0.0004 YYY= 4.7070 ZZZ= 0.0000 XYY= -0.0016 + XXY= 0.4783 XXZ= 0.0000 XZZ= -0.0001 YZZ= 0.4783 + YYZ= 0.0000 XYZ= -0.0000 + Hexadecapole moment (field-independent basis, Debye-Ang**3): + XXXX= -15.2194 YYYY= -36.2237 ZZZZ= -15.2194 XXXY= 0.0010 + XXXZ= -0.0000 YYYX= -0.0033 YYYZ= 0.0000 ZZZX= -0.0000 + ZZZY= 0.0000 XXYY= -10.0364 XXZZ= -5.0731 YYZZ= -10.0364 + XXYZ= 0.0000 YYXZ= -0.0000 ZZXY= 0.0003 + N-N= 2.035039333360D+01 E-N=-2.184623177476D+02 KE= 7.620087136333D+01 + Symmetry A' KE= 7.393288361961D+01 + Symmetry A" KE= 2.267987743724D+00 + Symmetry A' SP= 1.000000000000D+00 + Symmetry A" SP=-4.258365815730D-15 + Isotropic Fermi Contact Couplings + Atom a.u. MegaHertz Gauss 10(-4) cm-1 + 1 C(13) 0.19538 219.64386 78.37439 73.26530 + 2 C(13) 0.95683 1075.65629 383.82091 358.80032 + 3 H(1) 0.01080 48.27061 17.22415 16.10134 + -------------------------------------------------------- + Center ---- Spin Dipole Couplings ---- + 3XX-RR 3YY-RR 3ZZ-RR + -------------------------------------------------------- + 1 Atom -0.180226 0.360452 -0.180226 + 2 Atom -0.365477 0.730953 -0.365477 + 3 Atom -0.005621 0.011241 -0.005621 + -------------------------------------------------------- + XY XZ YZ + -------------------------------------------------------- + 1 Atom 0.000125 -0.000000 -0.000000 + 2 Atom -0.000480 0.000000 -0.000000 + 3 Atom -0.000006 -0.000000 -0.000000 + -------------------------------------------------------- + + + --------------------------------------------------------------------------------- + Anisotropic Spin Dipole Couplings in Principal Axis System + --------------------------------------------------------------------------------- + + Atom a.u. MegaHertz Gauss 10(-4) cm-1 Axes + + Baa -0.1802 -24.185 -8.630 -8.067 0.0000 0.0000 1.0000 + 1 C(13) Bbb -0.1802 -24.185 -8.630 -8.067 1.0000 -0.0002 -0.0000 + Bcc 0.3605 48.369 17.259 16.134 0.0002 1.0000 -0.0000 + + Baa -0.3655 -49.043 -17.500 -16.359 0.0000 0.0000 1.0000 + 2 C(13) Bbb -0.3655 -49.043 -17.500 -16.359 1.0000 0.0004 -0.0000 + Bcc 0.7310 98.087 35.000 32.718 -0.0004 1.0000 -0.0000 + + Baa -0.0056 -2.999 -1.070 -1.000 0.0000 0.0000 1.0000 + 3 H(1) Bbb -0.0056 -2.999 -1.070 -1.000 1.0000 0.0004 0.0000 + Bcc 0.0112 5.998 2.140 2.001 -0.0004 1.0000 -0.0000 + + + --------------------------------------------------------------------------------- + + No NMR shielding tensors so no spin-rotation constants. + Leave Link 601 at Sat Jan 6 14:17:58 2024, MaxMem= 671088640 cpu: 103.0 elap: 6.5 + (Enter /shared/centos7/gaussian/g16/l9999.exe) + + Test job not archived. + 1\1\GINC-C0323\FOpt\UM062X\CC-pVTZ\C2H1(2)\HARRIS.SE\06-Jan-2024\0\\#P + m062x/cc-pVTZ opt=(calcfc,maxcycles=900,) freq IOP(7/33=1,2/16=3) scf + =(maxcycle=900)\\Gaussian input prepared by ASE\\0,2\C,-0.0454998681,0 + .0003528584,0.\C,1.149396965,-0.0148530241,0.\H,-1.1038970969,0.014500 + 1657,0.\\Version=EM64L-G16RevA.03\State=2-A'\HF=-76.6066108\S2=0.77447 + 6\S2-1=0.\S2A=0.750347\RMSD=1.601e-09\RMSF=1.908e-03\Dipole=-0.2986697 + ,0.0039085,0.\Quadrupole=2.2994283,-1.1494157,-1.1500126,-0.0453722,0. + ,0.\PG=CS [SG(C2H1)]\\@ + + + FROM AN ANONYMOUS WRITER, ON PERSPECTIVE: + + MAN, DESPITE HIS ARTISTIC PRETENSIONS, HIS SOPHISTICATION AND MANY + ACCOMPLISHMENTS, OWES THE FACT OF HIS EXISTENCE TO A SIX-INCH LAYER OF + TOPSOIL AND THE FACT THAT IT RAINS. + Leave Link 9999 at Sat Jan 6 14:17:58 2024, MaxMem= 671088640 cpu: 2.9 elap: 0.2 + Job cpu time: 0 days 0 hours 59 minutes 44.3 seconds. + Elapsed time: 0 days 0 hours 3 minutes 47.2 seconds. + File lengths (MBytes): RWF= 22 Int= 0 D2E= 0 Chk= 2 Scr= 2 + Normal termination of Gaussian 16 at Sat Jan 6 14:17:58 2024. + (Enter /shared/centos7/gaussian/g16/l1.exe) + Link1: Proceeding to internal job step number 2. + ---------------------------------------------------------------------- + #P Geom=AllCheck Guess=TCheck SCRF=Check Test GenChk UM062X/CC-pVTZ Fr + eq + ---------------------------------------------------------------------- + 1/6=900,10=4,29=7,30=1,38=1,40=1/1,3; + 2/12=2,40=1/2; + 3/5=16,6=1,11=2,14=-4,25=1,30=1,70=2,71=2,74=-55,116=2,140=1/1,2,3; + 4/5=101/1; + 5/5=2,7=900,38=6,98=1/2; + 8/6=4,10=90,11=11/1; + 11/6=1,8=1,9=11,15=111,16=1/1,2,10; + 10/6=1/2; + 6/7=2,8=2,9=2,10=2,28=1/1; + 7/8=1,10=1,25=1/1,2,3,16; + 1/6=900,10=4,30=1/3; + 99//99; + Leave Link 1 at Sat Jan 6 14:17:58 2024, MaxMem= 671088640 cpu: 1.6 elap: 0.1 + (Enter /shared/centos7/gaussian/g16/l101.exe) + Structure from the checkpoint file: "/scratch/harris.se/guassian_scratch/Gau-22529.chk" + ------------------------------ + Gaussian input prepared by ASE + ------------------------------ + Charge = 0 Multiplicity = 2 + Redundant internal coordinates found in file. (old form). + C,0,-0.0454998681,0.0003528584,0. + C,0,1.149396965,-0.0148530241,0. + H,0,-1.1038970969,0.0145001657,0. + Recover connectivity data from disk. + ITRead= 0 0 0 + MicOpt= -1 -1 -1 + NAtoms= 3 NQM= 3 NQMF= 0 NMMI= 0 NMMIF= 0 + NMic= 0 NMicF= 0. + Isotopes and Nuclear Properties: + (Nuclear quadrupole moments (NQMom) in fm**2, nuclear magnetic moments (NMagM) + in nuclear magnetons) + + Atom 1 2 3 + IAtWgt= 12 12 1 + AtmWgt= 12.0000000 12.0000000 1.0078250 + NucSpn= 0 0 1 + AtZEff= 3.6000000 3.6000000 1.0000000 + NQMom= 0.0000000 0.0000000 0.0000000 + NMagM= 0.0000000 0.0000000 2.7928460 + AtZNuc= 6.0000000 6.0000000 1.0000000 + Leave Link 101 at Sat Jan 6 14:17:59 2024, MaxMem= 671088640 cpu: 9.7 elap: 0.7 + (Enter /shared/centos7/gaussian/g16/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Initialization pass. + ---------------------------- + ! Initial Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 1.195 calculate D2E/DX2 analytically ! + ! R2 R(1,3) 1.0585 calculate D2E/DX2 analytically ! + ! A1 L(2,1,3,-3,-1) 180.0367 calculate D2E/DX2 analytically ! + ! A2 L(2,1,3,-2,-2) 180.0 calculate D2E/DX2 analytically ! + -------------------------------------------------------------------------------- + Trust Radius=3.00D-01 FncErr=1.00D-07 GrdErr=1.00D-07 EigMax=2.50D+02 EigMin=1.00D-04 + Number of steps in this run= 2 maximum allowed number of steps= 2. + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Sat Jan 6 14:17:59 2024, MaxMem= 671088640 cpu: 2.5 elap: 0.2 + (Enter /shared/centos7/gaussian/g16/l202.exe) + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 -0.045500 0.000353 -0.000000 + 2 6 0 1.149397 -0.014853 -0.000000 + 3 1 0 -1.103897 0.014500 -0.000000 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 + 1 C 0.000000 + 2 C 1.194994 0.000000 + 3 H 1.058492 2.253485 0.000000 + Stoichiometry C2H(2) + Framework group CS[SG(C2H)] + Deg. of freedom 3 + Full point group CS NOp 2 + RotChk: IX=0 Diff= 3.30D-16 + Largest Abelian subgroup CS NOp 2 + Largest concise Abelian subgroup C1 NOp 1 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 6 0 0.000052 0.470113 -0.000000 + 2 6 0 0.000052 -0.724881 0.000000 + 3 1 0 -0.000626 1.528605 -0.000000 + --------------------------------------------------------------------- + Rotational constants (GHZ): 1486707351.5878530 45.0409517 45.0409504 + Leave Link 202 at Sat Jan 6 14:18:00 2024, MaxMem= 671088640 cpu: 3.7 elap: 0.3 + (Enter /shared/centos7/gaussian/g16/l301.exe) + Standard basis: CC-pVTZ (5D, 7F) + Ernie: Thresh= 0.10000D-02 Tol= 0.10000D-05 Strict=F. + Ernie: 6 primitive shells out of 60 were deleted. + There are 59 symmetry adapted cartesian basis functions of A' symmetry. + There are 26 symmetry adapted cartesian basis functions of A" symmetry. + There are 50 symmetry adapted basis functions of A' symmetry. + There are 24 symmetry adapted basis functions of A" symmetry. + 74 basis functions, 121 primitive gaussians, 85 cartesian basis functions + 7 alpha electrons 6 beta electrons + nuclear repulsion energy 20.3503933336 Hartrees. + IExCor= 4336 DFT=T Ex+Corr=M062X ExCW=0 ScaHFX= 0.540000 + ScaDFX= 1.000000 1.000000 1.000000 1.000000 ScalE2= 1.000000 1.000000 + IRadAn= 5 IRanWt= -1 IRanGd= 0 ICorTp=0 IEmpDi= 4 + NAtoms= 3 NActive= 3 NUniq= 3 SFac= 1.00D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 2 integral format. + Two-electron integral symmetry is turned on. + Leave Link 301 at Sat Jan 6 14:18:00 2024, MaxMem= 671088640 cpu: 2.7 elap: 0.3 + (Enter /shared/centos7/gaussian/g16/l302.exe) + NPDir=0 NMtPBC= 1 NCelOv= 1 NCel= 1 NClECP= 1 NCelD= 1 + NCelK= 1 NCelE2= 1 NClLst= 1 CellRange= 0.0. + One-electron integrals computed using PRISM. + One-electron integral symmetry used in STVInt + NBasis= 74 RedAO= T EigKep= 4.23D-04 NBF= 50 24 + NBsUse= 74 1.00D-06 EigRej= -1.00D+00 NBFU= 50 24 + Precomputing XC quadrature grid using + IXCGrd= 4 IRadAn= 5 IRanWt= -1 IRanGd= 0 AccXCQ= 0.00D+00. + Generated NRdTot= 0 NPtTot= 0 NUsed= 0 NTot= 32 + NSgBfM= 85 85 85 85 85 MxSgAt= 3 MxSgA2= 3. + Leave Link 302 at Sat Jan 6 14:18:03 2024, MaxMem= 671088640 cpu: 44.6 elap: 2.8 + (Enter /shared/centos7/gaussian/g16/l303.exe) + DipDrv: MaxL=1. + Leave Link 303 at Sat Jan 6 14:18:03 2024, MaxMem= 671088640 cpu: 7.9 elap: 0.6 + (Enter /shared/centos7/gaussian/g16/l401.exe) + Initial guess from the checkpoint file: "/scratch/harris.se/guassian_scratch/Gau-22529.chk" + B after Tr= -0.000000 0.000000 -0.000000 + Rot= 1.000000 0.000000 -0.000000 0.000000 Ang= 0.00 deg. + Guess basis will be translated and rotated to current coordinates. + JPrj=2 DoOrth=T DoCkMO=T. + Initial guess orbital symmetries: + Alpha Orbitals: + Occupied (A') (A') (A') (A') (A') (A') (A") + Virtual (A') (A") (A') (A') (A') (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A') (A") (A') (A') + (A") (A') (A') (A") (A') (A') (A') (A") (A') (A') + (A") (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A") (A') (A") (A') (A") (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A") (A') (A') (A') + (A") (A') (A") (A') (A') (A') (A') + Beta Orbitals: + Occupied (A') (A') (A') (A') (A') (A") + Virtual (A') (A') (A") (A') (A') (A') (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A') (A") (A') + (A') (A') (A") (A') (A") (A') (A') (A') (A") (A') + (A') (A") (A') (A") (A') (A') (A") (A') (A') (A") + (A') (A") (A') (A") (A') (A") (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A') (A") (A') (A") (A') (A') (A') (A') + The electronic state of the initial guess is 2-A'. + Initial guess = 0.0000 = 0.0000 = 0.5000 = 0.7745 S= 0.5122 + Leave Link 401 at Sat Jan 6 14:18:08 2024, MaxMem= 671088640 cpu: 75.1 elap: 4.8 + (Enter /shared/centos7/gaussian/g16/l502.exe) + Keep R1 and R2 ints in memory in symmetry-blocked form, NReq=25755234. + FoFCou: FMM=F IPFlag= 0 FMFlag= 0 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 600 IOpCl= 0 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 2775 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + UHF open shell SCF: + Using DIIS extrapolation, IDIIS= 1040. + NGot= 671088640 LenX= 667141186 LenY= 667133520 + Requested convergence on RMS density matrix=1.00D-08 within 900 cycles. + Requested convergence on MAX density matrix=1.00D-06. + Requested convergence on energy=1.00D-06. + No special actions if energy rises. + + Cycle 1 Pass 1 IDiag 1: + E= -76.6066108064720 + DIIS: error= 2.83D-09 at cycle 1 NSaved= 1. + NSaved= 1 IEnMin= 1 EnMin= -76.6066108064720 IErMin= 1 ErrMin= 2.83D-09 + ErrMax= 2.83D-09 0.00D+00 EMaxC= 1.00D-01 BMatC= 8.17D-16 BMatP= 8.17D-16 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.100D+01 + Coeff: 0.100D+01 + Gap= 0.446 Goal= None Shift= 0.000 + Gap= 0.167 Goal= None Shift= 0.000 + RMSDP=5.10D-10 MaxDP=1.93D-08 OVMax= 1.55D-08 + + SCF Done: E(UM062X) = -76.6066108065 A.U. after 1 cycles + NFock= 1 Conv=0.51D-09 -V/T= 2.0053 + = 0.0000 = 0.0000 = 0.5000 = 0.7745 S= 0.5122 + = 0.000000000000E+00 + KE= 7.620087135373D+01 PE=-2.184623177380D+02 EE= 4.530444224420D+01 + Annihilation of the first spin contaminant: + S**2 before annihilation 0.7745, after 0.7503 + Leave Link 502 at Sat Jan 6 14:18:16 2024, MaxMem= 671088640 cpu: 117.1 elap: 7.5 + (Enter /shared/centos7/gaussian/g16/l801.exe) + DoSCS=F DFT=T ScalE2(SS,OS)= 1.000000 1.000000 + Range of M.O.s used for correlation: 1 74 + NBasis= 74 NAE= 7 NBE= 6 NFC= 0 NFV= 0 + NROrb= 74 NOA= 7 NOB= 6 NVA= 67 NVB= 68 + + **** Warning!!: The largest alpha MO coefficient is 0.21935490D+02 + + + **** Warning!!: The largest beta MO coefficient is 0.22605148D+02 + + Leave Link 801 at Sat Jan 6 14:18:16 2024, MaxMem= 671088640 cpu: 1.4 elap: 0.1 + (Enter /shared/centos7/gaussian/g16/l1101.exe) + Using compressed storage, NAtomX= 3. + Will process 4 centers per pass. + Leave Link 1101 at Sat Jan 6 14:18:18 2024, MaxMem= 671088640 cpu: 35.7 elap: 2.3 + (Enter /shared/centos7/gaussian/g16/l1102.exe) + Symmetrizing basis deriv contribution to polar: + IMax=3 JMax=2 DiffMx= 0.00D+00 + Leave Link 1102 at Sat Jan 6 14:18:19 2024, MaxMem= 671088640 cpu: 5.4 elap: 0.4 + (Enter /shared/centos7/gaussian/g16/l1110.exe) + Forming Gx(P) for the SCF density, NAtomX= 3. + Integral derivatives from FoFJK, PRISM(SPDF). + Do as many integral derivatives as possible in FoFJK. + G2DrvN: MDV= 671088300. + G2DrvN: will do 4 centers at a time, making 1 passes. + Calling FoFCou, ICntrl= 3107 FMM=F I1Cent= 0 AccDes= 0.00D+00. + FoFJK: IHMeth= 1 ICntrl= 3107 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F + IRaf= 0 NMat= 1 IRICut= 1 DoRegI=T DoRafI=F ISym2E= 1 IDoP0=0 IntGTp=1. + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 3107 IOpCl= 1 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + End of G2Drv F.D. properties file 721 does not exist. + End of G2Drv F.D. properties file 722 does not exist. + End of G2Drv F.D. properties file 788 does not exist. + Leave Link 1110 at Sat Jan 6 14:18:26 2024, MaxMem= 671088640 cpu: 119.8 elap: 7.5 + (Enter /shared/centos7/gaussian/g16/l1002.exe) + Minotr: UHF open shell wavefunction. + IDoAtm=111 + Direct CPHF calculation. + Differentiating once with respect to electric field. + with respect to dipole field. + Differentiating once with respect to nuclear coordinates. + Using symmetry in CPHF. + Requested convergence is 1.0D-08 RMS, and 1.0D-07 maximum. + Secondary convergence is 1.0D-12 RMS, and 1.0D-12 maximum. + NewPWx=T KeepS1=F KeepF1=F KeepIn=T MapXYZ=F SortEE=F KeepMc=T. + 881 words used for storage of precomputed grid. + Keep R1 and R2 ints in memory in symmetry-blocked form, NReq=25674046. + FoFCou: FMM=F IPFlag= 0 FMFlag= 0 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 600 IOpCl= 0 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 2775 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + MDV= 671088640 using IRadAn= 1. + Solving linear equations simultaneously, MaxMat= 0. + There are 12 degrees of freedom in the 1st order CPHF. IDoFFX=6 NUNeed= 3. + 9 vectors produced by pass 0 Test12= 7.31D-15 8.33D-09 XBig12= 3.86D+01 2.82D+00. + AX will form 9 AO Fock derivatives at one time. + 9 vectors produced by pass 1 Test12= 7.31D-15 8.33D-09 XBig12= 1.18D+01 1.13D+00. + 9 vectors produced by pass 2 Test12= 7.31D-15 8.33D-09 XBig12= 2.98D-01 1.78D-01. + 9 vectors produced by pass 3 Test12= 7.31D-15 8.33D-09 XBig12= 8.64D-03 3.87D-02. + 9 vectors produced by pass 4 Test12= 7.31D-15 8.33D-09 XBig12= 2.01D-04 3.94D-03. + 9 vectors produced by pass 5 Test12= 7.31D-15 8.33D-09 XBig12= 2.89D-06 4.62D-04. + 9 vectors produced by pass 6 Test12= 7.31D-15 8.33D-09 XBig12= 2.91D-08 3.44D-05. + 9 vectors produced by pass 7 Test12= 7.31D-15 8.33D-09 XBig12= 2.13D-10 3.09D-06. + 4 vectors produced by pass 8 Test12= 7.31D-15 8.33D-09 XBig12= 1.31D-12 4.03D-07. + 2 vectors produced by pass 9 Test12= 7.31D-15 8.33D-09 XBig12= 1.12D-14 3.66D-08. + InvSVY: IOpt=1 It= 1 EMax= 6.66D-16 + Solved reduced A of dimension 78 with 9 vectors. + FullF1: Do perturbations 1 to 3. + Isotropic polarizability for W= 0.000000 19.30 Bohr**3. + End of Minotr F.D. properties file 721 does not exist. + End of Minotr F.D. properties file 722 does not exist. + End of Minotr F.D. properties file 788 does not exist. + Leave Link 1002 at Sat Jan 6 14:19:00 2024, MaxMem= 671088640 cpu: 542.7 elap: 34.0 + (Enter /shared/centos7/gaussian/g16/l601.exe) + Copying SCF densities to generalized density rwf, IOpCl= 1 IROHF=0. + + ********************************************************************** + + Population analysis using the SCF density. + + ********************************************************************** + + Orbital symmetries: + Alpha Orbitals: + Occupied (A') (A') (A') (A') (A') (A') (A") + Virtual (A') (A") (A') (A') (A') (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A') (A") (A') (A') + (A") (A') (A') (A") (A') (A') (A') (A") (A') (A') + (A") (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A") (A') (A") (A') (A") (A') (A") (A') (A") (A') + (A') (A") (A') (A') (A") (A') (A") (A') (A') (A') + (A") (A') (A") (A') (A') (A') (A') + Beta Orbitals: + Occupied (A') (A') (A') (A') (A') (A") + Virtual (A') (A') (A") (A') (A') (A') (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A') (A") (A') + (A') (A') (A") (A') (A") (A') (A') (A') (A") (A') + (A') (A") (A') (A") (A') (A') (A") (A') (A') (A") + (A') (A") (A') (A") (A') (A") (A') (A") (A') (A") + (A') (A') (A") (A') (A') (A") (A') (A") (A') (A') + (A') (A") (A') (A") (A') (A') (A') (A') + The electronic state is 2-A'. + Alpha occ. eigenvalues -- -10.60347 -10.56197 -0.87634 -0.63135 -0.46843 + Alpha occ. eigenvalues -- -0.38223 -0.38223 + Alpha virt. eigenvalues -- 0.06368 0.06368 0.09428 0.22990 0.26817 + Alpha virt. eigenvalues -- 0.32451 0.32451 0.44368 0.44368 0.45158 + Alpha virt. eigenvalues -- 0.48060 0.62214 0.62214 0.71284 0.71285 + Alpha virt. eigenvalues -- 0.72044 0.82410 0.92654 0.92654 1.06170 + Alpha virt. eigenvalues -- 1.06352 1.06352 1.38155 1.38155 1.49108 + Alpha virt. eigenvalues -- 1.66999 2.00325 2.00325 2.20703 2.34511 + Alpha virt. eigenvalues -- 2.34511 2.38191 2.45058 2.45058 2.51604 + Alpha virt. eigenvalues -- 2.51604 2.59407 2.66895 2.66895 2.85562 + Alpha virt. eigenvalues -- 2.90724 2.90725 2.91229 2.91229 2.92409 + Alpha virt. eigenvalues -- 2.92409 3.03383 3.03384 3.26747 3.26747 + Alpha virt. eigenvalues -- 3.33112 3.33112 3.49733 3.83871 3.83871 + Alpha virt. eigenvalues -- 3.95589 3.96478 3.96479 4.36935 4.70024 + Alpha virt. eigenvalues -- 4.70024 5.25879 5.56609 5.56609 5.95923 + Alpha virt. eigenvalues -- 7.51094 14.72792 + Beta occ. eigenvalues -- -10.58766 -10.56053 -0.84974 -0.61853 -0.36206 + Beta occ. eigenvalues -- -0.36206 + Beta virt. eigenvalues -- -0.19507 0.08263 0.08263 0.09532 0.15433 + Beta virt. eigenvalues -- 0.25216 0.31961 0.31961 0.43768 0.43768 + Beta virt. eigenvalues -- 0.45339 0.47504 0.62272 0.62272 0.69601 + Beta virt. eigenvalues -- 0.71419 0.71419 0.77216 0.92426 0.92426 + Beta virt. eigenvalues -- 1.00340 1.04664 1.04664 1.36567 1.36567 + Beta virt. eigenvalues -- 1.48360 1.62831 2.00767 2.00767 2.19656 + Beta virt. eigenvalues -- 2.32824 2.32824 2.36361 2.44401 2.44401 + Beta virt. eigenvalues -- 2.51470 2.51470 2.58292 2.70481 2.70481 + Beta virt. eigenvalues -- 2.75958 2.88450 2.88450 2.91472 2.91472 + Beta virt. eigenvalues -- 2.91935 2.91935 3.05720 3.05720 3.25603 + Beta virt. eigenvalues -- 3.25603 3.32481 3.32481 3.43415 3.82690 + Beta virt. eigenvalues -- 3.82690 3.92643 3.95263 3.95263 4.33065 + Beta virt. eigenvalues -- 4.66486 4.66486 5.24354 5.53742 5.53742 + Beta virt. eigenvalues -- 5.94598 7.49071 14.68412 + Condensed to atoms (all electrons): + 1 2 3 + 1 C 4.849183 0.865036 0.384523 + 2 C 0.865036 5.276805 -0.058718 + 3 H 0.384523 -0.058718 0.492330 + Atomic-Atomic Spin Densities. + 1 2 3 + 1 C -0.147972 -0.065622 0.006536 + 2 C -0.065622 1.258330 -0.000989 + 3 H 0.006536 -0.000989 0.009792 + Mulliken charges and spin densities: + 1 2 + 1 C -0.098743 -0.207058 + 2 C -0.083123 1.191719 + 3 H 0.181866 0.015339 + Sum of Mulliken charges = -0.00000 1.00000 + Mulliken charges and spin densities with hydrogens summed into heavy atoms: + 1 2 + 1 C 0.083123 -0.191719 + 2 C -0.083123 1.191719 + APT charges: + 1 + 1 C -0.071921 + 2 C -0.063627 + 3 H 0.135548 + Sum of APT charges = -0.00000 + APT charges with hydrogens summed into heavy atoms: + 1 + 1 C 0.063627 + 2 C -0.063627 + Electronic spatial extent (au): = 49.4468 + Charge= -0.0000 electrons + Dipole moment (field-independent basis, Debye): + X= -0.0003 Y= 0.7592 Z= -0.0000 Tot= 0.7592 + Quadrupole moment (field-independent basis, Debye-Ang): + XX= -12.8041 YY= -8.1637 ZZ= -12.8041 + XY= -0.0020 XZ= 0.0000 YZ= -0.0000 + Traceless Quadrupole moment (field-independent basis, Debye-Ang): + XX= -1.5468 YY= 3.0936 ZZ= -1.5468 + XY= -0.0020 XZ= 0.0000 YZ= -0.0000 + Octapole moment (field-independent basis, Debye-Ang**2): + XXX= -0.0004 YYY= 4.7070 ZZZ= 0.0000 XYY= -0.0016 + XXY= 0.4783 XXZ= 0.0000 XZZ= -0.0001 YZZ= 0.4783 + YYZ= -0.0000 XYZ= 0.0000 + Hexadecapole moment (field-independent basis, Debye-Ang**3): + XXXX= -15.2194 YYYY= -36.2237 ZZZZ= -15.2194 XXXY= 0.0010 + XXXZ= -0.0000 YYYX= -0.0033 YYYZ= 0.0000 ZZZX= -0.0000 + ZZZY= 0.0000 XXYY= -10.0364 XXZZ= -5.0731 YYZZ= -10.0364 + XXYZ= 0.0000 YYXZ= 0.0000 ZZXY= 0.0003 + N-N= 2.035039333360D+01 E-N=-2.184623177284D+02 KE= 7.620087135373D+01 + Symmetry A' KE= 7.393288361436D+01 + Symmetry A" KE= 2.267987739374D+00 + Symmetry A' SP= 1.000000000000D+00 + Symmetry A" SP= 2.006850597974D-15 + Exact polarizability: 15.937 0.006 26.025 -0.000 0.000 15.937 + Approx polarizability: 14.968 0.005 37.669 0.000 -0.000 14.968 + Isotropic Fermi Contact Couplings + Atom a.u. MegaHertz Gauss 10(-4) cm-1 + 1 C(13) 0.19538 219.64387 78.37439 73.26531 + 2 C(13) 0.95683 1075.65630 383.82092 358.80032 + 3 H(1) 0.01080 48.27060 17.22415 16.10134 + -------------------------------------------------------- + Center ---- Spin Dipole Couplings ---- + 3XX-RR 3YY-RR 3ZZ-RR + -------------------------------------------------------- + 1 Atom -0.180226 0.360452 -0.180226 + 2 Atom -0.365477 0.730953 -0.365477 + 3 Atom -0.005621 0.011241 -0.005621 + -------------------------------------------------------- + XY XZ YZ + -------------------------------------------------------- + 1 Atom 0.000125 -0.000000 -0.000000 + 2 Atom -0.000480 0.000000 -0.000000 + 3 Atom -0.000006 0.000000 -0.000000 + -------------------------------------------------------- + + + --------------------------------------------------------------------------------- + Anisotropic Spin Dipole Couplings in Principal Axis System + --------------------------------------------------------------------------------- + + Atom a.u. MegaHertz Gauss 10(-4) cm-1 Axes + + Baa -0.1802 -24.185 -8.630 -8.067 0.0000 0.0000 1.0000 + 1 C(13) Bbb -0.1802 -24.185 -8.630 -8.067 1.0000 -0.0002 -0.0000 + Bcc 0.3605 48.369 17.259 16.134 0.0002 1.0000 -0.0000 + + Baa -0.3655 -49.043 -17.500 -16.359 0.0000 0.0000 1.0000 + 2 C(13) Bbb -0.3655 -49.043 -17.500 -16.359 1.0000 0.0004 -0.0000 + Bcc 0.7310 98.087 35.000 32.718 -0.0004 1.0000 -0.0000 + + Baa -0.0056 -2.999 -1.070 -1.000 0.0000 0.0000 1.0000 + 3 H(1) Bbb -0.0056 -2.999 -1.070 -1.000 1.0000 0.0004 0.0000 + Bcc 0.0112 5.998 2.140 2.001 -0.0004 1.0000 -0.0000 + + + --------------------------------------------------------------------------------- + + No NMR shielding tensors so no spin-rotation constants. + Leave Link 601 at Sat Jan 6 14:19:08 2024, MaxMem= 671088640 cpu: 113.8 elap: 7.2 + (Enter /shared/centos7/gaussian/g16/l701.exe) + ... and contract with generalized density number 0. + Compute integral second derivatives. + Leave Link 701 at Sat Jan 6 14:19:09 2024, MaxMem= 671088640 cpu: 26.3 elap: 1.7 + (Enter /shared/centos7/gaussian/g16/l702.exe) + L702 exits ... SP integral derivatives will be done elsewhere. + Leave Link 702 at Sat Jan 6 14:19:10 2024, MaxMem= 671088640 cpu: 1.8 elap: 0.2 + (Enter /shared/centos7/gaussian/g16/l703.exe) + Integral derivatives from FoFJK, PRISM(SPDF). + Compute integral second derivatives, UseDBF=F ICtDFT= 0. + Calling FoFJK, ICntrl= 100127 FMM=F ISym2X=1 I1Cent= 0 IOpClX= 1 NMat=1 NMatS=1 NMatT=0. + FoFJK: IHMeth= 1 ICntrl= 100127 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F + IRaf= 0 NMat= 1 IRICut= 1 DoRegI=T DoRafI=F ISym2E= 1 IDoP0=0 IntGTp=1. + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 800 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 100127 IOpCl= 1 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Petite list used in FoFCou. + Leave Link 703 at Sat Jan 6 14:19:18 2024, MaxMem= 671088640 cpu: 132.6 elap: 8.3 + (Enter /shared/centos7/gaussian/g16/l716.exe) + Dipole =-1.07734171D-04 2.98695230D-01-1.27231677D-32 + Polarizability= 1.59368868D+01 6.26757183D-03 2.60248688D+01 + -1.67852504D-10 1.19339482D-09 1.59369417D+01 + Full mass-weighted force constant matrix: + Low frequencies --- -115.5837 -115.5821 -0.0005 0.0006 0.0007 501.2918 + Low frequencies --- 501.2944 2148.3860 3528.2576 + Diagonal vibrational polarizability: + 0.4643828 0.1494232 0.0000000 + Harmonic frequencies (cm**-1), IR intensities (KM/Mole), Raman scattering + activities (A**4/AMU), depolarization ratios for plane and unpolarized + incident light, reduced masses (AMU), force constants (mDyne/A), + and normal coordinates: + 1 2 3 + A' A' A' + Frequencies -- 500.5685 2148.3860 3528.2576 + Red. masses -- 1.3344 5.5799 1.1632 + Frc consts -- 0.1970 15.1742 8.5312 + IR Inten -- 4.3238 3.9531 58.4586 + Atom AN X Y Z X Y Z X Y Z + 1 6 -0.16 -0.00 0.00 0.00 -0.42 0.00 0.00 -0.11 0.00 + 2 6 0.07 0.00 -0.00 -0.00 0.49 -0.00 0.00 0.03 -0.00 + 3 1 0.99 0.00 -0.00 0.00 -0.76 0.00 -0.00 0.99 -0.00 + + ------------------- + - Thermochemistry - + ------------------- + Temperature 298.150 Kelvin. Pressure 1.00000 Atm. + Atom 1 has atomic number 6 and mass 12.00000 + Atom 2 has atomic number 6 and mass 12.00000 + Atom 3 has atomic number 1 and mass 1.00783 + Molecular mass: 25.00783 amu. + Principal axes and moments of inertia in atomic units: + 1 2 3 + Eigenvalues -- 0.00000 40.06890 40.06890 + X -0.00010 1.00000 0.00000 + Y 1.00000 0.00010 0.00000 + Z -0.00000 -0.00000 1.00000 + This molecule is an asymmetric top. + Rotational symmetry number 1. + Rotational temperatures (Kelvin) ************ 2.16162 2.16162 + Rotational constants (GHZ): ************ 45.04095 45.04095 + Zero-point vibrational energy 36947.9 (Joules/Mol) + 8.83077 (Kcal/Mol) + Warning -- explicit consideration of 1 degrees of freedom as + vibrations may cause significant error + Vibrational temperatures: 720.21 3091.05 5076.38 + (Kelvin) + + Zero-point correction= 0.014073 (Hartree/Particle) + Thermal correction to Energy= 0.017129 + Thermal correction to Enthalpy= 0.018073 + Thermal correction to Gibbs Free Energy= -0.000563 + Sum of electronic and zero-point Energies= -76.592538 + Sum of electronic and thermal Energies= -76.589482 + Sum of electronic and thermal Enthalpies= -76.588537 + Sum of electronic and thermal Free Energies= -76.607174 + + E (Thermal) CV S + KCal/Mol Cal/Mol-Kelvin Cal/Mol-Kelvin + Total 10.749 7.217 39.224 + Electronic 0.000 0.000 1.377 + Translational 0.889 2.981 35.587 + Rotational 0.889 2.981 1.602 + Vibrational 8.971 1.255 0.657 + Vibration 1 0.856 1.249 0.657 + Q Log10(Q) Ln(Q) + Total Bot 0.181549D+01 0.258993 0.596353 + Total V=0 0.539499D+07 6.731991 15.500982 + Vib (Bot) 0.369528D-06 -6.432353 -14.811039 + Vib (Bot) 1 0.328167D+00 -0.483905 -1.114234 + Vib (V=0) 0.109811D+01 0.040646 0.093590 + Vib (V=0) 1 0.109807D+01 0.040632 0.093558 + Electronic 0.200000D+01 0.301030 0.693147 + Translational 0.491550D+07 6.691568 15.407904 + Rotational 0.499744D+00 -0.301252 -0.693659 + + Gaussian input prepared by AS + E + IR Spectrum + + 3 2 + 5 1 5 + 2 4 0 + 8 8 1 + + X X X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + + ***** Axes restored to original set ***** + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 6 -0.000044028 0.000018942 -0.000000000 + 2 6 0.004069362 -0.000061600 0.000000000 + 3 1 -0.004025334 0.000042658 -0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.004069362 RMS 0.001908197 + Force constants in Cartesian coordinates: + 1 2 3 4 5 + 1 0.157265D+01 + 2 -0.200817D-01 0.266692D-01 + 3 0.000000D+00 0.000000D+00 0.264082D-01 + 4 -0.113730D+01 0.144780D-01 0.000000D+00 0.112600D+01 + 5 0.143800D-01 -0.125014D-01 0.000000D+00 -0.143450D-01 0.487112D-02 + 6 0.000000D+00 0.000000D+00 -0.123164D-01 0.000000D+00 0.000000D+00 + 7 -0.435354D+00 0.560371D-02 0.000000D+00 0.112925D-01 -0.349966D-04 + 8 0.570174D-02 -0.141678D-01 0.000000D+00 -0.133033D-03 0.763031D-02 + 9 0.000000D+00 0.000000D+00 -0.140919D-01 0.000000D+00 0.000000D+00 + 6 7 8 9 + 6 0.468760D-02 + 7 0.000000D+00 0.424062D+00 + 8 0.000000D+00 -0.556871D-02 0.653749D-02 + 9 0.762877D-02 0.000000D+00 0.000000D+00 0.646312D-02 + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + Force constants in internal coordinates: + 1 2 3 4 + 1 0.393228D+00 + 2 -0.393228D+00 0.393227D+00 + 3 0.271754D-03 -0.218127D-03 0.297168D-01 + 4 0.000000D+00 0.000000D+00 0.000000D+00 0.297107D-01 + Leave Link 716 at Sat Jan 6 14:19:19 2024, MaxMem= 671088640 cpu: 16.0 elap: 1.1 + (Enter /shared/centos7/gaussian/g16/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Red2BG is reusing G-inverse. + Internal Forces: Max 0.000022149 RMS 0.000017341 + Search for a local minimum. + Step number 1 out of a maximum of 2 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + Second derivative matrix not updated -- analytic derivatives used. + The second derivative matrix: + R1 R2 A1 A2 + R1 0.39323 + R2 -0.39323 0.39323 + A1 0.00027 -0.00022 0.02972 + A2 0.00000 -0.00000 0.00000 0.02971 + ITU= 0 + Eigenvalues --- 0.02971 0.02972 0.78646 + Angle between quadratic step and forces= 59.95 degrees. + Linear search not attempted -- first point. + Iteration 1 RMS(Cart)= 0.00021792 RMS(Int)= 0.00000005 + Iteration 2 RMS(Cart)= 0.00000005 RMS(Int)= 0.00000000 + ITry= 1 IFail=0 DXMaxC= 3.55D-04 DCOld= 1.00D+10 DXMaxT= 3.00D-01 DXLimC= 3.00D+00 Rises=F + ClnCor: largest displacement from symmetrization is 1.33D-15 for atom 3. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 2.25821 0.00002 0.00000 0.00003 0.00003 2.25824 + R2 2.00026 -0.00002 0.00000 -0.00003 -0.00003 2.00023 + A1 3.14223 -0.00001 0.00000 -0.00050 -0.00050 3.14173 + A2 3.14159 -0.00000 0.00000 0.00000 0.00000 3.14159 + Item Value Threshold Converged? + Maximum Force 0.000022 0.000450 YES + RMS Force 0.000017 0.000300 YES + Maximum Displacement 0.000355 0.001800 YES + RMS Displacement 0.000218 0.001200 YES + Predicted change in Energy=-4.380101D-09 + Optimization completed. + -- Stationary point found. + ---------------------------- + ! Optimized Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 1.195 -DE/DX = 0.0 ! + ! R2 R(1,3) 1.0585 -DE/DX = 0.0 ! + ! A1 L(2,1,3,-3,-1) 180.0367 -DE/DX = 0.0 ! + ! A2 L(2,1,3,-2,-2) 180.0 -DE/DX = 0.0 ! + -------------------------------------------------------------------------------- + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Sat Jan 6 14:19:20 2024, MaxMem= 671088640 cpu: 11.9 elap: 0.9 + (Enter /shared/centos7/gaussian/g16/l9999.exe) + + ---------------------------------------------------------------------- + + Electric dipole moment (input orientation): + (Debye = 10**-18 statcoulomb cm , SI units = C m) + (au) (Debye) (10**-30 SI) + Tot 0.298695D+00 0.759208D+00 0.253244D+01 + x -0.298670D+00 -0.759143D+00 -0.253223D+01 + y 0.390852D-02 0.993447D-02 0.331378D-01 + z 0.000000D+00 0.000000D+00 0.000000D+00 + + Dipole polarizability, Alpha (input orientation). + (esu units = cm**3 , SI units = C**2 m**2 J**-1) + Alpha(0;0): + (au) (10**-24 esu) (10**-40 SI) + iso 0.192996D+02 0.285990D+01 0.318207D+01 + aniso 0.100880D+02 0.149488D+01 0.166328D+01 + xx 0.260234D+02 0.385627D+01 0.429068D+01 + yx -0.122090D+00 -0.180919D-01 -0.201299D-01 + yy 0.159384D+02 0.236182D+01 0.262788D+01 + zx 0.000000D+00 0.000000D+00 0.000000D+00 + zy 0.000000D+00 0.000000D+00 0.000000D+00 + zz 0.159369D+02 0.236161D+01 0.262765D+01 + + ---------------------------------------------------------------------- + + Dipole orientation: + 6 -0.00000600 -0.00045832 0.08598365 + 6 0.00000466 0.00035611 -2.17222679 + 1 0.00000134 0.00010221 2.08624314 + + Electric dipole moment (dipole orientation): + (Debye = 10**-18 statcoulomb cm , SI units = C m) + (au) (Debye) (10**-30 SI) + Tot 0.298695D+00 0.759208D+00 0.253244D+01 + x 0.000000D+00 0.000000D+00 0.000000D+00 + y 0.000000D+00 0.000000D+00 0.000000D+00 + z 0.298695D+00 0.759208D+00 0.253244D+01 + + Dipole polarizability, Alpha (dipole orientation). + (esu units = cm**3 , SI units = C**2 m**2 J**-1) + Alpha(0;0): + (au) (10**-24 esu) (10**-40 SI) + iso 0.192996D+02 0.285990D+01 0.318207D+01 + aniso 0.100880D+02 0.149488D+01 0.166328D+01 + xx 0.159369D+02 0.236161D+01 0.262765D+01 + yx 0.000000D+00 0.000000D+00 0.000000D+00 + yy 0.159369D+02 0.236160D+01 0.262764D+01 + zx -0.129626D-03 -0.192086D-04 -0.213724D-04 + zy -0.990528D-02 -0.146781D-02 -0.163316D-02 + zz 0.260249D+02 0.385649D+01 0.429092D+01 + + ---------------------------------------------------------------------- + + Test job not archived. + 1\1\GINC-C0323\Freq\UM062X\CC-pVTZ\C2H1(2)\HARRIS.SE\06-Jan-2024\0\\#P + Geom=AllCheck Guess=TCheck SCRF=Check Test GenChk UM062X/CC-pVTZ Freq + \\Gaussian input prepared by ASE\\0,2\C,-0.0454998681,0.0003528584,0.\ + C,1.149396965,-0.0148530241,0.\H,-1.1038970969,0.0145001657,0.\\Versio + n=EM64L-G16RevA.03\State=2-A'\HF=-76.6066108\S2=0.774476\S2-1=0.\S2A=0 + .750347\RMSD=5.103e-10\RMSF=1.908e-03\ZeroPoint=0.0140727\Thermal=0.01 + 71293\Dipole=-0.2986697,0.0039085,0.\DipoleDeriv=-0.1756558,0.0028542, + 0.,0.0021863,-0.0200742,0.,0.,0.,-0.0200325,-0.0722844,-0.0006216,0.,0 + .0001194,-0.0592943,0.,0.,0.,-0.059303,0.2479402,-0.0022327,0.,-0.0023 + 057,0.0793685,0.,0.,0.,0.0793355\Polar=26.0233949,-0.1220902,15.938360 + 8,0.,0.,15.9369417\Quadrupole=2.2994283,-1.1494157,-1.1500126,-0.04537 + 22,0.,0.\PG=CS [SG(C2H1)]\NImag=0\\1.57265019,-0.02008170,0.02666923,0 + .,0.,0.02640825,-1.13729580,0.01447799,0.,1.12600334,0.01437996,-0.012 + 50143,0.,-0.01434496,0.00487112,0.,0.,-0.01231636,0.,0.,0.00468760,-0. + 43535440,0.00560371,0.,0.01129246,-0.00003500,0.,0.42406194,0.00570174 + ,-0.01416780,0.,-0.00013303,0.00763031,0.,-0.00556871,0.00653749,0.,0. + ,-0.01409188,0.,0.,0.00762877,0.,0.,0.00646312\\0.00004403,-0.00001894 + ,0.,-0.00406936,0.00006160,0.,0.00402533,-0.00004266,0.\\\@ + + + STEINBACH'S GUIDELINES FOR SYSTEMS PROGRAMMING: + NEVER TEST FOR AN ERROR CONDITION YOU DON'T KNOW HOW + TO HANDLE. + Job cpu time: 0 days 0 hours 21 minutes 14.8 seconds. + Elapsed time: 0 days 0 hours 1 minutes 21.3 seconds. + File lengths (MBytes): RWF= 22 Int= 0 D2E= 0 Chk= 2 Scr= 2 + Normal termination of Gaussian 16 at Sat Jan 6 14:19:20 2024. diff --git a/arkane/data/gaussian/water.out b/arkane/data/gaussian/water.out new file mode 100644 index 00000000000..a38d7ad8f4b --- /dev/null +++ b/arkane/data/gaussian/water.out @@ -0,0 +1,754 @@ + Entering Gaussian System, Link 0=g09 + Initial command: + /usr/local/g09/l1.exe "/gtmp/jintaowu/scratch/g09/1026695.zeus-master/Gau-3719775.inp" -scrdir="/gtmp/jintaowu/scratch/g09/1026695.zeus-master/" + Entering Link 1 = /usr/local/g09/l1.exe PID= 3719776. + + Copyright (c) 1988,1990,1992,1993,1995,1998,2003,2009,2013, + Gaussian, Inc. All Rights Reserved. + + This is part of the Gaussian(R) 09 program. It is based on + the Gaussian(R) 03 system (copyright 2003, Gaussian, Inc.), + the Gaussian(R) 98 system (copyright 1998, Gaussian, Inc.), + the Gaussian(R) 94 system (copyright 1995, Gaussian, Inc.), + the Gaussian 92(TM) system (copyright 1992, Gaussian, Inc.), + the Gaussian 90(TM) system (copyright 1990, Gaussian, Inc.), + the Gaussian 88(TM) system (copyright 1988, Gaussian, Inc.), + the Gaussian 86(TM) system (copyright 1986, Carnegie Mellon + University), and the Gaussian 82(TM) system (copyright 1983, + Carnegie Mellon University). Gaussian is a federally registered + trademark of Gaussian, Inc. + + This software contains proprietary and confidential information, + including trade secrets, belonging to Gaussian, Inc. + + This software is provided under written license and may be + used, copied, transmitted, or stored only in accord with that + written license. + + The following legend is applicable only to US Government + contracts under FAR: + + RESTRICTED RIGHTS LEGEND + + Use, reproduction and disclosure by the US Government is + subject to restrictions as set forth in subparagraphs (a) + and (c) of the Commercial Computer Software - Restricted + Rights clause in FAR 52.227-19. + + Gaussian, Inc. + 340 Quinnipiac St., Bldg. 40, Wallingford CT 06492 + + + --------------------------------------------------------------- + Warning -- This program may not be used in any manner that + competes with the business of Gaussian, Inc. or will provide + assistance to any competitor of Gaussian, Inc. The licensee + of this program is prohibited from giving any competitor of + Gaussian, Inc. access to this program. By using this program, + the user acknowledges that Gaussian, Inc. is engaged in the + business of creating and licensing software in the field of + computational chemistry and represents and warrants to the + licensee that it is not a competitor of Gaussian, Inc. and that + it will not use this program in any manner prohibited above. + --------------------------------------------------------------- + + + Cite this work as: + Gaussian 09, Revision D.01, + M. J. Frisch, G. W. Trucks, H. B. Schlegel, G. E. Scuseria, + M. A. Robb, J. R. Cheeseman, G. Scalmani, V. Barone, B. Mennucci, + G. A. Petersson, H. Nakatsuji, M. Caricato, X. Li, H. P. Hratchian, + A. F. Izmaylov, J. Bloino, G. Zheng, J. L. Sonnenberg, M. Hada, + M. Ehara, K. Toyota, R. Fukuda, J. Hasegawa, M. Ishida, T. Nakajima, + Y. Honda, O. Kitao, H. Nakai, T. Vreven, J. A. Montgomery, Jr., + J. E. Peralta, F. Ogliaro, M. Bearpark, J. J. Heyd, E. Brothers, + K. N. Kudin, V. N. Staroverov, T. Keith, R. Kobayashi, J. Normand, + K. Raghavachari, A. Rendell, J. C. Burant, S. S. Iyengar, J. Tomasi, + M. Cossi, N. Rega, J. M. Millam, M. Klene, J. E. Knox, J. B. Cross, + V. Bakken, C. Adamo, J. Jaramillo, R. Gomperts, R. E. Stratmann, + O. Yazyev, A. J. Austin, R. Cammi, C. Pomelli, J. W. Ochterski, + R. L. Martin, K. Morokuma, V. G. Zakrzewski, G. A. Voth, + P. Salvador, J. J. Dannenberg, S. Dapprich, A. D. Daniels, + O. Farkas, J. B. Foresman, J. V. Ortiz, J. Cioslowski, + and D. J. Fox, Gaussian, Inc., Wallingford CT, 2013. + + ****************************************** + Gaussian 09: EM64L-G09RevD.01 24-Apr-2013 + 10-Dec-2023 + ****************************************** + %chk=check.chk + %mem=184320mb + %NProcShared=16 + Will use up to 16 processors via shared memory. + ------------------------------------------------------------ + #P opt SCRF=(smd, Solvent=water) guess=mix uff IOp(2/9=2000) + ------------------------------------------------------------ + 1/14=-1,18=20,19=15,38=1,56=1,64=2/1,3; + 2/9=2000,12=2,17=6,18=5,40=1/2; + 3/5=30,11=9,16=1,25=1,30=1,41=10200000,43=2,70=40032201,71=1,72=1/1; + 4/20=10,22=1,24=3/2; + 7/44=-1/16; + 1/14=-1,18=20,19=15,64=2/3(2); + 2/9=2000/2; + 99//99; + 2/9=2000/2; + 3/5=30,11=9,16=1,25=1,30=1,41=10200000,43=2,70=40032205,71=1,72=1/1; + 4/16=2,20=10,22=1,24=3/2; + 7/44=-1/16; + 1/14=-1,18=20,19=15,64=2/3(-4); + 2/9=2000/2; + 99//99; + Leave Link 1 at Sun Dec 10 04:35:55 2023, MaxMem= 24159191040 cpu: 0.3 + (Enter /usr/local/g09/l101.exe) + ---- + spc1 + ---- + Symbolic Z-matrix: + Charge = 0 Multiplicity = 1 + O -0.00033 0.39781 0. + H -0.7633 -0.19954 0. + H 0.76363 -0.19828 0. + + NAtoms= 3 NQM= 3 NQMF= 0 NMMI= 0 NMMIF= 0 + NMic= 0 NMicF= 0. + Isotopes and Nuclear Properties: + (Nuclear quadrupole moments (NQMom) in fm**2, nuclear magnetic moments (NMagM) + in nuclear magnetons) + + Atom 1 2 3 + IAtWgt= 16 1 1 + AtmWgt= 15.9949146 1.0078250 1.0078250 + NucSpn= 0 1 1 + AtZEff= 0.0000000 0.0000000 0.0000000 + NQMom= 0.0000000 0.0000000 0.0000000 + NMagM= 0.0000000 2.7928460 2.7928460 + AtZNuc= 8.0000000 1.0000000 1.0000000 + Generating MM parameters. + Include all MM classes + + MM sanity checks: + All charges sum to: 0.00000000 + Charges of atoms sum to: 0.00000000 + MMInit generated parameter data with length LenPar= 499. + Leave Link 101 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 4.9 + (Enter /usr/local/g09/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Initialization pass. + ---------------------------- + ! Initial Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 0.969 estimate D2E/DX2 ! + ! R2 R(1,3) 0.969 estimate D2E/DX2 ! + ! A1 A(2,1,3) 103.978 estimate D2E/DX2 ! + -------------------------------------------------------------------------------- + Trust Radius=3.00D-01 FncErr=1.00D-07 GrdErr=1.00D-07 + Number of steps in this run= 20 maximum allowed number of steps= 100. + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.1 + (Enter /usr/local/g09/l202.exe) + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 10081003 -0.000328 0.397815 0.000000 + 2 1 10011000 -0.763303 -0.199538 0.000000 + 3 1 10011000 0.763632 -0.198277 0.000000 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 + 1 O 0.000000 + 2 H 0.969000 0.000000 + 3 H 0.969000 1.526936 0.000000 + Stoichiometry H2O + Framework group C2V[C2(O),SGV(H2)] + Deg. of freedom 2 + Full point group C2V NOp 4 + Largest Abelian subgroup C2V NOp 4 + Largest concise Abelian subgroup C2 NOp 2 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 10081003 0.000000 0.000000 0.119345 + 2 1 10011000 0.000000 0.763468 -0.477378 + 3 1 10011000 0.000000 -0.763468 -0.477378 + --------------------------------------------------------------------- + Rotational constants (GHZ): 792.8710505 430.1505895 278.8617459 + Leave Link 202 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.0 + (Enter /usr/local/g09/l301.exe) + Standard basis: Dummy (5D, 7F) + There are 2 symmetry adapted cartesian basis functions of A1 symmetry. + There are 0 symmetry adapted cartesian basis functions of A2 symmetry. + There are 0 symmetry adapted cartesian basis functions of B1 symmetry. + There are 1 symmetry adapted cartesian basis functions of B2 symmetry. + There are 2 symmetry adapted basis functions of A1 symmetry. + There are 0 symmetry adapted basis functions of A2 symmetry. + There are 0 symmetry adapted basis functions of B1 symmetry. + There are 1 symmetry adapted basis functions of B2 symmetry. + 3 basis functions, 3 primitive gaussians, 3 cartesian basis functions + 2 alpha electrons 2 beta electrons + nuclear repulsion energy 2.5309875879 Hartrees. + IExCor= 0 DFT=F Ex=HF Corr=None ExCW=0 ScaHFX= 1.000000 + ScaDFX= 1.000000 1.000000 1.000000 1.000000 ScalE2= 1.000000 1.000000 + IRadAn= 0 IRanWt= -1 IRanGd= 0 ICorTp=0 IEmpDi= 4 + NAtoms= 3 NActive= 3 NUniq= 2 SFac= 2.25D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 1 integral format. + Two-electron integral symmetry is turned on. + ------------------------------------------------------------------------------ + Polarizable Continuum Model (PCM) + ================================= + Model : PCM (using non-symmetric T matrix). + Atomic radii : SMD-Coulomb. + Polarization charges : Total charges. + Charge compensation : None. + Solution method : On-the-fly selection. + Cavity type : VdW (van der Waals Surface) (Alpha=1.000). + Cavity algorithm : GePol (No added spheres) + Default sphere list used, NSphG= 3. + Lebedev-Laikov grids with approx. 5.0 points / Ang**2. + Smoothing algorithm: Karplus/York (Gamma=1.0000). + Polarization charges: spherical gaussians, with + point-specific exponents (IZeta= 3). + Self-potential: point-specific (ISelfS= 7). + Self-field : sphere-specific E.n sum rule (ISelfD= 2). + 1st derivatives : Analytical E(r).r(x)/FMM algorithm (CHGder, D1EAlg=3). + Cavity 1st derivative terms included. + Solvent : Water, Eps= 78.355300 Eps(inf)= 1.777849 + ------------------------------------------------------------------------------ + Spheres list: + ISph on Nord Re0 Alpha Xe Ye Ze + 1 O 1 1.5200 1.000 0.000000 0.000000 0.119345 + 2 H 2 1.2000 1.000 0.000000 0.763468 -0.477378 + 3 H 3 1.2000 1.000 0.000000 -0.763468 -0.477378 + ------------------------------------------------------------------------------ + Leave Link 301 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.3 + (Enter /usr/local/g09/l402.exe) + UFF calculation of energy and first derivatives. + Energy per function type: + Direct Coulomb + vdW (small) 0.000000000 + Direct Coulomb (large) 0.000000000 + Direct vdW (large) 253.543839672 + Non-direct Coulomb + vdW (small) 0.000000000 + Non-direct Coulomb (large) 0.000000000 + Non-direct vdW (large) -253.543839672 + Harmonic stretch III 0.000806285 + UFF 3-term bend 0.000008298 + Energy per function class: + Coulomb 0.000000000 + Vanderwaals 0.000000000 + Stretching 0.000806285 + Bending 0.000008298 + GePol: Number of generator spheres = 3 + GePol: Total number of spheres = 3 + GePol: Number of exposed spheres = 3 (100.00%) + GePol: Number of points = 240 + GePol: Average weight of points = 0.15 + GePol: Minimum weight of points = 0.24D-03 + GePol: Maximum weight of points = 0.21991 + GePol: Number of points with low weight = 12 + GePol: Fraction of low-weight points (<1% of avg) = 5.00% + GePol: Cavity surface area = 36.124 Ang**2 + GePol: Cavity volume = 19.244 Ang**3 + GePol: Maximum number of non-zero 1st derivatives = 150 + ------------------------------------------------------------------------------ + Atomic radii for non-electrostatic terms: SMD-CDS. + ------------------------------------------------------------------------------ + PCMMM is using the matrix inversion algorithm. + Iteration 1 A*A^-1 deviation from unit magnitude is 2.66D-15 for 2. + Iteration 1 A*A^-1 deviation from orthogonality is 1.85D-15 for 215 8. + Iteration 1 A^-1*A deviation from unit magnitude is 2.55D-15 for 16. + Iteration 1 A^-1*A deviation from orthogonality is 8.12D-16 for 176 70. + No energy partition over atoms because of zero polarization charges. + SMD-CDS (non-electrostatic) energy (kcal/mol) = 1.46 + (included in total energy below) + Energy= 3.139477018E-03 NIter= 0. + Dipole moment= 0.000000 0.000000 0.000000 + Leave Link 402 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 2.0 + (Enter /usr/local/g09/l716.exe) + Dipole = 0.00000000D+00 0.00000000D+00 0.00000000D+00 + ***** Axes restored to original set ***** + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 8 -0.000018909 0.022910930 0.000000000 + 2 1 -0.015852348 -0.011468556 0.000000000 + 3 1 0.015871256 -0.011442374 0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.022910930 RMS 0.011974790 + Leave Link 716 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.3 + (Enter /usr/local/g09/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + Internal Forces: Max 0.019551823 RMS 0.015983270 + Search for a local minimum. + Step number 1 out of a maximum of 20 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + RMS Force = .15983D-01 SwitMx=.10000D-02 MixMth= 1 + Mixed Optimization -- RFO/linear search + Second derivative matrix not updated -- first step. + The second derivative matrix: + R1 R2 A1 + R1 0.53582 + R2 0.00000 0.53582 + A1 0.00000 0.00000 0.16000 + ITU= 0 + Eigenvalues --- 0.16000 0.53582 0.53582 + RFO step: Lambda=-1.43451227D-03 EMin= 1.60000000D-01 + Linear search not attempted -- first point. + Iteration 1 RMS(Cart)= 0.02835335 RMS(Int)= 0.00009563 + Iteration 2 RMS(Cart)= 0.00009062 RMS(Int)= 0.00000001 + Iteration 3 RMS(Cart)= 0.00000000 RMS(Int)= 0.00000000 + ITry= 1 IFail=0 DXMaxC= 3.35D-02 DCOld= 1.00D+10 DXMaxT= 3.00D-01 DXLimC= 3.00D+00 Rises=F + ClnCor: largest displacement from symmetrization is 1.11D-13 for atom 3. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 1.83114 0.01955 0.00000 0.03639 0.03639 1.86754 + R2 1.83114 0.01955 0.00000 0.03639 0.03639 1.86754 + A1 1.81476 0.00136 0.00000 0.00842 0.00842 1.82318 + Item Value Threshold Converged? + Maximum Force 0.019552 0.000450 NO + RMS Force 0.015983 0.000300 NO + Maximum Displacement 0.033506 0.001800 NO + RMS Displacement 0.028401 0.001200 NO + Predicted change in Energy=-7.192068D-04 + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.0 + (Enter /usr/local/g09/l202.exe) + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 10081003 -0.000333 0.403532 0.000000 + 2 1 10011000 -0.781029 -0.202411 0.000000 + 3 1 10011000 0.781362 -0.201121 0.000000 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 + 1 O 0.000000 + 2 H 0.988258 0.000000 + 3 H 0.988258 1.562392 0.000000 + Stoichiometry H2O + Framework group C2V[C2(O),SGV(H2)] + Deg. of freedom 2 + Full point group C2V NOp 4 + RotChk: IX=0 Diff= 2.10D-16 + Largest Abelian subgroup C2V NOp 4 + Largest concise Abelian subgroup C2 NOp 2 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 10081003 0.000000 0.000000 0.121060 + 2 1 10011000 0.000000 0.781196 -0.484239 + 3 1 10011000 0.000000 -0.781196 -0.484239 + --------------------------------------------------------------------- + Rotational constants (GHZ): 770.5625398 410.8488160 267.9716134 + Leave Link 202 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.0 + (Enter /usr/local/g09/l301.exe) + Standard basis: Dummy (5D, 7F) + There are 2 symmetry adapted cartesian basis functions of A1 symmetry. + There are 0 symmetry adapted cartesian basis functions of A2 symmetry. + There are 0 symmetry adapted cartesian basis functions of B1 symmetry. + There are 1 symmetry adapted cartesian basis functions of B2 symmetry. + There are 2 symmetry adapted basis functions of A1 symmetry. + There are 0 symmetry adapted basis functions of A2 symmetry. + There are 0 symmetry adapted basis functions of B1 symmetry. + There are 1 symmetry adapted basis functions of B2 symmetry. + 3 basis functions, 3 primitive gaussians, 3 cartesian basis functions + 2 alpha electrons 2 beta electrons + nuclear repulsion energy 2.4805554745 Hartrees. + IExCor= 0 DFT=F Ex=HF Corr=None ExCW=0 ScaHFX= 1.000000 + ScaDFX= 1.000000 1.000000 1.000000 1.000000 ScalE2= 1.000000 1.000000 + IRadAn= 0 IRanWt= -1 IRanGd= 0 ICorTp=0 IEmpDi= 4 + NAtoms= 3 NActive= 3 NUniq= 2 SFac= 2.25D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 1 integral format. + Two-electron integral symmetry is turned on. + ------------------------------------------------------------------------------ + Polarizable Continuum Model (PCM) + ================================= + Model : PCM (using non-symmetric T matrix). + Atomic radii : SMD-Coulomb. + Polarization charges : Total charges. + Charge compensation : None. + Solution method : Matrix inversion. + Cavity type : VdW (van der Waals Surface) (Alpha=1.000). + Cavity algorithm : GePol (No added spheres) + Default sphere list used, NSphG= 3. + Lebedev-Laikov grids with approx. 5.0 points / Ang**2. + Smoothing algorithm: Karplus/York (Gamma=1.0000). + Polarization charges: spherical gaussians, with + point-specific exponents (IZeta= 3). + Self-potential: point-specific (ISelfS= 7). + Self-field : sphere-specific E.n sum rule (ISelfD= 2). + 1st derivatives : Analytical E(r).r(x)/FMM algorithm (CHGder, D1EAlg=3). + Cavity 1st derivative terms included. + Solvent : Water, Eps= 78.355300 Eps(inf)= 1.777849 + ------------------------------------------------------------------------------ + Spheres list: + ISph on Nord Re0 Alpha Xe Ye Ze + 1 O 1 1.5200 1.000 0.000000 0.000000 0.121060 + 2 H 2 1.2000 1.000 0.000000 0.781196 -0.484239 + 3 H 3 1.2000 1.000 0.000000 -0.781196 -0.484239 + ------------------------------------------------------------------------------ + Leave Link 301 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.3 + (Enter /usr/local/g09/l402.exe) + UFF calculation of energy and first derivatives. + Energy per function type: + Direct Coulomb + vdW (small) 0.000000000 + Direct Coulomb (large) 0.000000000 + Direct vdW (large) 200.168754316 + Non-direct Coulomb + vdW (small) 0.000000000 + Non-direct Coulomb (large) 0.000000000 + Non-direct vdW (large) -200.168754316 + Harmonic stretch III 0.000007113 + UFF 3-term bend 0.000000072 + Energy per function class: + Coulomb 0.000000000 + Vanderwaals 0.000000000 + Stretching 0.000007113 + Bending 0.000000072 + GePol: Number of generator spheres = 3 + GePol: Total number of spheres = 3 + GePol: Number of exposed spheres = 3 (100.00%) + GePol: Number of points = 240 + GePol: Average weight of points = 0.15 + GePol: Minimum weight of points = 0.12D-03 + GePol: Maximum weight of points = 0.21991 + GePol: Number of points with low weight = 4 + GePol: Fraction of low-weight points (<1% of avg) = 1.67% + GePol: Cavity surface area = 36.385 Ang**2 + GePol: Cavity volume = 19.405 Ang**3 + GePol: Maximum number of non-zero 1st derivatives = 150 + ------------------------------------------------------------------------------ + Atomic radii for non-electrostatic terms: SMD-CDS. + ------------------------------------------------------------------------------ + PCMMM is using the matrix inversion algorithm. + Iteration 1 A*A^-1 deviation from unit magnitude is 2.66D-15 for 48. + Iteration 1 A*A^-1 deviation from orthogonality is 2.20D-15 for 172 82. + Iteration 1 A^-1*A deviation from unit magnitude is 2.55D-15 for 120. + Iteration 1 A^-1*A deviation from orthogonality is 9.41D-16 for 225 197. + No energy partition over atoms because of zero polarization charges. + SMD-CDS (non-electrostatic) energy (kcal/mol) = 1.48 + (included in total energy below) + Energy= 2.372367174E-03 NIter= 0. + Dipole moment= 0.000000 0.000000 0.000000 + Leave Link 402 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.7 + (Enter /usr/local/g09/l716.exe) + Dipole = 0.00000000D+00 0.00000000D+00 0.00000000D+00 + ***** Axes restored to original set ***** + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 8 -0.000001570 0.001901962 0.000000000 + 2 1 -0.001031320 -0.000951833 0.000000000 + 3 1 0.001032890 -0.000950129 0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.001901962 RMS 0.000916313 + Leave Link 716 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.3 + (Enter /usr/local/g09/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Using GEDIIS/GDIIS optimizer. + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + Internal Forces: Max 0.001398323 RMS 0.001148983 + Search for a local minimum. + Step number 2 out of a maximum of 20 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + RMS Force = .11490D-02 SwitMx=.10000D-02 MixMth= 1 + Mixed Optimization -- RFO/linear search + Update second derivatives using D2CorX and points 1 2 + DE= -7.67D-04 DEPred=-7.19D-04 R= 1.07D+00 + TightC=F SS= 1.41D+00 RLast= 5.22D-02 DXNew= 5.0454D-01 1.5645D-01 + Trust test= 1.07D+00 RLast= 5.22D-02 DXMaxT set to 3.00D-01 + The second derivative matrix: + R1 R2 A1 + R1 0.51696 + R2 -0.01886 0.51696 + A1 0.00316 0.00316 0.16061 + ITU= 1 0 + Use linear search instead of GDIIS. + Eigenvalues --- 0.16055 0.49816 0.53582 + RFO step: Lambda=-7.35437790D-07 EMin= 1.60548598D-01 + Quartic linear search produced a step of 0.07488. + Iteration 1 RMS(Cart)= 0.00174200 RMS(Int)= 0.00000137 + Iteration 2 RMS(Cart)= 0.00000153 RMS(Int)= 0.00000000 + Iteration 3 RMS(Cart)= 0.00000000 RMS(Int)= 0.00000000 + ITry= 1 IFail=0 DXMaxC= 1.89D-03 DCOld= 1.00D+10 DXMaxT= 3.00D-01 DXLimC= 3.00D+00 Rises=F + ClnCor: largest displacement from symmetrization is 7.15D-14 for atom 3. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 1.86754 0.00140 0.00273 0.00009 0.00282 1.87035 + R2 1.86754 0.00140 0.00273 0.00009 0.00282 1.87035 + A1 1.82318 -0.00022 0.00063 -0.00213 -0.00150 1.82168 + Item Value Threshold Converged? + Maximum Force 0.001398 0.000450 NO + RMS Force 0.001149 0.000300 NO + Maximum Displacement 0.001890 0.001800 NO + RMS Displacement 0.001742 0.001200 NO + Predicted change in Energy=-4.106530D-06 + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.0 + (Enter /usr/local/g09/l202.exe) + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 10081003 -0.000334 0.404533 0.000000 + 2 1 10011000 -0.781753 -0.202912 0.000000 + 3 1 10011000 0.782086 -0.201621 0.000000 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 + 1 O 0.000000 + 2 H 0.989749 0.000000 + 3 H 0.989749 1.563840 0.000000 + Stoichiometry H2O + Framework group C2V[C2(O),SGV(H2)] + Deg. of freedom 2 + Full point group C2V NOp 4 + RotChk: IX=0 Diff= 7.87D-17 + Largest Abelian subgroup C2V NOp 4 + Largest concise Abelian subgroup C2 NOp 2 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 10081003 0.000000 0.000000 0.121360 + 2 1 10011000 0.000000 0.781920 -0.485439 + 3 1 10011000 0.000000 -0.781920 -0.485439 + --------------------------------------------------------------------- + Rotational constants (GHZ): 766.7570740 410.0885774 267.1873897 + Leave Link 202 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.0 + (Enter /usr/local/g09/l301.exe) + Standard basis: Dummy (5D, 7F) + There are 2 symmetry adapted cartesian basis functions of A1 symmetry. + There are 0 symmetry adapted cartesian basis functions of A2 symmetry. + There are 0 symmetry adapted cartesian basis functions of B1 symmetry. + There are 1 symmetry adapted cartesian basis functions of B2 symmetry. + There are 2 symmetry adapted basis functions of A1 symmetry. + There are 0 symmetry adapted basis functions of A2 symmetry. + There are 0 symmetry adapted basis functions of B1 symmetry. + There are 1 symmetry adapted basis functions of B2 symmetry. + 3 basis functions, 3 primitive gaussians, 3 cartesian basis functions + 2 alpha electrons 2 beta electrons + nuclear repulsion energy 2.4770147996 Hartrees. + IExCor= 0 DFT=F Ex=HF Corr=None ExCW=0 ScaHFX= 1.000000 + ScaDFX= 1.000000 1.000000 1.000000 1.000000 ScalE2= 1.000000 1.000000 + IRadAn= 0 IRanWt= -1 IRanGd= 0 ICorTp=0 IEmpDi= 4 + NAtoms= 3 NActive= 3 NUniq= 2 SFac= 2.25D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 1 integral format. + Two-electron integral symmetry is turned on. + ------------------------------------------------------------------------------ + Polarizable Continuum Model (PCM) + ================================= + Model : PCM (using non-symmetric T matrix). + Atomic radii : SMD-Coulomb. + Polarization charges : Total charges. + Charge compensation : None. + Solution method : Matrix inversion. + Cavity type : VdW (van der Waals Surface) (Alpha=1.000). + Cavity algorithm : GePol (No added spheres) + Default sphere list used, NSphG= 3. + Lebedev-Laikov grids with approx. 5.0 points / Ang**2. + Smoothing algorithm: Karplus/York (Gamma=1.0000). + Polarization charges: spherical gaussians, with + point-specific exponents (IZeta= 3). + Self-potential: point-specific (ISelfS= 7). + Self-field : sphere-specific E.n sum rule (ISelfD= 2). + 1st derivatives : Analytical E(r).r(x)/FMM algorithm (CHGder, D1EAlg=3). + Cavity 1st derivative terms included. + Solvent : Water, Eps= 78.355300 Eps(inf)= 1.777849 + ------------------------------------------------------------------------------ + Spheres list: + ISph on Nord Re0 Alpha Xe Ye Ze + 1 O 1 1.5200 1.000 0.000000 0.000000 0.121360 + 2 H 2 1.2000 1.000 0.000000 0.781920 -0.485439 + 3 H 3 1.2000 1.000 0.000000 -0.781920 -0.485439 + ------------------------------------------------------------------------------ + Leave Link 301 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.3 + (Enter /usr/local/g09/l402.exe) + UFF calculation of energy and first derivatives. + Energy per function type: + Direct Coulomb + vdW (small) 0.000000000 + Direct Coulomb (large) 0.000000000 + Direct vdW (large) 196.576892227 + Non-direct Coulomb + vdW (small) 0.000000000 + Non-direct Coulomb (large) 0.000000000 + Non-direct vdW (large) -196.576892227 + Harmonic stretch III 0.000000455 + UFF 3-term bend 0.000000538 + Energy per function class: + Coulomb 0.000000000 + Vanderwaals 0.000000000 + Stretching 0.000000455 + Bending 0.000000538 + GePol: Number of generator spheres = 3 + GePol: Total number of spheres = 3 + GePol: Number of exposed spheres = 3 (100.00%) + GePol: Number of points = 240 + GePol: Average weight of points = 0.15 + GePol: Minimum weight of points = 0.12D-03 + GePol: Maximum weight of points = 0.21991 + GePol: Number of points with low weight = 4 + GePol: Fraction of low-weight points (<1% of avg) = 1.67% + GePol: Cavity surface area = 36.410 Ang**2 + GePol: Cavity volume = 19.419 Ang**3 + GePol: Maximum number of non-zero 1st derivatives = 148 + ------------------------------------------------------------------------------ + Atomic radii for non-electrostatic terms: SMD-CDS. + ------------------------------------------------------------------------------ + PCMMM is using the matrix inversion algorithm. + Iteration 1 A*A^-1 deviation from unit magnitude is 2.78D-15 for 101. + Iteration 1 A*A^-1 deviation from orthogonality is 2.56D-15 for 172 82. + Iteration 1 A^-1*A deviation from unit magnitude is 2.89D-15 for 189. + Iteration 1 A^-1*A deviation from orthogonality is 1.09D-15 for 227 199. + No energy partition over atoms because of zero polarization charges. + SMD-CDS (non-electrostatic) energy (kcal/mol) = 1.49 + (included in total energy below) + Energy= 2.368327194E-03 NIter= 0. + Dipole moment= 0.000000 0.000000 0.000000 + Leave Link 402 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.7 + (Enter /usr/local/g09/l716.exe) + Dipole = 0.00000000D+00 0.00000000D+00 0.00000000D+00 + ***** Axes restored to original set ***** + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 8 0.000000051 -0.000061804 0.000000000 + 2 1 -0.000014244 0.000030890 0.000000000 + 3 1 0.000014193 0.000030914 0.000000000 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.000061804 RMS 0.000026106 + Leave Link 716 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.3 + (Enter /usr/local/g09/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Using GEDIIS/GDIIS optimizer. + FormGI is forming the generalized inverse of G from B-inverse, IUseBI=4. + Internal Forces: Max 0.000061966 RMS 0.000036326 + Search for a local minimum. + Step number 3 out of a maximum of 20 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + RMS Force = .36326D-04 SwitMx=.10000D-02 MixMth= 2 + Mixed Optimization -- En-DIIS/RFO-DIIS + Update second derivatives using D2CorX and points 1 2 3 + DE= -4.04D-06 DEPred=-4.11D-06 R= 9.84D-01 + TightC=F SS= 1.41D+00 RLast= 4.26D-03 DXNew= 5.0454D-01 1.2776D-02 + Trust test= 9.84D-01 RLast= 4.26D-03 DXMaxT set to 3.00D-01 + The second derivative matrix: + R1 R2 A1 + R1 0.51552 + R2 -0.02030 0.51552 + A1 -0.00696 -0.00696 0.16397 + ITU= 1 1 0 + Use linear search instead of GDIIS. + Eigenvalues --- 0.16367 0.49552 0.53582 + RFO step: Lambda=-2.12931425D-08 EMin= 1.63673301D-01 + Quartic linear search produced a step of -0.01634. + Iteration 1 RMS(Cart)= 0.00021654 RMS(Int)= 0.00000003 + Iteration 2 RMS(Cart)= 0.00000002 RMS(Int)= 0.00000000 + ITry= 1 IFail=0 DXMaxC= 2.08D-04 DCOld= 1.00D+10 DXMaxT= 3.00D-01 DXLimC= 3.00D+00 Rises=F + ClnCor: largest displacement from symmetrization is 1.69D-13 for atom 3. + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + R1 1.87035 -0.00001 -0.00005 0.00004 -0.00001 1.87034 + R2 1.87035 -0.00001 -0.00005 0.00004 -0.00001 1.87034 + A1 1.82168 0.00006 0.00002 0.00035 0.00038 1.82205 + Item Value Threshold Converged? + Maximum Force 0.000062 0.000450 YES + RMS Force 0.000036 0.000300 YES + Maximum Displacement 0.000208 0.001800 YES + RMS Displacement 0.000217 0.001200 YES + Predicted change in Energy=-1.176120D-08 + Optimization completed. + -- Stationary point found. + ---------------------------- + ! Optimized Parameters ! + ! (Angstroms and Degrees) ! + -------------------------- -------------------------- + ! Name Definition Value Derivative Info. ! + -------------------------------------------------------------------------------- + ! R1 R(1,2) 0.9897 -DE/DX = 0.0 ! + ! R2 R(1,3) 0.9897 -DE/DX = 0.0 ! + ! A1 A(2,1,3) 104.3744 -DE/DX = 0.0001 ! + -------------------------------------------------------------------------------- + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Largest change from initial coordinates is atom 2 0.020 Angstoms. + Leave Link 103 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.0 + (Enter /usr/local/g09/l202.exe) + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 10081003 -0.000334 0.404533 0.000000 + 2 1 10011000 -0.781753 -0.202912 0.000000 + 3 1 10011000 0.782086 -0.201621 0.000000 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 + 1 O 0.000000 + 2 H 0.989749 0.000000 + 3 H 0.989749 1.563840 0.000000 + Stoichiometry H2O + Framework group C2V[C2(O),SGV(H2)] + Deg. of freedom 2 + Full point group C2V NOp 4 + RotChk: IX=0 Diff= 3.94D-17 + Largest Abelian subgroup C2V NOp 4 + Largest concise Abelian subgroup C2 NOp 2 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 10081003 0.000000 0.000000 0.121360 + 2 1 10011000 0.000000 0.781920 -0.485439 + 3 1 10011000 0.000000 -0.781920 -0.485439 + --------------------------------------------------------------------- + Rotational constants (GHZ): 766.7570740 410.0885774 267.1873897 + Leave Link 202 at Sun Dec 10 04:35:56 2023, MaxMem= 24159191040 cpu: 0.0 + (Enter /usr/local/g09/l9999.exe) + + Test job not archived. + 1\1\GINC-N131\FOpt\RUFF\ZDO\H2O1\JINTAOWU\10-Dec-2023\0\\#P opt SCRF=( + smd, Solvent=water) guess=mix uff IOp(2/9=2000)\\spc1\\0,1\O,-0.000333 + 8653,0.404532511,0.\H,-0.7817525641,-0.2029115842,0.\H,0.7820864374,-0 + .2016209197,0.\\Version=EM64L-G09RevD.01\HF=0.0023683\RMSD=0.000e+00\R + MSF=2.611e-05\Dipole=0.,0.,0.\PG=C02V [C2(O1),SGV(H2)]\\@ + + + WE THE UNWILLING + LED BY THE UNQUALIFIED + HAVE BEEN DOING THE UNBELIEVABLE SO LONG WITH SO LITTLE + THAT WE NOW ATTEMPT THE IMPOSSIBLE WITH NOTHING. + + -- ANONYMOUS + Job cpu time: 0 days 0 hours 0 minutes 11.1 seconds. + File lengths (MBytes): RWF= 5 Int= 0 D2E= 0 Chk= 1 Scr= 1 + Normal termination of Gaussian 09 at Sun Dec 10 04:35:56 2023. diff --git a/arkane/data/molpro/C5OH5_CCSD(T)_F12.out b/arkane/data/molpro/C5OH5_CCSD(T)_F12.out new file mode 100644 index 00000000000..f3f73d699ea --- /dev/null +++ b/arkane/data/molpro/C5OH5_CCSD(T)_F12.out @@ -0,0 +1,556 @@ + + Working directory : /gtmp/nellymitnik/scratch/molpro/1108436.zeus-master/molpro.jdnheJygkZ/ + Global scratch directory : /gtmp/nellymitnik/scratch/molpro/1108436.zeus-master/molpro.jdnheJygkZ/ + Wavefunction directory : /home/nellymitnik/wfu/ + Main file repository : /gtmp/nellymitnik/scratch/molpro/1108436.zeus-master/molpro.jdnheJygkZ/ + + id : dana + + Nodes nprocs + n173.zeus.technion.ac.il 16 + GA implementation: MPI file + GA implementation (serial work in mppx): MPI file + + Using customized tuning parameters: mindgm=1; mindgv=20; mindgc=4; mindgr=1; noblas=0; minvec=7 + default implementation of scratch files=sf + + + Variables initialized (1042), CPU time= 0.02 sec + ***,MF_rad + memory,1678,m; + + geometry={angstrom; + C 2.01049400 -0.22330900 0.10546000 + C 0.64687900 -0.10437400 0.03800100 + C -0.20404500 0.99554400 -0.13241300 + C -1.52073600 0.50065400 -0.12127200 + C -1.42312300 -0.84841500 0.05126400 + O -0.13385700 -1.23256100 0.14903500 + H 2.47222500 -1.18730500 0.24386300 + H 2.62697700 0.65596200 0.01923200 + H 0.11894800 2.01522600 -0.24752400 + H -2.43493800 1.05807500 -0.22625800 + H -2.15882400 -1.62949600 0.12061100} + + basis=cc-pvtz + + + + int; + {hf; + maxit,1000; + wf,spin=1,charge=0;} + + uccsd(t)-f12; + + + + Commands initialized (847), CPU time= 0.01 sec, 718 directives. + Default parameters read. Elapsed time= 0.11 sec + + Checking input... + Passed +1 + + + *** PROGRAM SYSTEM MOLPRO *** + Copyright, TTI GmbH Stuttgart, 2015 + Version 2024.1 linked Mon Jun 17 14:53:25 2024 + + + ********************************************************************************************************************************** + LABEL * MF_rad + (16 PROC) 64 bit mpp version DATE: 01-Mar-25 TIME: 12:49:44 + ********************************************************************************************************************************** + + SHA1: 0134236b472f03f1f5189f93707d8671e415b05c + ********************************************************************************************************************************** + + Memory per process: 1678 MW + Total memory per node: 26848 MW + + GA preallocation disabled + GA check disabled + + Variable memory set to 1678.0 MW + + + Geometry recognized as XYZ + + SETTING BASIS = CC-PVTZ + + + Using spherical harmonics + + Library entry C S cc-pVTZ selected for orbital group 1 + Library entry C P cc-pVTZ selected for orbital group 1 + Library entry C D cc-pVTZ selected for orbital group 1 + Library entry C F cc-pVTZ selected for orbital group 1 + Library entry O S cc-pVTZ selected for orbital group 2 + Library entry O P cc-pVTZ selected for orbital group 2 + Library entry O D cc-pVTZ selected for orbital group 2 + Library entry O F cc-pVTZ selected for orbital group 2 + Library entry H S cc-pVTZ selected for orbital group 3 + Library entry H P cc-pVTZ selected for orbital group 3 + Library entry H D cc-pVTZ selected for orbital group 3 + + + PROGRAM * SEWARD (Integral evaluation for generally contracted gaussian basis sets) Author: Roland Lindh, 1990 + + Geometry written to block 1 of record 700 + + + Point group C1 + + + + ATOMIC COORDINATES + + NR ATOM CHARGE X Y Z + + 1 C 6.00 3.799283035 -0.421992851 0.199290517 + 2 C 6.00 1.222424146 -0.197238275 0.071811482 + 3 C 6.00 -0.385589167 1.881305505 -0.250224305 + 4 C 6.00 -2.873774548 0.946098943 -0.229170867 + 5 C 6.00 -2.689312712 -1.603271990 0.096874920 + 6 O 8.00 -0.252953070 -2.329202722 0.281635333 + 7 H 1.00 4.671828168 -2.243681276 0.460834282 + 8 H 1.00 4.964267066 1.239588528 0.036343213 + 9 H 1.00 0.224779143 3.808225219 -0.467752569 + 10 H 1.00 -4.601365950 1.999471969 -0.427565654 + 11 H 1.00 -4.079586111 -3.079301161 0.227921758 + + Bond lengths in Bohr (Angstrom) + + 1-2 2.589781315 1-7 2.036734855 1-8 2.035827177 2-3 2.647594778 2-6 2.601160584 + ( 1.370453253) ( 1.077793670) ( 1.077313348) ( 1.401046820) ( 1.376474903) + + 3- 4 2.658217645 3- 9 2.032950468 4- 5 2.576746821 4-10 2.033107788 5- 6 2.548913522 + ( 1.406668199) ( 1.075791058) ( 1.363555696) ( 1.075874309) ( 1.348826948) + + 5-11 2.031919170 + ( 1.075245319) + + Bond angles + + 1-2-3 132.72168468 1-2-6 119.29246985 2-1-7 120.67777126 2-1-8 119.64432955 + + 2-3-4 106.93794667 2-3-9 125.08482451 2-6-5 107.63056573 3-2-6 107.98584546 + + 3- 4- 5 106.38399614 3- 4-10 127.75772373 4- 3- 9 127.97722882 4- 5- 6 111.06164599 + + 4- 5-11 132.67844514 5- 4-10 125.85828012 6- 5-11 116.25990887 7- 1- 8 119.67789920 + + NUCLEAR CHARGE: 43 + NUMBER OF PRIMITIVE AOS: 367 + NUMBER OF SYMMETRY AOS: 332 + NUMBER OF CONTRACTIONS: 250 ( 250A ) + NUMBER OF INNER CORE ORBITALS: 0 ( 0A ) + NUMBER OF OUTER CORE ORBITALS: 6 ( 6A ) + NUMBER OF VALENCE ORBITALS: 29 ( 29A ) + + + NUCLEAR REPULSION ENERGY 214.99376514 + + + Eigenvalues of metric + + 1 0.925E-04 0.387E-03 0.564E-03 0.983E-03 0.103E-02 0.113E-02 0.123E-02 0.131E-02 + + + Contracted 2-electron integrals neglected if value below 1.0D-11 + AO integral compression algorithm 1 Integral accuracy 1.0D-11 + + 1743.782 MB (compressed) written to integral file ( 42.0%) + + Node minimum: 99.090 MB, node maximum: 128.713 MB + + + NUMBER OF SORTED TWO-ELECTRON INTEGRALS: 30748480. BUFFER LENGTH: 32768 + NUMBER OF SEGMENTS: 2 SEGMENT LENGTH: 15983856 RECORD LENGTH: 524288 + + Memory used in sort: 16.54 MW + + SORT1 READ 519482517. AND WROTE 26725222. INTEGRALS IN 77 RECORDS. CPU TIME: 5.16 SEC, REAL TIME: 5.27 SEC + SORT2 READ 428058370. AND WROTE 492211000. INTEGRALS IN 6912 RECORDS. CPU TIME: 0.26 SEC, REAL TIME: 0.37 SEC + + Node minimum: 30748480. Node maximum: 30777895. integrals + + OPERATOR DM FOR CENTER 0 COORDINATES: 0.000000 0.000000 0.000000 + + + ********************************************************************************************************************************** + DATASETS * FILE NREC LENGTH (MB) RECORD NAMES + 1 18 30.98 500 610 700 900 950 970 1000 129 960 1100 + VAR BASINP GEOM SYMINP ZMAT AOBASIS BASIS P2S ABASIS S + 1400 1410 1200 1210 1080 1600 1650 1700 + T V H0 H01 AOSYM SMH MOLCAS OPER + + PROGRAMS * TOTAL INT + CPU TIMES * 7.23 7.11 + REAL TIME * 7.95 SEC + DISK USED * 31.53 MB (local), 6.88 GB (total) + GA USED * 0.00 MB (max) 0.00 MB (current) + ********************************************************************************************************************************** + + + Program * Restricted Hartree-Fock + + Orbital guess generated from atomic densities. Full valence occupancy: 35 + + Initial alpha occupancy: 22 + Initial beta occupancy: 21 + + NELEC= 43 SYM=1 MS2= 1 THRE=1.0D-08 THRD=3.2D-06 THRG=3.2D-06 HFMA2=F DIIS_START=2 DIIS_MAX=10 DIIS_INCORE=F + + Level shifts: 0.00 (CLOSED) 0.00 (OPEN) 0.30 (GAP_MIN) + + ITER ETOT DE GRAD DDIFF DIIS NEXP TIME(IT) TIME(TOT) DIAG + 1 -267.06828554 -267.06828554 0.00D+00 0.49D-01 0 0 0.14 0.29 start + 2 -267.12231439 -0.05402885 0.31D-02 0.43D-02 1 0 0.18 0.47 diag2 + 3 -267.13103902 -0.00872463 0.13D-02 0.16D-02 2 0 0.16 0.63 diag2 + 4 -267.13281195 -0.00177293 0.43D-03 0.63D-03 3 0 0.17 0.80 diag2 + 5 -267.13314409 -0.00033214 0.15D-03 0.19D-03 4 0 0.17 0.97 diag2 + 6 -267.13335259 -0.00020850 0.65D-04 0.10D-03 5 0 0.18 1.15 diag2 + 7 -267.13360315 -0.00025055 0.48D-04 0.14D-03 6 0 0.17 1.32 diag2 + 8 -267.13377607 -0.00017292 0.37D-04 0.11D-03 7 0 0.17 1.49 fixocc + 9 -267.13395385 -0.00017778 0.31D-04 0.13D-03 8 0 0.16 1.65 diag2 + 10 -267.13417308 -0.00021923 0.28D-04 0.19D-03 9 0 0.16 1.81 diag2/orth + 11 -267.13438092 -0.00020784 0.23D-04 0.30D-03 9 0 0.15 1.96 diag2 + 12 -267.13439155 -0.00001062 0.17D-04 0.27D-04 9 0 0.16 2.12 diag2 + 13 -267.13440553 -0.00001398 0.11D-04 0.73D-04 9 0 0.17 2.29 diag2 + 14 -267.13440738 -0.00000185 0.74D-05 0.21D-04 9 0 0.17 2.46 diag2 + 15 -267.13440752 -0.00000014 0.24D-05 0.78D-05 9 0 0.15 2.61 diag2 + 16 -267.13440755 -0.00000003 0.16D-05 0.80D-05 9 0 0.17 2.78 diag2 + 17 -267.13440757 -0.00000002 0.76D-06 0.45D-05 9 0 0.16 2.94 diag2 + 18 -267.13440757 -0.00000000 0.26D-06 0.16D-05 9 0 0.17 3.11 diag2 + 19 -267.13440757 -0.00000000 0.87D-07 0.12D-06 0 0 0.17 3.28 diag + + Final alpha occupancy: 22 + Final beta occupancy: 21 + + !RHF STATE 1.1 Energy -267.134407573902 + RHF One-electron energy -788.061392880482 + RHF Two-electron energy 305.933220164603 + RHF Kinetic energy 266.814528694546 + RHF Nuclear energy 214.993765141977 + RHF Virial quotient -1.001198881039 + + !RHF STATE 1.1 Dipole moment -0.19676582 0.28198137 -0.04286384 + Dipole moment /Debye -0.50012883 0.71672516 -0.10894903 + + Orbital energies: + + 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 + -20.617954 -11.292577 -11.291607 -11.233165 -11.230003 -11.229662 -1.457517 -1.088031 -1.052238 -0.910316 + + 11.1 12.1 13.1 14.1 15.1 16.1 17.1 18.1 19.1 20.1 + -0.808147 -0.764930 -0.711038 -0.636180 -0.622882 -0.586293 -0.569458 -0.562698 -0.528119 -0.404613 + + 21.1 22.1 23.1 24.1 + -0.360251 -0.279600 0.152895 0.163918 + + + HOMO 22.1 -0.279600 = -7.6083eV + LUMO 23.1 0.152895 = 4.1605eV + LUMO-HOMO 0.432496 = 11.7688eV + + Orbitals saved in record 2100.2 + + + ********************************************************************************************************************************** + DATASETS * FILE NREC LENGTH (MB) RECORD NAMES + 1 18 30.98 500 610 700 900 950 970 1000 129 960 1100 + VAR BASINP GEOM SYMINP ZMAT AOBASIS BASIS P2S ABASIS S + 1400 1410 1200 1210 1080 1600 1650 1700 + T V H0 H01 AOSYM SMH MOLCAS OPER + + 2 4 2.50 700 1000 520 2100 + GEOM BASIS MCVARS RHF + + PROGRAMS * TOTAL HF-SCF INT + CPU TIMES * 10.57 3.32 7.11 + REAL TIME * 12.51 SEC + DISK USED * 42.20 MB (local), 7.05 GB (total) + GA USED * 0.00 MB (max) 0.00 MB (current) + ********************************************************************************************************************************** + + + PROGRAM * CCSD (Unrestricted open-shell coupled cluster) Authors: C. Hampel, H.-J. Werner, 1991, M. Deegan, P.J. Knowles, 1992 + + UCCSD-F12 implementation by G. Knizia and H.-J. Werner, 2008 + + Density fitting integral evaluation by F.R. Manby, 2003,2007, G. Knizia, 2010 + + + Basis set VTZ/JKFIT generated. Number of basis functions: 624 + Basis set CC-PVTZ/MP2FIT generated. Number of basis functions: 636 + + Convergence thresholds: THRVAR = 1.00D-08 THRDEN = 1.00D-06 + + CCSD(T) terms to be evaluated (factor= 1.000) + + + Number of core orbitals: 6 ( 6 ) + Number of closed-shell orbitals: 15 ( 15 ) + Number of active orbitals: 1 ( 1 ) + Number of external orbitals: 228 ( 228 ) + + Memory could be reduced to 336.05 Mwords without degradation in triples + + Number of N-1 electron functions: 31 + Number of N-2 electron functions: 465 + Number of singly external CSFs: 7099 + Number of doubly external CSFs: 18459690 + Total number of CSFs: 18466789 + + Molecular orbitals read from record 2100.2 Type=RHF/CANONICAL + + Integral transformation finished. Total CPU: 21.19 sec, npass= 1 Memory used: 148.62 MW + + Geminal basis: OPTFULL GEM_TYPE=SLATER BETA=1.0 NGEM=6 + + Optimizing Gaussian exponents for each gem_beta + + Geminal optimization for beta= 1.0000 + Weight function: m=0, omega= 1.4646 + + Augmented Hessian optimization of geminal fit. Trust ratio= 0.40000 + Convergence reached after 2 iterations. Final gradient= 8.43D-16, Step= 4.28D-06, Delta= 1.28D-09 + + Alpha: 0.19532 0.81920 2.85917 9.50073 35.69989 197.79328 + Coeff: 0.27070 0.30552 0.18297 0.10986 0.06810 0.04224 + + + WFN_F12=FIX,EG DECOUPLE_EXPL=F HYBRID=0 NOX=F SEMIINT_F12=T CORE_SINGLES=F + + + AO(A)-basis ORBITAL loaded. Number of functions: 250 + RI(R)-basis VTZ/JKFIT loaded. Number of functions: 624 + DF-basis VTZ/JKFIT loaded. Number of functions: 624 + + Screening thresholds: THRAO= 1.00D-14 THRMO= 1.00D-14 THRPROD= 1.00D-14 + THRSW= 1.00D-14 THROV= 1.00D-14 THRAOF12= 1.00D-08 + + CPU time for one-electron matrices 0.81 sec + + Construction of ABS: + Pseudo-inverse stability 5.61E-11 + Smallest eigenvalue of S 1.47E-05 (threshold= 1.00E-08) + Ratio eigmin/eigmax 1.95E-06 (threshold= 1.00E-09) + Smallest eigenvalue of S kept 1.47E-05 (threshold= 1.47E-05, 0 functions deleted, 624 kept) + + Construction of CABS: + Pseudo-inverse stability 2.42E-09 + Smallest eigenvalue of S 4.40E-08 (threshold= 1.00E-08) + Ratio eigmin/eigmax 4.40E-08 (threshold= 1.00E-09) + Smallest eigenvalue of S kept 4.40E-08 (threshold= 4.40E-08, 0 functions deleted, 624 kept) + + CPU time for basis constructions 0.16 sec + Fock operators(MO) rebuilt from dump record. + CPU time for Fock operator transformation 0.25 sec + + TOTAL ALPHA BETA + Singles Contributions MO -0.005701972 -0.002855383 -0.002846589 + Singles Contributions CABS -0.013677883 -0.006998341 -0.006679542 + Pure DF-RHF relaxation -0.013609865 + + CPU time for RHF CABS relaxation 0.28 sec + CPU time for singles (tot) 0.61 sec + + AO(A)-basis ORBITAL loaded. Number of functions: 250 + RI(R)-basis VTZ/JKFIT loaded. Number of functions: 624 + DF-basis CC-PVTZ/MP2FIT loaded. Number of functions: 636 + + Screening thresholds: THRAO= 1.00D-14 THRMO= 1.00D-14 THRPROD= 1.00D-14 + THRSW= 1.00D-14 THROV= 1.00D-14 THRAOF12= 1.00D-08 + + CPU time for transformed integrals 10.80 sec + CPU time for F12 matrices 11.34 sec + + Diagonal F12 ansatz with fixed amplitudes: TS= 0.5000 TT= 0.2500 TN= 0.3750 + + ITER. SQ.NORM CORR.ENERGY TOTAL ENERGY ENERGY CHANGE VAR CPU MICRO DIIS + 1 1.32665519 -1.13388831 -268.28190575 -1.1475E+00 3.19E-01 0.58 1 1 1 0 0 + 2 1.32766419 -1.13407635 -268.28209378 -1.8803E-04 2.49E-04 2.82 0 0 0 1 1 + 3 1.32818061 -1.13445316 -268.28247060 -3.7681E-04 2.69E-06 5.70 0 0 0 2 2 + 4 1.32819607 -1.13445629 -268.28247373 -3.1346E-06 1.98E-08 9.24 0 0 0 3 3 + 5 1.32819872 -1.13445632 -268.28247376 -2.4367E-08 1.13E-10 13.39 0 0 0 4 4 + + - - Continuing with F12/conv. amplitude coupling turned on. + + 6 1.32818574 -1.13610949 -268.28412692 -1.6532E-03 1.86E-04 16.18 1 1 1 1 1 + 7 1.32818452 -1.13610977 -268.28412721 -2.8062E-07 9.69E-09 19.44 1 1 1 2 2 + + CPU time for iterative RMP2-F12 19.44 sec + + + DF-RMP2-F12 doubles corrections: + - - - - - - - - - - - - - - - - + Approx. TOTAL A-B A-A B-B + RMP2-F12/3C(FIX) -0.111296967 -0.100174079 -0.005978060 -0.005144828 + RMP2-F12/3*C(FIX) -0.109643519 -0.098836532 -0.005813826 -0.004993161 + RMP2-F12/3*C(DX) -0.111345502 -0.100368013 -0.005902977 -0.005074512 + RMP2-F12/3*C(FIX,DX) -0.121778719 -0.110230731 -0.006167524 -0.005380465 + + DF-RMP2-F12 doubles energies: + - - - - - - - - - - - - - - - + Approx. TOTAL A-B A-A B-B + RMP2 -1.019110827 -0.759819848 -0.135765711 -0.123525268 + RMP2-F12/3C(FIX) -1.130407794 -0.859993927 -0.141743771 -0.128670096 + RMP2-F12/3*C(FIX) -1.128754346 -0.858656380 -0.141579537 -0.128518430 + RMP2-F12/3*C(DX) -1.130456329 -0.860187861 -0.141668688 -0.128599780 + RMP2-F12/3*C(FIX,DX) -1.140889546 -0.870050579 -0.141933235 -0.128905733 + + + Reference energy -267.134407573901 + CABS relaxation correction to RHF -0.013609864831 + New reference energy -267.148017438732 + + RMP2-F12 singles (MO) energy -0.005701972237 + RMP2-F12 pair energy -1.130407794032 + RMP2-F12 correlation energy -1.136109766269 + + !RMP2-F12/3C(FIX) energy -268.284127205001 + + Starting RMP2 calculation, locsing= 0 + + ITER. SQ.NORM CORR.ENERGY TOTAL ENERGY ENERGY CHANGE DEN1 VAR(S) VAR(P) DIIS TIME + 1 1.32251756 -1.01992399 -268.15433157 -1.01992399 -0.00441354 0.17D-03 0.19D-02 1 1 80.01 + 2 1.32775392 -1.02472940 -268.15913697 -0.00480541 -0.00002609 0.90D-05 0.15D-04 2 2 82.10 + 3 1.32817491 -1.02490064 -268.15930822 -0.00017124 -0.00000040 0.34D-06 0.13D-06 3 3 84.32 + 4 1.32820545 -1.02490601 -268.15931358 -0.00000536 -0.00000001 0.67D-08 0.77D-09 4 4 86.82 + 5 1.32820747 -1.02490641 -268.15931399 -0.00000041 -0.00000000 0.85D-10 0.18D-10 5 5 89.41 + + Norm of t1 vector: 0.08469801 S-energy: -0.00570190 T1 diagnostic: 0.00141717 + Norm of t2 vector: 0.56659837 P-energy: -1.01920451 + Alpha-Beta: -0.76007084 + Alpha-Alpha: -0.13567957 + Beta-Beta: -0.12345410 + + Spin contamination 0.00091192 + Reference energy -267.134407573901 + CABS singles correction -0.013609864831 + New reference energy -267.148017438732 + RHF-RMP2 correlation energy -1.024906412896 + !RHF-RMP2 energy -268.172923851628 + + F12/3C(FIX) correction -0.111296966811 + RHF-RMP2-F12 correlation energy -1.136203379707 + !RHF-RMP2-F12 total energy -268.284220818439 + + Starting UCCSD calculation + + ITER. SQ.NORM CORR.ENERGY TOTAL ENERGY ENERGY CHANGE DEN1 VAR(S) VAR(P) DIIS TIME + 1 1.30980465 -0.99385441 -268.12826198 -0.99385441 -0.02747617 0.58D-02 0.53D-02 1 1 119.67 + 2 1.33748933 -1.01920430 -268.15361187 -0.02534989 -0.00265512 0.49D-03 0.90D-03 2 2 145.68 + 3 1.35001757 -1.02379334 -268.15820092 -0.00458905 -0.00043637 0.30D-03 0.10D-03 3 3 171.60 + 4 1.35821840 -1.02590391 -268.16031149 -0.00211057 -0.00013475 0.11D-03 0.29D-04 4 4 197.81 + 5 1.36397651 -1.02656345 -268.16097103 -0.00065954 -0.00005610 0.61D-04 0.88D-05 5 5 225.34 + 6 1.36933220 -1.02691966 -268.16132723 -0.00035620 -0.00002046 0.19D-04 0.44D-05 6 6 253.14 + 7 1.37332193 -1.02715150 -268.16155907 -0.00023184 -0.00000590 0.45D-05 0.16D-05 6 2 280.95 + 8 1.37530681 -1.02724922 -268.16165679 -0.00009772 -0.00000087 0.43D-06 0.26D-06 6 1 308.74 + 9 1.37580899 -1.02727308 -268.16168065 -0.00002386 -0.00000013 0.74D-07 0.33D-07 6 3 335.09 + 10 1.37590754 -1.02727519 -268.16168276 -0.00000211 -0.00000002 0.13D-07 0.58D-08 6 4 361.56 + 11 1.37589172 -1.02726718 -268.16167476 0.00000800 -0.00000001 0.28D-08 0.15D-08 6 6 387.80 + 12 1.37591311 -1.02726686 -268.16167444 0.00000032 -0.00000000 0.65D-09 0.27D-09 6 5 412.58 + + Norm of t1 vector: 0.20094805 S-energy: -0.00796282 T1 diagnostic: 0.01949703 + D1 diagnostic: 0.06698239 + D2 diagnostic: 0.19512021 (internal) + Norm of t2 vector: 0.57925209 P-energy: -1.01930404 + Alpha-Beta: -0.78896301 + Alpha-Alpha: -0.12154717 + Beta-Beta: -0.10879386 + + Singles amplitudes (print threshold = 0.500E-01): + + I SYM. A A T(IA) [Alpha-Alpha] + + 15 1 3 0.06704235 + 16 1 3 0.06259481 + + I SYM. A A T(IA) [Beta-Beta] + + 15 1 1 -0.09169987 + 15 1 3 -0.06359934 + + Doubles amplitudes (print threshold = 0.500E-01): + + I J SYM. A SYM. B A B T(IJ, AB) [Alpha-Beta] + + 15 15 1 1 3 3 -0.05717715 + 16 15 1 1 3 1 -0.07113266 + + Spin contamination 0.00449438 + + Memory could be reduced to 364.30 Mwords without degradation in triples + + + RESULTS + ======= + + Reference energy -267.134407573901 + CABS relaxation correction to RHF -0.013609864831 + New reference energy -267.148017438732 + + F12 corrections for ansatz 3C(FIX) added to UCCSD energy. Coupling mode: 15 + + UCCSD-F12a singles energy -0.007962822923 + UCCSD-F12a pair energy -1.129333793559 + UCCSD-F12a correlation energy -1.137296616482 + Triples (T) contribution -0.051006559238 + Total correlation energy -1.188303175720 + + RHF-UCCSD-F12a energy -268.285314055214 + RHF-UCCSD[T]-F12 energy -268.337906507729 + RHF-UCCSD-T-F12a energy -268.335946960551 + !RHF-UCCSD(T)-F12 energy -268.336320614452 + + F12 corrections for ansatz 3C(FIX) added to UCCSD energy. Coupling mode: 15 + + UCCSD-F12b singles energy -0.007962822923 + UCCSD-F12b pair energy -1.110070819705 + UCCSD-F12b correlation energy -1.118033642628 + Triples (T) contribution -0.051006559238 + Total correlation energy -1.169040201866 + + RHF-UCCSD-F12b energy -268.266051081360 + RHF-UCCSD[T]-F12 energy -268.318643533875 + RHF-UCCSD-T-F12b energy -268.316683986696 + !RHF-UCCSD(T)-F12 energy -268.317057640597 + + Program statistics: + + Available memory in ccsd: 1677997770 + Min. memory needed in ccsd: 51754788 + Max. memory used in ccsd: 75147181 + Max. memory used in cckext: 60188337 (13 integral passes) + Max. memory used in cckint: 148621172 ( 1 integral passes) + + + + ********************************************************************************************************************************** + DATASETS * FILE NREC LENGTH (MB) RECORD NAMES + 1 18 30.98 500 610 700 900 950 970 1000 129 960 1100 + VAR BASINP GEOM SYMINP ZMAT AOBASIS BASIS P2S ABASIS S + 1400 1410 1200 1210 1080 1600 1650 1700 + T V H0 H01 AOSYM SMH MOLCAS OPER + + 2 5 2.97 700 1000 520 2100 7360 + GEOM BASIS MCVARS RHF F12ABS + + PROGRAMS * TOTAL UCCSD(T) HF-SCF INT + CPU TIMES * 665.30 654.72 3.32 7.11 + REAL TIME * 694.41 SEC + DISK USED * 2.21 GB (local), 41.82 GB (total) + SF USED * 17.02 GB + GA USED * 3.05 MB (max) 0.00 MB (current) + ********************************************************************************************************************************** + + UCCSD(T)-F12/cc-pVTZ energy= -268.317057640597 + + UCCSD(T)-F12 HF-SCF + -268.31705764 -267.13440757 + ********************************************************************************************************************************** + Molpro calculation terminated diff --git a/arkane/data/molpro/HO2_RS2C.out b/arkane/data/molpro/HO2_RS2C.out new file mode 100644 index 00000000000..9142f71520d --- /dev/null +++ b/arkane/data/molpro/HO2_RS2C.out @@ -0,0 +1,531 @@ + + Working directory : /gtmp/molpro.T66wyGqmSD/ + Global scratch directory : /gtmp/molpro.T66wyGqmSD/ + Wavefunction directory : /home/alon/wfu/ + Main file repository : /gtmp/molpro.T66wyGqmSD/ + + id : dana + + Nodes nprocs + n136 16 + GA implementation: MPI file + GA implementation (serial work in mppx): MPI file + + Using customized tuning parameters: mindgm=1; mindgv=20; mindgc=4; mindgr=1; noblas=0; minvec=7 + default implementation of scratch files=sf + + + Variables initialized (1025), CPU time= 0.01 sec + ***,HO2 + memory,Total=15625,m; + + geometry={angstrom; + O -0.16513900 0.44815400 0.00000000 + O 1.00112100 -0.18975400 -0.00000000 + H -0.83598100 -0.25840000 0.00000000} + + gprint,orbitals; + + basis=aug-cc-pvtz + + + + int; + + {hf; + maxit,999; + wf,spin=1,charge=0; + } + + + {mp2; + wf,spin=1,charge=0; + } + + {casscf; + maxit,999; + wf,spin=1,charge=0; + occ,8,2; + closed,5,1; + state,1; + } + + {rs2c; + maxit,999; + wf,spin=1,charge=0; + } + + + + + Commands initialized (840), CPU time= 0.00 sec, 684 directives. + Default parameters read. Elapsed time= 0.32 sec + + Checking input... + Passed +1 + + + *** PROGRAM SYSTEM MOLPRO *** + Copyright, TTI GmbH Stuttgart, 2015 + Version 2022.3 linked Wed Nov 30 13:40:34 2022 + + + ********************************************************************************************************************************** + LABEL * HO2 + 64 bit mpp version DATE: 08-Sep-24 TIME: 09:43:40 + ********************************************************************************************************************************** + + SHA1: e31ec9a5ea85254ab76f59d122cbdd51c71cf98b + ********************************************************************************************************************************** + + Memory per process: 732 MW + Total memory per node: 15625 MW + Total GA space: 3906 MW + + GA preallocation enabled + GA check enabled + + Variable memory set to 732.4 MW + + + Geometry recognized as XYZ + + + SETTING BASIS = AUG-CC-PVTZ + + + Using spherical harmonics + + Library entry O S aug-cc-pVTZ selected for orbital group 1 + Library entry O P aug-cc-pVTZ selected for orbital group 1 + Library entry O D aug-cc-pVTZ selected for orbital group 1 + Library entry O F aug-cc-pVTZ selected for orbital group 1 + Library entry H S aug-cc-pVTZ selected for orbital group 2 + Library entry H P aug-cc-pVTZ selected for orbital group 2 + Library entry H D aug-cc-pVTZ selected for orbital group 2 + + + PROGRAM * SEWARD (Integral evaluation for generally contracted gaussian basis sets) Author: Roland Lindh, 1990 + + Geometry written to block 1 of record 700 + + + Point group Cs + + + + ATOMIC COORDINATES + + NR ATOM CHARGE X Y Z + + 1 O 8.00 -0.312067482 0.846888322 0.000000000 + 2 O 8.00 1.891844508 -0.358583091 0.000000000 + 3 H 1.00 -1.579775135 -0.488305231 0.000000000 + + Bond lengths in Bohr (Angstrom) + + 1-2 2.512048842 1-3 1.841147608 + ( 1.329319000) ( 0.974293356) + + Bond angles + + 2-1-3 104.83752478 + + NUCLEAR CHARGE: 17 + NUMBER OF PRIMITIVE AOS: 161 + NUMBER OF SYMMETRY AOS: 141 + NUMBER OF CONTRACTIONS: 115 ( 76A' + 39A" ) + NUMBER OF INNER CORE ORBITALS: 0 ( 0A' + 0A" ) + NUMBER OF OUTER CORE ORBITALS: 2 ( 2A' + 0A" ) + NUMBER OF VALENCE ORBITALS: 9 ( 7A' + 2A" ) + + + NUCLEAR REPULSION ENERGY 32.12512051 + + + Allocated 245 MW GA space on the current processor, total: 3907 MW. Time: 0.00 sec + + Eigenvalues of metric + + 1 0.240E-03 0.415E-03 0.122E-02 0.267E-02 0.374E-02 0.493E-02 0.520E-02 0.693E-02 + 2 0.587E-02 0.114E-01 0.380E-01 0.419E-01 0.523E-01 0.813E-01 0.118E+00 0.128E+00 + + + Contracted 2-electron integrals neglected if value below 1.0D-11 + AO integral compression algorithm 1 Integral accuracy 1.0D-11 + + 65.798 MB (compressed) written to integral file ( 55.4%) + + Node minimum: 3.408 MB, node maximum: 5.243 MB + + + NUMBER OF SORTED TWO-ELECTRON INTEGRALS: 706608. BUFFER LENGTH: 32768 + NUMBER OF SEGMENTS: 1 SEGMENT LENGTH: 706608 RECORD LENGTH: 524288 + + Memory used in sort: 1.26 MW + + SORT1 READ 14525730. AND WROTE 675498. INTEGRALS IN 2 RECORDS. CPU TIME: 0.14 SEC, REAL TIME: 0.15 SEC + SORT2 READ 10930363. AND WROTE 11433631. INTEGRALS IN 272 RECORDS. CPU TIME: 0.01 SEC, REAL TIME: 0.01 SEC + + Node minimum: 706378. Node maximum: 718170. integrals + + OPERATOR DM FOR CENTER 0 COORDINATES: 0.000000 0.000000 0.000000 + + + ********************************************************************************************************************************** + DATASETS * FILE NREC LENGTH (MB) RECORD NAMES + 1 18 28.86 500 610 700 900 950 970 1000 129 960 1100 + VAR BASINP GEOM SYMINP ZMAT AOBASIS BASIS P2S ABASIS S + 1400 1410 1200 1210 1080 1600 1650 1700 + T V H0 H01 AOSYM SMH MOLCAS OPER + + PROGRAMS * TOTAL INT + CPU TIMES * 0.60 0.47 + REAL TIME * 1.03 SEC + DISK USED * 29.18 MB (local), 644.53 MB (total) + GA USED * 0.00 MB (max) 0.00 MB (current) + ********************************************************************************************************************************** + + + Program * Restricted Hartree-Fock + + Orbital guess generated from atomic densities. Full valence occupancy: 9 2 + + Initial alpha occupancy: 7 2 + Initial beta occupancy: 7 1 + + NELEC= 17 SYM=2 MS2= 1 THRE=1.0D-08 THRD=3.2D-06 THRG=3.2D-06 HFMA2=F DIIS_START=2 DIIS_MAX=10 DIIS_INCORE=F + + Level shifts: 0.00 (CLOSED) 0.00 (OPEN) 0.30 (GAP_MIN) + + ITER ETOT DE GRAD DDIFF DIIS NEXP TIME(IT) TIME(TOT) DIAG + 1 -150.17011817 -150.17011817 0.00D+00 0.88D-01 0 0 0.00 0.00 start + 2 -150.20465019 -0.03453202 0.90D-02 0.92D-02 1 0 0.01 0.01 diag2 + 3 -150.22033330 -0.01568311 0.64D-02 0.47D-02 2 0 0.00 0.01 diag2 + 4 -150.22490807 -0.00457477 0.13D-02 0.14D-02 3 0 0.01 0.02 diag2 + 5 -150.22856663 -0.00365856 0.12D-02 0.11D-02 4 0 0.01 0.03 diag2 + 6 -150.23199458 -0.00342794 0.80D-03 0.16D-02 5 0 0.00 0.03 diag2 + 7 -150.23257275 -0.00057817 0.35D-03 0.88D-03 6 0 0.00 0.03 diag2 + 8 -150.23258496 -0.00001221 0.98D-04 0.16D-03 7 0 0.01 0.04 fixocc + 9 -150.23259040 -0.00000544 0.69D-04 0.13D-03 8 0 0.00 0.04 diag2 + 10 -150.23259103 -0.00000063 0.28D-04 0.43D-04 9 0 0.01 0.05 diag2/orth + 11 -150.23259126 -0.00000022 0.13D-04 0.19D-04 9 0 0.00 0.05 diag2 + 12 -150.23259126 -0.00000000 0.95D-06 0.19D-05 9 0 0.01 0.06 diag2 + 13 -150.23259126 -0.00000000 0.51D-06 0.64D-06 0 0 0.00 0.06 diag + + Final alpha occupancy: 7 2 + Final beta occupancy: 7 1 + + !RHF STATE 1.2 Energy -150.232591258293 + RHF One-electron energy -270.928629502666 + RHF Two-electron energy 88.570917737861 + RHF Kinetic energy 150.046375775003 + RHF Nuclear energy 32.125120506513 + RHF Virial quotient -1.001241052857 + + !RHF STATE 1.2 Dipole moment -0.62605931 -0.43865566 0.00000000 + Dipole moment /Debye -1.59128405 -1.11495147 0.00000000 + + ELECTRON ORBITALS + ================= + + Orbital Occupation Energy Cen Mu Typ Coefficients + 1.1 2.00000 -20.67277 2 1 s 0.99737 + 2.1 2.00000 -20.66835 1 1 s 0.99740 + 3.1 2.00000 -1.54217 1 2 s 0.68214 2 2 s 0.56715 + 4.1 2.00000 -1.15777 1 2 s -0.57468 1 1 px 0.25089 2 2 s 0.74537 3 1 s -0.36249 + 5.1 2.00000 -0.76227 1 1 px 0.46397 1 1 py 0.46612 2 1 py 0.47384 3 1 s -0.53346 + 6.1 2.00000 -0.66270 1 1 px -0.39599 1 1 py 0.48511 2 1 px 0.64562 + 7.1 2.00000 -0.50672 1 1 py -0.47553 2 1 px 0.32427 2 1 py 0.79533 3 1 s 0.36930 + 1.2 2.00000 -0.62448 1 1 pz 0.88505 + 2.2 1.00000 -0.59233 1 1 pz -0.36862 2 1 pz 0.99301 + + + HOMO 7.1 -0.506721 = -13.7886eV + LUMO 8.1 0.030590 = 0.8324eV + LUMO-HOMO 0.537311 = 14.6210eV + + Orbitals saved in record 2100.2 + + + ********************************************************************************************************************************** + DATASETS * FILE NREC LENGTH (MB) RECORD NAMES + 1 18 28.87 500 610 700 900 950 970 1000 129 960 1100 + VAR BASINP GEOM SYMINP ZMAT AOBASIS BASIS P2S ABASIS S + 1400 1410 1200 1210 1080 1600 1650 1700 + T V H0 H01 AOSYM SMH MOLCAS OPER + + 2 4 0.62 700 1000 520 2100 + GEOM BASIS MCVARS RHF + + PROGRAMS * TOTAL HF-SCF INT + CPU TIMES * 0.74 0.14 0.47 + REAL TIME * 5.11 SEC + DISK USED * 30.56 MB (local), 666.61 MB (total) + GA USED * 0.00 MB (max) 0.00 MB (current) + ********************************************************************************************************************************** + + + PROGRAM * RMP2 (Restricted open-shell) Authors: H.-J. Werner, 2001 + + + Convergence thresholds: THRVAR = 1.00D-08 THRDEN = 1.00D-06 + + Number of core orbitals: 2 ( 2 0 ) + Number of closed-shell orbitals: 6 ( 5 1 ) + Number of active orbitals: 1 ( 0 1 ) + Number of external orbitals: 106 ( 69 37 ) + + Reading RHF information from record 2100.2 + + TOTAL A-A B-B A-B + Pair energies: -0.45576889 -0.06238867 -0.05285220 -0.34052802 + Singles energies: -0.00441624 -0.00220300 -0.00221324 + + !Reference STATE 1.2 energy -150.232591258293 + !RMP2 STATE 1.2 correl. energy -0.460185122779 + !RMP2 STATE 1.2 total energy -150.692776381072 + + !SCS-RMP2 STATE 1.2 correl. energy -0.447047243835 + !SCS-RMP2 STATE 1.2 total energy -150.679638502128 + + + ********************************************************************************************************************************** + DATASETS * FILE NREC LENGTH (MB) RECORD NAMES + 1 18 28.87 500 610 700 900 950 970 1000 129 960 1100 + VAR BASINP GEOM SYMINP ZMAT AOBASIS BASIS P2S ABASIS S + 1400 1410 1200 1210 1080 1600 1650 1700 + T V H0 H01 AOSYM SMH MOLCAS OPER + + 2 4 0.62 700 1000 520 2100 + GEOM BASIS MCVARS RHF + + PROGRAMS * TOTAL MP2 HF-SCF INT + CPU TIMES * 0.81 0.06 0.14 0.47 + REAL TIME * 5.19 SEC + DISK USED * 30.56 MB (local), 666.61 MB (total) + SF USED * 8.12 MB + GA USED * 0.00 MB (max) 0.00 MB (current) + ********************************************************************************************************************************** + + PROGRAM * MULTI (Direct Multiconfiguration SCF) Authors: P.J. Knowles, H.-J. Werner (1984) + D.A. Kreplin, P.J. Knowles, H.-J. Werner (2019) + + Number of closed-shell orbitals: 6 ( 5 1) + Number of active orbitals: 4 ( 3 1) + Number of external orbitals: 105 ( 68 37) + + State symmetry 1 + + Number of active electrons: 5 Spin symmetry=Doublet Space symmetry=2 + Number of states: 1 + Number of CSFs: 9 (12 determinants, 24 intermediate states) + + Molecular orbitals read from record 2100.2 Type=RHF/CANONICAL + + Wavefunction dump at record 2140.2 + + Convergence thresholds 0.10E-04 (gradient) 0.10E-05 (energy) + + Number of orbital rotations: 634 ( 16 closed/active, 377 closed/virtual, 0 active/active, 241 active/virtual ) + Total number of variables: 646 + + Second-order MCSCF: L-BFGS accelerated + + ITER MIC NCI NEG ENERGY(VAR) ENERGY(PROJ) ENERGY CHANGE GRAD(0) GRAD(ORB) GRAD(CI) STEP TIME + 1 55 20 28 -150.23260182 -150.25752980 -0.02492798 0.00026496 0.00000027 0.00000000 0.94E+00 2.24 + 2 26 13 0 -150.26507911 -150.26990559 -0.00482648 0.06074391 0.00034661 0.00000000 0.23E+00 2.53 + 3 31 12 0 -150.27012384 -150.27015191 -0.00002807 0.00393155 0.00000450 0.00000000 0.19E-01 2.83 + 4 23 9 0 -150.27015263 -150.27015272 -0.00000009 0.00025798 0.00000025 0.00000000 0.98E-03 3.07 + + CONVERGENCE REACHED! Final gradient: 0.00000052 ( 0.52E-06) + Final energy: -150.27015272 + + First order charge density matrix for state 1.2 saved on record 2140.2 (density set 1) + + Results for state 1.2 + ===================== + !MCSCF STATE 1.2 Energy -150.270152720089 + Nuclear energy 32.12512051 + Kinetic energy 150.20743631 + One electron energy -270.97568640 + Two electron energy 88.58041317 + Virial ratio 2.00041753 + + !MCSCF STATE 1.2 Dipole moment -0.62063164 -0.43831921 0.00000000 + Dipole moment /Debye -1.57748829 -1.11409631 0.00000000 + + No non-zero expectation values + + NATURAL ORBITALS + ================ + + Orbital Occupation Energy Cen Mu Typ Coefficients + 1.1 2.00000 -20.65876 1 1 s 0.91254 2 1 s 0.40637 + 2.1 2.00000 -20.64159 1 1 s -0.40589 2 1 s 0.91190 + 3.1 2.00000 -1.40648 1 2 s 0.81184 2 2 s 0.37367 3 1 s 0.37720 + 4.1 2.00000 -0.75836 1 1 px 0.31043 1 1 py 0.64168 2 1 py 0.35375 3 1 s -0.54763 + 5.1 2.00000 -0.52211 1 1 py 0.34480 2 1 px -0.43218 2 1 py -0.78756 3 1 s -0.38960 + 6.1 1.99791 -1.14889 1 2 s -0.42578 2 2 s 0.89357 + 7.1 1.95773 -0.78780 1 1 px -0.54740 1 1 py 0.37155 2 1 px 0.55821 2 1 py -0.33506 + 8.1 0.04436 0.48087 1 2 s -0.40162 1 4 s -0.35196 1 1 px -0.82535 1 1 py 0.49487 + 2 2 s 0.35945 2 4 s 0.38540 2 5 s 0.26437 2 1 px -0.86572 + 2 1 py 0.48426 + 1.2 2.00000 -0.62077 1 1 pz 0.88536 + 2.2 1.00000 -0.21314 1 1 pz -0.36073 2 1 pz 0.99357 + + Natural orbital dump at molpro section 2140.2 (Orbital set 2) + + + ********************************************************************************************************************************** + DATASETS * FILE NREC LENGTH (MB) RECORD NAMES + 1 19 33.34 500 610 700 900 950 970 1000 129 960 1100 + VAR BASINP GEOM SYMINP ZMAT AOBASIS BASIS P2S ABASIS S + 1400 1410 1200 1210 1080 1600 1650 1700 1380 + T V H0 H01 AOSYM SMH MOLCAS OPER JKOP + + 2 5 0.97 700 1000 520 2100 2140 + GEOM BASIS MCVARS RHF MCSCF + + PROGRAMS * TOTAL CASSCF MP2 HF-SCF INT + CPU TIMES * 2.08 1.27 0.06 0.14 0.47 + REAL TIME * 9.10 SEC + DISK USED * 34.37 MB (local), 727.57 MB (total) + SF USED * 12.99 MB + GA USED * 0.00 MB (max) 0.00 MB (current) + ********************************************************************************************************************************** + + + PROGRAM * RS2C (Multireference RS Perturbation Theory) Authors: H.-J. Werner (1993), P. Celani (1998) + + + Convergence thresholds: THRVAR = 1.00D-06 THRDEN = 1.00D-06 + + Number of optimized states: 1 Roots: 1 + Number of reference states: 1 Roots: 1 + + Using rs2c + + Reference symmetry: 2 Doublet + Number of electrons: 17 + Maximum number of shells: 4 + Maximum number of spin couplings: 14 + + Reference space: 6 conf 9 CSFs + N elec internal: 16 conf 20 CSFs + N-1 el internal: 19 conf 35 CSFs + N-2 el internal: 13 conf 38 CSFs + + Number of electrons in valence space: 13 + Maximum number of open shell orbitals in reference space: 3 + Maximum number of open shell orbitals in internal spaces: 7 + + + Number of core orbitals: 2 ( 2 0 ) + Number of closed-shell orbitals: 4 ( 3 1 ) + Number of active orbitals: 4 ( 3 1 ) + Number of external orbitals: 105 ( 68 37 ) + + Molecular orbitals read from record 2140.2 Type=MCSCF/NATURAL (state 1.2) + + Integral transformation finished. Total CPU: 0.02 sec, npass= 1 Memory used: 0.36 MW + + Number of p-space configurations: 1 + + Reference wavefunction optimized for reference space (refopt=1) + + State Reference Energy + 1 -150.27015272 + + Number of blocks in overlap matrix: 4 Smallest eigenvalue: 0.28D-03 + Number of N-2 electron functions: 63 + Number of N-1 electron functions: 35 + + Number of internal configurations: 9 + Number of singly external configurations: 1822 + Number of doubly external configurations: 177615 + Total number of contracted configurations: 179446 + Total number of uncontracted configurations: 107372 + + Weight factors for SA-density in H0: 1.000000 + + FIMAX= 0.28D+00 FXMAX= 0.11D-08 DIAG= F F NOREF=1 NOINT=0 IHPPD=2 + + Nuclear energy: 32.12512051 + Core energy: -130.99803678 + Zeroth-order valence energy: -10.64492796 + Zeroth-order total energy: -109.51784424 + First-order energy: -40.75230848 + + + Using contracted singles + + Number of contracted N-1 electron functions: 180 + Number of contracted internal configurations: 8 + + + Diagonal Coupling coefficients finished. Storage: 175576 words, CPU-Time: 0.00 seconds. + Energy denominators for pairs finished in 0 passes. Storage: 189560 words, CPU-time: 0.00 seconds. + + ITER. STATE ROOT SQ.NORM CORR.ENERGY TOTAL ENERGY ENERGY CHANGE DEN1 VAR(S) VAR(P) TIME + 1 1 1 1.03247754 0.00000000 -150.27015272 0.00000000 -0.41711899 0.32D-01 0.63D-01 0.04 + 2 1 1 1.10304126 -0.42756068 -150.69771340 -0.42756068 -0.00025015 0.45D-03 0.16D-03 0.05 + 3 1 1 1.10435585 -0.42946425 -150.69961697 -0.00190357 -0.00181114 0.19D-03 0.17D-05 0.06 + 4 1 1 1.10498583 -0.42995826 -150.70011098 -0.00049401 0.00003012 0.64D-05 0.57D-06 0.07 + 5 1 1 1.10513054 -0.42999346 -150.70014618 -0.00003519 -0.00008892 0.17D-05 0.18D-07 0.08 + 6 1 1 1.10517684 -0.42999665 -150.70014937 -0.00000319 0.00000193 0.38D-06 0.52D-08 0.09 + 7 1 1 1.10519789 -0.42999869 -150.70015141 -0.00000204 -0.00000860 0.15D-06 0.10D-08 0.10 + 8 1 1 1.10520600 -0.42999909 -150.70015181 -0.00000040 -0.00000018 0.62D-07 0.38D-09 0.10 + + Energy contributions for state 1.2: + =================================== + + Energy contr. SQ.Norm of FOWF + Space I0 0.00000000 0.00000000 + Space I1 -0.01058738 0.00712445 + Space I2 -0.00124151 0.00064953 + Space S0 -0.02885894 0.00870840 + Space S1 -0.05688864 0.01910554 + Space S2 -0.01800045 0.00649351 + Space P0 -0.04231239 0.00657076 + Space P1 -0.15768459 0.03130729 + Space P2 -0.11442520 0.02524654 + + + RESULTS FOR STATE 1.2 + ===================== + + + Reference energy -150.27015272 + Nuclear energy 32.12512051 + Correlation energy -0.42999909 + !RSPT2 STATE 1.2 Energy -150.700151809954 + !RS2C STATE 1.2 Dipole moment -0.65532698 -0.41398806 0.00000000 + Dipole moment /Debye -1.66567504 -1.05225269 0.00000000 + + + ********************************************************************************************************************************** + DATASETS * FILE NREC LENGTH (MB) RECORD NAMES + 1 19 33.34 500 610 700 900 950 970 1000 129 960 1100 + VAR BASINP GEOM SYMINP ZMAT AOBASIS BASIS P2S ABASIS S + 1400 1410 1200 1210 1080 1600 1650 1700 1380 + T V H0 H01 AOSYM SMH MOLCAS OPER JKOP + + 2 5 0.97 700 1000 520 2100 2140 + GEOM BASIS MCVARS RHF MCSCF + + PROGRAMS * TOTAL RS2C CASSCF MP2 HF-SCF INT + CPU TIMES * 2.22 0.14 1.27 0.06 0.14 0.47 + REAL TIME * 9.81 SEC + DISK USED * 34.37 MB (local), 727.57 MB (total) + SF USED * 18.18 MB + GA USED * 0.00 MB (max) 0.00 MB (current) + ********************************************************************************************************************************** + + RS2C/aug-cc-pVTZ energy= -150.700151809954 + + RS2C CASSCF MP2 HF-SCF + -150.70015181 -150.27015272 -150.69277638 -150.23259126 + ********************************************************************************************************************************** + Molpro calculation terminated diff --git a/arkane/data/orca/N_MRCI.log b/arkane/data/orca/N_MRCI.log new file mode 100644 index 00000000000..80430936782 --- /dev/null +++ b/arkane/data/orca/N_MRCI.log @@ -0,0 +1,1662 @@ + + ***************** + * O R C A * + ***************** + + #, + ### + #### + ##### + ###### + ########, + ,,################,,,,, + ,,#################################,, + ,,##########################################,, + ,#########################################, ''#####, + ,#############################################,, '####, + ,##################################################,,,,####, + ,###########'''' ''''############################### + ,#####'' ,,,,##########,,,, '''####''' '#### + ,##' ,,,,###########################,,, '## + ' ,,###'''' '''############,,, + ,,##'' '''############,,,, ,,,,,,###'' + ,#'' '''#######################''' + ' ''''####'''' + ,#######, #######, ,#######, ## + ,#' '#, ## ## ,#' '#, #''# ###### ,####, + ## ## ## ,#' ## #' '# # #' '# + ## ## ####### ## ,######, #####, # # + '#, ,#' ## ## '#, ,#' ,# #, ## #, ,# + '#######' ## ## '#######' #' '# #####' # '####' + + + + ####################################################### + # -***- # + # Department of theory and spectroscopy # + # Directorship and core code : Frank Neese # + # Max Planck Institute fuer Kohlenforschung # + # Kaiser Wilhelm Platz 1 # + # D-45470 Muelheim/Ruhr # + # Germany # + # # + # All rights reserved # + # -***- # + ####################################################### + + + Program Version 5.0.4 - RELEASE - + + + With contributions from (in alphabetic order): + Daniel Aravena : Magnetic Suceptibility + Michael Atanasov : Ab Initio Ligand Field Theory (pilot matlab implementation) + Alexander A. Auer : GIAO ZORA, VPT2 properties, NMR spectrum + Ute Becker : Parallelization + Giovanni Bistoni : ED, misc. LED, open-shell LED, HFLD + Martin Brehm : Molecular dynamics + Dmytro Bykov : SCF Hessian + Vijay G. Chilkuri : MRCI spin determinant printing, contributions to CSF-ICE + Dipayan Datta : RHF DLPNO-CCSD density + Achintya Kumar Dutta : EOM-CC, STEOM-CC + Dmitry Ganyushin : Spin-Orbit,Spin-Spin,Magnetic field MRCI + Miquel Garcia : C-PCM and meta-GGA Hessian, CC/C-PCM, Gaussian charge scheme + Yang Guo : DLPNO-NEVPT2, F12-NEVPT2, CIM, IAO-localization + Andreas Hansen : Spin unrestricted coupled pair/coupled cluster methods + Benjamin Helmich-Paris : MC-RPA, TRAH-SCF, COSX integrals + Lee Huntington : MR-EOM, pCC + Robert Izsak : Overlap fitted RIJCOSX, COSX-SCS-MP3, EOM + Marcus Kettner : VPT2 + Christian Kollmar : KDIIS, OOCD, Brueckner-CCSD(T), CCSD density, CASPT2, CASPT2-K + Simone Kossmann : Meta GGA functionals, TD-DFT gradient, OOMP2, MP2 Hessian + Martin Krupicka : Initial AUTO-CI + Lucas Lang : DCDCAS + Marvin Lechner : AUTO-CI (C++ implementation), FIC-MRCC + Dagmar Lenk : GEPOL surface, SMD + Dimitrios Liakos : Extrapolation schemes; Compound Job, initial MDCI parallelization + Dimitrios Manganas : Further ROCIS development; embedding schemes + Dimitrios Pantazis : SARC Basis sets + Anastasios Papadopoulos: AUTO-CI, single reference methods and gradients + Taras Petrenko : DFT Hessian,TD-DFT gradient, ASA, ECA, R-Raman, ABS, FL, XAS/XES, NRVS + Peter Pinski : DLPNO-MP2, DLPNO-MP2 Gradient + Christoph Reimann : Effective Core Potentials + Marius Retegan : Local ZFS, SOC + Christoph Riplinger : Optimizer, TS searches, QM/MM, DLPNO-CCSD(T), (RO)-DLPNO pert. Triples + Tobias Risthaus : Range-separated hybrids, TD-DFT gradient, RPA, STAB + Michael Roemelt : Original ROCIS implementation + Masaaki Saitow : Open-shell DLPNO-CCSD energy and density + Barbara Sandhoefer : DKH picture change effects + Avijit Sen : IP-ROCIS + Kantharuban Sivalingam : CASSCF convergence, NEVPT2, FIC-MRCI + Bernardo de Souza : ESD, SOC TD-DFT + Georgi Stoychev : AutoAux, RI-MP2 NMR, DLPNO-MP2 response + Willem Van den Heuvel : Paramagnetic NMR + Boris Wezisla : Elementary symmetry handling + Frank Wennmohs : Technical directorship + + + We gratefully acknowledge several colleagues who have allowed us to + interface, adapt or use parts of their codes: + Stefan Grimme, W. Hujo, H. Kruse, P. Pracht, : VdW corrections, initial TS optimization, + C. Bannwarth, S. Ehlert DFT functionals, gCP, sTDA/sTD-DF + Ed Valeev, F. Pavosevic, A. Kumar : LibInt (2-el integral package), F12 methods + Garnet Chan, S. Sharma, J. Yang, R. Olivares : DMRG + Ulf Ekstrom : XCFun DFT Library + Mihaly Kallay : mrcc (arbitrary order and MRCC methods) + Jiri Pittner, Ondrej Demel : Mk-CCSD + Frank Weinhold : gennbo (NPA and NBO analysis) + Christopher J. Cramer and Donald G. Truhlar : smd solvation model + Lars Goerigk : TD-DFT with DH, B97 family of functionals + V. Asgeirsson, H. Jonsson : NEB implementation + FAccTs GmbH : IRC, NEB, NEB-TS, DLPNO-Multilevel, CI-OPT + MM, QMMM, 2- and 3-layer-ONIOM, Crystal-QMMM, + LR-CPCM, SF, NACMEs, symmetry and pop. for TD-DFT, + nearIR, NL-DFT gradient (VV10), updates on ESD, + ML-optimized integration grids + S Lehtola, MJT Oliveira, MAL Marques : LibXC Library + Liviu Ungur et al : ANISO software + + + Your calculation uses the libint2 library for the computation of 2-el integrals + For citations please refer to: http://libint.valeyev.net + + Your ORCA version has been built with support for libXC version: 5.1.0 + For citations please refer to: https://tddft.org/programs/libxc/ + + This ORCA versions uses: + CBLAS interface : Fast vector & matrix operations + LAPACKE interface : Fast linear algebra routines + SCALAPACK package : Parallel linear algebra routines + Shared memory : Shared parallel matrices + BLAS/LAPACK : OpenBLAS 0.3.15 USE64BITINT DYNAMIC_ARCH NO_AFFINITY Zen SINGLE_THREADED + Core in use : Zen + Copyright (c) 2011-2014, The OpenBLAS Project + + +================================================================================ + +----- Orbital basis set information ----- +Your calculation utilizes the basis: aug-cc-pVTZ + H, B-Ne : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + R. A. Kendall, T. H. Dunning, Jr., R. J. Harrison, J. Chem. Phys. 96, 6796 (1992) + He : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + D. E. Woon, T. H. Dunning, Jr., J. Chem. Phys. 100, 2975 (1994) + Li-Be, Na : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + B. P. Prascher, D. E. Woon, K. A. Peterson, T. H. Dunning, Jr., A. K. Wilson, Theor. Chem. Acc. 128, 69 (2011) + Mg : Obtained from the Peterson Research Group Website (tyr0.chem.wsu.edu/~kipeters) Feb. 2017 + B. P. Prascher, D. E. Woon, K. A. Peterson, T. H. Dunning, Jr., A. K. Wilson, Theor. Chem. Acc. 128, 69 (2011) + Al-Ar : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + D. E. Woon, T. H. Dunning, Jr., J. Chem. Phys. 98, 1358 (1993) + Sc-Zn : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + N. B. Balabanov, K. A. Peterson, J. Chem. Phys. 123, 064107 (2005) + N. B. Balabanov, K. A. Peterson, J. Chem. Phys. 125, 074110 (2006) + Ga-Kr : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + A. K. Wilson, D. E. Woon, K. A. Peterson, T. H. Dunning, Jr., J. Chem. Phys. 110, 7667 (1999) + Ag, Au : Obtained from the Peterson Research Group Website (tyr0.chem.wsu.edu/~kipeters) Feb. 2017 + K. A. Peterson, C. Puzzarini, Theor. Chem. Acc. 114, 283 (2005) + +================================================================================ + WARNINGS + Please study these warnings very carefully! +================================================================================ + + +INFO : the flag for use of the SHARK integral package has been found! + +================================================================================ + INPUT FILE +================================================================================ +NAME = input.in +| 1> !uHF aug-cc-pvtz tightscf +| 2> !sp +| 3> +| 4> %maxcore 3200 +| 5> %pal nprocs 16 end +| 6> +| 7> * xyz 0 4 +| 8> N 0.00000000 0.00000000 0.00000000 +| 9> * +| 10> +| 11> %scf +| 12> MaxIter 999 +| 13> end +| 14> +| 15> +| 16> %mp2 +| 17> RI true +| 18> end +| 19> +| 20> %casscf +| 21> nel 5 +| 22> norb 4 +| 23> nroots 1 +| 24> maxiter 999 +| 25> end +| 26> +| 27> %mrci +| 28> citype MRCI +| 29> davidsonopt true +| 30> maxiter 999 +| 31> end +| 32> +| 33> +| 34> ****END OF INPUT**** +================================================================================ + + **************************** + * Single Point Calculation * + **************************** + +--------------------------------- +CARTESIAN COORDINATES (ANGSTROEM) +--------------------------------- + N 0.000000 0.000000 0.000000 + +---------------------------- +CARTESIAN COORDINATES (A.U.) +---------------------------- + NO LB ZA FRAG MASS X Y Z + 0 N 7.0000 0 14.007 0.000000 0.000000 0.000000 + +-------------------------------- +INTERNAL COORDINATES (ANGSTROEM) +-------------------------------- + N 0 0 0 0.000000000000 0.00000000 0.00000000 + +--------------------------- +INTERNAL COORDINATES (A.U.) +--------------------------- + N 0 0 0 0.000000000000 0.00000000 0.00000000 + +--------------------- +BASIS SET INFORMATION +--------------------- +There are 1 groups of distinct atoms + + Group 1 Type N : 19s6p3d2f contracted to 5s4p3d2f pattern {88111/3111/111/11} + +Atom 0N basis set group => 1 + + + ************************************************************ + * Program running with 16 parallel MPI-processes * + * working on a common directory * + ************************************************************ +------------------------------------------------------------------------------ + ORCA GTO INTEGRAL CALCULATION +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + ___ + / \ - P O W E R E D B Y - + / \ + | | | _ _ __ _____ __ __ + | | | | | | | / \ | _ \ | | / | + \ \/ | | | | / \ | | | | | | / / + / \ \ | |__| | / /\ \ | |_| | | |/ / + | | | | __ | / /__\ \ | / | \ + | | | | | | | | __ | | \ | |\ \ + \ / | | | | | | | | | |\ \ | | \ \ + \___/ |_| |_| |__| |__| |_| \__\ |__| \__/ + + - O R C A' S B I G F R I E N D - + & + - I N T E G R A L F E E D E R - + + v1 FN, 2020, v2 2021 +------------------------------------------------------------------------------ + + +Reading SHARK input file input.SHARKINP.tmp ... ok +---------------------- +SHARK INTEGRAL PACKAGE +---------------------- + +Number of atoms ... 1 +Number of basis functions ... 52 +Number of shells ... 20 +Maximum angular momentum ... 3 +Integral batch strategy ... SHARK/LIBINT Hybrid +RI-J (if used) integral strategy ... SPLIT-RIJ (Revised 2003 algorithm where possible) +Printlevel ... 1 +Contraction scheme used ... PARTIAL GENERAL contraction +Coulomb Range Separation ... NOT USED +Exchange Range Separation ... NOT USED +Finite Nucleus Model ... NOT USED +Auxiliary Coulomb fitting basis ... NOT available +Auxiliary J/K fitting basis ... NOT available +Auxiliary Correlation fitting basis ... NOT available +Auxiliary 'external' fitting basis ... NOT available +Integral threshold ... 2.500000e-11 +Primitive cut-off ... 2.500000e-12 +Primitive pair pre-selection threshold ... 2.500000e-12 + +Calculating pre-screening integrals ... done ( 0.0 sec) Dimension = 20 +Calculating pre-screening integrals (ORCA) ... done ( 0.1 sec) Dimension = 14 +Organizing shell pair data ... done ( 0.0 sec) +Shell pair information +Total number of shell pairs ... 210 +Shell pairs after pre-screening ... 210 +Total number of primitive shell pairs ... 256 +Primitive shell pairs kept ... 256 + la=0 lb=0: 66 shell pairs + la=1 lb=0: 44 shell pairs + la=1 lb=1: 10 shell pairs + la=2 lb=0: 33 shell pairs + la=2 lb=1: 12 shell pairs + la=2 lb=2: 6 shell pairs + la=3 lb=0: 22 shell pairs + la=3 lb=1: 8 shell pairs + la=3 lb=2: 6 shell pairs + la=3 lb=3: 3 shell pairs + +Calculating one electron integrals ... done ( 0.0 sec) +Calculating Nuclear repulsion ... done ( 0.0 sec) ENN= 0.000000000000 Eh + +SHARK setup successfully completed in 0.2 seconds + +Maximum memory used throughout the entire GTOINT-calculation: 16.0 MB + + + ************************************************************ + * Program running with 16 parallel MPI-processes * + * working on a common directory * + ************************************************************ +------------------------------------------------------------------------------- + ORCA SCF +------------------------------------------------------------------------------- + +------------ +SCF SETTINGS +------------ +Hamiltonian: + Ab initio Hamiltonian Method .... Hartree-Fock(GTOs) + + +General Settings: + Integral files IntName .... input + Hartree-Fock type HFTyp .... CASSCF + Total Charge Charge .... 0 + Multiplicity Mult .... 4 + Number of Electrons NEL .... 7 + Basis Dimension Dim .... 46 + Nuclear Repulsion ENuc .... 0.0000000000 Eh + + +Diagonalization of the overlap matrix: +Smallest eigenvalue ... 2.690e-02 +Time for diagonalization ... 0.000 sec +Threshold for overlap eigenvalues ... 1.000e-08 +Number of eigenvalues below threshold ... 0 +Time for construction of square roots ... 0.001 sec +Total time needed ... 0.001 sec + +Time for model grid setup = 0.007 sec + +------------------------------ +INITIAL GUESS: MODEL POTENTIAL +------------------------------ +Loading Hartree-Fock densities ... done +Calculating cut-offs ... done +Initializing the effective Hamiltonian ... done +Setting up the integral package (SHARK) ... done +Starting the Coulomb interaction ... done ( 0.0 sec) +Reading the grid ... done +Mapping shells ... done +Starting the XC term evaluation ... done ( 0.0 sec) +Transforming the Hamiltonian ... done ( 0.0 sec) +Diagonalizing the Hamiltonian ... done ( 0.0 sec) +Back transforming the eigenvectors ... done ( 0.0 sec) +Now organizing SCF variables ... done + ------------------ + INITIAL GUESS DONE ( 0.0 sec) + ------------------ + + + ... the calculation is a CASSCF calculation -I'm leaving here GOOD LUCK!!! + + + + ************************************************************ + * Program running with 16 parallel MPI-processes * + * working on a common directory * + ************************************************************ +------------------------------------------------------------------------------- + ORCA-CASSCF +------------------------------------------------------------------------------- + +Setting up the integral package ... done +Building the CAS space ... done (4 configurations for Mult=4) + +SYSTEM-SPECIFIC SETTINGS: +Number of active electrons ... 5 +Number of active orbitals ... 4 +Total number of electrons ... 7 +Total number of orbitals ... 46 + +Determined orbital ranges: + Internal 0 - 0 ( 1 orbitals) + Active 1 - 4 ( 4 orbitals) + External 5 - 45 ( 41 orbitals) +Number of rotation parameters ... 209 + +CI-STEP: +CI strategy ... General CI +Number of multiplicity blocks ... 1 +BLOCK 1 WEIGHT= 1.0000 + Multiplicity ... 4 + #(Configurations) ... 4 + #(CSFs) ... 4 + #(Roots) ... 1 + ROOT=0 WEIGHT= 1.000000 + + PrintLevel ... 1 + N(GuessMat) ... 512 + MaxDim(CI) ... 10 + MaxIter(CI) ... 64 + Energy Tolerance CI ... 2.50e-09 + Residual Tolerance CI ... 2.50e-09 + Shift(CI) ... 1.00e-04 + +INTEGRAL-TRANSFORMATION-STEP: + Algorithm ... EXACT + +ORBITAL-IMPROVEMENT-STEP: + Algorithm ... SuperCI(PT) + Default Parametrization ... CAYLEY + Act-Act rotations ... depends on algorithm used + + Note: SuperCI(PT) will ignore FreezeIE, FreezeAct and FreezeGrad. In general Default settings are encouraged. + In conjunction with ShiftUp, ShiftDn or GradScaling the performance of SuperCI(PT) is less optimal. + + MaxRot ... 2.00e-01 + Max. no of vectors (DIIS) ... 15 + DThresh (cut-off) metric ... 1.00e-06 + Switch step at gradient ... 3.00e-02 + Switch step at iteration ... 50 + Switch step to ... SuperCI(PT) + +SCF-SETTINGS: + Incremental ... on + RIJCOSX approximation ... off + RI-JK approximation ... off + AO integral handling ... DIRECT + Integral Neglect Thresh ... 2.50e-11 + Primitive cutoff TCut ... 2.50e-12 + Energy convergence tolerance ... 2.50e-08 + Orbital gradient convergence ... 2.50e-04 + Max. number of iterations ... 999 + + +FINAL ORBITALS: + Active Orbitals ... natural + Internal Orbitals ... canonical + External Orbitals ... canonical + +------------------ +CAS-SCF ITERATIONS +------------------ + + +MACRO-ITERATION 1: + --- Inactive Energy E0 = -44.72092697 Eh +CI-ITERATION 0: + -54.381848153 0.000000000000 ( 0.00) + CI-PROBLEM SOLVED + DENSITIES MADE + + <<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>> + +BLOCK 1 MULT= 4 NROOTS= 1 +ROOT 0: E= -54.3818481526 Eh + 1.00000 [ 3]: 2111 + + <<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>> + + E(CAS)= -54.381848153 Eh DE= 0.000000e+00 + --- Energy gap subspaces: Ext-Act = 0.358 Act-Int = 14.743 + N(occ)= 2.00000 1.00000 1.00000 1.00000 + ||g|| = 8.377747e-01 Max(G)= -7.011926e-01 Rot=45,0 + --- Orbital Update [SuperCI(PT)] + --- Canonicalize Internal Space + --- Canonicalize External Space + --- SX_PT (Skipped TA=0 IT=1): ||X|| = 0.097273197 Max(X)(6,2) = -0.044359639 + --- SFit(Active Orbitals) + +MACRO-ITERATION 2: + --- Inactive Energy E0 = -44.72879418 Eh +CI-ITERATION 0: + -54.396929340 0.000000000000 ( 0.00) + CI-PROBLEM SOLVED + DENSITIES MADE + E(CAS)= -54.396929340 Eh DE= -1.508119e-02 + --- Energy gap subspaces: Ext-Act = 0.317 Act-Int = 14.676 + N(occ)= 2.00000 1.00000 1.00000 1.00000 + ||g|| = 8.661958e-02 Max(G)= -4.686820e-02 Rot=45,1 + --- Orbital Update [SuperCI(PT)] + --- Canonicalize Internal Space + --- Canonicalize External Space + --- SX_PT (Skipped TA=0 IT=1): ||X|| = 0.018251693 Max(X)(6,2) = -0.008989526 + --- SFit(Active Orbitals) + +MACRO-ITERATION 3: + --- Inactive Energy E0 = -44.72888355 Eh +CI-ITERATION 0: + -54.397580561 0.000000000000 ( 0.00) + CI-PROBLEM SOLVED + DENSITIES MADE + E(CAS)= -54.397580561 Eh DE= -6.512206e-04 + --- Energy gap subspaces: Ext-Act = 0.318 Act-Int = 14.686 + N(occ)= 2.00000 1.00000 1.00000 1.00000 + ||g|| = 1.169199e-02 Max(G)= -3.787582e-03 Rot=17,0 + --- Orbital Update [SuperCI(PT)] + --- Canonicalize Internal Space + --- Canonicalize External Space + --- SX_PT (Skipped TA=0 IT=1): ||X|| = 0.004765813 Max(X)(8,2) = 0.002361881 + --- SFit(Active Orbitals) + +MACRO-ITERATION 4: + --- Inactive Energy E0 = -44.72891366 Eh +CI-ITERATION 0: + -54.397608742 0.000000000000 ( 0.00) + CI-PROBLEM SOLVED + DENSITIES MADE + E(CAS)= -54.397608742 Eh DE= -2.818090e-05 + --- Energy gap subspaces: Ext-Act = 0.316 Act-Int = 14.684 + N(occ)= 2.00000 1.00000 1.00000 1.00000 + ||g|| = 3.401689e-03 Max(G)= 1.928798e-03 Rot=45,0 + --- Orbital Update [SuperCI(PT)] + --- Canonicalize Internal Space + --- Canonicalize External Space + --- SX_PT (Skipped TA=0 IT=1): ||X|| = 0.000448352 Max(X)(5,1) = -0.000198017 + --- SFit(Active Orbitals) + +MACRO-ITERATION 5: + --- Inactive Energy E0 = -44.72890218 Eh +CI-ITERATION 0: + -54.397609514 0.000000000000 ( 0.00) + CI-PROBLEM SOLVED + DENSITIES MADE + E(CAS)= -54.397609514 Eh DE= -7.726311e-07 + --- Energy gap subspaces: Ext-Act = 0.316 Act-Int = 14.684 + N(occ)= 2.00000 1.00000 1.00000 1.00000 + ||g|| = 3.651368e-04 Max(G)= -2.086419e-04 Rot=45,1 + --- Orbital Update [SuperCI(PT)] + --- Canonicalize Internal Space + --- Canonicalize External Space + --- SX_PT (Skipped TA=0 IT=1): ||X|| = 0.000048550 Max(X)(5,1) = -0.000029015 + --- SFit(Active Orbitals) + +MACRO-ITERATION 6: + --- Inactive Energy E0 = -44.72890337 Eh +CI-ITERATION 0: + -54.397609522 0.000000000000 ( 0.00) + CI-PROBLEM SOLVED + DENSITIES MADE + E(CAS)= -54.397609522 Eh DE= -7.825491e-09 + --- Energy gap subspaces: Ext-Act = 0.316 Act-Int = 14.684 + N(occ)= 2.00000 1.00000 1.00000 1.00000 + ||g|| = 5.710511e-05 Max(G)= 3.612727e-05 Rot=45,1 + ---- THE CAS-SCF ENERGY HAS CONVERGED ---- + ---- THE CAS-SCF GRADIENT HAS CONVERGED ---- + --- FINALIZING ORBITALS --- + ---- DOING ONE FINAL ITERATION FOR PRINTING ---- + --- Forming Natural Orbitals + --- Canonicalize Internal Space + --- Canonicalize External Space + +MACRO-ITERATION 7: + --- Inactive Energy E0 = -44.72890337 Eh + --- All densities will be recomputed +CI-ITERATION 0: + -54.397609522 0.000000000000 ( 0.00) + CI-PROBLEM SOLVED + DENSITIES MADE + E(CAS)= -54.397609522 Eh DE= -1.004565e-10 + --- Energy gap subspaces: Ext-Act = 0.311 Act-Int = 14.684 + N(occ)= 2.00000 1.00000 1.00000 1.00000 + ||g|| = 5.710508e-05 Max(G)= 3.643662e-05 Rot=45,1 +-------------- +CASSCF RESULTS +-------------- + +Final CASSCF energy : -54.397609522 Eh -1480.2342 eV + +---------------- +ORBITAL ENERGIES +---------------- + + NO OCC E(Eh) E(eV) + 0 2.0000 -15.630414 -425.3252 + 1 2.0000 -0.946888 -25.7661 + 2 1.0000 -0.180692 -4.9169 + 3 1.0000 -0.180692 -4.9169 + 4 1.0000 -0.180692 -4.9169 + 5 0.0000 0.129931 3.5356 + 6 0.0000 0.137198 3.7333 + 7 0.0000 0.137198 3.7333 + 8 0.0000 0.137198 3.7333 + 9 0.0000 0.464734 12.6461 + 10 0.0000 0.464734 12.6461 + 11 0.0000 0.464734 12.6461 + 12 0.0000 0.464734 12.6461 + 13 0.0000 0.464734 12.6461 + 14 0.0000 0.779518 21.2118 + 15 0.0000 0.779518 21.2118 + 16 0.0000 0.779518 21.2118 + 17 0.0000 1.009605 27.4727 + 18 0.0000 1.496268 40.7155 + 19 0.0000 1.496268 40.7155 + 20 0.0000 1.496268 40.7155 + 21 0.0000 1.496268 40.7155 + 22 0.0000 1.496268 40.7155 + 23 0.0000 1.496268 40.7155 + 24 0.0000 1.496268 40.7155 + 25 0.0000 1.559115 42.4257 + 26 0.0000 1.559115 42.4257 + 27 0.0000 1.559115 42.4257 + 28 0.0000 1.559115 42.4257 + 29 0.0000 1.559115 42.4257 + 30 0.0000 3.350863 91.1816 + 31 0.0000 3.350863 91.1816 + 32 0.0000 3.350863 91.1816 + 33 0.0000 4.877040 132.7110 + 34 0.0000 4.877040 132.7110 + 35 0.0000 4.877040 132.7110 + 36 0.0000 4.877040 132.7110 + 37 0.0000 4.877040 132.7110 + 38 0.0000 4.877040 132.7110 + 39 0.0000 4.877040 132.7110 + 40 0.0000 5.059015 137.6628 + 41 0.0000 5.059015 137.6628 + 42 0.0000 5.059015 137.6628 + 43 0.0000 5.059015 137.6628 + 44 0.0000 5.059015 137.6628 + 45 0.0000 6.334698 172.3759 + + +--------------------------------------------- +CAS-SCF STATES FOR BLOCK 1 MULT= 4 NROOTS= 1 +--------------------------------------------- + +ROOT 0: E= -54.3976095224 Eh + 1.00000 [ 3]: 2111 + + +-------------- +DENSITY MATRIX +-------------- + + 0 1 2 3 + 0 2.000000 0.000000 0.000000 0.000000 + 1 0.000000 1.000000 0.000000 0.000000 + 2 0.000000 0.000000 1.000000 0.000000 + 3 0.000000 0.000000 0.000000 1.000000 +Trace of the electron density: 5.000000 +Extracting Spin-Density from 2-RDM (MULT=4) ... done + +------------------- +SPIN-DENSITY MATRIX +------------------- + + 0 1 2 3 + 0 0.000000 0.000000 0.000000 0.000000 + 1 0.000000 1.000000 0.000000 0.000000 + 2 0.000000 0.000000 1.000000 0.000000 + 3 0.000000 0.000000 0.000000 1.000000 +Trace of the spin density: 3.000000 + +----------------- +ENERGY COMPONENTS +----------------- + +One electron energy : -73.937937606 Eh -2011.9536 eV +Two electron energy : 19.540328083 Eh 531.7194 eV +Nuclear repulsion energy : 0.000000000 Eh 0.0000 eV + ---------------- + -54.397609522 + +Kinetic energy : 54.383096271 Eh 1479.8393 eV +Potential energy : -108.780705794 Eh -2960.0735 eV +Virial ratio : -2.000266871 + ---------------- + -54.397609522 + +Core energy : -44.728903374 Eh -1217.1353 eV + + +---------------------------- +LOEWDIN ORBITAL-COMPOSITIONS +---------------------------- + + 0 1 2 3 4 5 + -15.63041 -0.94689 -0.18069 -0.18069 -0.18069 0.12993 + 2.00000 2.00000 1.00000 1.00000 1.00000 0.00000 + -------- -------- -------- -------- -------- -------- + 0 N s 100.0 100.0 0.0 0.0 0.0 100.0 + 0 N pz 0.0 0.0 98.7 1.3 0.0 0.0 + 0 N px 0.0 0.0 1.3 98.7 0.0 0.0 + 0 N py 0.0 0.0 0.0 0.0 100.0 0.0 + + 6 7 8 9 10 11 + 0.13720 0.13720 0.13720 0.46473 0.46473 0.46473 + 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + -------- -------- -------- -------- -------- -------- + 0 N pz 0.6 28.8 70.6 0.0 0.0 0.0 + 0 N px 0.2 70.6 29.2 0.0 0.0 0.0 + 0 N py 99.2 0.6 0.2 0.0 0.0 0.0 + 0 N dz2 0.0 0.0 0.0 0.0 1.2 86.4 + 0 N dxz 0.0 0.0 0.0 69.8 23.3 0.0 + 0 N dyz 0.0 0.0 0.0 3.5 0.0 11.6 + 0 N dx2y2 0.0 0.0 0.0 12.1 66.6 0.9 + 0 N dxy 0.0 0.0 0.0 14.6 8.9 1.2 + + 12 13 14 15 16 17 + 0.46473 0.46473 0.77952 0.77952 0.77952 1.00960 + 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + -------- -------- -------- -------- -------- -------- + 0 N s 0.0 0.0 0.0 0.0 0.0 100.0 + 0 N pz 0.0 0.0 0.0 27.3 72.7 0.0 + 0 N px 0.0 0.0 0.1 72.6 27.3 0.0 + 0 N py 0.0 0.0 99.9 0.0 0.0 0.0 + 0 N dz2 0.9 11.5 0.0 0.0 0.0 0.0 + 0 N dxz 3.6 3.3 0.0 0.0 0.0 0.0 + 0 N dyz 1.2 83.7 0.0 0.0 0.0 0.0 + 0 N dx2y2 19.3 1.1 0.0 0.0 0.0 0.0 + 0 N dxy 75.0 0.3 0.0 0.0 0.0 0.0 + + 18 19 20 21 22 23 + 1.49627 1.49627 1.49627 1.49627 1.49627 1.49627 + 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + -------- -------- -------- -------- -------- -------- + 0 N f0 5.6 24.2 37.4 21.3 4.3 2.9 + 0 N f+1 46.0 0.9 0.5 24.9 1.5 4.7 + 0 N f-1 18.8 40.5 9.7 5.5 0.0 0.5 + 0 N f+2 2.5 2.5 11.3 4.0 70.8 8.9 + 0 N f-2 1.7 9.1 3.0 18.4 20.1 29.2 + 0 N f+3 22.5 3.1 31.4 24.5 0.5 17.9 + 0 N f-3 2.8 19.7 6.7 1.3 2.8 35.9 + + 24 25 26 27 28 29 + 1.49627 1.55912 1.55912 1.55912 1.55912 1.55912 + 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + -------- -------- -------- -------- -------- -------- + 0 N dz2 0.0 5.6 15.9 74.3 1.7 2.5 + 0 N dxz 0.0 12.7 2.5 0.9 6.7 77.2 + 0 N dyz 0.0 5.3 37.5 20.9 35.1 1.2 + 0 N dx2y2 0.0 65.9 18.1 0.9 0.0 15.1 + 0 N dxy 0.0 10.6 26.0 3.0 56.4 4.0 + 0 N f0 4.2 0.0 0.0 0.0 0.0 0.0 + 0 N f+1 21.5 0.0 0.0 0.0 0.0 0.0 + 0 N f-1 25.0 0.0 0.0 0.0 0.0 0.0 + 0 N f-2 18.5 0.0 0.0 0.0 0.0 0.0 + 0 N f-3 30.8 0.0 0.0 0.0 0.0 0.0 + + 30 31 32 33 34 35 + 3.35086 3.35086 3.35086 4.87704 4.87704 4.87704 + 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + -------- -------- -------- -------- -------- -------- + 0 N pz 23.6 12.5 63.8 0.0 0.0 0.0 + 0 N px 56.8 8.5 34.6 0.0 0.0 0.0 + 0 N py 19.5 78.9 1.6 0.0 0.0 0.0 + 0 N f0 0.0 0.0 0.0 5.7 0.4 27.9 + 0 N f+1 0.0 0.0 0.0 5.5 0.0 0.0 + 0 N f-1 0.0 0.0 0.0 0.5 2.4 0.5 + 0 N f+2 0.0 0.0 0.0 36.3 53.6 2.9 + 0 N f-2 0.0 0.0 0.0 5.6 1.5 55.0 + 0 N f+3 0.0 0.0 0.0 12.8 0.1 0.3 + 0 N f-3 0.0 0.0 0.0 33.6 42.0 13.5 + + 36 37 38 39 40 41 + 4.87704 4.87704 4.87704 4.87704 5.05902 5.05902 + 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 + -------- -------- -------- -------- -------- -------- + 0 N dz2 0.0 0.0 0.0 0.0 44.5 6.2 + 0 N dxz 0.0 0.0 0.0 0.0 1.2 0.0 + 0 N dyz 0.0 0.0 0.0 0.0 3.8 33.6 + 0 N dx2y2 0.0 0.0 0.0 0.0 47.3 7.1 + 0 N dxy 0.0 0.0 0.0 0.0 3.2 53.1 + 0 N f0 8.9 0.1 3.3 53.6 0.0 0.0 + 0 N f+1 10.6 64.8 19.1 0.0 0.0 0.0 + 0 N f-1 1.1 26.1 66.5 3.0 0.0 0.0 + 0 N f+2 5.1 0.8 0.1 1.3 0.0 0.0 + 0 N f-2 0.1 0.0 1.3 36.6 0.0 0.0 + 0 N f+3 66.4 8.1 7.1 5.2 0.0 0.0 + 0 N f-3 7.9 0.1 2.6 0.3 0.0 0.0 + + 42 43 44 45 + 5.05902 5.05902 5.05902 6.33470 + 0.00000 0.00000 0.00000 0.00000 + -------- -------- -------- -------- + 0 N s 0.0 0.0 0.0 100.0 + 0 N dz2 32.3 16.9 0.0 0.0 + 0 N dxz 1.5 0.1 97.2 0.0 + 0 N dyz 19.7 41.9 1.1 0.0 + 0 N dx2y2 5.9 39.0 0.8 0.0 + 0 N dxy 40.7 2.1 0.9 0.0 + +---------------------------- +LOEWDIN REDUCED ACTIVE MOs +---------------------------- + + 0 1 2 3 4 5 + -15.63041 -0.94689 -0.18069 -0.18069 -0.18069 0.12993 + 2.00000 2.00000 1.00000 1.00000 1.00000 0.00000 + -------- -------- -------- -------- -------- -------- + 0 N s 100.0 100.0 0.0 0.0 0.0 100.0 + 0 N pz 0.0 0.0 98.7 1.3 0.0 0.0 + 0 N px 0.0 0.0 1.3 98.7 0.0 0.0 + 0 N py 0.0 0.0 0.0 0.0 100.0 0.0 + +------------------------------------------------------------------------------ + ORCA POPULATION ANALYSIS +------------------------------------------------------------------------------ +Input electron density ... input.scfp +Input spin density ... input.scfr +BaseName (.gbw .S,...) ... input + + ******************************** + * MULLIKEN POPULATION ANALYSIS * + ******************************** + +------------------------------------------ +MULLIKEN ATOMIC CHARGES AND SPIN DENSITIES +------------------------------------------ + 0 N : -0.000000 3.000000 +Sum of atomic charges : -0.0000000 +Sum of atomic spin densities: 3.0000000 + +--------------------------------------------------- +MULLIKEN REDUCED ORBITAL CHARGES AND SPIN DENSITIES +--------------------------------------------------- +CHARGE + 0 N s : 4.000000 s : 4.000000 + pz : 1.000000 p : 3.000000 + px : 1.000000 + py : 1.000000 + dz2 : 0.000000 d : 0.000000 + dxz : 0.000000 + dyz : 0.000000 + dx2y2 : 0.000000 + dxy : 0.000000 + f0 : 0.000000 f : 0.000000 + f+1 : 0.000000 + f-1 : 0.000000 + f+2 : 0.000000 + f-2 : 0.000000 + f+3 : 0.000000 + f-3 : 0.000000 + +SPIN + 0 N s : 0.000000 s : 0.000000 + pz : 1.000000 p : 3.000000 + px : 1.000000 + py : 1.000000 + dz2 : 0.000000 d : 0.000000 + dxz : 0.000000 + dyz : 0.000000 + dx2y2 : 0.000000 + dxy : 0.000000 + f0 : 0.000000 f : 0.000000 + f+1 : 0.000000 + f-1 : 0.000000 + f+2 : 0.000000 + f-2 : 0.000000 + f+3 : 0.000000 + f-3 : 0.000000 + + + ******************************* + * LOEWDIN POPULATION ANALYSIS * + ******************************* + +----------------------------------------- +LOEWDIN ATOMIC CHARGES AND SPIN DENSITIES +----------------------------------------- + 0 N : -0.000000 3.000000 + +-------------------------------------------------- +LOEWDIN REDUCED ORBITAL CHARGES AND SPIN DENSITIES +-------------------------------------------------- +CHARGE + 0 N s : 4.000000 s : 4.000000 + pz : 1.000000 p : 3.000000 + px : 1.000000 + py : 1.000000 + dz2 : 0.000000 d : 0.000000 + dxz : 0.000000 + dyz : 0.000000 + dx2y2 : 0.000000 + dxy : 0.000000 + f0 : 0.000000 f : 0.000000 + f+1 : 0.000000 + f-1 : 0.000000 + f+2 : 0.000000 + f-2 : 0.000000 + f+3 : 0.000000 + f-3 : 0.000000 + +SPIN + 0 N s : 0.000000 s : 0.000000 + pz : 1.000000 p : 3.000000 + px : 1.000000 + py : 1.000000 + dz2 : 0.000000 d : 0.000000 + dxz : 0.000000 + dyz : 0.000000 + dx2y2 : 0.000000 + dxy : 0.000000 + f0 : 0.000000 f : 0.000000 + f+1 : 0.000000 + f-1 : 0.000000 + f+2 : 0.000000 + f-2 : 0.000000 + f+3 : 0.000000 + f-3 : 0.000000 + + + ***************************** + * MAYER POPULATION ANALYSIS * + ***************************** + + NA - Mulliken gross atomic population + ZA - Total nuclear charge + QA - Mulliken gross atomic charge + VA - Mayer's total valence + BVA - Mayer's bonded valence + FA - Mayer's free valence + + ATOM NA ZA QA VA BVA FA + 0 N 7.0000 7.0000 -0.0000 3.0000 0.0000 3.0000 + + + +Transition Dipole Moments (a.u.) with input orbitals: +MO 0: + MO 2: 0.074753310 ( 0.008585038, 0.000026009, -0.074258695) + MO 3: 0.074753310 ( -0.074258616, -0.000109345, -0.008585067) + MO 4: 0.074753310 ( -0.000111609, 0.074753225, 0.000013280) +MO 1: + MO 2: 0.777510748 ( 0.089293158, 0.000270525, -0.772366248) + MO 3: 0.777510748 ( -0.772365423, -0.001137300, -0.089293461) + MO 4: 0.777510748 ( -0.001160843, 0.777509869, 0.000138122) +MO 2: +MO 3: +MO 4: + newgto N + 0 18 + 1 11420.000000000000 0.000522768355 + 2 1712.000000000000 0.004043208403 + 3 389.300000000000 0.020765798413 + 4 110.000000000000 0.080691244693 + 5 35.570000000000 0.232970767719 + 6 12.540000000000 0.433308995327 + 7 4.644000000000 0.347318098976 + 8 0.511800000000 -0.008504231668 + 9 11420.000000000000 -0.000000607139 + 10 1712.000000000000 -0.000004725125 + 11 389.300000000000 -0.000024412268 + 12 110.000000000000 -0.000097818014 + 13 35.570000000000 -0.000302719511 + 14 12.540000000000 -0.000697291235 + 15 4.644000000000 -0.000910761311 + 16 0.511800000000 0.003167386147 + 17 1.293000000000 0.042437946502 + 18 0.178700000000 0.006072346930 + 0 18 + 1 11420.000000000000 0.000002720308 + 2 1712.000000000000 0.000021039475 + 3 389.300000000000 0.000108058121 + 4 110.000000000000 0.000419889672 + 5 35.570000000000 0.001212300289 + 6 12.540000000000 0.002254791986 + 7 4.644000000000 0.001807324738 + 8 11420.000000000000 0.000115506572 + 9 1712.000000000000 0.000898942453 + 10 389.300000000000 0.004644368606 + 11 110.000000000000 0.018609615382 + 12 35.570000000000 0.057591576877 + 13 12.540000000000 0.132657791513 + 14 4.644000000000 0.173269902282 + 15 0.511800000000 -0.602586738479 + 16 1.293000000000 -0.151583562870 + 17 0.178700000000 -0.380619025879 + 18 0.057600000000 -0.006167374158 + 1 6 + 1 26.630000000000 0.014646107832 + 2 5.948000000000 0.091614549360 + 3 1.742000000000 0.298196552532 + 4 0.555000000000 0.500982554894 + 5 0.172500000000 0.327306035784 + 6 0.049100000000 0.015517087267 + end + +------------------------------------------------------------- + Forming the transition density ... done in 0.000164 sec +------------------------------------------------------------- + + + +========================================== +CASSCF UV, CD spectra and dipole moments +========================================== +------------------- +ABSORPTION SPECTRUM +------------------- + +Center of mass = ( 0.0000, 0.0000, 0.0000) +Nuclear contribution to the dipole moment = 0.000000, 0.000000, 0.000000 au + +Calculating the Dipole integrals ... done +Transforming integrals ... done +Calculating the Linear Momentum integrals ... done +Transforming integrals ... done +Calculating the Angular Momentum integrals ... done +Transforming integrals ... done + +------------------------------------------------------------------------------ + DIPOLE MOMENTS +------------------------------------------------------------------------------ + Root Block TX TY TZ |T| + (Debye) (Debye) (Debye) (Debye) +------------------------------------------------------------------------------ + 0 0 0.00000 0.00000 0.00000 0.00000 + +-------------- +CASSCF TIMINGS +-------------- + +Total time ... 7.2 sec +Sum of individual times ... 3.1 sec ( 42.6%) + +Calculation of AO operators + F(Core) operator ... 1.4 sec ( 18.9%) + G(Act) operator ... 0.3 sec ( 4.1%) + J(AO) operators ... 0.0 sec ( 0.0%) +Calculation of MO transformed quantities + J(MO) operators ... 0.1 sec ( 1.2%) + (pq|rs) integrals ... 0.0 sec ( 0.0%) + AO->MO one electron integrals ... 0.0 sec ( 0.0%) +Configuration interaction steps + CI-setup phase ... 0.0 sec ( 0.0%) + CI-solution phase ... 0.4 sec ( 6.0%) + Generation of densities ... 0.0 sec ( 0.0%) +Orbital improvement steps + Orbital gradient ... 0.9 sec ( 12.4%) + O(1) converger ... 0.0 sec ( 0.0%) +Properties ... 0.0 sec ( 0.0%) + SOC integral calculation ... 0.0 sec ( 0.0%) + SSC RMEs (incl. integrals) ... 0.0 sec ( 0.0%) + SOC RMEs ... 0.0 sec ( 0.0%) + +Maximum memory used throughout the entire CASSCF-calculation: 117.8 MB +Warning: no block have been defined for MRCI - copying CASSCF information! + + + ************************************************************ + * Program running with 16 parallel MPI-processes * + * working on a common directory * + ************************************************************ + +------------------------------------------------------------------------------ + ORCA MRCI +------------------------------------------------------------------------------ + +Transformed one-electron integrals ... input.cih.tmp +Transformed RI-integrals ... input.rijt.tmp +Output vectors ... input.mrci + +---------------- +MRCI-SETUP PHASE +---------------- + +GBW-Name ... input.gbw +IVO-Name ... input.ivo +HName ... input.H.tmp +SName ... input.S.tmp +CIHName ... input.cih.tmp +CIFName ... input.cif.tmp +MRCIName ... input.mrci +IntFiles ... input.rijt.tmp +LocName ... input.loc +MRCIInput ... input.mrciinp +Basis dimension ... 46 +Improved Virtual Orbitals ... OFF +Orbital localization ... OFF + +Figured out Orbital ranges +Set data to blocks + +----------------------- +FROZEN CORE FOCK MATRIX +----------------------- + +Improved virtual orbitals (IVOs) WILL NOT be constructed +Orbital Range is before PREP ... Int= 1- 0 Act= 1- 4 Ext= 5- 45 +Calculating Frozen Core Matrices ... (look at input.lastciprep) +Warning: FirstInternal=1 LastInternal=0 NInternals=0 - setting LastInternal for FI=-1 + +------------------------------------------------------------------------------ + ORCA CI-PREPARATION +------------------------------------------------------------------------------ +Reading the GBW file ... done + + +One-Electron Matrix ... input.H.tmp +GBW-File ... input.gbw +First MO in the CI ... 1 +Integral package used ... LIBINT +Reading the GBW file ... done + +Reading the one-electron matrix ... done +Forming inactive density ... done +Forming Fock matrix/matrices ... +Nuclear repulsion ... 0.000000 +Core repulsion ... 0.000000 +One-electron energy ... -48.843003 +Fock-energy ... -40.614803 +Final value ... -44.728903 +done +Transforming integrals ... done +Storing passive energy ... done ( -44.72890337 Eh) +The internal FI matrix is equal to the CIH matrix; storing it as such! + .... done with the Frozen Core Fock matrices +Final Orbital Range is now ... Int= 1- 0 Act= 1- 4 Ext= 5- 45 + +------------------------------ +PARTIAL COULOMB TRANSFORMATION +------------------------------ + +Dimension of the basis ... 46 +Number of internal MOs ... 45 (1-45) +Pair cutoff ... 2.500e-12 Eh +Number of AO pairs included in the trafo ... 1081 +Total Number of distinct AO pairs ... 1081 +Memory devoted for trafo ... 3200 MB +Memory needed per MO pair ... 0 MB +Max. Number of MO pairs treated together ... 388002 +Memory needed per MO ... 0 MB +Max. Number of MOs treated per batch ... 45 +Number Format for Storage ... Double (8 Byte) +Integral package used ... LIBINT + + --->>> The Coulomb operators (i,j|mue,nue) will be calculated + +Starting integral evaluation: +: : 1575 b 0 skpd 0.002 s ( 0.001 ms/b) +: 2100 b 0 skpd 0.002 s ( 0.001 ms/b) +: 1575 b 0 skpd 0.001 s ( 0.001 ms/b) +: 1050 b 0 skpd 0.002 s ( 0.002 ms/b) +: 1050 b 0 skpd 0.001 s ( 0.001 ms/b) +: 1260 b 0 skpd 0.001 s ( 0.001 ms/b) +: 840 b 0 skpd 0.002 s ( 0.003 ms/b) + 630 b 0 skpd 0.002 s ( 0.003 ms/b) +: 630 b 0 skpd 0.003 s ( 0.005 ms/b) +: 315 b 0 skpd 0.004 s ( 0.014 ms/b) +Collecting buffer AOJ + ... done with AO integral generation +Closing buffer AOJ ( 0.00 GB; CompressionRatio= 1.77) +Number of MO pairs included in the trafo ... 1035 + ... Now sorting integrals +IBATCH = 1 of 2 +IBATCH = 2 of 2 +Closing buffer JAO ( 0.01 GB; CompressionRatio= 1.00) +TOTAL TIME for half transformation ... 0.030 sec +AO-integral generation ... 0.020 sec +Half transformation ... 0.003 sec +J-integral sorting ... 0.007 sec +Collecting buffer JAO + +------------------- +FULL TRANSFORMATION +------------------- + +Processing MO 10 +Processing MO 20 +Processing MO 30 +Processing MO 40 +Full transformation done +Number of integrals made ... 536130 +Number of integrals stored ... 261508 +Timings: +Time for first half transformation ... 0.032 sec +Time for second half transformation ... 0.002 sec +Total time ... 0.037 sec + +------------------ +CI-BLOCK STRUCTURE +------------------ + +Number of CI-blocks ... 1 + +=========== +CI BLOCK 1 +=========== +Multiplicity ... 4 +Irrep ... -1 +Number of reference defs ... 1 + Reference 1: CAS(5,4) + +Excitation type ... CISD +Excitation flags for singles: + 1 1 1 1 +Excitation flags for doubles: + 1 1 1 / 1 1 1 / 1 1 1 + + + + -------------------------------------------------------------------- + -------------------- ALL SETUP TASKS ACCOMPLISHED ------------------ + -------------------- ( 0.258 sec) ------------------ + -------------------------------------------------------------------- + + + + ################################################### + # # + # M R C I # + # # + # TSel = 1.000e-06 Eh # + # TPre = 1.000e-04 # + # TIntCut = 1.000e-10 Eh # + # Extrapolation to unselected MR-CI by full MP2 # + # DAVIDSON-1 Correction to full CI # + # # + ################################################### + + +--------------------- +INTEGRAL ORGANIZATION +--------------------- + +Reading the one-Electron matrix ... done +E0 read was -44.728903374198 +Reading the internal Fock matrix ... done +Preparing the integral list ... done +Loading the full integral list ... done +Making the simple integrals ... done + + *************************************** + * CI-BLOCK 1 * + *************************************** + +Configurations with insufficient # of SOMOs WILL be rejected +Building a CAS(5,4) for multiplicity 4 +Reference Space: + Initial Number of Configurations : 4 + Internal Orbitals : 1 - 0 + Active Orbitals : 1 - 4 + External Orbitals : 5 - 45 +The number of CSFs in the reference is 4 +Calling MRPT_Selection with N(ref)=4 +------------------ +REFERENCE SPACE CI +------------------ + + Pre-diagonalization threshold : 1.000e-04 +Warning: Setting NGuessMat to 512 +N(ref-CFG)=4 N(ref-CSF)=4 + + ****Iteration 0**** + Lowest Energy : -54.397609522415 + Maximum Energy change : 54.397609522415 (vector 0) + Maximum residual norm : 0.000000000000 + + *** CONVERGENCE OF RESIDUAL NORM REACHED *** +Reference space selection using TPre= 1.00e-04 + + ... found 1 reference configurations (1 CSFs) + ... now redoing the reference space CI ... + +Warning: Setting NGuessMat to 512 +N(ref-CFG)=1 N(ref-CSF)=1 + + ****Iteration 0**** + Lowest Energy : -54.397609522415 + Maximum Energy change : 54.397609522415 (vector 0) + Maximum residual norm : 0.000000000000 + + *** CONVERGENCE OF RESIDUAL NORM REACHED *** + +---------- +CI-RESULTS +---------- + +The threshold for printing is 0.30 percent +The weights of configurations will be printed. The weights are summed over +all CSFs that belong to a given configuration before printing + +STATE 0: Energy= -54.397609522 Eh RefWeight= 1.0000 0.00 eV 0.0 cm**-1 + 1.0000 : h---h---[2111] + +------------------------------ +MR-PT SELECTION TSel= 1.00e-06 +------------------------------ + + +Setting reference configurations WITHOUT use of symmetry +Building active patterns WITHOUT use of symmetry + +Selection will be done from 1 spatial configurations + ( 0) Refs : Sel: 1CFGs/ 1CSFs Gen: 1CFGs/ 1CSFs ( 0.000 sec) +Building active space densities ... 0.002 sec +Building active space Fock operators ... 0.000 sec + ( 1) (p,q)->(r,s): Sel: 3CFGs/ 3CSFs Gen: 3CFGs/ 3CSFs ( 0.001 sec) + ( 5) (p,-)->(a,-): Sel: 164CFGs/ 287CSFs Gen: 164CFGs/ 287CSFs ( 0.001 sec) + ( 6) (i,-)->(a,-): Sel: 0CFGs/ 0CSFs Gen: 0CFGs/ 0CSFs ( 0.001 sec) + ( 7) (i,j)->(p,a): Sel: 0CFGs/ 0CSFs Gen: 0CFGs/ 0CSFs ( 0.000 sec) + ( 8) (i,p)->(q,a): Sel: 0CFGs/ 0CSFs Gen: 0CFGs/ 0CSFs ( 0.001 sec) + ( 9) (p,q)->(r,a): Sel: 108CFGs/ 108CSFs Gen: 369CFGs/ 369CSFs ( 0.001 sec) + (10) (i,p)->(a,b): Sel: 0CFGs/ 0CSFs Gen: 0CFGs/ 0CSFs ( 0.001 sec) + (11) (p,q)->(a,b): Sel: 1279CFGs/ 3493CSFs Gen: 5904CFGs/ 15744CSFs ( 0.002 sec) + (12) (i,j)->(a,b): Sel: 0CFGs/ 0CSFs Gen: 0CFGs/ 0CSFs ( 2.945 sec) + +Selection results: +Total number of generated configurations: 6441 +Number of selected configurations : 1555 ( 24.1%) +Total number of generated CSFs : 16404 +Number of selected CSFS : 3892 ( 23.7%) + +The selected tree structure: +Number of selected Internal Portions : 4 +Number of selected Singly External Portions: 13 + average number of VMOs/Portion : 19.43 + percentage of selected singly externals : 50.94 +Number of selected Doubly External Portions: 7 + average number of VMOs/Portion : 159.88 + percentage of selected doubly externals : 22.28 + +Diagonal second order perturbation results: +State E(tot) E(0)+E(1) E2(sel) E2(unsel) + Eh Eh Eh Eh +---------------------------------------------------------------- + 0 -54.503566265 -54.397609522 -0.105685 -0.000272 + +Computing the reference space Hamiltonian ... done (DIM=1) +Storing the reference space Hamiltonian ... done +Finding start and stop indices ... done +Collecting additional information ... done +Entering the DIIS solver section +------------------------ +MULTIROOT DIIS CI SOLVER +------------------------ + +Number of CSFs ... 3892 +Number of configurations ... 1555 +Maximum number of DIIS vectors stored ... 5 +Level shift ... 0.20 +Convergence tolerance on energies ... 2.500e-07 +Convergence tolerance on residual ... 2.500e-07 +Partitioning used ... MOELLER-PLESSET + + + ****Iteration 0**** + State 0: E= -54.466179124 Ec=-0.068569602 R= 0.299648465 W0= 0.96521 + Max energy change = 6.8570e-02 Eh + Max Residual Norm = 2.9965e-01 + + ****Iteration 1**** + State 0: E= -54.512269425 Ec=-0.114659903 R= 0.002512143 W0= 0.95744 + Max energy change = 4.6090e-02 Eh + Max Residual Norm = 2.5121e-03 + + ****Iteration 2**** + State 0: E= -54.512978160 Ec=-0.115368637 R= 0.000325639 W0= 0.96224 + Max energy change = 7.0873e-04 Eh + Max Residual Norm = 3.2564e-04 + + ****Iteration 3**** + State 0: E= -54.513035558 Ec=-0.115426036 R= 0.000008152 W0= 0.96143 + Max energy change = 5.7399e-05 Eh + Max Residual Norm = 8.1520e-06 + + ****Iteration 4**** + State 0: E= -54.513039684 Ec=-0.115430162 R= 0.000001364 W0= 0.96186 + Max energy change = 4.1259e-06 Eh + Max Residual Norm = 1.3636e-06 + + ****Iteration 5**** + State 0: residual converged + State 0: E= -54.513040333 Ec=-0.115430811 R= 0.000000068 W0= 0.96184 + Max energy change = 0.0000e+00 Eh + Max Residual Norm = 6.7607e-08 + *** Convergence of energies reached *** + *** Convergence of residual reached *** + *** All vectors converged *** +Returned from DIIS section + +---------------------------------------------- +MULTI-REFERENCE/MULTI-ROOT DAVIDSON CORRECTION +---------------------------------------------- + + +Summary of multireference corrections: + +Root W(ref) E(MR-CI) E(ref) Delta-E None Davidson-1 Davidson-2 Siegbahn Pople +------------------------------------------------------------------------------------------------------------ + 0 0.962 -54.513040333 -54.397609522 0.115430811 0.000000 -0.004405 -0.004769 -0.004580 -0.002769 +------------------------------------------------------------------------------------------------------------ +Active option = Davidson-1 + +Unselected CSF estimate: +Full relaxed MR-MP2 calculation ... + +Selection will be done from 1 spatial configurations + +Selection will be done from 1 spatial configurations + +Selection will be done from 1 spatial configurations +done +Selected MR-MP2 energies ... + + Root= 0 E(unsel)= -0.000272010 + +---------- +CI-RESULTS +---------- + +The threshold for printing is 0.30 percent +The weights of configurations will be printed. The weights are summed over +all CSFs that belong to a given configuration before printing + +STATE 0: Energy= -54.517717250 Eh RefWeight= 0.9618 0.00 eV 0.0 cm**-1 + 0.9618 : h---h---[2111] +Now choosing densities with flags StateDens=3 and TransDens=1 NStates(total)=1 +State density of the lowest state in each block NStateDens= 2 +GS to excited state transition electron densities NTransDens=0 +NDens(total)=2 +All lowest density information prepared Cnt(Dens)=2 +GS to ES state electron density information prepared Cnt(Dens)=2 + +------------------ +DENSITY GENERATION +------------------ + + ... generating densities (input.mrci.vec0) ... o.k. +MRCI-Population analysis: looping over 2 densities +Found state electron-density state=0 block=0 +Found state spin-density state=0 block=0 +------------------------------------------------------------------------------ + ORCA POPULATION ANALYSIS +------------------------------------------------------------------------------ +Input electron density ... input.state_0_block_0.el.tmp +Input spin density ... input.state_0_block_0.spin.tmp +BaseName (.gbw .S,...) ... input + + ******************************** + * MULLIKEN POPULATION ANALYSIS * + ******************************** + +------------------------------------------ +MULLIKEN ATOMIC CHARGES AND SPIN DENSITIES +------------------------------------------ + 0 N : -0.000000 3.000000 +Sum of atomic charges : -0.0000000 +Sum of atomic spin densities: 3.0000000 + +--------------------------------------------------- +MULLIKEN REDUCED ORBITAL CHARGES AND SPIN DENSITIES +--------------------------------------------------- +CHARGE + 0 N s : 3.975014 s : 3.975014 + pz : 0.998985 p : 2.996924 + px : 0.998969 + py : 0.998970 + dz2 : 0.005285 d : 0.026369 + dxz : 0.005270 + dyz : 0.005265 + dx2y2 : 0.005292 + dxy : 0.005257 + f0 : 0.000241 f : 0.001693 + f+1 : 0.000239 + f-1 : 0.000253 + f+2 : 0.000241 + f-2 : 0.000236 + f+3 : 0.000234 + f-3 : 0.000251 + +SPIN + 0 N s : 0.021881 s : 0.021881 + pz : 0.984931 p : 2.954801 + px : 0.984937 + py : 0.984933 + dz2 : 0.004517 d : 0.022525 + dxz : 0.004496 + dyz : 0.004491 + dx2y2 : 0.004526 + dxy : 0.004496 + f0 : 0.000113 f : 0.000793 + f+1 : 0.000112 + f-1 : 0.000119 + f+2 : 0.000112 + f-2 : 0.000109 + f+3 : 0.000110 + f-3 : 0.000117 + + + ******************************* + * LOEWDIN POPULATION ANALYSIS * + ******************************* + +----------------------------------------- +LOEWDIN ATOMIC CHARGES AND SPIN DENSITIES +----------------------------------------- + 0 N : -0.000000 3.000000 + +-------------------------------------------------- +LOEWDIN REDUCED ORBITAL CHARGES AND SPIN DENSITIES +-------------------------------------------------- +CHARGE + 0 N s : 3.975014 s : 3.975014 + pz : 0.998985 p : 2.996924 + px : 0.998969 + py : 0.998970 + dz2 : 0.005285 d : 0.026369 + dxz : 0.005270 + dyz : 0.005265 + dx2y2 : 0.005292 + dxy : 0.005257 + f0 : 0.000241 f : 0.001693 + f+1 : 0.000239 + f-1 : 0.000253 + f+2 : 0.000241 + f-2 : 0.000236 + f+3 : 0.000234 + f-3 : 0.000251 + +SPIN + 0 N s : 0.021881 s : 0.021881 + pz : 0.984931 p : 2.954801 + px : 0.984937 + py : 0.984933 + dz2 : 0.004517 d : 0.022525 + dxz : 0.004496 + dyz : 0.004491 + dx2y2 : 0.004526 + dxy : 0.004496 + f0 : 0.000113 f : 0.000793 + f+1 : 0.000112 + f-1 : 0.000119 + f+2 : 0.000112 + f-2 : 0.000109 + f+3 : 0.000110 + f-3 : 0.000117 + + + ***************************** + * MAYER POPULATION ANALYSIS * + ***************************** + + NA - Mulliken gross atomic population + ZA - Total nuclear charge + QA - Mulliken gross atomic charge + VA - Mayer's total valence + BVA - Mayer's bonded valence + FA - Mayer's free valence + + ATOM NA ZA QA VA BVA FA + 0 N 7.0000 7.0000 -0.0000 3.1783 0.0000 3.1783 + + + + +--------------------- +CI-EXCITATION SPECTRA +--------------------- + +Center of mass = ( 0.0000, 0.0000, 0.0000) + +Nuclear contribution to the dipole moment= 0.000000, 0.000000, 0.000000 au + +Calculating the Dipole integrals ... done +Transforming integrals ... done +Calculating the Linear Momentum integrals ... done +Transforming integrals ... done +Calculating the Angular momentum integrals ... done +Transforming integrals ... done + +------------------------------------------------------------------------------------------ + ABSORPTION SPECTRUM +------------------------------------------------------------------------------------------ + States Energy Wavelength fosc T2 TX TY TZ + (cm-1) (nm) (D**2) (D) (D) (D) +------------------------------------------------------------------------------------------ + +------------------------------------------------------------------------------ + CD SPECTRUM +------------------------------------------------------------------------------ + States Energy Wavelength R*T RX RY RZ + (cm-1) (nm) (1e40*sgs) (au) (au) (au) +------------------------------------------------------------------------------ + +------------------------------------------------------------------------------ + STATE DIPOLE MOMENTS +------------------------------------------------------------------------------ + Root Block TX TY TZ |T| + (Debye) (Debye) (Debye) (Debye) +------------------------------------------------------------------------------ + 0 0 0.00000 0.00000 0.00000 0.00000 + +Maximum memory used throughout the entire MRCI-calculation: 76.9 MB + +------------------------- -------------------- +FINAL SINGLE POINT ENERGY -54.517717249721 +------------------------- -------------------- + + + *************************************** + * ORCA property calculations * + *************************************** + + --------------------- + Active property flags + --------------------- + (+) Dipole Moment + + +------------------------------------------------------------------------------ + ORCA ELECTRIC PROPERTIES CALCULATION +------------------------------------------------------------------------------ + +Dipole Moment Calculation ... on +Quadrupole Moment Calculation ... off +Polarizability Calculation ... off +GBWName ... input.gbw +Electron density ... input.scfp +The origin for moment calculation is the CENTER OF MASS = ( 0.000000, 0.000000 0.000000) + +------------- +DIPOLE MOMENT +------------- + X Y Z +Electronic contribution: 0.00000 0.00000 0.00000 +Nuclear contribution : 0.00000 0.00000 0.00000 + ----------------------------------------- +Total Dipole Moment : 0.00000 0.00000 0.00000 + ----------------------------------------- +Magnitude (a.u.) : 0.00000 +Magnitude (Debye) : 0.00000 + + + +-------------------- +Rotational spectrum +-------------------- + +Rotational constants in cm-1: 0.000000 0.000000 0.000000 +Rotational constants in MHz : 0.000000 0.000000 0.000000 + + Dipole components along the rotational axes: +x,y,z [a.u.] : 0.000000 0.000000 0.000000 +x,y,z [Debye]: 0.000000 0.000000 0.000000 + + + +Timings for individual modules: + +Sum of individual times ... 17.846 sec (= 0.297 min) +GTO integral calculation ... 0.534 sec (= 0.009 min) 3.0 % +SCF iterations ... 0.410 sec (= 0.007 min) 2.3 % +CASSCF iterations ... 9.882 sec (= 0.165 min) 55.4 % +Multireference CI module ... 7.020 sec (= 0.117 min) 39.3 % + ****ORCA TERMINATED NORMALLY**** +TOTAL RUN TIME: 0 days 0 hours 0 minutes 18 seconds 202 msec diff --git a/arkane/data/orca/freq_orca_5.0.4.log b/arkane/data/orca/freq_orca_5.0.4.log new file mode 100644 index 00000000000..7c56d03be24 --- /dev/null +++ b/arkane/data/orca/freq_orca_5.0.4.log @@ -0,0 +1,1709 @@ + + ***************** + * O R C A * + ***************** + + #, + ### + #### + ##### + ###### + ########, + ,,################,,,,, + ,,#################################,, + ,,##########################################,, + ,#########################################, ''#####, + ,#############################################,, '####, + ,##################################################,,,,####, + ,###########'''' ''''############################### + ,#####'' ,,,,##########,,,, '''####''' '#### + ,##' ,,,,###########################,,, '## + ' ,,###'''' '''############,,, + ,,##'' '''############,,,, ,,,,,,###'' + ,#'' '''#######################''' + ' ''''####'''' + ,#######, #######, ,#######, ## + ,#' '#, ## ## ,#' '#, #''# ###### ,####, + ## ## ## ,#' ## #' '# # #' '# + ## ## ####### ## ,######, #####, # # + '#, ,#' ## ## '#, ,#' ,# #, ## #, ,# + '#######' ## ## '#######' #' '# #####' # '####' + + + + ####################################################### + # -***- # + # Department of theory and spectroscopy # + # Directorship and core code : Frank Neese # + # Max Planck Institute fuer Kohlenforschung # + # Kaiser Wilhelm Platz 1 # + # D-45470 Muelheim/Ruhr # + # Germany # + # # + # All rights reserved # + # -***- # + ####################################################### + + + Program Version 5.0.4 - RELEASE - + + + With contributions from (in alphabetic order): + Daniel Aravena : Magnetic Suceptibility + Michael Atanasov : Ab Initio Ligand Field Theory (pilot matlab implementation) + Alexander A. Auer : GIAO ZORA, VPT2 properties, NMR spectrum + Ute Becker : Parallelization + Giovanni Bistoni : ED, misc. LED, open-shell LED, HFLD + Martin Brehm : Molecular dynamics + Dmytro Bykov : SCF Hessian + Vijay G. Chilkuri : MRCI spin determinant printing, contributions to CSF-ICE + Dipayan Datta : RHF DLPNO-CCSD density + Achintya Kumar Dutta : EOM-CC, STEOM-CC + Dmitry Ganyushin : Spin-Orbit,Spin-Spin,Magnetic field MRCI + Miquel Garcia : C-PCM and meta-GGA Hessian, CC/C-PCM, Gaussian charge scheme + Yang Guo : DLPNO-NEVPT2, F12-NEVPT2, CIM, IAO-localization + Andreas Hansen : Spin unrestricted coupled pair/coupled cluster methods + Benjamin Helmich-Paris : MC-RPA, TRAH-SCF, COSX integrals + Lee Huntington : MR-EOM, pCC + Robert Izsak : Overlap fitted RIJCOSX, COSX-SCS-MP3, EOM + Marcus Kettner : VPT2 + Christian Kollmar : KDIIS, OOCD, Brueckner-CCSD(T), CCSD density, CASPT2, CASPT2-K + Simone Kossmann : Meta GGA functionals, TD-DFT gradient, OOMP2, MP2 Hessian + Martin Krupicka : Initial AUTO-CI + Lucas Lang : DCDCAS + Marvin Lechner : AUTO-CI (C++ implementation), FIC-MRCC + Dagmar Lenk : GEPOL surface, SMD + Dimitrios Liakos : Extrapolation schemes; Compound Job, initial MDCI parallelization + Dimitrios Manganas : Further ROCIS development; embedding schemes + Dimitrios Pantazis : SARC Basis sets + Anastasios Papadopoulos: AUTO-CI, single reference methods and gradients + Taras Petrenko : DFT Hessian,TD-DFT gradient, ASA, ECA, R-Raman, ABS, FL, XAS/XES, NRVS + Peter Pinski : DLPNO-MP2, DLPNO-MP2 Gradient + Christoph Reimann : Effective Core Potentials + Marius Retegan : Local ZFS, SOC + Christoph Riplinger : Optimizer, TS searches, QM/MM, DLPNO-CCSD(T), (RO)-DLPNO pert. Triples + Tobias Risthaus : Range-separated hybrids, TD-DFT gradient, RPA, STAB + Michael Roemelt : Original ROCIS implementation + Masaaki Saitow : Open-shell DLPNO-CCSD energy and density + Barbara Sandhoefer : DKH picture change effects + Avijit Sen : IP-ROCIS + Kantharuban Sivalingam : CASSCF convergence, NEVPT2, FIC-MRCI + Bernardo de Souza : ESD, SOC TD-DFT + Georgi Stoychev : AutoAux, RI-MP2 NMR, DLPNO-MP2 response + Willem Van den Heuvel : Paramagnetic NMR + Boris Wezisla : Elementary symmetry handling + Frank Wennmohs : Technical directorship + + + We gratefully acknowledge several colleagues who have allowed us to + interface, adapt or use parts of their codes: + Stefan Grimme, W. Hujo, H. Kruse, P. Pracht, : VdW corrections, initial TS optimization, + C. Bannwarth, S. Ehlert DFT functionals, gCP, sTDA/sTD-DF + Ed Valeev, F. Pavosevic, A. Kumar : LibInt (2-el integral package), F12 methods + Garnet Chan, S. Sharma, J. Yang, R. Olivares : DMRG + Ulf Ekstrom : XCFun DFT Library + Mihaly Kallay : mrcc (arbitrary order and MRCC methods) + Jiri Pittner, Ondrej Demel : Mk-CCSD + Frank Weinhold : gennbo (NPA and NBO analysis) + Christopher J. Cramer and Donald G. Truhlar : smd solvation model + Lars Goerigk : TD-DFT with DH, B97 family of functionals + V. Asgeirsson, H. Jonsson : NEB implementation + FAccTs GmbH : IRC, NEB, NEB-TS, DLPNO-Multilevel, CI-OPT + MM, QMMM, 2- and 3-layer-ONIOM, Crystal-QMMM, + LR-CPCM, SF, NACMEs, symmetry and pop. for TD-DFT, + nearIR, NL-DFT gradient (VV10), updates on ESD, + ML-optimized integration grids + S Lehtola, MJT Oliveira, MAL Marques : LibXC Library + Liviu Ungur et al : ANISO software + + + Your calculation uses the libint2 library for the computation of 2-el integrals + For citations please refer to: http://libint.valeyev.net + + Your ORCA version has been built with support for libXC version: 5.1.0 + For citations please refer to: https://tddft.org/programs/libxc/ + + This ORCA versions uses: + CBLAS interface : Fast vector & matrix operations + LAPACKE interface : Fast linear algebra routines + SCALAPACK package : Parallel linear algebra routines + Shared memory : Shared parallel matrices + BLAS/LAPACK : OpenBLAS 0.3.15 USE64BITINT DYNAMIC_ARCH NO_AFFINITY Zen SINGLE_THREADED + Core in use : Zen + Copyright (c) 2011-2014, The OpenBLAS Project + + +================================================================================ + +----- Orbital basis set information ----- +Your calculation utilizes the basis: aug-cc-pVTZ + H, B-Ne : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + R. A. Kendall, T. H. Dunning, Jr., R. J. Harrison, J. Chem. Phys. 96, 6796 (1992) + He : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + D. E. Woon, T. H. Dunning, Jr., J. Chem. Phys. 100, 2975 (1994) + Li-Be, Na : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + B. P. Prascher, D. E. Woon, K. A. Peterson, T. H. Dunning, Jr., A. K. Wilson, Theor. Chem. Acc. 128, 69 (2011) + Mg : Obtained from the Peterson Research Group Website (tyr0.chem.wsu.edu/~kipeters) Feb. 2017 + B. P. Prascher, D. E. Woon, K. A. Peterson, T. H. Dunning, Jr., A. K. Wilson, Theor. Chem. Acc. 128, 69 (2011) + Al-Ar : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + D. E. Woon, T. H. Dunning, Jr., J. Chem. Phys. 98, 1358 (1993) + Sc-Zn : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + N. B. Balabanov, K. A. Peterson, J. Chem. Phys. 123, 064107 (2005) + N. B. Balabanov, K. A. Peterson, J. Chem. Phys. 125, 074110 (2006) + Ga-Kr : Obtained from the ccRepo (grant-hill.group.shef.ac.uk/ccrepo) Feb. 2017 + A. K. Wilson, D. E. Woon, K. A. Peterson, T. H. Dunning, Jr., J. Chem. Phys. 110, 7667 (1999) + Ag, Au : Obtained from the Peterson Research Group Website (tyr0.chem.wsu.edu/~kipeters) Feb. 2017 + K. A. Peterson, C. Puzzarini, Theor. Chem. Acc. 114, 283 (2005) + +================================================================================ + WARNINGS + Please study these warnings very carefully! +================================================================================ + + +WARNING: Analytical Frequencies for this method not available! + ===> : Switching to Numerical Frequencies! + +WARNING: The environment variable RSH_COMMAND is not set! + ===> : All Displacements for the Numerical Hessian or Gradient calculation + will be started on localhost + +WARNING: Numerical Frequencies Analysis needs Gradient calculation + ===> : Will do Numerical Gradient calculation !!! + +WARNING: Post HF methods need fully converged wavefunctions + ===> : Setting SCFConvForced true + You can overwrite this default with %scf ConvForced false + + +WARNING: MDCI localization with Augmented Hessian Foster-Boys + ===> : Switching off randomization! + +INFO : the flag for use of the SHARK integral package has been found! + +================================================================================ + INPUT FILE +================================================================================ +NAME = input.in +| 1> !rHF ccsd(t) aug-cc-pvtz tightscf +| 2> !Freq +| 3> +| 4> %maxcore 3277 +| 5> %pal # job parallelization settings +| 6> nprocs 20 +| 7> end +| 8> %scf # recommended SCF settings +| 9> MaxIter 500 +| 10> end +| 11> +| 12> +| 13> * xyz 0 1 +| 14> N 1.67752400 -0.09849500 0.08849500 +| 15> O 0.71994800 0.48047800 -0.07157800 +| 16> O -0.88169600 -0.54832600 0.07744200 +| 17> H -1.51577600 0.16634200 -0.09436200 +| 18> * +| 19> +| 20> ****END OF INPUT**** +================================================================================ + + **************************** + * Single Point Calculation * + **************************** + +--------------------------------- +CARTESIAN COORDINATES (ANGSTROEM) +--------------------------------- + N 1.677524 -0.098495 0.088495 + O 0.719948 0.480478 -0.071578 + O -0.881696 -0.548326 0.077442 + H -1.515776 0.166342 -0.094362 + +---------------------------- +CARTESIAN COORDINATES (A.U.) +---------------------------- + NO LB ZA FRAG MASS X Y Z + 0 N 7.0000 0 14.007 3.170061 -0.186129 0.167231 + 1 O 8.0000 0 15.999 1.360505 0.907972 -0.135263 + 2 O 8.0000 0 15.999 -1.666164 -1.036186 0.146344 + 3 H 1.0000 0 1.008 -2.864402 0.314341 -0.178318 + +-------------------------------- +INTERNAL COORDINATES (ANGSTROEM) +-------------------------------- + N 0 0 0 0.000000000000 0.00000000 0.00000000 + O 1 0 0 1.130391479017 0.00000000 0.00000000 + O 2 1 0 1.909426126760 115.05898007 0.00000000 + H 3 2 1 0.970733954820 97.89860434 179.80635352 + +--------------------------- +INTERNAL COORDINATES (A.U.) +--------------------------- + N 0 0 0 0.000000000000 0.00000000 0.00000000 + O 1 0 0 2.136130319460 0.00000000 0.00000000 + O 2 1 0 3.608292452530 115.05898007 0.00000000 + H 3 2 1 1.834421323508 97.89860434 179.80635352 + +--------------------- +BASIS SET INFORMATION +--------------------- +There are 3 groups of distinct atoms + + Group 1 Type N : 19s6p3d2f contracted to 5s4p3d2f pattern {88111/3111/111/11} + Group 2 Type O : 19s6p3d2f contracted to 5s4p3d2f pattern {88111/3111/111/11} + Group 3 Type H : 6s3p2d contracted to 4s3p2d pattern {3111/111/11} + +Atom 0N basis set group => 1 +Atom 1O basis set group => 2 +Atom 2O basis set group => 2 +Atom 3H basis set group => 3 + + + ************************************************************ + * Program running with 20 parallel MPI-processes * + * working on a common directory * + ************************************************************ +------------------------------------------------------------------------------ + ORCA GTO INTEGRAL CALCULATION +------------------------------------------------------------------------------ +------------------------------------------------------------------------------ + ___ + / \ - P O W E R E D B Y - + / \ + | | | _ _ __ _____ __ __ + | | | | | | | / \ | _ \ | | / | + \ \/ | | | | / \ | | | | | | / / + / \ \ | |__| | / /\ \ | |_| | | |/ / + | | | | __ | / /__\ \ | / | \ + | | | | | | | | __ | | \ | |\ \ + \ / | | | | | | | | | |\ \ | | \ \ + \___/ |_| |_| |__| |__| |_| \__\ |__| \__/ + + - O R C A' S B I G F R I E N D - + & + - I N T E G R A L F E E D E R - + + v1 FN, 2020, v2 2021 +------------------------------------------------------------------------------ + + +Reading SHARK input file input.SHARKINP.tmp ... ok +---------------------- +SHARK INTEGRAL PACKAGE +---------------------- + +Number of atoms ... 4 +Number of basis functions ... 179 +Number of shells ... 69 +Maximum angular momentum ... 3 +Integral batch strategy ... SHARK/LIBINT Hybrid +RI-J (if used) integral strategy ... SPLIT-RIJ (Revised 2003 algorithm where possible) +Printlevel ... 1 +Contraction scheme used ... PARTIAL GENERAL contraction +Coulomb Range Separation ... NOT USED +Exchange Range Separation ... NOT USED +Finite Nucleus Model ... NOT USED +Auxiliary Coulomb fitting basis ... NOT available +Auxiliary J/K fitting basis ... NOT available +Auxiliary Correlation fitting basis ... NOT available +Auxiliary 'external' fitting basis ... NOT available +Integral threshold ... 2.500000e-11 +Primitive cut-off ... 2.500000e-12 +Primitive pair pre-selection threshold ... 2.500000e-12 + +Calculating pre-screening integrals ... done ( 0.0 sec) Dimension = 69 +Calculating pre-screening integrals (ORCA) ... done ( 0.1 sec) Dimension = 51 +Organizing shell pair data ... done ( 1.3 sec) +Shell pair information +Total number of shell pairs ... 2415 +Shell pairs after pre-screening ... 2193 +Total number of primitive shell pairs ... 3015 +Primitive shell pairs kept ... 2646 + la=0 lb=0: 545 shell pairs + la=1 lb=0: 523 shell pairs + la=1 lb=1: 120 shell pairs + la=2 lb=0: 380 shell pairs + la=2 lb=1: 165 shell pairs + la=2 lb=2: 66 shell pairs + la=3 lb=0: 217 shell pairs + la=3 lb=1: 90 shell pairs + la=3 lb=2: 66 shell pairs + la=3 lb=3: 21 shell pairs + +Calculating one electron integrals ... done ( 0.0 sec) +Calculating Nuclear repulsion ... done ( 0.0 sec) ENN= 62.747122624982 Eh + +SHARK setup successfully completed in 1.8 seconds + +Maximum memory used throughout the entire GTOINT-calculation: 17.6 MB + + + ************************************************************ + * Program running with 20 parallel MPI-processes * + * working on a common directory * + ************************************************************ +------------------------------------------------------------------------------- + ORCA SCF +------------------------------------------------------------------------------- + +------------ +SCF SETTINGS +------------ +Hamiltonian: + Ab initio Hamiltonian Method .... Hartree-Fock(GTOs) + + +General Settings: + Integral files IntName .... input + Hartree-Fock type HFTyp .... RHF + Total Charge Charge .... 0 + Multiplicity Mult .... 1 + Number of Electrons NEL .... 24 + Basis Dimension Dim .... 161 + Nuclear Repulsion ENuc .... 62.7471226250 Eh + +Convergence Acceleration: + DIIS CNVDIIS .... on + Start iteration DIISMaxIt .... 12 + Startup error DIISStart .... 0.200000 + # of expansion vecs DIISMaxEq .... 5 + Bias factor DIISBfac .... 1.050 + Max. coefficient DIISMaxC .... 10.000 + Trust-Rad. Augm. Hess. CNVTRAH .... auto + Auto Start mean grad. ratio tolernc. .... 1.125000 + Auto Start start iteration .... 20 + Auto Start num. interpolation iter. .... 10 + Max. Number of Micro iterations .... 16 + Max. Number of Macro iterations .... Maxiter - #DIIS iter + Number of Davidson start vectors .... 2 + Converg. threshold I (grad. norm) .... 1.000e-05 + Converg. threshold II (energy diff.) .... 1.000e-08 + Grad. Scal. Fac. for Micro threshold .... 0.100 + Minimum threshold for Micro iter. .... 0.010 + NR start threshold (gradient norm) .... 0.001 + Initial trust radius .... 0.400 + Minimum AH scaling param. (alpha) .... 1.000 + Maximum AH scaling param. (alpha) .... 1000.000 + Orbital update algorithm .... Taylor + White noise on init. David. guess .... on + Maximum white noise .... 0.010 + Quad. conv. algorithm .... NR + SOSCF CNVSOSCF .... on + Start iteration SOSCFMaxIt .... 150 + Startup grad/error SOSCFStart .... 0.003300 + Level Shifting CNVShift .... on + Level shift para. LevelShift .... 0.2500 + Turn off err/grad. ShiftErr .... 0.0010 + Zerner damping CNVZerner .... off + Static damping CNVDamp .... on + Fraction old density DampFac .... 0.7000 + Max. Damping (<1) DampMax .... 0.9800 + Min. Damping (>=0) DampMin .... 0.0000 + Turn off err/grad. DampErr .... 0.1000 + Fernandez-Rico CNVRico .... off + +SCF Procedure: + Maximum # iterations MaxIter .... 500 + SCF integral mode SCFMode .... Direct + Integral package .... SHARK and LIBINT hybrid scheme + Reset frequency DirectResetFreq .... 20 + Integral Threshold Thresh .... 2.500e-11 Eh + Primitive CutOff TCut .... 2.500e-12 Eh + +Convergence Tolerance: + Convergence Check Mode ConvCheckMode .... Total+1el-Energy + Convergence forced ConvForced .... 1 + Energy Change TolE .... 1.000e-08 Eh + 1-El. energy change .... 1.000e-05 Eh + Orbital Gradient TolG .... 1.000e-05 + Orbital Rotation angle TolX .... 1.000e-05 + DIIS Error TolErr .... 5.000e-07 + + +Diagonalization of the overlap matrix: +Smallest eigenvalue ... 2.001e-04 +Time for diagonalization ... 0.004 sec +Threshold for overlap eigenvalues ... 1.000e-08 +Number of eigenvalues below threshold ... 0 +Time for construction of square roots ... 0.003 sec +Total time needed ... 0.007 sec + +Time for model grid setup = 0.027 sec + +------------------------------ +INITIAL GUESS: MODEL POTENTIAL +------------------------------ +Loading Hartree-Fock densities ... done +Calculating cut-offs ... done +Initializing the effective Hamiltonian ... done +Setting up the integral package (SHARK) ... done +Starting the Coulomb interaction ... done ( 0.0 sec) +Reading the grid ... done +Mapping shells ... done +Starting the XC term evaluation ... done ( 0.0 sec) +Transforming the Hamiltonian ... done ( 0.0 sec) +Diagonalizing the Hamiltonian ... done ( 0.0 sec) +Back transforming the eigenvectors ... done ( 0.0 sec) +Now organizing SCF variables ... done + ------------------ + INITIAL GUESS DONE ( 0.0 sec) + ------------------ +-------------- +SCF ITERATIONS +-------------- +ITER Energy Delta-E Max-DP RMS-DP [F,P] Damp + *** Starting incremental Fock matrix formation *** + 0 -204.3147939758 0.000000000000 0.04295478 0.00134838 0.5069765 0.7000 + 1 -204.4338656668 -0.119071691050 0.02882988 0.00093839 0.2422953 0.7000 + ***Turning on DIIS*** + 2 -204.4834718013 -0.049606134475 0.01413642 0.00047966 0.1158219 0.7000 + 3 -204.5791469718 -0.095675170540 0.03402848 0.00090809 0.0891009 0.0000 + 4 -204.5706267218 0.008520250063 0.00695951 0.00023844 0.0188693 0.0000 + 5 -204.5872861390 -0.016659417220 0.00566114 0.00017670 0.0175627 0.0000 + 6 -204.5720895467 0.015196592311 0.00680122 0.00020131 0.0105932 0.0000 + 7 -204.5796851245 -0.007595577831 0.00612119 0.00021174 0.0085319 0.0000 + 8 -204.5922499841 -0.012564859618 0.00425728 0.00013430 0.0038098 0.0000 + 9 -204.5883641128 0.003885871292 0.00250581 0.00009638 0.0023355 0.0000 + *** Initiating the SOSCF procedure *** + *** Shutting down DIIS *** + *** Re-Reading the Fockian *** + *** Removing any level shift *** +ITER Energy Delta-E Grad Rot Max-DP RMS-DP + 10 -204.59582577 -0.0074616585 0.002412 0.002412 0.001011 0.000041 + *** Restarting incremental Fock matrix formation *** + 11 -204.59663226 -0.0008064915 0.000832 0.002239 0.000493 0.000022 + 12 -204.59663821 -0.0000059458 0.000274 0.002139 0.000585 0.000029 + 13 -204.59664217 -0.0000039635 0.000173 0.000143 0.000227 0.000007 + 14 -204.59664280 -0.0000006252 0.000096 0.000145 0.000131 0.000004 + 15 -204.59664294 -0.0000001408 0.000057 0.000078 0.000074 0.000002 + 16 -204.59664297 -0.0000000358 0.000041 0.000043 0.000025 0.000001 + 17 -204.59664299 -0.0000000117 0.000015 0.000036 0.000021 0.000001 + 18 -204.59664299 -0.0000000031 0.000004 0.000011 0.000006 0.000000 + **** Energy Check signals convergence **** + ***Rediagonalizing the Fockian in SOSCF/NRSCF*** + + ***************************************************** + * SUCCESS * + * SCF CONVERGED AFTER 19 CYCLES * + ***************************************************** + + +---------------- +TOTAL SCF ENERGY +---------------- + +Total Energy : -204.59664299 Eh -5567.35769 eV + +Components: +Nuclear Repulsion : 62.74712262 Eh 1707.43601 eV +Electronic Energy : -267.34376561 Eh -7274.79371 eV +One Electron Energy: -404.93892124 Eh -11018.94824 eV +Two Electron Energy: 137.59515563 Eh 3744.15453 eV + +Virial components: +Potential Energy : -408.60965527 Eh -11118.83399 eV +Kinetic Energy : 204.01301228 Eh 5551.47630 eV +Virial Ratio : 2.00286075 + + +--------------- +SCF CONVERGENCE +--------------- + + Last Energy change ... -1.4683e-10 Tolerance : 1.0000e-08 + Last MAX-Density change ... 2.4575e-06 Tolerance : 1.0000e-07 + Last RMS-Density change ... 9.1504e-08 Tolerance : 5.0000e-09 + Last Orbital Gradient ... 1.4752e-06 Tolerance : 1.0000e-05 + Last Orbital Rotation ... 2.8325e-06 Tolerance : 1.0000e-05 + + **** THE GBW FILE WAS UPDATED (input.gbw) **** + **** DENSITY input.scfp WAS UPDATED **** + **** ENERGY FILE WAS UPDATED (input.en.tmp) **** + **** THE GBW FILE WAS UPDATED (input.gbw) **** + **** DENSITY input.scfp WAS UPDATED **** +---------------- +ORBITAL ENERGIES +---------------- + + NO OCC E(Eh) E(eV) + 0 2.0000 -20.863224 -567.7172 + 1 2.0000 -20.525336 -558.5228 + 2 2.0000 -15.816969 -430.4016 + 3 2.0000 -1.721937 -46.8563 + 4 2.0000 -1.239268 -33.7222 + 5 2.0000 -1.014926 -27.6175 + 6 2.0000 -0.780512 -21.2388 + 7 2.0000 -0.770437 -20.9646 + 8 2.0000 -0.767177 -20.8760 + 9 2.0000 -0.570515 -15.5245 + 10 2.0000 -0.444211 -12.0876 + 11 2.0000 -0.359793 -9.7905 + 12 0.0000 0.011734 0.3193 + 13 0.0000 0.021734 0.5914 + 14 0.0000 0.041971 1.1421 + 15 0.0000 0.088955 2.4206 + 16 0.0000 0.095791 2.6066 + 17 0.0000 0.125349 3.4109 + 18 0.0000 0.147855 4.0233 + 19 0.0000 0.160392 4.3645 + 20 0.0000 0.188339 5.1250 + 21 0.0000 0.192164 5.2290 + 22 0.0000 0.205416 5.5897 + 23 0.0000 0.209504 5.7009 + 24 0.0000 0.232536 6.3276 + 25 0.0000 0.269313 7.3284 + 26 0.0000 0.316506 8.6126 + 27 0.0000 0.330019 8.9803 + 28 0.0000 0.364681 9.9235 + 29 0.0000 0.388927 10.5832 + 30 0.0000 0.443872 12.0784 + 31 0.0000 0.466947 12.7063 + 32 0.0000 0.497792 13.5456 + 33 0.0000 0.499318 13.5871 + 34 0.0000 0.543812 14.7979 + 35 0.0000 0.560586 15.2543 + 36 0.0000 0.612516 16.6674 + 37 0.0000 0.647668 17.6240 + 38 0.0000 0.672542 18.3008 + 39 0.0000 0.699210 19.0265 + 40 0.0000 0.712358 19.3842 + 41 0.0000 0.736357 20.0373 + 42 0.0000 0.743313 20.2266 + 43 0.0000 0.777099 21.1459 + 44 0.0000 0.806808 21.9544 + 45 0.0000 0.839070 22.8323 + 46 0.0000 0.855055 23.2672 + 47 0.0000 0.883531 24.0421 + 48 0.0000 0.916421 24.9371 + 49 0.0000 0.950426 25.8624 + 50 0.0000 0.968032 26.3415 + 51 0.0000 0.972025 26.4501 + 52 0.0000 1.018946 27.7269 + 53 0.0000 1.045942 28.4615 + 54 0.0000 1.048558 28.5327 + 55 0.0000 1.058152 28.7938 + 56 0.0000 1.148624 31.2557 + 57 0.0000 1.153547 31.3896 + 58 0.0000 1.205954 32.8157 + 59 0.0000 1.264583 34.4111 + 60 0.0000 1.357598 36.9421 + 61 0.0000 1.419136 38.6167 + 62 0.0000 1.421030 38.6682 + 63 0.0000 1.475639 40.1542 + 64 0.0000 1.495236 40.6875 + 65 0.0000 1.510883 41.1132 + 66 0.0000 1.538566 41.8665 + 67 0.0000 1.577526 42.9267 + 68 0.0000 1.583491 43.0890 + 69 0.0000 1.623460 44.1766 + 70 0.0000 1.639552 44.6145 + 71 0.0000 1.704786 46.3896 + 72 0.0000 1.737630 47.2833 + 73 0.0000 1.753698 47.7205 + 74 0.0000 1.890459 51.4420 + 75 0.0000 1.924074 52.3567 + 76 0.0000 1.934653 52.6446 + 77 0.0000 1.967603 53.5412 + 78 0.0000 2.008148 54.6445 + 79 0.0000 2.077650 56.5357 + 80 0.0000 2.187225 59.5174 + 81 0.0000 2.200591 59.8811 + 82 0.0000 2.203809 59.9687 + 83 0.0000 2.314842 62.9901 + 84 0.0000 2.341893 63.7262 + 85 0.0000 2.370615 64.5077 + 86 0.0000 2.371851 64.5413 + 87 0.0000 2.423164 65.9376 + 88 0.0000 2.440403 66.4067 + 89 0.0000 2.505346 68.1739 + 90 0.0000 2.544131 69.2293 + 91 0.0000 2.572153 69.9919 + 92 0.0000 2.634262 71.6819 + 93 0.0000 2.644619 71.9638 + 94 0.0000 2.697199 73.3945 + 95 0.0000 2.743257 74.6478 + 96 0.0000 2.800919 76.2169 + 97 0.0000 2.843246 77.3686 + 98 0.0000 2.844505 77.4029 + 99 0.0000 2.922338 79.5208 + 100 0.0000 2.991396 81.4000 + 101 0.0000 3.079110 83.7868 + 102 0.0000 3.364596 91.5553 + 103 0.0000 3.481457 94.7353 + 104 0.0000 3.671274 99.9004 + 105 0.0000 3.756328 102.2149 + 106 0.0000 3.882116 105.6378 + 107 0.0000 4.176005 113.6349 + 108 0.0000 4.214139 114.6726 + 109 0.0000 4.249486 115.6344 + 110 0.0000 4.353453 118.4635 + 111 0.0000 4.409069 119.9769 + 112 0.0000 4.519385 122.9787 + 113 0.0000 4.520571 123.0110 + 114 0.0000 4.577631 124.5637 + 115 0.0000 4.666287 126.9761 + 116 0.0000 4.773842 129.9028 + 117 0.0000 4.812865 130.9647 + 118 0.0000 4.838743 131.6689 + 119 0.0000 4.848954 131.9468 + 120 0.0000 4.878142 132.7410 + 121 0.0000 4.994970 135.9200 + 122 0.0000 5.029464 136.8587 + 123 0.0000 5.039922 137.1432 + 124 0.0000 5.057854 137.6312 + 125 0.0000 5.203063 141.5826 + 126 0.0000 5.247247 142.7848 + 127 0.0000 5.302814 144.2969 + 128 0.0000 5.387160 146.5921 + 129 0.0000 5.500173 149.6673 + 130 0.0000 5.653623 153.8429 + 131 0.0000 5.657265 153.9420 + 132 0.0000 5.761331 156.7738 + 133 0.0000 6.337526 172.4529 + 134 0.0000 6.513046 177.2290 + 135 0.0000 6.542629 178.0340 + 136 0.0000 6.695069 182.1821 + 137 0.0000 6.728598 183.0945 + 138 0.0000 6.780677 184.5116 + 139 0.0000 6.811088 185.3391 + 140 0.0000 6.841582 186.1689 + 141 0.0000 6.949835 189.1146 + 142 0.0000 6.966159 189.5588 + 143 0.0000 7.018703 190.9886 + 144 0.0000 7.216017 196.3578 + 145 0.0000 7.224805 196.5969 + 146 0.0000 7.273141 197.9122 + 147 0.0000 7.320877 199.2112 + 148 0.0000 7.339032 199.7052 + 149 0.0000 7.353566 200.1007 + 150 0.0000 7.362587 200.3462 + 151 0.0000 7.426128 202.0752 + 152 0.0000 7.463336 203.0877 + 153 0.0000 7.560185 205.7231 + 154 0.0000 7.635142 207.7628 + 155 0.0000 7.660337 208.4484 + 156 0.0000 7.954674 216.4577 + 157 0.0000 8.364573 227.6116 + 158 0.0000 14.068670 382.8280 + 159 0.0000 14.292761 388.9258 + 160 0.0000 16.755828 455.9493 + + ******************************** + * MULLIKEN POPULATION ANALYSIS * + ******************************** + +----------------------- +MULLIKEN ATOMIC CHARGES +----------------------- + 0 N : 0.277777 + 1 O : 0.137821 + 2 O : -0.636909 + 3 H : 0.221312 +Sum of atomic charges: 0.0000000 + +-------------------------------- +MULLIKEN REDUCED ORBITAL CHARGES +-------------------------------- + 0 N s : 3.919764 s : 3.919764 + pz : 0.531425 p : 2.721672 + px : 0.997159 + py : 1.193088 + dz2 : 0.004052 d : 0.067464 + dxz : 0.019725 + dyz : 0.008223 + dx2y2 : 0.019948 + dxy : 0.015516 + f0 : 0.000889 f : 0.013323 + f+1 : 0.000938 + f-1 : 0.000499 + f+2 : 0.000794 + f-2 : 0.002701 + f+3 : 0.004263 + f-3 : 0.003239 + 1 O s : 3.778922 s : 3.778922 + pz : 1.434499 p : 3.929471 + px : 1.151801 + py : 1.343171 + dz2 : 0.009148 d : 0.139323 + dxz : 0.027834 + dyz : 0.008160 + dx2y2 : 0.054979 + dxy : 0.039202 + f0 : 0.001009 f : 0.014464 + f+1 : 0.001147 + f-1 : 0.000445 + f+2 : 0.000635 + f-2 : 0.002419 + f+3 : 0.006318 + f-3 : 0.002491 + 2 O s : 3.943322 s : 3.943322 + pz : 1.904813 p : 4.678689 + px : 1.336295 + py : 1.437581 + dz2 : 0.002773 d : 0.011853 + dxz : -0.000626 + dyz : 0.001763 + dx2y2 : -0.000871 + dxy : 0.008814 + f0 : 0.000287 f : 0.003044 + f+1 : 0.000681 + f-1 : 0.000428 + f+2 : 0.000017 + f-2 : 0.000249 + f+3 : 0.000412 + f-3 : 0.000971 + 3 H s : 0.665793 s : 0.665793 + pz : 0.048901 p : 0.098108 + px : 0.027453 + py : 0.021754 + dz2 : 0.000114 d : 0.014787 + dxz : 0.003583 + dyz : 0.004460 + dx2y2 : 0.006765 + dxy : -0.000136 + + + ******************************* + * LOEWDIN POPULATION ANALYSIS * + ******************************* + +---------------------- +LOEWDIN ATOMIC CHARGES +---------------------- + 0 N : 0.176251 + 1 O : 0.175220 + 2 O : 0.408152 + 3 H : -0.759623 + +------------------------------- +LOEWDIN REDUCED ORBITAL CHARGES +------------------------------- + 0 N s : 3.259755 s : 3.259755 + pz : 0.569777 p : 2.888987 + px : 1.180887 + py : 1.138323 + dz2 : 0.050779 d : 0.452048 + dxz : 0.085838 + dyz : 0.034324 + dx2y2 : 0.123136 + dxy : 0.157971 + f0 : 0.023286 f : 0.222959 + f+1 : 0.025021 + f-1 : 0.012094 + f+2 : 0.011324 + f-2 : 0.036602 + f+3 : 0.062050 + f-3 : 0.052581 + 1 O s : 3.287323 s : 3.287323 + pz : 1.224676 p : 3.802972 + px : 1.303839 + py : 1.274457 + dz2 : 0.063351 d : 0.581344 + dxz : 0.066828 + dyz : 0.018961 + dx2y2 : 0.203277 + dxy : 0.228926 + f0 : 0.007742 f : 0.153141 + f+1 : 0.014878 + f-1 : 0.006103 + f+2 : 0.004487 + f-2 : 0.019238 + f+3 : 0.061980 + f-3 : 0.038713 + 2 O s : 3.273531 s : 3.273531 + pz : 1.588390 p : 4.160841 + px : 1.200786 + py : 1.371664 + dz2 : 0.025707 d : 0.126662 + dxz : 0.010688 + dyz : 0.005714 + dx2y2 : 0.021346 + dxy : 0.063206 + f0 : 0.001893 f : 0.030814 + f+1 : 0.005297 + f-1 : 0.002662 + f+2 : 0.000559 + f-2 : 0.002883 + f+3 : 0.006900 + f-3 : 0.010621 + 3 H s : 0.686971 s : 0.686971 + pz : 0.207776 p : 0.665455 + px : 0.206187 + py : 0.251491 + dz2 : 0.044144 d : 0.407197 + dxz : 0.063144 + dyz : 0.077917 + dx2y2 : 0.114610 + dxy : 0.107382 + + + ***************************** + * MAYER POPULATION ANALYSIS * + ***************************** + + NA - Mulliken gross atomic population + ZA - Total nuclear charge + QA - Mulliken gross atomic charge + VA - Mayer's total valence + BVA - Mayer's bonded valence + FA - Mayer's free valence + + ATOM NA ZA QA VA BVA FA + 0 N 6.7222 7.0000 0.2778 2.4010 2.4010 0.0000 + 1 O 7.8622 8.0000 0.1378 2.5395 2.5395 0.0000 + 2 O 8.6369 8.0000 -0.6369 1.7907 1.7907 0.0000 + 3 H 0.7787 1.0000 0.2213 1.0120 1.0120 0.0000 + + Mayer bond orders larger than 0.100000 +B( 0-N , 1-O ) : 2.0746 B( 0-N , 2-O ) : 0.3229 B( 1-O , 2-O ) : 0.4621 +B( 2-O , 3-H ) : 1.0057 + +------- +TIMINGS +------- + +Total SCF time: 0 days 0 hours 0 min 45 sec + +Total time .... 45.495 sec +Sum of individual times .... 31.448 sec ( 69.1%) + +Fock matrix formation .... 30.926 sec ( 68.0%) +Diagonalization .... 0.090 sec ( 0.2%) +Density matrix formation .... 0.009 sec ( 0.0%) +Population analysis .... 0.256 sec ( 0.6%) +Initial guess .... 0.019 sec ( 0.0%) +Orbital Transformation .... 0.000 sec ( 0.0%) +Orbital Orthonormalization .... 0.000 sec ( 0.0%) +DIIS solution .... 0.068 sec ( 0.1%) +SOSCF solution .... 0.053 sec ( 0.1%) + +Maximum memory used throughout the entire SCF-calculation: 227.6 MB + + + ************************************************************ + * Program running with 20 parallel MPI-processes * + * working on a common directory * + ************************************************************ + + +-------------------------------------------------------------------------------- + ORCA-MATRIX DRIVEN CI +-------------------------------------------------------------------------------- + +-------------------------------- +AUTOMATIC CHOICE OF INCORE LEVEL +-------------------------------- + +Memory available ... 1638.00 MB +Memory needed for S+T ... 22.87 MB +Memory needed for J+K ... 45.83 MB +Memory needed for DIIS ... 320.13 MB +Memory needed for 3-ext ... 227.14 MB +Memory needed for 4-ext ... 1892.82 MB +Memory needed for triples ... 126.19 MB + -> Final InCoreLevel ... 4 + -> check shows that triples correction can be computed + + +Wavefunction type +----------------- +Correlation treatment ... CCSD +Single excitations ... ON +Orbital optimization ... OFF +Calculation of Z vector ... OFF +Calculation of Brueckner orbitals ... OFF +Perturbative triple excitations ... ON +Calculation of F12 correction ... OFF +Frozen core treatment ... chemical core (6 el) +Reference Wavefunction ... RHF + Internal Orbitals: 3 ... 11 ( 9 MO's/ 18 electrons) + Virtual Orbitals: 12 ... 160 (149 MO's ) +Number of AO's ... 161 +Number of electrons ... 24 +Number of correlated electrons ... 18 + +Algorithmic settings +-------------------- +Integral transformation ... AO direct full transformation +K(C) Formation ... FULL-MO TRAFO +Maximum number of iterations ... 50 +Convergence tolerance (max. residuum) ... 1.000e-05 +Level shift for amplitude update ... 2.000e-01 +Maximum number of DIIS vectors ... 7 +DIIS turned on at iteration ... 0 +Damping before turning on DIIS ... 0.500 +Damping after turning on DIIS ... 0.000 +Pair specific amplitude update ... OFF +Natural orbital iterations ... OFF +Perturbative natural orbital generation ... OFF +Printlevel ... 2 + +Memory handling: +---------------- +Maximum memory for working arrays ... 1638 MB +Data storage in matrix containers ... UNCOMPRESSED +Data type for integral storage ... DOUBLE +In-Core Storage of quantities: + Amplitudes+Sigma Vector ... YES + J+K operators ... YES + DIIS vectors ... YES + 3-external integrals ... YES + 4-external integrals ... NO + + +Initializing the integral package ... done +Warning: reference - re-canonicalizations have been set to INT 1 VIRT 1 + +-------------------------- +CLOSED-SHELL FOCK OPERATOR +-------------------------- + +Restoring SHARK [2] ... ok +Recanonicalizing the internal orbitals +Recanonicalizing the virtual orbitals +Time needed for Fock operator ... 0.423 sec +Reference energy ... -204.596642989 +: +------------------------------ +PARTIAL COULOMB TRANSFORMATION +------------------------------ + +Transformation type ... one-operator +Dimension of the basis ... 161 +Number of internal MOs ... 158 (3-160) +Pair cutoff ... 0.000e+00 Eh +Number of AO pairs included in the trafo ... 13041 +Total Number of distinct AO pairs ... 13041 +Memory devoted for trafo ... 1638.0 MB +Max. Number of MO pairs treated together ... 16463 +Max. Number of MOs treated per batch ... 102 +Number Format for Storage ... Double (8 Byte) +AO-integral source ... DIRECT +Integral package used ... LIBINT + +Starting integral evaluation: + 251940 b 0 skpd 0.039 s ( 0.000 ms/b) +: : 377910 b 0 skpd 0.069 s ( 0.000 ms/b) +: 277134 b 0 skpd 0.083 s ( 0.000 ms/b) +: 151164 b 0 skpd 0.077 s ( 0.001 ms/b) + 159120 b 0 skpd 0.052 s ( 0.000 ms/b) +: 218790 b 0 skpd 0.124 s ( 0.001 ms/b) +: 119340 b 0 skpd 0.116 s ( 0.001 ms/b) +: 87516 b 0 skpd 0.086 s ( 0.001 ms/b) +: 87516 b 0 skpd 0.142 s ( 0.002 ms/b) +: 27846 b 0 skpd 0.097 s ( 0.003 ms/b) +Closing buffer AOJ ( 1.22 GB; CompressionRatio= 1.00) +Collecting buffer AOJ + ... done with AO integral generation +Number of MO pairs included in the trafo ... 12561 + ... Now sorting integrals +IBATCH = 1 of 1 +Closing buffer JAO ( 1.22 GB; CompressionRatio= 1.00) +Collecting buffer JAO +TOTAL TIME for half transformation ... 1.619 sec +AO-integral generation ... 0.502 sec +Half transformation ... 0.385 sec +J-integral sorting ... 0.652 sec + +-------------------------- SECOND HALF TRANSFORMATION -------------------------- +Formation of (pq|rs) ... ok ( 0.511 sec) +Integral sorting ... ok ( 3.677 sec) + +------------------ +CLOSED SHELL GUESS +------------------ + +Initial guess performed in 0.023 sec +E(0) ... -204.596642989 +E(MP2) ... -0.762643967 +Initial E(tot) ... -205.359286956 + ... 0.260593124 +Number of pairs included ... 45 +Total number of pairs ... 45 + +------------------------------------------------ + RHF COUPLED CLUSTER ITERATIONS +------------------------------------------------ + +Number of amplitudes to be optimized ... 1000386 + +Iter E(tot) E(Corr) Delta-E Residual Time + 0 -205.359286956 -0.762643967 0.000000000 0.035058340 0.56 + *** Turning on DIIS *** + 1 -205.289374374 -0.692731385 0.069912582 0.033709429 0.82 + 2 -205.321309790 -0.724666801 -0.031935416 0.008106169 0.79 + 3 -205.325720095 -0.729077106 -0.004410304 0.007456256 0.83 + 4 -205.328432831 -0.731789842 -0.002712736 0.003991213 0.83 + 5 -205.330092835 -0.733449846 -0.001660004 0.001719208 0.96 + 6 -205.330639023 -0.733996033 -0.000546187 0.001272382 0.99 + 7 -205.330875499 -0.734232510 -0.000236477 0.000722519 0.87 + 8 -205.330920526 -0.734277536 -0.000045027 0.000520742 0.82 + 9 -205.330951353 -0.734308364 -0.000030828 0.000315606 0.85 + 10 -205.330947881 -0.734304892 0.000003473 0.000146296 0.86 + 11 -205.330954713 -0.734311723 -0.000006832 0.000077571 0.83 + 12 -205.330951454 -0.734308464 0.000003259 0.000040339 0.85 + 13 -205.330952095 -0.734309106 -0.000000642 0.000024526 0.86 + 14 -205.330951475 -0.734308486 0.000000620 0.000011569 0.89 + 15 -205.330951618 -0.734308629 -0.000000142 0.000004827 0.86 + --- The Coupled-Cluster iterations have converged --- + +---------------------- +COUPLED CLUSTER ENERGY +---------------------- + +E(0) ... -204.596642989 +E(CORR) ... -0.734308629 +E(TOT) ... -205.330951618 +Singles Norm **1/2 ... 0.136997954 +T1 diagnostic ... 0.032290727 + +------------------ +LARGEST AMPLITUDES +------------------ + 11-> 12 11-> 12 0.203089 + 7-> 13 7-> 13 0.085637 + 10-> 13 -1-> -1 0.065442 + 7-> 13 -1-> -1 0.057274 + 11-> 12 -1-> -1 0.050176 + 6-> 12 -1-> -1 0.043699 + 6-> 12 6-> 12 0.042919 + 7-> 13 6-> 12 0.041700 + 11-> 12 11-> 18 0.041362 + 11-> 18 11-> 12 0.041362 + 10-> 17 -1-> -1 0.032284 + 8-> 13 8-> 13 0.031360 + 8-> 12 -1-> -1 0.030755 + 5-> 13 5-> 13 0.030537 + 8-> 12 8-> 12 0.028044 + 7-> 13 7-> 17 0.027168 + + + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + ! Warning: Densities are linearized densities ! ! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +Trace of internal density part = -0.541743807 +Trace of external density part = 0.541743807 +---------------------- +RHF TRIPLES CORRECTION (Algorithm 1) +---------------------- + +Multiplier for the singles contribution ... 1.000000000 + +10% done +20% done +30% done +40% done +50% done +60% done +70% done +80% done +90% done + +Triples Correction (T) ... -0.050343900 +Scaling of triples based on CCSD energies (Peterson et al. Molecular Physics 113, 1551 (2015)) +E(T*) = f*E(T) where f = E(F12-CCSD)/E(CCSD) +f = CCSD (with F12)/ CCSD (without F12) ... 1.000000000 +Scaled triples correction (T) ... -0.050343900 + +Final correlation energy ... -0.784652529 +E(CCSD) ... -205.330951618 +E(CCSD(T)) ... -205.381295518 + +NORM = 1.289640343 sqrt= 1.135623328 +W(HF) = 0.775409986 +------------------------------------------------------------------------------ + ORCA POPULATION ANALYSIS +------------------------------------------------------------------------------ +Input electron density ... input.mdcip +BaseName (.gbw .S,...) ... input + + ******************************** + * MULLIKEN POPULATION ANALYSIS * + ******************************** + +----------------------- +MULLIKEN ATOMIC CHARGES +----------------------- + 0 N : 0.107532 + 1 O : 0.136104 + 2 O : -0.465839 + 3 H : 0.222203 +Sum of atomic charges: 0.0000000 + +-------------------------------- +MULLIKEN REDUCED ORBITAL CHARGES +-------------------------------- + 0 N s : 3.954199 s : 3.954199 + pz : 0.705292 p : 2.836647 + px : 0.979216 + py : 1.152138 + dz2 : 0.007641 d : 0.087944 + dxz : 0.021494 + dyz : 0.011812 + dx2y2 : 0.026403 + dxy : 0.020594 + f0 : 0.000672 f : 0.013678 + f+1 : 0.000969 + f-1 : 0.000693 + f+2 : 0.001094 + f-2 : 0.002186 + f+3 : 0.004964 + f-3 : 0.003100 + 1 O s : 3.770194 s : 3.770194 + pz : 1.303219 p : 3.933227 + px : 1.219454 + py : 1.410555 + dz2 : 0.012181 d : 0.145647 + dxz : 0.032601 + dyz : 0.013033 + dx2y2 : 0.050889 + dxy : 0.036943 + f0 : 0.001242 f : 0.014828 + f+1 : 0.001342 + f-1 : 0.000772 + f+2 : 0.001156 + f-2 : 0.002620 + f+3 : 0.005178 + f-3 : 0.002519 + 2 O s : 3.932942 s : 3.932942 + pz : 1.847228 p : 4.477794 + px : 1.265779 + py : 1.364787 + dz2 : 0.009742 d : 0.047554 + dxz : 0.006710 + dyz : 0.008921 + dx2y2 : 0.006784 + dxy : 0.015397 + f0 : 0.000965 f : 0.007549 + f+1 : 0.001300 + f-1 : 0.001068 + f+2 : 0.000645 + f-2 : 0.000908 + f+3 : 0.001107 + f-3 : 0.001555 + 3 H s : 0.666307 s : 0.666307 + pz : 0.059734 p : 0.100315 + px : 0.020894 + py : 0.019687 + dz2 : -0.000112 d : 0.011175 + dxz : 0.003302 + dyz : 0.003363 + dx2y2 : 0.005159 + dxy : -0.000536 + + + ******************************* + * LOEWDIN POPULATION ANALYSIS * + ******************************* + +---------------------- +LOEWDIN ATOMIC CHARGES +---------------------- + 0 N : 0.082994 + 1 O : 0.138660 + 2 O : 0.497174 + 3 H : -0.718827 + +------------------------------- +LOEWDIN REDUCED ORBITAL CHARGES +------------------------------- + 0 N s : 3.253240 s : 3.253240 + pz : 0.697522 p : 2.964873 + px : 1.159789 + py : 1.107561 + dz2 : 0.053993 d : 0.474315 + dxz : 0.080032 + dyz : 0.034225 + dx2y2 : 0.140622 + dxy : 0.165443 + f0 : 0.021145 f : 0.224578 + f+1 : 0.024778 + f-1 : 0.012041 + f+2 : 0.011449 + f-2 : 0.032887 + f+3 : 0.069809 + f-3 : 0.052468 + 1 O s : 3.282399 s : 3.282399 + pz : 1.133233 p : 3.818257 + px : 1.353794 + py : 1.331230 + dz2 : 0.066152 d : 0.597358 + dxz : 0.089306 + dyz : 0.025390 + dx2y2 : 0.195131 + dxy : 0.221378 + f0 : 0.009960 f : 0.163326 + f+1 : 0.016427 + f-1 : 0.007084 + f+2 : 0.006188 + f-2 : 0.023991 + f+3 : 0.060651 + f-3 : 0.039025 + 2 O s : 3.272615 s : 3.272615 + pz : 1.541340 p : 4.033767 + px : 1.170730 + py : 1.321697 + dz2 : 0.032552 d : 0.160019 + dxz : 0.016610 + dyz : 0.011346 + dx2y2 : 0.026952 + dxy : 0.072559 + f0 : 0.002426 f : 0.036425 + f+1 : 0.006139 + f-1 : 0.003475 + f+2 : 0.001138 + f-2 : 0.003498 + f+3 : 0.007819 + f-3 : 0.011931 + 3 H s : 0.677498 s : 0.677498 + pz : 0.217862 p : 0.656586 + px : 0.193303 + py : 0.245421 + dz2 : 0.043135 d : 0.384742 + dxz : 0.060729 + dyz : 0.071921 + dx2y2 : 0.101782 + dxy : 0.107175 + + + ***************************** + * MAYER POPULATION ANALYSIS * + ***************************** + + NA - Mulliken gross atomic population + ZA - Total nuclear charge + QA - Mulliken gross atomic charge + VA - Mayer's total valence + BVA - Mayer's bonded valence + FA - Mayer's free valence + + ATOM NA ZA QA VA BVA FA + 0 N 6.8925 7.0000 0.1075 2.6972 2.0819 0.6152 + 1 O 7.8639 8.0000 0.1361 2.7138 2.1550 0.5588 + 2 O 8.4658 8.0000 -0.4658 2.2727 1.6030 0.6696 + 3 H 0.7778 1.0000 0.2222 1.0172 0.9309 0.0863 + + Mayer bond orders larger than 0.100000 +B( 0-N , 1-O ) : 1.7720 B( 0-N , 2-O ) : 0.3055 B( 1-O , 2-O ) : 0.3771 +B( 2-O , 3-H ) : 0.9205 + + + +-------------------------------------------------------------------------------- + TIMINGS +-------------------------------------------------------------------------------- + + +Total execution time ... 24.274 sec + +Fock Matrix Formation ... 0.423 sec ( 1.7%) +Initial Guess ... 0.023 sec ( 0.1%) +DIIS Solver ... 1.003 sec ( 4.1%) +State Vector Update ... 0.052 sec ( 0.2%) +Sigma-vector construction ... 12.434 sec ( 51.2%) + <0|H|D> ... 0.004 sec ( 0.0% of sigma) + (0-ext) ... 0.094 sec ( 0.8% of sigma) + (2-ext Fock) ... 0.022 sec ( 0.2% of sigma) + (2-ext) ... 0.632 sec ( 5.1% of sigma) + (4-ext) ... 2.793 sec ( 22.5% of sigma) + (4-ext-corr) ... 1.055 sec ( 8.5% of sigma) + ... 0.017 sec ( 0.1% of sigma) + ... 0.012 sec ( 0.1% of sigma) + (1-ext) ... 0.036 sec ( 0.3% of sigma) + (1-ext) ... 0.049 sec ( 0.4% of sigma) + (3-ext) ... 0.539 sec ( 4.3% of sigma) + Fock-dressing ... 3.710 sec ( 29.8% of sigma) + (ik|jl)-dressing ... 0.077 sec ( 0.6% of sigma) + (ij|ab),(ia|jb)-dressing ... 2.882 sec ( 23.2% of sigma) + Pair energies ... 0.007 sec ( 0.1% of sigma) +Total Time for computing (T) ... 2.875 sec ( 11.8% of ALL) + I/O of integral and amplitudes ... 0.472 sec ( 16.4% of (T)) + N**6 sorting step ... 0.560 sec ( 19.5% of (T)) + External N**7 contributions ... 1.486 sec ( 51.7% of (T)) + Internal N**7 contributions ... 0.193 sec ( 6.7% of (T)) + N**6 triples energy contributions ... 0.165 sec ( 5.7% of (T)) +One-particle density matrix ... 0.006 sec ( 0.0%) + + +Maximum memory used throughout the entire MDCI-calculation: 2032.0 MB + +------------------------- -------------------- +FINAL SINGLE POINT ENERGY -205.381295518158 +------------------------- -------------------- + + + *************************************** + * ORCA property calculations * + *************************************** + + --------------------- + Active property flags + --------------------- + (+) Dipole Moment + + +------------------------------------------------------------------------------ + ORCA ELECTRIC PROPERTIES CALCULATION +------------------------------------------------------------------------------ + +Dipole Moment Calculation ... on +Quadrupole Moment Calculation ... off +Polarizability Calculation ... off +GBWName ... input.gbw +Electron density ... input.scfp +The origin for moment calculation is the CENTER OF MASS = ( 0.779050, -0.092348 0.049773) + +------------- +DIPOLE MOMENT +------------- + X Y Z +Electronic contribution: 2.90704 0.78421 -0.04555 +Nuclear contribution : -1.81645 0.20207 -0.11359 + ----------------------------------------- +Total Dipole Moment : 1.09058 0.98628 -0.15914 + ----------------------------------------- +Magnitude (a.u.) : 1.47900 +Magnitude (Debye) : 3.75933 + + + +-------------------- +Rotational spectrum +-------------------- + +Rotational constants in cm-1: 2.796015 0.294390 0.266346 +Rotational constants in MHz : 83822.418220 8825.581731 7984.865441 + + Dipole components along the rotational axes: +x,y,z [a.u.] : 1.291582 0.720603 0.001789 +x,y,z [Debye]: 3.282940 1.831626 0.004548 + + + + *** MDCI DENSITY *** + +------------------------------------------------------------------------------ + ORCA ELECTRIC PROPERTIES CALCULATION +------------------------------------------------------------------------------ + +Dipole Moment Calculation ... on +Quadrupole Moment Calculation ... off +Polarizability Calculation ... off +GBWName ... input.gbw +Electron density ... input.mdcip +The origin for moment calculation is the CENTER OF MASS = ( 0.779050, -0.092348 0.049773) + +------------- +DIPOLE MOMENT +------------- + X Y Z +Electronic contribution: 2.26126 0.59610 -0.03289 +Nuclear contribution : -1.81645 0.20207 -0.11359 + ----------------------------------------- +Total Dipole Moment : 0.44481 0.79817 -0.14647 + ----------------------------------------- +Magnitude (a.u.) : 0.92541 +Magnitude (Debye) : 2.35221 + + + +-------------------- +Rotational spectrum +-------------------- + +Rotational constants in cm-1: 2.796015 0.294390 0.266346 +Rotational constants in MHz : 83822.418220 8825.581731 7984.865441 + + Dipole components along the rotational axes: +x,y,z [a.u.] : 0.619670 0.687309 0.001619 +x,y,z [Debye]: 1.575075 1.747000 0.004115 + + + +---------------------------------------------------------------------------- + ORCA NUMERICAL FREQUENCIES + (20-process run) +---------------------------------------------------------------------------- + +Number of atoms ... 4 +Central differences ... used +Number of displacements ... 24 +Numerical increment ... 5.000e-03 bohr +IR-spectrum generation ... on +Raman-spectrum generation ... off +Surface Crossing Hessian ... off + +The output will be reduced. Please look at the following files: +SCF program output ... >input.lastscf +Integral program output ... >input.lastint +Gradient program output ... >input.lastgrad +Dipole moment program output ... >input.lastmom +AutoCI program output ... >input.lastautoci + + << Calculating on displaced geometry 7 (of 18) >> + << Calculating on displaced geometry 10 (of 18) >> + << Calculating on displaced geometry 5 (of 18) >> + << Calculating on displaced geometry 15 (of 18) >> + << Calculating on displaced geometry 17 (of 18) >> + << Calculating on displaced geometry 12 (of 18) >> + << Calculating on displaced geometry 16 (of 18) >> + << Calculating on displaced geometry 2 (of 18) >> + << Calculating on displaced geometry 11 (of 18) >> + << Calculating on displaced geometry 1 (of 18) >> + << Calculating on displaced geometry 8 (of 18) >> + << Calculating on displaced geometry 18 (of 18) >> + << Calculating on displaced geometry 9 (of 18) >> + << Calculating on displaced geometry 3 (of 18) >> + << Calculating on displaced geometry 13 (of 18) >> + << Calculating on displaced geometry 14 (of 18) >> + << Calculating on displaced geometry 6 (of 18) >> + << Calculating on displaced geometry 4 (of 18) >> + << Calculating on displaced geometry 2 (of 24) >> + << Calculating on displaced geometry 3 (of 24) >> + << Calculating on displaced geometry 5 (of 24) >> + << Calculating on displaced geometry 7 (of 24) >> + << Calculating on displaced geometry 9 (of 24) >> + << Calculating on displaced geometry 17 (of 24) >> + << Calculating on displaced geometry 4 (of 24) >> + << Calculating on displaced geometry 16 (of 24) >> + << Calculating on displaced geometry 19 (of 24) >> + << Calculating on displaced geometry 11 (of 24) >> + << Calculating on displaced geometry 12 (of 24) >> + << Calculating on displaced geometry 13 (of 24) >> + << Calculating on displaced geometry 6 (of 24) >> + << Calculating on displaced geometry 14 (of 24) >> + << Calculating on displaced geometry 10 (of 24) >> + << Calculating on displaced geometry 18 (of 24) >> + << Calculating on displaced geometry 1 (of 24) >> + << Calculating on displaced geometry 15 (of 24) >> + << Calculating on displaced geometry 8 (of 24) >> + << Calculating on displaced geometry 20 (of 24) >> + << Calculating on displaced geometry 21 (of 24) >> + << Calculating on displaced geometry 22 (of 24) >> + << Calculating on displaced geometry 23 (of 24) >> + << Calculating on displaced geometry 24 (of 24) >> + +----------------------- +VIBRATIONAL FREQUENCIES +----------------------- + +Scaling factor for frequencies = 1.000000000 (already applied!) + + 0: 0.00 cm**-1 + 1: 0.00 cm**-1 + 2: 0.00 cm**-1 + 3: 0.00 cm**-1 + 4: 0.00 cm**-1 + 5: 0.00 cm**-1 + 6: 228.25 cm**-1 + 7: 294.49 cm**-1 + 8: 422.93 cm**-1 + 9: 823.31 cm**-1 + 10: 1872.83 cm**-1 + 11: 3739.40 cm**-1 + + +------------ +NORMAL MODES +------------ + +These modes are the cartesian displacements weighted by the diagonal matrix +M(i,i)=1/sqrt(m[i]) where m[i] is the mass of the displaced atom +Thus, these vectors are normalized but *not* orthogonal + + 0 1 2 3 4 5 + 0 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 1 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 2 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 3 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 4 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 5 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 6 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 7 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 8 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 9 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 10 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 11 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 + 6 7 8 9 10 11 + 0 -0.003146 -0.465844 -0.057071 0.061728 -0.631130 0.001198 + 1 0.012894 -0.281679 -0.139280 0.042762 0.389584 -0.000366 + 2 0.065847 0.039383 0.025599 -0.006507 -0.107160 0.000135 + 3 0.003775 -0.172052 0.220536 -0.020172 0.557486 -0.000562 + 4 -0.012689 0.152335 0.288808 -0.094427 -0.340099 0.000247 + 5 -0.067917 -0.038585 -0.050166 0.018886 0.093821 -0.000085 + 6 0.001665 0.588955 -0.128274 0.015876 -0.008126 -0.041304 + 7 -0.010967 0.126120 -0.129520 0.093943 -0.002408 0.046579 + 8 -0.051064 -0.001815 0.022773 -0.018740 0.000158 -0.011205 + 9 -0.042622 -0.143809 -0.671338 -0.789572 0.050624 0.647851 + 10 0.196292 -0.505480 -0.592817 -0.586536 0.022683 -0.738137 + 11 0.973459 0.093970 0.079063 0.088101 -0.002549 0.177313 + + +----------- +IR SPECTRUM +----------- + + Mode freq eps Int T**2 TX TY TZ + cm**-1 L/(mol*cm) km/mol a.u. +---------------------------------------------------------------------------- + 6: 228.25 0.015750 79.59 0.021533 (-0.005691 0.029388 0.143656) + 7: 294.49 0.000677 3.42 0.000717 (-0.026550 -0.003420 -0.000602) + 8: 422.93 0.000137 0.69 0.000101 (-0.003624 -0.009350 0.000767) + 9: 823.31 0.005426 27.42 0.002057 (-0.038608 -0.023574 0.003227) + 10: 1872.83 0.040938 206.88 0.006821 ( 0.075063 0.034208 -0.004081) + 11: 3739.40 0.006432 32.51 0.000537 ( 0.023083 0.001922 0.000528) + +* The epsilon (eps) is given for a Dirac delta lineshape. +** The dipole moment derivative (T) already includes vibrational overlap. + +The first frequency considered to be a vibration is 6 +The total number of vibrations considered is 6 + + +-------------------------- +THERMOCHEMISTRY AT 298.15K +-------------------------- + +Temperature ... 298.15 K +Pressure ... 1.00 atm +Total Mass ... 47.01 AMU + +Throughout the following assumptions are being made: + (1) The electronic state is orbitally nondegenerate + (2) There are no thermally accessible electronically excited states + (3) Hindered rotations indicated by low frequency modes are not + treated as such but are treated as vibrations and this may + cause some error + (4) All equations used are the standard statistical mechanics + equations for an ideal gas + (5) All vibrations are strictly harmonic + +freq. 228.25 E(vib) ... 0.32 +freq. 294.49 E(vib) ... 0.27 +freq. 422.93 E(vib) ... 0.18 +freq. 823.31 E(vib) ... 0.05 +freq. 1872.83 E(vib) ... 0.00 +freq. 3739.40 E(vib) ... 0.00 + +------------ +INNER ENERGY +------------ + +The inner energy is: U= E(el) + E(ZPE) + E(vib) + E(rot) + E(trans) + E(el) - is the total energy from the electronic structure calculation + = E(kin-el) + E(nuc-el) + E(el-el) + E(nuc-nuc) + E(ZPE) - the the zero temperature vibrational energy from the frequency calculation + E(vib) - the the finite temperature correction to E(ZPE) due to population + of excited vibrational states + E(rot) - is the rotational thermal energy + E(trans)- is the translational thermal energy + +Summary of contributions to the inner energy U: +Electronic energy ... -205.38129552 Eh +Zero point energy ... 0.01681562 Eh 10.55 kcal/mol +Thermal vibrational correction ... 0.00130560 Eh 0.82 kcal/mol +Thermal rotational correction ... 0.00141627 Eh 0.89 kcal/mol +Thermal translational correction ... 0.00141627 Eh 0.89 kcal/mol +----------------------------------------------------------------------- +Total thermal energy -205.36034175 Eh + + +Summary of corrections to the electronic energy: +(perhaps to be used in another calculation) +Total thermal correction 0.00413814 Eh 2.60 kcal/mol +Non-thermal (ZPE) correction 0.01681562 Eh 10.55 kcal/mol +----------------------------------------------------------------------- +Total correction 0.02095377 Eh 13.15 kcal/mol + + +-------- +ENTHALPY +-------- + +The enthalpy is H = U + kB*T + kB is Boltzmann's constant +Total free energy ... -205.36034175 Eh +Thermal Enthalpy correction ... 0.00094421 Eh 0.59 kcal/mol +----------------------------------------------------------------------- +Total Enthalpy ... -205.35939754 Eh + + +Note: Only C1 symmetry has been detected, increase convergence thresholds + if your molecule has a higher symmetry. Symmetry factor of 1.0 is + used for the rotational entropy correction. + + +Note: Rotational entropy computed according to Herzberg +Infrared and Raman Spectra, Chapter V,1, Van Nostrand Reinhold, 1945 +Point Group: C1, Symmetry Number: 1 +Rotational constants in cm-1: 2.796015 0.294390 0.266346 + +Vibrational entropy computed according to the QRRHO of S. Grimme +Chem.Eur.J. 2012 18 9955 + + +------- +ENTROPY +------- + +The entropy contributions are T*S = T*(S(el)+S(vib)+S(rot)+S(trans)) + S(el) - electronic entropy + S(vib) - vibrational entropy + S(rot) - rotational entropy + S(trans)- translational entropy +The entropies will be listed as multiplied by the temperature to get +units of energy + +Electronic entropy ... 0.00000000 Eh 0.00 kcal/mol +Vibrational entropy ... 0.00210279 Eh 1.32 kcal/mol +Rotational entropy ... 0.01022726 Eh 6.42 kcal/mol +Translational entropy ... 0.01780232 Eh 11.17 kcal/mol +----------------------------------------------------------------------- +Final entropy term ... 0.03013237 Eh 18.91 kcal/mol + +In case the symmetry of your molecule has not been determined correctly +or in case you have a reason to use a different symmetry number we print +out the resulting rotational entropy values for sn=1,12 : + -------------------------------------------------------- +| sn= 1 | S(rot)= 0.01022726 Eh 6.42 kcal/mol| +| sn= 2 | S(rot)= 0.00957280 Eh 6.01 kcal/mol| +| sn= 3 | S(rot)= 0.00918997 Eh 5.77 kcal/mol| +| sn= 4 | S(rot)= 0.00891835 Eh 5.60 kcal/mol| +| sn= 5 | S(rot)= 0.00870766 Eh 5.46 kcal/mol| +| sn= 6 | S(rot)= 0.00853552 Eh 5.36 kcal/mol| +| sn= 7 | S(rot)= 0.00838997 Eh 5.26 kcal/mol| +| sn= 8 | S(rot)= 0.00826389 Eh 5.19 kcal/mol| +| sn= 9 | S(rot)= 0.00815268 Eh 5.12 kcal/mol| +| sn=10 | S(rot)= 0.00805320 Eh 5.05 kcal/mol| +| sn=11 | S(rot)= 0.00796321 Eh 5.00 kcal/mol| +| sn=12 | S(rot)= 0.00788106 Eh 4.95 kcal/mol| + -------------------------------------------------------- + + +------------------- +GIBBS FREE ENERGY +------------------- + +The Gibbs free energy is G = H - T*S + +Total enthalpy ... -205.35939754 Eh +Total entropy correction ... -0.03013237 Eh -18.91 kcal/mol +----------------------------------------------------------------------- +Final Gibbs free energy ... -205.38952991 Eh + +For completeness - the Gibbs free energy minus the electronic energy +G-E(el) ... -0.00823439 Eh -5.17 kcal/mol + + + +Timings for individual modules: + +Sum of individual times ... 8461.633 sec (= 141.027 min) +GTO integral calculation ... 4.183 sec (= 0.070 min) 0.0 % +SCF iterations ... 58.574 sec (= 0.976 min) 0.7 % +MDCI module ... 52.791 sec (= 0.880 min) 0.6 % +SCF Gradient evaluation ... 248.851 sec (= 4.148 min) 2.9 % +Numerical frequency calculation ... 8097.233 sec (= 134.954 min) 95.7 % + ****ORCA TERMINATED NORMALLY**** +TOTAL RUN TIME: 0 days 2 hours 16 minutes 12 seconds 268 msec diff --git a/arkane/encorr/ae.py b/arkane/encorr/ae.py index 3638705dcd4..ecef89ae371 100644 --- a/arkane/encorr/ae.py +++ b/arkane/encorr/ae.py @@ -32,6 +32,7 @@ small, predetermined set of molecules. """ +import os import importlib import json import logging @@ -41,12 +42,19 @@ import numpy as np from scipy.stats import distributions +try: + import matplotlib.pyplot as plt +except ImportError as e: + plt = None + matplotlib_exception = e + from rmgpy import constants from rmgpy.molecule import get_element, Molecule import arkane.encorr.data as data from arkane.encorr.reference import ReferenceDatabase from arkane.modelchem import LevelOfTheory, CompositeLevelOfTheory +from arkane.encorr.bac import _covariance_to_correlation # List of species labels that will be used for fitting (labels should match reference database) SPECIES_LABELS = [ @@ -65,7 +73,10 @@ 'Methane', 'Methyl', 'Ammonia', - 'Chloromethane' + 'Chloromethane', + # Lithium species shall be uncommented after we reconcile the difference in AECs and BACs + # 'Lithium Hydride', + # 'Lithium Fluoride' ] @@ -103,12 +114,13 @@ def __init__(self, self.overwrite = overwrite self.ae = AE(species_energies) - def execute(self, output_file: str = None): + def execute(self, output_directory: str = None, plot: bool = False): """ Execute the atom energy job. Args: - output_file: Write the fitted energies to this file. + output_directory: Write the fitted energies to this directory. + plot: Save plots of results. """ if self.level_of_theory is None: logging.info('Fitting atom energies') @@ -116,7 +128,10 @@ def execute(self, output_file: str = None): logging.info(f'Fitting atom energies for {self.level_of_theory}') self.ae.fit() - if output_file is not None: + if output_directory is not None: + model_chemistry_formatted = self.level_of_theory.to_model_chem().replace('//', '__').replace('/', '_') + output_file = os.path.join(output_directory, f'AEC_{model_chemistry_formatted}.out') + with open(output_file, 'a') as f: if self.level_of_theory is not None: f.write(f'# {self.level_of_theory}\n') @@ -125,6 +140,10 @@ def execute(self, output_file: str = None): f.writelines(self.ae.format_atom_energies( 'atom_energies' if self.level_of_theory is None else self.level_of_theory)) + if plot: + correlation_path = os.path.join(output_directory, f'AEC_{model_chemistry_formatted}_correlation.pdf') + self.save_correlation_mat(correlation_path) + if self.write_to_database: if self.level_of_theory is None: raise Exception('Level of theory is required for writing to database') @@ -134,6 +153,51 @@ def execute(self, output_file: str = None): logging.warning('Could not write atom energies to database. Captured error:') logging.warning(str(e)) + def save_correlation_mat(self, path: str, labels: List[str] = None, **kwargs): + """ + Save a visual representation of the parameter correlation matrix. + + Args: + path: Path to save figure to. + labels: Parameter labels. + """ + + if plt is None: + raise matplotlib_exception + + default_kwargs = {"fontsize": 14} + kwargs = {**default_kwargs, **kwargs} + + if self.ae.correlation is None: + raise Exception('Fit AECs before saving correlation matrix!') + + if labels is None: + labels = list(self.ae.atom_energies.keys()) + + fig, ax = plt.subplots() + ax.matshow(self.ae.correlation, cmap=plt.cm.PiYG) + + # Superimpose values as text + for i in range(len(self.ae.correlation)): + for j in range(len(self.ae.correlation)): + c = self.ae.correlation[j, i] + ax.text(i, j, f'{c: .2f}', va='center', ha='center', fontsize=8) + + # Save lims because they get changed when modifying labels + xlim = ax.get_xlim() + ylim = ax.get_ylim() + + ax.set_xticks(list(range(len(self.ae.correlation)))) + ax.set_yticks(list(range(len(self.ae.correlation)))) + ax.set_xticklabels(labels, fontsize=kwargs["fontsize"]) + ax.set_yticklabels(labels, fontsize=14) + ax.set_xlim(xlim) + ax.set_ylim(ylim) + ax.tick_params(bottom=False, top=False, left=False, right=False) + + fig.savefig(path, bbox_inches='tight', pad_inches=0) + + class AE: """ @@ -146,6 +210,7 @@ class AE: def __init__(self, species_energies: Dict[str, float]): self.species_energies = species_energies # Hartree self.atom_energies = None + self.correlation = None # correlation matrix self.confidence_intervals = None for lbl in SPECIES_LABELS: @@ -198,6 +263,9 @@ def fit(self): ypred = x @ w sigma2 = np.sum((y - ypred)**2) / (n - k) # MSE cov = sigma2 * np.linalg.inv(x.T @ x) # covariance matrix + + self.correlation = _covariance_to_correlation(cov) + se = np.sqrt(np.diag(cov)) # standard error alpha = 0.05 # 95% confidence level tdist = distributions.t.ppf(1 - alpha/2, n - k) # student-t diff --git a/arkane/encorr/bac.py b/arkane/encorr/bac.py index 4ee87e9a5d6..c511a9f47b4 100644 --- a/arkane/encorr/bac.py +++ b/arkane/encorr/bac.py @@ -52,6 +52,12 @@ from scipy.stats import distributions from sklearn.model_selection import KFold +try: + import matplotlib.pyplot as plt +except ImportError as e: + plt = None + matplotlib_exception = e + from rmgpy.quantity import ScalarQuantity import arkane.encorr.data as data @@ -190,10 +196,8 @@ def plot(self, output_directory: str, jobnum: int = 1): output_directory: Save the plots in this directory. jobnum: Job number """ - try: - import matplotlib.pyplot as plt - except ImportError: - return + if plt is None: + raise matplotlib_exception model_chemistry_formatted = self.level_of_theory.to_model_chem().replace('//', '__').replace('/', '_') if self.crossval_n_folds == 1: @@ -237,7 +241,7 @@ class BAC: ref_databases = {} atom_spins = { 'H': 0.5, 'C': 1.0, 'N': 1.5, 'O': 1.0, 'F': 0.5, - 'Si': 1.0, 'P': 1.5, 'S': 1.0, 'Cl': 0.5, 'Br': 0.5, 'I': 0.5 + 'Si': 1.0, 'P': 1.5, 'S': 1.0, 'Cl': 0.5, 'Br': 0.5, 'I': 0.5, 'Li': 0.5, } exp_coeff = 3.0 # Melius-type parameter (Angstrom^-1) @@ -929,10 +933,9 @@ def save_correlation_mat(self, path: str, labels: List[str] = None): path: Path to save figure to. labels: Parameter labels. """ - try: - import matplotlib.pyplot as plt - except ImportError: - return + + if plt is None: + raise matplotlib_exception if self.correlation is None: raise BondAdditivityCorrectionError('Fit BACs before saving correlation matrix!') @@ -1047,20 +1050,21 @@ def fit(self, logging.info(f'RMSE/MAE before fitting: {stats_before.rmse:.2f}/{stats_before.mae:.2f} kcal/mol') logging.info(f'RMSE/MAE after fitting: {stats_after.rmse:.2f}/{stats_after.mae:.2f} kcal/mol') - rmse_before = [test_data.calculate_stats().rmse for test_data in test_data_results] - mae_before = [test_data.calculate_stats().mae for test_data in test_data_results] - rmse_after = [test_data.calculate_stats(for_bac_data=True).rmse for test_data in test_data_results] - mae_after = [test_data.calculate_stats(for_bac_data=True).mae for test_data in test_data_results] + num_test_data = sum(len(test_data) for test_data in test_data_results) + rmse_before = np.sqrt(np.sum([test_data.calculate_stats().rmse**2 * len(test_data) for test_data in test_data_results]) / num_test_data) + mae_before = np.sum([test_data.calculate_stats().mae * len(test_data) for test_data in test_data_results]) / num_test_data + rmse_after = np.sqrt(np.sum([test_data.calculate_stats(for_bac_data=True).rmse**2 * len(test_data) for test_data in test_data_results]) / num_test_data) + mae_after = np.sum([test_data.calculate_stats(for_bac_data=True).mae * len(test_data) for test_data in test_data_results]) / num_test_data logging.info('\nCross-validation results:') - logging.info(f'Testing RMSE before fitting (mean +- 1 std): ' - f'{np.average(rmse_before):.2f} +- {np.std(rmse_before):.2f} kcal/mol') - logging.info(f'Testing MAE before fitting (mean +- 1 std): ' - f'{np.average(mae_before):.2f} +- {np.std(mae_before):.2f} kcal/mol') - logging.info(f'Testing RMSE after fitting (mean +- 1 std): ' - f'{np.average(rmse_after):.2f} +- {np.std(rmse_after):.2f} kcal/mol') - logging.info(f'Testing MAE after fitting (mean +- 1 std): ' - f'{np.average(mae_after):.2f} +- {np.std(mae_after):.2f} kcal/mol') + logging.info(f'Testing RMSE before fitting: ' + f'{rmse_before:.2f} kcal/mol') + logging.info(f'Testing MAE before fitting: ' + f'{mae_before:.2f} kcal/mol') + logging.info(f'Testing RMSE after fitting: ' + f'{rmse_after:.2f} kcal/mol') + logging.info(f'Testing MAE after fitting: ' + f'{mae_after:.2f} kcal/mol') def get_confidence_intervals(x: np.ndarray, diff --git a/arkane/encorr/corr.py b/arkane/encorr/corr.py index 1f9e8f8f328..bcafaedd6ae 100644 --- a/arkane/encorr/corr.py +++ b/arkane/encorr/corr.py @@ -221,7 +221,7 @@ def assign_frequency_scale_factor(level_of_theory: Union[LevelOfTheory, Composit Sources: [1] I.M. Alecu, J. Zheng, Y. Zhao, D.G. Truhlar, J. Chem. Theory Comput. 2010, 6, 2872, DOI: 10.1021/ct100326h - [2] http://cccbdb.nist.gov/vibscalejust.asp + [2] https://cccbdb.nist.gov/vibscalejustx.asp [3] http://comp.chem.umn.edu/freqscale/190107_Database_of_Freq_Scale_Factors_v4.pdf [4] Calculated as described in 10.1021/ct100326h [5] J.A. Montgomery, M.J. Frisch, J. Chem. Phys. 1999, 110, 2822–2827, DOI: 10.1063/1.477924 diff --git a/arkane/encorr/isodesmic.py b/arkane/encorr/isodesmic.py index e9dcb077849..f4f39d0d85d 100644 --- a/arkane/encorr/isodesmic.py +++ b/arkane/encorr/isodesmic.py @@ -4,7 +4,7 @@ # # # RMG - Reaction Mechanism Generator # # # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # +# Copyright (c) 2002-2024 Prof. William H. Green (whgreen@mit.edu), # # Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # # # # Permission is hereby granted, free of charge, to any person obtaining a # @@ -41,28 +41,29 @@ https://doi.org/10.1021/jp404158v """ -import signal -from collections import deque +import logging +from copy import deepcopy +from typing import List, Union -from lpsolve55 import lpsolve, EQ, LE import numpy as np - -from rmgpy.molecule import Molecule -from rmgpy.quantity import ScalarQuantity +from scipy.optimize import LinearConstraint, milp from arkane.modelchem import LOT - -# Optional Imports -try: - import pyomo.environ as pyo -except ImportError: - pyo = None +from rmgpy.molecule import Bond, Molecule +from rmgpy.quantity import ScalarQuantity class ErrorCancelingSpecies: """Class for target and known (reference) species participating in an error canceling reaction""" - def __init__(self, molecule, low_level_hf298, level_of_theory, high_level_hf298=None, source=None): + def __init__( + self, + molecule, + low_level_hf298, + level_of_theory, + high_level_hf298=None, + source=None, + ): """ Args: @@ -76,35 +77,45 @@ def __init__(self, molecule, low_level_hf298, level_of_theory, high_level_hf298= if isinstance(molecule, Molecule): self.molecule = molecule else: - raise ValueError(f'ErrorCancelingSpecies molecule attribute must be an rmgpy Molecule object. Instead a ' - f'{type(molecule)} object was given') + raise ValueError( + f"ErrorCancelingSpecies molecule attribute must be an rmgpy Molecule object. Instead a " + f"{type(molecule)} object was given" + ) if isinstance(level_of_theory, LOT): self.level_of_theory = level_of_theory else: - raise ValueError(f'The level of theory used to calculate the low level Hf298 must be provided ' - f'for consistency checks. Instead, a {type(level_of_theory)} object was given') + raise ValueError( + f"The level of theory used to calculate the low level Hf298 must be provided " + f"for consistency checks. Instead, a {type(level_of_theory)} object was given" + ) if not isinstance(low_level_hf298, ScalarQuantity): if isinstance(low_level_hf298, tuple): low_level_hf298 = ScalarQuantity(*low_level_hf298) else: - raise TypeError(f'Low level Hf298 should be a ScalarQuantity object or its tuple representation, but ' - f'received {low_level_hf298} instead.') + raise TypeError( + f"Low level Hf298 should be a ScalarQuantity object or its tuple representation, but " + f"received {low_level_hf298} instead." + ) self.low_level_hf298 = low_level_hf298 # If the species is a reference species, then the high level data is already known - if high_level_hf298 is not None and not isinstance(high_level_hf298, ScalarQuantity): + if high_level_hf298 is not None and not isinstance( + high_level_hf298, ScalarQuantity + ): if isinstance(high_level_hf298, tuple): high_level_hf298 = ScalarQuantity(*high_level_hf298) else: - raise TypeError(f'High level Hf298 should be a ScalarQuantity object or its tuple representation, but ' - f'received {high_level_hf298} instead.') + raise TypeError( + f"High level Hf298 should be a ScalarQuantity object or its tuple representation, but " + f"received {high_level_hf298} instead." + ) self.high_level_hf298 = high_level_hf298 self.source = source def __repr__(self): - return f'' + return f"" class ErrorCancelingReaction: @@ -131,22 +142,24 @@ def __init__(self, target, species): # Perform a consistency check that all species are using the same level of theory for spcs in species.keys(): if spcs.level_of_theory != self.level_of_theory: - raise ValueError(f'Species {spcs} has level of theory {spcs.level_of_theory}, which does not match the ' - f'level of theory of the reaction of {self.level_of_theory}') + raise ValueError( + f"Species {spcs} has level of theory {spcs.level_of_theory}, which does not match the " + f"level of theory of the reaction of {self.level_of_theory}" + ) # Does not include the target, which is handled separately. self.species = species def __repr__(self): - reactant_string = f'1*{self.target.molecule.to_smiles()}' - product_string = '' + reactant_string = f"1*{self.target.molecule.to_smiles()}" + product_string = "" for spcs, coeff in self.species.items(): if coeff > 0: - product_string += f' + {int(coeff)}*{spcs.molecule.to_smiles()}' + product_string += f" + {int(coeff)}*{spcs.molecule.to_smiles()}" else: - reactant_string += f' + {-1*int(coeff)}*{spcs.molecule.to_smiles()}' + reactant_string += f" + {-1*int(coeff)}*{spcs.molecule.to_smiles()}" - return f' {product_string[3:]} >' + return f" {product_string[3:]} >" def calculate_target_thermo(self): """ @@ -155,12 +168,191 @@ def calculate_target_thermo(self): Returns: rmgpy.quantity.ScalarQuantity: Hf298 in 'J/mol' estimated for the target species """ - low_level_h_rxn = sum(spec[0].low_level_hf298.value_si*spec[1] for spec in self.species.items()) - \ - self.target.low_level_hf298.value_si + low_level_h_rxn = ( + sum( + spec.low_level_hf298.value_si * coeff + for spec, coeff in self.species.items() + ) + - self.target.low_level_hf298.value_si + ) + + target_thermo = ( + sum( + spec.high_level_hf298.value_si * coeff + for spec, coeff in self.species.items() + ) + - low_level_h_rxn + ) + return ScalarQuantity(target_thermo, "J/mol") + + +class AtomConstraint: + def __init__(self, label, connections=None): + self.label = label + self.connections = connections if connections is not None else [] + + def __eq__(self, other): + if isinstance(other, AtomConstraint): + if self.label == other.label: + return self.match_connections(other) + + return False + + else: + raise NotImplementedError( + f"AtomConstraint object has no __eq__ defined for other object of type " + f"{type(other)}" + ) + + def match_connections(self, other): + if len(self.connections) != len(other.connections): + return False + + connections = deepcopy(other.connections) + for c in self.connections: + for i, c_other in enumerate(connections): + if c == c_other: + break + else: + return False + connections.pop(i) + + return True + + def __repr__(self): + return f"{self.label}" + "".join([f"({c})" for c in self.connections]) + + +class BondConstraint: + def __init__(self, atom1, atom2, bond_order): + self.atom1 = atom1 + self.atom2 = atom2 + self.bond_order = bond_order + + def __eq__(self, other): + if isinstance(other, BondConstraint): + if self.bond_order == other.bond_order: + if (self.atom1 == other.atom1 and self.atom2 == other.atom2) or ( + self.atom1 == other.atom2 and self.atom2 == other.atom1 + ): + return True + return False + + if isinstance(other, GenericConstraint): + return False + + else: + raise NotImplementedError( + f"BondConstraint object has no __eq__ defined for other object of type " + f"{type(other)}" + ) + + def __repr__(self): + symbols = ["", "-", "=", "#"] + return f"{self.atom1}{symbols[self.bond_order]}{self.atom2}" + + +class Connection: + def __init__(self, atom, bond_order): + self.atom = atom + self.bond_order = bond_order + + def __eq__(self, other): + if isinstance(other, Connection): + if self.bond_order == other.bond_order: + if self.atom == other.atom: + return True + return False + + else: + raise NotImplementedError( + f"Connection object has no __eq__ defined for other object of type {type(other)}" + ) + + def __repr__(self): + symbols = ["", "-", "=", "#"] + return f"{symbols[self.bond_order]}{self.atom}" + + +class GenericConstraint: + def __init__(self, constraint_str: str): + self.constraint_str = constraint_str + + def __eq__(self, other): + if isinstance(other, BondConstraint): + return False + elif isinstance(other, GenericConstraint): + return self.constraint_str == other.constraint_str + else: + raise NotImplementedError( + f"GenericConstraint object has no __eq__ defined for other object of " + f"type {type(other)}" + ) + def __repr__(self): + return self.constraint_str + + +def bond_centric_constraints( + species: ErrorCancelingSpecies, constraint_class: str +) -> List[BondConstraint]: + constraints = [] + contraint_func = CONSTRAINT_CLASSES[constraint_class] + molecule = species.molecule + + for bond in molecule.get_all_edges(): + constraints.append(contraint_func(bond)) + + return constraints + + +def _buerger_rc2(bond: Bond) -> BondConstraint: + atom1 = bond.atom1 + atom2 = bond.atom2 + + if atom1.symbol > atom2.symbol: + atom1, atom2 = atom2, atom1 + + atom1 = AtomConstraint(label=atom1.symbol) + atom2 = AtomConstraint(label=atom2.symbol) + + return BondConstraint(atom1=atom1, atom2=atom2, bond_order=int(bond.order)) + + +def _buerger_rc3(bond: Bond) -> BondConstraint: + atom1 = bond.atom1 + atom2 = bond.atom2 + + if atom1.symbol > atom2.symbol: + atom1, atom2 = atom2, atom1 + + atom1 = AtomConstraint(label=f"{atom1.symbol}{atom1.connectivity1}") + atom2 = AtomConstraint(label=f"{atom2.symbol}{atom2.connectivity1}") + + return BondConstraint(atom1=atom1, atom2=atom2, bond_order=int(bond.order)) - target_thermo = sum(spec[0].high_level_hf298.value_si*spec[1] for spec in self.species.items()) - \ - low_level_h_rxn - return ScalarQuantity(target_thermo, 'J/mol') + +def _buerger_rc4(bond: Bond) -> BondConstraint: + atom1 = bond.atom1 + atom2 = bond.atom2 + + if atom1.symbol > atom2.symbol: + atom1, atom2 = atom2, atom1 + + atoms = [] + + for atom in [atom1, atom2]: + connections = [] + for a, b in atom.bonds.items(): + ac = AtomConstraint(label=f"{a.symbol}{a.connectivity1}") + bond_order = b.order + connections.append(Connection(atom=ac, bond_order=bond_order)) + atoms.append( + AtomConstraint( + label=f"{atom.symbol}{atom.connectivity1}", connections=connections + ) + ) + + return BondConstraint(atom1=atoms[0], atom2=atoms[1], bond_order=int(bond.order)) class SpeciesConstraints: @@ -168,76 +360,181 @@ class SpeciesConstraints: A class for defining and enumerating constraints to ReferenceSpecies objects for error canceling reactions """ - def __init__(self, target, reference_list, conserve_bonds=True, conserve_ring_size=True): + def __init__( + self, + target, + reference_list, + isodesmic_class="rc2", + conserve_ring_size=True, + limit_charges=True, + limit_scope=True, + ): """ Define the constraints that will be enforced, and determine the mapping of indices in the constraint vector to the labels for these constraints. - To reduce the size of the linear programming problem that will try to find error canceling reactions of the - target and subsets of the reference species, the `reference_species` list is automatically pruned to remove - species that have additional atom, bond, and/or ring attributes not found in the target molecule. + Notes: + To reduce the size of the linear programming problem that will try to find error canceling reactions of the + target and subsets of the reference species, the `reference_species` list is automatically pruned to remove + species that have additional atom, bond, and/or ring attributes not found in the target molecule. + + Charge is also explicitly conserved, as there are charged species in the reference database Args: target (ErrorCancelingSpecies): The target species of the error canceling reaction scheme reference_list(list): A list of ErrorCancelingSpecies objects for the reference species that can participate in the error canceling reaction scheme - conserve_bonds (bool, optional): Enforce the number of each bond type be conserved - conserve_ring_size (bool, optional): Enforce that the number of each ring size be conserved + isodesmic_class (str, optional): Reaction classes as defined by Buerger et al. that determine how specific + the constraints are. + conserve_ring_size (bool, optional): Enforce that the number of each ring size be conserved. + limit_charges (bool, optional): Only allow species in the reaction that are within the range [C, 0] for + anions or [0, C] for cations where "C" is the charge of the target + limit_scope (bool, optional): Exclude any molecules from the reference set that have features not contained + in the target molecule. This will reduce the size of the linear programing problem being solved to yield + faster, possibly more accurate results """ self.target = target self.all_reference_species = reference_list self.reference_species = [] - self.conserve_bonds = conserve_bonds + self.isodesmic_class = isodesmic_class self.conserve_ring_size = conserve_ring_size - self.constraint_map = self._get_constraint_map() - - def _get_constraint_map(self): - # Enumerate all of the constraints in the target molecule to initialize the constraint mapping - constraint_map = {label: i for i, label in enumerate(self.target.molecule.get_element_count().keys())} - if self.conserve_bonds: - j = len(constraint_map) - constraint_map.update( - {label: j + i for i, label in enumerate(self.target.molecule.enumerate_bonds().keys())}) + self.limit_charges = limit_charges + self.limit_scope = limit_scope + + def _get_constraint_lists(self): + full_constraints_list = [self._get_all_constraints(self.target)] + for ref_spcs in self.all_reference_species: + full_constraints_list.append(self._get_all_constraints(ref_spcs)) + + return full_constraints_list + + def _get_ring_constraints( + self, species: ErrorCancelingSpecies + ) -> List[GenericConstraint]: + ring_features = [] + rings = species.molecule.get_smallest_set_of_smallest_rings() + for ring in rings: + ring_features.append(GenericConstraint(constraint_str=f"{len(ring)}_ring")) + + return ring_features + + def _get_all_constraints( + self, species: ErrorCancelingSpecies + ) -> List[Union[BondConstraint, GenericConstraint]]: + features = bond_centric_constraints(species, self.isodesmic_class) if self.conserve_ring_size: - j = len(constraint_map) - possible_rings_sizes = set(f'{len(sssr)}_ring' for sssr in - self.target.molecule.get_smallest_set_of_smallest_rings()) - constraint_map.update({label: j + i for i, label in enumerate(possible_rings_sizes)}) + features += self._get_ring_constraints(species) - return constraint_map + features.sort(key=lambda x: x.__repr__()) + return features - def _enumerate_constraints(self, species): + def _enumerate_constraints(self, full_constraints_list): + """ + Return the target constraint counts and the reference constraint counts. """ - Determine the constraint vector for a molecule given the enforced constraints - Args: - species (ErrorCancelingSpecies): Species whose constraints are to be enumerated + target_constraints = full_constraints_list[0] + reference_constraintss = full_constraints_list[1:] - Returns: - np.ndarray: vector of the number of instances of each constraining feature e.g. number of carbon atoms - """ - constraint_vector = np.zeros(len(self.constraint_map)) - molecule = species.molecule + # Enumerate through the constraints of reference species and keep only those that are present in the target + enumerated_reference_constraintss = [] + + if self.limit_scope: - try: - atoms = molecule.get_element_count() - for atom_label, count in atoms.items(): - constraint_vector[self.constraint_map[atom_label]] += count + for i, ref_spc in enumerate(self.all_reference_species): - if self.conserve_bonds: - bonds = molecule.enumerate_bonds() - for bond_label, count in bonds.items(): - constraint_vector[self.constraint_map[bond_label]] += count + if not all(constraint in target_constraints for constraint in reference_constraintss[i]): + continue - if self.conserve_ring_size: - rings = molecule.get_smallest_set_of_smallest_rings() - for ring in rings: - constraint_vector[self.constraint_map[f'{len(ring)}_ring']] += 1 - except KeyError: # This molecule has a feature not found in the target molecule. Return None to exclude this - return None + self.reference_species.append(ref_spc) + enumerated_reference_constraintss.append(reference_constraintss[i]) - return constraint_vector + else: + self.reference_species = self.all_reference_species + enumerated_reference_constraintss = reference_constraintss + + # Get a list of the unique constraints sorted by their string representation + if self.limit_scope: + + # The scope of constraints to consider is the target constraints + unique_constraints = self._get_unique_constraints(target_constraints) + unique_constraints.sort(key=lambda x: x.__repr__()) + + else: + all_constraints = target_constraints + [constraint for constraints in enumerated_reference_constraintss for constraint in constraints] + unique_constraints = self._get_unique_constraints(all_constraints) + unique_constraints.sort(key=lambda x: x.__repr__()) + + # Get the counts of each unique constraint in the target and reference constraints + target_constraint_counts = [target_constraints.count(c) for c in unique_constraints] + reference_constraint_counts = [] + + for i, ref_constraints in enumerate(enumerated_reference_constraintss): + reference_constraint_counts.append([ref_constraints.count(c) for c in unique_constraints]) + + return target_constraint_counts, reference_constraint_counts + + def _get_unique_constraints(self, constraints): + # Constraints are unhashable, so we need to use some workaround to get unique constraints + constraint_dict = {constraint.__repr__(): constraint for constraint in constraints} + return list(constraint_dict.values()) + + def _enumerate_charge_constraints(self, target_constraints, reference_constraints): + charge = self.target.molecule.get_net_charge() + target_constraints.append(charge) + + for i, spcs in enumerate(self.reference_species): + reference_constraints[i].append(spcs.molecule.get_net_charge()) + + if self.limit_charges: + allowed_reference_species = [] + new_constraints = [] + + if charge < 0: + allowable_charges = list(range(charge, 0)) + elif charge > 0: + allowable_charges = list(range(1, charge + 1)) + else: + allowable_charges = [0] + for i, spcs in enumerate(self.reference_species): + if reference_constraints[i][-1] in allowable_charges: + allowed_reference_species.append(spcs) + new_constraints.append(reference_constraints[i]) + + reference_constraints = new_constraints + self.reference_species = allowed_reference_species + + return target_constraints, reference_constraints + + def _enumerate_element_constraints(self, target_constraints, reference_constraints): + all_elements = set() + for spc in self.reference_species: + all_elements.update(spc.molecule.get_element_count().keys()) + + # Check that the target and reference species have the same elements to be able to satisfy mass conservation + if set(self.target.molecule.get_element_count().keys()) != all_elements: + logging.warning( + "Target species and reference species do not have the same elements:" + f"Target: {' '.join(self.target.molecule.get_element_count().keys())}" + f"Reference: {all_elements}" + ) + + all_elements.update(self.target.molecule.get_element_count().keys()) + all_elements = sorted(list(all_elements)) + + element_count = self.target.molecule.get_element_count() + new_constraints = [element_count.get(element, 0) for element in all_elements] + target_constraints.extend(new_constraints) + + for i, spc in enumerate(self.reference_species): + element_count = spc.molecule.get_element_count() + new_constraints = [ + element_count.get(element, 0) for element in all_elements + ] + reference_constraints[i].extend(new_constraints) + + return target_constraints, reference_constraints def calculate_constraints(self): """ @@ -248,16 +545,41 @@ def calculate_constraints(self): - target constraint vector (1 x len(constraints)) - constraint matrix for allowable reference species (len(self.reference_species) x len(constraints)) """ - target_constraints = self._enumerate_constraints(self.target) - constraint_matrix = [] - - for spcs in self.all_reference_species: - spcs_constraints = self._enumerate_constraints(spcs) - if spcs_constraints is not None: # This species is allowed - self.reference_species.append(spcs) - constraint_matrix.append(spcs_constraints) + full_constraint_list = self._get_constraint_lists() + target_constraints, reference_constraints = self._enumerate_constraints( + full_constraint_list + ) + target_constraints, reference_constraints = self._enumerate_charge_constraints( + target_constraints, reference_constraints + ) + target_constraints, reference_constraints = self._enumerate_element_constraints( + target_constraints, reference_constraints + ) + + target_constraints = np.array(target_constraints, dtype=int) + constraint_matrix = np.array(reference_constraints, dtype=int) + + return target_constraints, constraint_matrix + + +def _clean_up_constraints(target_constraints, constraint_matrix): + # make sure that the constraint matrix is 2d + if len(constraint_matrix.shape) == 1: + constraint_matrix = np.array([constraint_matrix], dtype=int) + + # Remove any columns that are all zeros + zero_indices = np.where(~constraint_matrix.any(axis=0))[0] + # Check that this wouldn't eliminate a non-zero target entry + for z in zero_indices: + if ( + target_constraints[z] != 0 + ): # This problem is not solvable. Return None to signal this + return None, None + indices = [i for i in range(constraint_matrix.shape[1]) if i not in zero_indices] + constraint_matrix = np.take(constraint_matrix, indices=indices, axis=1) + target_constraints = np.take(target_constraints, indices=indices) - return target_constraints, np.array(constraint_matrix, dtype=int) + return target_constraints, constraint_matrix class ErrorCancelingScheme: @@ -265,27 +587,42 @@ class ErrorCancelingScheme: A Base class for calculating target species thermochemistry using error canceling reactions """ - def __init__(self, target, reference_set, conserve_bonds, conserve_ring_size): + def __init__( + self, + target, + reference_set, + isodesmic_class, + conserve_ring_size, + limit_charges, + limit_scope, + ): """ Args: target (ErrorCancelingSpecies): Species whose Hf298 will be calculated using error canceling reactions reference_set (list): list of reference species (as ErrorCancelingSpecies) that can participate in error canceling reactions to help calculate the thermochemistry of the target - conserve_bonds (bool): Flag to determine if the number and type of each bond must be conserved in each error - canceling reaction conserve_ring_size (bool): Flag to determine if the number of each ring size must be conserved in each error canceling reaction """ self.target = target - self.constraints = SpeciesConstraints(target, reference_set, conserve_bonds=conserve_bonds, - conserve_ring_size=conserve_ring_size) - - self.target_constraint, self.constraint_matrix = self.constraints.calculate_constraints() + self.constraints = SpeciesConstraints( + target, + reference_set, + isodesmic_class=isodesmic_class, + conserve_ring_size=conserve_ring_size, + limit_charges=limit_charges, + limit_scope=limit_scope, + ) + + ( + self.target_constraint, + self.constraint_matrix, + ) = self.constraints.calculate_constraints() self.reference_species = self.constraints.reference_species - def _find_error_canceling_reaction(self, reference_subset, milp_software=None): + def _find_error_canceling_reaction(self, reference_subset): """ Automatically find a valid error canceling reaction given a subset of the available benchmark species. This is done by solving a mixed integer linear programming (MILP) problem similiar to @@ -293,103 +630,45 @@ def _find_error_canceling_reaction(self, reference_subset, milp_software=None): Args: reference_subset (list): A list of indices from self.reference_species that can participate in the reaction - milp_software (list, optional): Solvers to try in order. Defaults to ['lpsolve'] or if pyomo is available - defaults to ['lpsolve', 'pyomo']. lpsolve is usually faster. Returns: tuple(ErrorCancelingReaction, np.ndarray) - Reaction with the target species (if a valid reaction is found, else ``None``) - Indices (of the subset) for the species that participated in the return reaction """ - if milp_software is None: - milp_software = ['lpsolve'] - if pyo is not None: - milp_software.append('pyomo') # Define the constraints based on the provided subset c_matrix = np.take(self.constraint_matrix, reference_subset, axis=0) + + # Remove unnecessary constraints + target_constraint, c_matrix = _clean_up_constraints( + self.target_constraint, c_matrix + ) + if target_constraint is None or c_matrix is None: # The problem is not solvable + return None, None + + # Setup MILP problem c_matrix = np.tile(c_matrix, (2, 1)) sum_constraints = np.sum(c_matrix, 1, dtype=int) - targets = -1*self.target_constraint + targets = -1 * target_constraint m = c_matrix.shape[0] n = c_matrix.shape[1] - split = int(m/2) - - for solver in milp_software: - if solver == 'pyomo': - # Check that pyomo is available - if pyo is None: - raise ImportError('Cannot import optional package pyomo. Either install this dependency with ' - '`conda install -c conda-forge pyomo glpk` or set milp_software to `lpsolve`') - - # Setup the MILP problem using pyomo - lp_model = pyo.ConcreteModel() - lp_model.i = pyo.RangeSet(0, m - 1) - lp_model.j = pyo.RangeSet(0, n - 1) - lp_model.r = pyo.RangeSet(0, split-1) # indices before the split correspond to reactants - lp_model.p = pyo.RangeSet(split, m - 1) # indices after the split correspond to products - lp_model.v = pyo.Var(lp_model.i, domain=pyo.NonNegativeIntegers) # The stoich. coef. we are solving for - lp_model.c = pyo.Param(lp_model.i, lp_model.j, initialize=lambda _, i_ind, j_ind: c_matrix[i_ind, - j_ind]) - lp_model.s = pyo.Param(lp_model.i, initialize=lambda _, i_ind: sum_constraints[i_ind]) - lp_model.t = pyo.Param(lp_model.j, initialize=lambda _, j_ind: targets[j_ind]) - - lp_model.obj = pyo.Objective(rule=_pyo_obj_expression) - lp_model.constraints = pyo.Constraint(lp_model.j, rule=_pyo_constraint_rule) - - # Solve the MILP problem using the GLPK MILP solver (https://www.gnu.org/software/glpk/) - opt = pyo.SolverFactory('glpk') - results = opt.solve(lp_model, timelimit=1) - - # Return the solution if a valid reaction is found. Otherwise continue to next solver - if results.solver.termination_condition == pyo.TerminationCondition.optimal: - # Extract the solution and find the species with non-zero stoichiometric coefficients - solution = lp_model.v.extract_values().values() - break - - elif solver == 'lpsolve': - # Save the current signal handler - sig = signal.getsignal(signal.SIGINT) - - # Setup the MILP problem using lpsolve - lp = lpsolve('make_lp', 0, m) - lpsolve('set_verbose', lp, 2) # Reduce the logging from lpsolve - lpsolve('set_obj_fn', lp, sum_constraints) - lpsolve('set_minim', lp) - - for j in range(n): - lpsolve('add_constraint', lp, np.concatenate((c_matrix[:split, j], -1*c_matrix[split:, j])), EQ, - targets[j]) - - lpsolve('add_constraint', lp, np.ones(m), LE, 20) # Use at most 20 species (including replicates) - lpsolve('set_timeout', lp, 1) # Move on if lpsolve can't find a solution quickly - - # Constrain v_i to be 4 or less - for i in range(m): - lpsolve('set_upbo', lp, i, 4) + split = int(m / 2) - # All v_i must be integers - lpsolve('set_int', lp, [True]*m) + constraints = tuple((LinearConstraint(A=np.concatenate((c_matrix[:split, j], -1 * c_matrix[split:, j])), lb=targets[j], ub=targets[j]) for j in range(n))) - status = lpsolve('solve', lp) - - # Reset signal handling since lpsolve changed it - try: - signal.signal(signal.SIGINT, sig) - except ValueError: - # This is not being run in the main thread, so we cannot reset signal - pass - - # Return the solution if a valid reaction is found. Otherwise continue to next solver - if status == 0: - _, solution = lpsolve('get_solution', lp)[:2] - break - - else: - raise ValueError(f'Unrecognized MILP solver {solver} for isodesmic reaction generation') + result = milp( + sum_constraints, + integrality=1, + constraints=constraints, + options={"time_limit": 10}, + ) - else: + if result.status != 0: + logging.warning("Optimization could not find a valid solution.") return None, None + + solution = result.x reaction = ErrorCancelingReaction(self.target, dict()) subset_indices = [] @@ -397,13 +676,19 @@ def _find_error_canceling_reaction(self, reference_subset, milp_software=None): if v > 0: subset_indices.append(index % split) if index < split: - reaction.species.update({self.reference_species[reference_subset[index]]: -v}) + reaction.species.update( + {self.reference_species[reference_subset[index]]: -v} + ) else: - reaction.species.update({self.reference_species[reference_subset[index % split]]: v}) + reaction.species.update( + {self.reference_species[reference_subset[index % split]]: v} + ) return reaction, np.array(subset_indices) - def multiple_error_canceling_reaction_search(self, n_reactions_max=20, milp_software=None): + def multiple_error_canceling_reaction_search( + self, n_reactions_max=20, + ): """ Generate multiple error canceling reactions involving the target and a subset of the reference species. @@ -414,21 +699,20 @@ def multiple_error_canceling_reaction_search(self, n_reactions_max=20, milp_soft Args: n_reactions_max (int, optional): The maximum number of found reactions that will be returned, after which no further searching will occur even if there are possible subsets left in the queue. - milp_software (list, optional): Solvers to try in order. Defaults to ['lpsolve'] or if pyomo is available - defaults to ['lpsolve', 'pyomo']. lpsolve is usually faster. Returns: list: A list of the found error canceling reactions """ - subset_queue = deque() - subset_queue.append(np.arange(0, len(self.reference_species))) + subset_queue = [np.arange(0, len(self.reference_species))] reaction_list = [] while (len(subset_queue) != 0) and (len(reaction_list) < n_reactions_max): - subset = subset_queue.popleft() + subset = subset_queue.pop() if len(subset) == 0: continue - reaction, subset_indices = self._find_error_canceling_reaction(subset, milp_software=milp_software) + reaction, subset_indices = self._find_error_canceling_reaction( + subset + ) if reaction is None: continue else: @@ -437,9 +721,18 @@ def multiple_error_canceling_reaction_search(self, n_reactions_max=20, milp_soft for index in subset_indices: subset_queue.append(np.delete(subset, index)) + # Clean up the queue to remove subsets that would allow for already found reactions + new_queue = [] + reaction_indices = [subset[i] for i in subset_indices] + for s in subset_queue: + if not all([i in s for i in reaction_indices]): + new_queue.append(s) + + subset_queue = new_queue + return reaction_list - def calculate_target_enthalpy(self, n_reactions_max=20, milp_software=None): + def calculate_target_enthalpy(self, n_reactions_max=5): """ Perform a multiple error canceling reactions search and calculate hf298 for the target species by taking the median hf298 value from among the error canceling reactions found @@ -447,47 +740,57 @@ def calculate_target_enthalpy(self, n_reactions_max=20, milp_software=None): Args: n_reactions_max (int, optional): The maximum number of found reactions that will returned, after which no further searching will occur even if there are possible subsets left in the queue. - milp_software (list, optional): Solvers to try in order. Defaults to ['lpsolve'] or if pyomo is available - defaults to ['lpsolve', 'pyomo']. lpsolve is usually faster. Returns: tuple(ScalarQuantity, list) - Standard heat of formation at 298 K calculated for the target species - reaction list containing all error canceling reactions found """ - reaction_list = self.multiple_error_canceling_reaction_search(n_reactions_max, milp_software) + reaction_list = self.multiple_error_canceling_reaction_search(n_reactions_max) + if len(reaction_list) == 0: # No reactions found + return None, reaction_list h298_list = np.zeros(len(reaction_list)) for i, rxn in enumerate(reaction_list): h298_list[i] = rxn.calculate_target_thermo().value_si - return ScalarQuantity(np.median(h298_list), 'J/mol'), reaction_list - - -def _pyo_obj_expression(model): - return pyo.summation(model.v, model.s, index=model.i) - - -def _pyo_constraint_rule(model, col): - return sum(model.v[row] * model.c[row, col] for row in model.r) - \ - sum(model.v[row] * model.c[row, col] for row in model.p) == model.t[col] + return ScalarQuantity(np.median(h298_list), "J/mol"), reaction_list class IsodesmicScheme(ErrorCancelingScheme): """ An error canceling reaction where the number and type of both atoms and bonds are conserved """ + def __init__(self, target, reference_set): - super().__init__(target, reference_set, conserve_bonds=True, conserve_ring_size=False) + super().__init__( + target, + reference_set, + isodesmic_class="rc2", + conserve_ring_size=False, + limit_charges=True, + limit_scope=True, + ) class IsodesmicRingScheme(ErrorCancelingScheme): """ A stricter form of the traditional isodesmic reaction scheme where the number of each ring size is also conserved """ + def __init__(self, target, reference_set): - super().__init__(target, reference_set, conserve_bonds=True, conserve_ring_size=True) + super().__init__( + target, + reference_set, + isodesmic_class="rc2", + conserve_ring_size=True, + limit_charges=True, + limit_scope=True, + ) + + +CONSTRAINT_CLASSES = {"rc2": _buerger_rc2, "rc3": _buerger_rc3, "rc4": _buerger_rc4} -if __name__ == '__main__': +if __name__ == "__main__": pass diff --git a/arkane/encorr/isodesmicTest.py b/arkane/encorr/isodesmicTest.py deleted file mode 100644 index 0cae224ca76..00000000000 --- a/arkane/encorr/isodesmicTest.py +++ /dev/null @@ -1,280 +0,0 @@ -#!/usr/bin/env python3 - -############################################################################### -# # -# RMG - Reaction Mechanism Generator # -# # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # -# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # -# # -# 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. # -# # -############################################################################### - -""" -This script contains unit tests of the :mod:`arkane.isodesmic` module. -""" - -import unittest - -import numpy as np - -from rmgpy.molecule import Molecule -from rmgpy.species import Species - -from arkane.encorr.isodesmic import ErrorCancelingScheme, ErrorCancelingSpecies, ErrorCancelingReaction, \ - IsodesmicScheme, SpeciesConstraints -from arkane.modelchem import LevelOfTheory - -################################################################################ - - -class TestErrorCancelingReactionAndSpecies(unittest.TestCase): - """ - Tests that ErrorCancelingReaction objects and ErrorCancelingSpecies object are properly implemented - """ - - @classmethod - def setUpClass(cls): - """ - A method called before each unit test in this class. - """ - cls.molecule1 = Molecule(smiles='CC') - cls.molecule2 = Molecule(smiles='[CH3]') - cls.species = Species(smiles='CC') - - def test_error_canceling_species(self): - """ - Test that ErrorCancelingSpecies can be created properly - """ - lot = LevelOfTheory('test') - error_canceling_species = ErrorCancelingSpecies(self.molecule1, (123.4, 'kcal/mol'), lot, (100.0, 'kJ/mol')) - self.assertIsInstance(error_canceling_species, ErrorCancelingSpecies) - self.assertAlmostEqual(error_canceling_species.low_level_hf298.value_si, 123.4*4184) - - # For target species the high level data is not given - target_species = ErrorCancelingSpecies(self.molecule2, (10.1, 'J/mol'), lot) - self.assertIs(target_species.high_level_hf298, None) - - def test_molecule_input_in_error_canceling_species(self): - """ - Test that an exception is raised if an rmgpy Molecule object is not passed to an ErrorCancelingSpecies - """ - with self.assertRaises(ValueError): - ErrorCancelingSpecies(self.species, (100.0, 'J/mol'), LevelOfTheory('test')) - - def test_error_canceling_reactions(self): - """ - Test that ErrorCancelingReaction object can be created and that hf298 can be calculated for the target - """ - # Take ethane as the target - lot = LevelOfTheory('test') - ethane = ErrorCancelingSpecies(self.molecule1, (100.0, 'kJ/mol'), lot) - methyl = ErrorCancelingSpecies(self.molecule2, (20.0, 'kcal/mol'), lot, (21000.0, 'cal/mol')) - - # This reaction is not an isodesmic reaction, but that does not matter for the unit test - rxn = ErrorCancelingReaction(ethane, {methyl: 2}) - self.assertAlmostEqual(rxn.calculate_target_thermo().value_si, 2*21000.0*4.184-(2*20.0*4184-100.0*1000)) - - def test_level_of_theory_consistency(self): - """ - Test that ErrorCancelingReaction objects properly check that all species use the same level of theory - """ - # Take ethane as the target - ethane = ErrorCancelingSpecies(self.molecule1, (100.0, 'kJ/mol'), LevelOfTheory('test_A')) - methyl = ErrorCancelingSpecies(self.molecule2, (20.0, 'kcal/mol'), LevelOfTheory('test_B'), - (21000.0, 'cal/mol')) - - # This should throw an exception because the model chemistry is different - with self.assertRaises(ValueError): - ErrorCancelingReaction(ethane, {methyl: 2}) - - -class TestSpeciesConstraints(unittest.TestCase): - """ - A class for testing that the SpeciesConstraint class functions properly - """ - - @classmethod - def setUpClass(cls): - """ - A method called before each unit test in this class. - """ - # Give all species a low level Hf298 of 100 J/mol--this is not important for this test - hf = (100.0, 'J/mol') - - lot = LevelOfTheory('test') - cls.propene = ErrorCancelingSpecies(Molecule(smiles='CC=C'), hf, lot) - cls.butane = ErrorCancelingSpecies(Molecule(smiles='CCCC'), hf, lot) - cls.benzene = ErrorCancelingSpecies(Molecule(smiles='c1ccccc1'), hf, lot) - cls.caffeine = ErrorCancelingSpecies(Molecule(smiles='CN1C=NC2=C1C(=O)N(C(=O)N2C)C'), hf, lot) - cls.ethyne = ErrorCancelingSpecies(Molecule(smiles='C#C'), hf, lot) - - def test_initializing_constraint_map(self): - """ - Test that the constraint map is properly initialized when a SpeciesConstraints object is initialized - """ - caffeine_consts = SpeciesConstraints(self.caffeine, [self.butane, self.benzene]) - self.assertEqual(set(caffeine_consts.constraint_map.keys()), {'H', 'C', 'O', 'N', - 'C=O', 'C-N', 'C-H', 'C=C', 'C=N', 'C-C', - '5_ring', '6_ring'}) - - no_rings = SpeciesConstraints(self.caffeine, [self.butane, self.benzene], conserve_ring_size=False) - self.assertEqual(set(no_rings.constraint_map.keys()), {'H', 'C', 'O', 'N', - 'C=O', 'C-N', 'C-H', 'C=C', 'C=N', 'C-C'}) - - atoms_only = SpeciesConstraints(self.caffeine, [self.butane], conserve_ring_size=False, conserve_bonds=False) - self.assertEqual(set(atoms_only.constraint_map.keys()), {'H', 'C', 'O', 'N'}) - - def test_enumerating_constraints(self): - """ - Test that a SpeciesConstraints object can properly enumerate the constraints of a given ErrorCancelingSpecies - """ - spcs_consts = SpeciesConstraints(self.benzene, []) - self.assertEqual(set(spcs_consts.constraint_map.keys()), {'C', 'H', 'C=C', 'C-C', 'C-H', '6_ring'}) - - # Now that we have confirmed that the correct keys are present, overwrite the constraint map to set the order - spcs_consts.constraint_map = {'H': 0, 'C': 1, 'C=C': 2, 'C-C': 3, 'C-H': 4, '6_ring': 5} - - self.assertTrue(np.array_equal(spcs_consts._enumerate_constraints(self.propene), np.array([6, 3, 1, 1, 6, 0]))) - self.assertTrue(np.array_equal(spcs_consts._enumerate_constraints(self.butane), np.array([10, 4, 0, 3, 10, 0]))) - self.assertTrue(np.array_equal(spcs_consts._enumerate_constraints(self.benzene), np.array([6, 6, 3, 3, 6, 1]))) - - # Caffeine and ethyne should return None since they have features not found in benzene - self.assertIs(spcs_consts._enumerate_constraints(self.caffeine), None) - self.assertIs(spcs_consts._enumerate_constraints(self.ethyne), None) - - def test_calculating_constraints(self): - """ - Test that a SpeciesConstraints object can properly return the target constraint vector and the constraint matrix - """ - spcs_consts = SpeciesConstraints(self.caffeine, [self.propene, self.butane, self.benzene, self.ethyne]) - self.assertEqual(set(spcs_consts.constraint_map.keys()), {'H', 'C', 'O', 'N', 'C=O', 'C-N', 'C-H', 'C=C', 'C=N', - 'C-C', '5_ring', '6_ring'}) - - # Now that we have confirmed that the correct keys are present, overwrite the constraint map to set the order - spcs_consts.constraint_map = ({'H': 0, 'C': 1, 'O': 2, 'N': 3, - 'C=O': 4, 'C-N': 5, 'C-H': 6, 'C=C': 7, 'C=N': 8, 'C-C': 9, - '5_ring': 10, '6_ring': 11}) - - target_consts, consts_matrix = spcs_consts.calculate_constraints() - - # First, test that ethyne is not included in the reference set - self.assertEqual(spcs_consts.reference_species, [self.propene, self.butane, self.benzene]) - - # Then, test the output of the calculation - self.assertTrue(np.array_equal(target_consts, np.array([10, 8, 2, 4, 2, 10, 10, 1, 1, 1, 1, 1]))) - self.assertTrue(np.array_equal(consts_matrix, np.array([[6, 3, 0, 0, 0, 0, 6, 1, 0, 1, 0, 0], - [10, 4, 0, 0, 0, 0, 10, 0, 0, 3, 0, 0], - [6, 6, 0, 0, 0, 0, 6, 3, 0, 3, 0, 1]]))) - - -class TestErrorCancelingScheme(unittest.TestCase): - """ - A class for testing that the ErrorCancelingScheme class functions properly - """ - - @classmethod - def setUpClass(cls): - try: - import pyomo as pyo - except ImportError: - pyo = None - cls.pyo = pyo - - lot = LevelOfTheory('test') - cls.propene = ErrorCancelingSpecies(Molecule(smiles='CC=C'), (100, 'kJ/mol'), lot, (105, 'kJ/mol')) - cls.propane = ErrorCancelingSpecies(Molecule(smiles='CCC'), (75, 'kJ/mol'), lot, (80, 'kJ/mol')) - cls.butane = ErrorCancelingSpecies(Molecule(smiles='CCCC'), (150, 'kJ/mol'), lot, (145, 'kJ/mol')) - cls.butene = ErrorCancelingSpecies(Molecule(smiles='C=CCC'), (175, 'kJ/mol'), lot, (180, 'kJ/mol')) - cls.pentane = ErrorCancelingSpecies(Molecule(smiles='CCCCC'), (200, 'kJ/mol'), lot, (190, 'kJ/mol')) - cls.pentene = ErrorCancelingSpecies(Molecule(smiles='C=CCCC'), (225, 'kJ/mol'), lot, (220, 'kJ/mol')) - cls.hexane = ErrorCancelingSpecies(Molecule(smiles='CCCCCC'), (250, 'kJ/mol'), lot, (260, 'kJ/mol')) - cls.hexene = ErrorCancelingSpecies(Molecule(smiles='C=CCCCC'), (275, 'kJ/mol'), lot, (275, 'kJ/mol')) - cls.benzene = ErrorCancelingSpecies(Molecule(smiles='c1ccccc1'), (-50, 'kJ/mol'), lot, (-80, 'kJ/mol')) - cls.caffeine = ErrorCancelingSpecies(Molecule(smiles='CN1C=NC2=C1C(=O)N(C(=O)N2C)C'), (300, 'kJ/mol'), lot) - cls.ethyne = ErrorCancelingSpecies(Molecule(smiles='C#C'), (200, 'kJ/mol'), lot) - - def test_creating_error_canceling_schemes(self): - scheme = ErrorCancelingScheme(self.propene, [self.butane, self.benzene, self.caffeine, self.ethyne], True, True) - - self.assertEqual(scheme.reference_species, [self.butane]) - - isodesmic_scheme = IsodesmicScheme(self.propene, [self.butane, self.benzene, self.caffeine, self.ethyne]) - - self.assertEqual(isodesmic_scheme.reference_species, [self.butane, self.benzene]) - - def test_find_error_canceling_reaction(self): - """ - Test that the MILP problem can be solved to find a single isodesmic reaction - """ - scheme = IsodesmicScheme(self.propene, [self.propane, self.butane, self.butene, self.caffeine, self.ethyne]) - - # Note that caffeine and ethyne will not be allowed, so for the full set the indices are [0, 1, 2] - rxn, _ = scheme._find_error_canceling_reaction([0, 1, 2], milp_software=['lpsolve']) - self.assertEqual(rxn.species[self.butane], -1) - self.assertEqual(rxn.species[self.propane], 1) - self.assertEqual(rxn.species[self.butene], 1) - - if self.pyo is not None: - rxn, _ = scheme._find_error_canceling_reaction([0, 1, 2], milp_software=['pyomo']) - self.assertEqual(rxn.species[self.butane], -1) - self.assertEqual(rxn.species[self.propane], 1) - self.assertEqual(rxn.species[self.butene], 1) - - def test_multiple_error_canceling_reactions(self): - """ - Test that multiple error canceling reactions can be found - """ - scheme = IsodesmicScheme(self.propene, [self.propane, self.butane, self.butene, self.pentane, self.pentene, - self.hexane, self.hexene, self.benzene]) - - reaction_list = scheme.multiple_error_canceling_reaction_search(n_reactions_max=20) - self.assertEqual(len(reaction_list), 20) - reaction_string = reaction_list.__repr__() - # Consider both permutations of the products in the reaction string - rxn_str1 = ' 1*CCC + 1*C=CCC >' - rxn_str2 = ' 1*C=CCC + 1*CCC >' - self.assertTrue(any(rxn_string in reaction_string for rxn_string in [rxn_str1, rxn_str2])) - - if self.pyo is not None: - # pyomo is slower, so don't test as many - reaction_list = scheme.multiple_error_canceling_reaction_search(n_reactions_max=5, milp_software=['pyomo']) - self.assertEqual(len(reaction_list), 5) - reaction_string = reaction_list.__repr__() - self.assertTrue(any(rxn_string in reaction_string for rxn_string in [rxn_str1, rxn_str2])) - - def test_calculate_target_enthalpy(self): - """ - Test that ErrorCancelingScheme is able to calculate thermochemistry for the target species - """ - scheme = IsodesmicScheme(self.propene, [self.propane, self.butane, self.butene, self.pentane, self.pentene, - self.hexane, self.hexene, self.benzene]) - - target_thermo, rxn_list = scheme.calculate_target_enthalpy(n_reactions_max=3, milp_software=['lpsolve']) - self.assertEqual(target_thermo.value_si, 115000.0) - self.assertIsInstance(rxn_list[0], ErrorCancelingReaction) - - if self.pyo is not None: - target_thermo, _ = scheme.calculate_target_enthalpy(n_reactions_max=3, milp_software=['pyomo']) - self.assertEqual(target_thermo.value_si, 115000.0) - - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/arkane/ess/__init__.py b/arkane/ess/__init__.py index ac7094f1c87..ffd1e36bfba 100644 --- a/arkane/ess/__init__.py +++ b/arkane/ess/__init__.py @@ -36,6 +36,6 @@ from arkane.ess.gaussian import GaussianLog from arkane.ess.molpro import MolproLog from arkane.ess.orca import OrcaLog -from arkane.ess.psi4 import Psi4Log +from arkane.ess.psi4_parser import Psi4Log from arkane.ess.qchem import QChemLog from arkane.ess.terachem import TeraChemLog diff --git a/arkane/ess/adapter.py b/arkane/ess/adapter.py index 9b25b1e2c1c..f0a30c932a2 100644 --- a/arkane/ess/adapter.py +++ b/arkane/ess/adapter.py @@ -45,10 +45,11 @@ class ESSAdapter(ABC): An abstract ESS Adapter class """ - def __init__(self, path, check_for_errors=True): + def __init__(self, path, check_for_errors=True, scratch_directory=None): self.path = path if check_for_errors: self.check_for_errors() + self.scratch_directory = scratch_directory if scratch_directory is not None else os.path.join(os.path.abspath('.'), str('scratch')) @abstractmethod def check_for_errors(self): @@ -174,7 +175,7 @@ def get_symmetry_properties(self): coordinates, atom_numbers, _ = self.load_geometry() unique_id = '0' # Just some name that the SYMMETRY code gives to one of its jobs # Scratch directory that the SYMMETRY code writes its files in: - scr_dir = os.path.join(os.path.abspath('.'), str('scratch')) + scr_dir = self.scratch_directory if not os.path.exists(scr_dir): os.makedirs(scr_dir) try: diff --git a/arkane/ess/factory.py b/arkane/ess/factory.py index 8e503900938..ca0baee26c6 100644 --- a/arkane/ess/factory.py +++ b/arkane/ess/factory.py @@ -61,6 +61,7 @@ def register_ess_adapter(ess: str, def ess_factory(fullpath: str, check_for_errors: bool = True, + scratch_directory: str = None, ) -> Type[ESSAdapter]: """ A factory generating the ESS adapter corresponding to ``ess_adapter``. @@ -106,4 +107,4 @@ def ess_factory(fullpath: str, raise InputError(f'The file at {fullpath} could not be identified as a ' f'Gaussian, Molpro, Orca, Psi4, QChem, or TeraChem log file.') - return _registered_ess_adapters[ess_name](path=fullpath, check_for_errors=check_for_errors) + return _registered_ess_adapters[ess_name](path=fullpath, check_for_errors=check_for_errors, scratch_directory=scratch_directory) diff --git a/arkane/ess/gaussian.py b/arkane/ess/gaussian.py index 41e861733f9..19d5ba94455 100644 --- a/arkane/ess/gaussian.py +++ b/arkane/ess/gaussian.py @@ -35,7 +35,7 @@ import logging import math import os.path - +import re import numpy as np import rmgpy.constants as constants @@ -143,7 +143,7 @@ def load_force_constant_matrix(self): while line != '': # Read force constant matrix if 'Force constants in Cartesian coordinates:' in line: - force = np.zeros((n_rows, n_rows), np.float64) + force = np.zeros((n_rows, n_rows), float) for i in range(int(math.ceil(n_rows / 5.0))): # Header row line = f.readline() @@ -187,9 +187,9 @@ def load_geometry(self): for num in number: mass1, _ = get_element_mass(num) mass.append(mass1) - coord = np.array(coord, np.float64) - number = np.array(number, np.int) - mass = np.array(mass, np.float64) + coord = np.array(coord, float) + number = np.array(number, int) + mass = np.array(mass, float) if len(number) == 0 or len(coord) == 0 or len(mass) == 0: raise LogError('Unable to read atoms from Gaussian geometry output file {0}. ' 'Make sure the output file is not corrupt.\nNote: if your species has ' @@ -227,6 +227,10 @@ def load_conformer(self, symmetry=None, spin_multiplicity=0, optical_isomers=Non logging.debug('Conformer {0} is assigned a spin multiplicity of {1}' .format(label, spin_multiplicity)) + # Keep track of rotational constants as we go in case Gaussian prints ****** instead of the value + if 'Rotational constants (GHZ):' in line and '*****' not in line: + rot_const = [float(d) for d in line.split()[-3:]] + # The data we want is in the Thermochemistry section of the output if '- Thermochemistry -' in line: modes = [] @@ -246,9 +250,15 @@ def load_conformer(self, symmetry=None, spin_multiplicity=0, optical_isomers=Non # Read moments of inertia for external rotational modes elif 'Rotational constants (GHZ):' in line: - inertia = [float(d) for d in line.split()[-3:]] + inertia = [d for d in line.split()[-3:]] + for i in range(len(inertia)): + if '*******' in inertia[i]: + try: # set rotational constant to the last known value + inertia[i] = rot_const[i] + except NameError: + raise LogError('Rotational constant listed as ***** and no previous value given') for i in range(3): - inertia[i] = constants.h / (8 * constants.pi * constants.pi * inertia[i] * 1e9) \ + inertia[i] = constants.h / (8 * constants.pi * constants.pi * float(inertia[i]) * 1e9) \ * constants.Na * 1e23 rotation = NonlinearRotor(inertia=(inertia, "amu*angstrom^2"), symmetry=symmetry) modes.append(rotation) @@ -309,9 +319,8 @@ def load_energy(self, zpe_scale_factor=1.): with open(self.path, 'r') as f: line = f.readline() while line != '': - if 'SCF Done:' in line: - e_elect = float(line.split()[4]) * constants.E_h * constants.Na + e_elect = float(re.findall(r"SCF Done: E\(.+\) \=\s+[^\s]+", line)[0].split()[-1]) * constants.E_h * constants.Na elect_energy_source = 'SCF' elif ' E2(' in line and ' E(' in line: e_elect = float(line.split()[-1].replace('D', 'E')) * constants.E_h * constants.Na @@ -351,7 +360,6 @@ def load_energy(self, zpe_scale_factor=1.): # G4MP2 calculation without opt and freq calculation # Keyword in Gaussian G4MP2(SP), No zero-point or thermal energies are included. e_elect = float(line.split()[2]) * constants.E_h * constants.Na - # Read the ZPE from the "E(ZPE)=" line, as this is the scaled version. # Gaussian defines the following as # E (0 K) = Elec + E(ZPE), @@ -365,6 +373,17 @@ def load_energy(self, zpe_scale_factor=1.): start = line.find('\\ZeroPoint=') + 11 end = line.find('\\', start) scaled_zpe = float(line[start:end]) * constants.E_h * constants.Na * zpe_scale_factor + + elif 'HF=' in line: + line = line.strip() + f.readline().strip() + start = line.find('HF=') + 3 + end = line.find('\\', start) + try: + if e_elect is None: + e_elect = float(line[start:end]) * constants.E_h * constants.Na + elect_energy_source = 'HF' + except ValueError: + pass # Read the next line in the file line = f.readline() @@ -460,9 +479,9 @@ def load_scan_energies(self): print(f' Assuming {os.path.basename(self.path)} is the output from a rigid scan...') # For rigid scans, all of the angles are evenly spaced with a constant step size scan_res = math.pi / 180 * self._load_scan_angle() - angle = np.arange(0.0, scan_res * (len(vlist) - 1) + 0.00001, scan_res, np.float64) + angle = np.arange(0.0, scan_res * (len(vlist) - 1) + 0.00001, scan_res, float) else: - angle = np.array(angle, np.float64) + angle = np.array(angle, float) # Convert -180 ~ 180 degrees to 0 ~ 2pi rads angle = (angle - angle[0]) angle[angle < 0] += 360.0 @@ -470,7 +489,7 @@ def load_scan_energies(self): angle[-1] = angle[-1] if angle[-1] > 2 * self._load_scan_angle() else angle[-1] + 360.0 angle = angle * math.pi / 180 - vlist = np.array(vlist, np.float64) + vlist = np.array(vlist, float) # check to see if the scanlog indicates that a one of your reacting species may not be # the lowest energy conformer check_conformer_energy(vlist, self.path) @@ -505,7 +524,7 @@ def _load_scan_specs(self, letter_spec, get_after_letter_spec=False): parameters after letter_spec is found. If not specified or False, it will return the preceeding letters, which are typically the atom numbers. - More information about the syntax can be found http://gaussian.com/opt/ + More information about the syntax can be found https://gaussian.com/opt/ """ output = [] reached_input_spec_section = False diff --git a/arkane/ess/gaussianTest.py b/arkane/ess/gaussianTest.py deleted file mode 100644 index 1aa5c8f2e0f..00000000000 --- a/arkane/ess/gaussianTest.py +++ /dev/null @@ -1,253 +0,0 @@ -#!/usr/bin/env python3 - -############################################################################### -# # -# RMG - Reaction Mechanism Generator # -# # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # -# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # -# # -# 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. # -# # -############################################################################### - -""" -This module contains unit tests of the :mod:`arkane.ess.gaussian` module. -""" - -import os -import unittest - -import numpy as np - -import rmgpy.constants as constants -from external.wip import work_in_progress -from rmgpy.statmech import IdealGasTranslation, LinearRotor, NonlinearRotor, HarmonicOscillator, HinderedRotor - -from arkane.ess.gaussian import GaussianLog -from arkane.exceptions import LogError - -################################################################################ - - -class GaussianLogTest(unittest.TestCase): - """ - Contains unit tests for the gaussian module, used for parsing Gaussian log files. - """ - @classmethod - def setUpClass(cls): - """ - A method that is run before all unit tests in this class. - """ - cls.data_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data', 'gaussian') - - def test_check_for_errors(self): - """ - Uses Gaussian log files that had various errors - to test if errors are properly parsed. - """ - with self.assertRaises(LogError): - GaussianLog(os.path.join(self.data_path, 'l913.out')) - with self.assertRaises(LogError): - GaussianLog(os.path.join(self.data_path, 'l9999.out')) - with self.assertRaises(LogError): - GaussianLog(os.path.join(self.data_path, 'error_termination.out')) - - @work_in_progress - def test_load_ethylene_from_gaussian_log_cbsqb3(self): - """ - Uses a Gaussian03 log file for ethylene (C2H4) to test that its - molecular degrees of freedom can be properly read. - """ - - log = GaussianLog(os.path.join(self.data_path, 'ethylene.log')) - conformer, unscaled_frequencies = log.load_conformer() - e0 = log.load_energy() - - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, IdealGasTranslation)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, NonlinearRotor)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, HarmonicOscillator)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, HinderedRotor)]) == 0) - - trans = [mode for mode in conformer.modes if isinstance(mode, IdealGasTranslation)][0] - rot = [mode for mode in conformer.modes if isinstance(mode, NonlinearRotor)][0] - vib = [mode for mode in conformer.modes if isinstance(mode, HarmonicOscillator)][0] - t_list = np.array([298.15], np.float64) - self.assertAlmostEqual(trans.get_partition_function(t_list), 5.83338e6, delta=1e1) - self.assertAlmostEqual(rot.get_partition_function(t_list), 2.59622e3, delta=1e-2) - self.assertAlmostEqual(vib.get_partition_function(t_list), 1.0481e0, delta=1e-4) - - self.assertAlmostEqual(e0 / constants.Na / constants.E_h, -78.467452, 4) - self.assertEqual(conformer.spin_multiplicity, 1) - self.assertEqual(conformer.optical_isomers, 1) - - def test_gaussian_energies(self): - """ - test parsing double hydride, MP2, CCSD, CCSD(T), cbs-qb3, cbs-4m, g4, g4mp2 form Gaussian log - """ - log_doublehybrid = GaussianLog(os.path.join(self.data_path, 'B2PLYP.LOG')) - log_mp2 = GaussianLog(os.path.join(self.data_path, 'UMP2_C_ATOM.LOG')) - log_ccsd = GaussianLog(os.path.join(self.data_path, 'UCCSD_C_ATOM.LOG')) - log_ccsdt = GaussianLog(os.path.join(self.data_path, 'UCCSDT_C_ATOM.LOG')) - log_qb3 = GaussianLog(os.path.join(os.path.dirname(os.path.dirname(__file__)), - '../examples/arkane/species/C2H5/', 'ethyl_cbsqb3.log')) - log_cbs4m = GaussianLog(os.path.join(self.data_path, 'cbs-4m_85_methanol.out')) - log_g4 = GaussianLog(os.path.join(self.data_path, 'g4_85_methanol.out')) - log_g4mp2 = GaussianLog(os.path.join(self.data_path, 'g4mp2_85_methanol.out')) - log_rocbsqb3 = GaussianLog(os.path.join(self.data_path, 'rocbs-qb3_85_methanol.out')) - - - self.assertAlmostEqual(log_doublehybrid.load_energy() / constants.Na / constants.E_h, -0.40217794572194e+02, - delta=1e-6) - self.assertAlmostEqual(log_mp2.load_energy() / constants.Na / constants.E_h, -0.37504683723025e+02, - delta=1e-6) - self.assertAlmostEqual(log_ccsd.load_energy() / constants.Na / constants.E_h, -37.517151426, - delta=1e-6) - self.assertAlmostEqual(log_ccsdt.load_energy() / constants.Na / constants.E_h, -0.37517454469e+02, - delta=1e-6) - self.assertAlmostEqual(log_qb3.load_energy() / constants.Na / constants.E_h, -79.029798, - delta=1e-6) - self.assertAlmostEqual(log_cbs4m.load_energy() / constants.Na / constants.E_h, -115.613180, - delta=1e-6) - self.assertAlmostEqual(log_g4.load_energy() / constants.Na / constants.E_h, -115.698896, - delta=1e-6) - self.assertAlmostEqual(log_g4mp2.load_energy() / constants.Na / constants.E_h, -115.617241, - delta=1e-6) - self.assertAlmostEqual(log_rocbsqb3.load_energy() / constants.Na / constants.E_h, -115.590540, - delta=1e-6) - - def test_load_oxygen_from_gaussian_log(self): - """ - Uses a Gaussian03 log file for oxygen (O2) to test that its - molecular degrees of freedom can be properly read. - """ - - log = GaussianLog(os.path.join(self.data_path, 'oxygen.log')) - conformer, unscaled_frequencies = log.load_conformer() - e0 = log.load_energy() - - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, IdealGasTranslation)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, LinearRotor)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, HarmonicOscillator)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, HinderedRotor)]) == 0) - - trans = [mode for mode in conformer.modes if isinstance(mode, IdealGasTranslation)][0] - rot = [mode for mode in conformer.modes if isinstance(mode, LinearRotor)][0] - vib = [mode for mode in conformer.modes if isinstance(mode, HarmonicOscillator)][0] - t_list = np.array([298.15], np.float64) - self.assertAlmostEqual(trans.get_partition_function(t_list), 7.11169e6, delta=1e1) - self.assertAlmostEqual(rot.get_partition_function(t_list), 7.13316e1, delta=1e-4) - self.assertAlmostEqual(vib.get_partition_function(t_list), 1.00037e0, delta=1e-4) - - self.assertAlmostEqual(e0 / constants.Na / constants.E_h, -150.3784877, 4) - self.assertEqual(conformer.spin_multiplicity, 3) - self.assertEqual(conformer.optical_isomers, 1) - - @work_in_progress - def test_load_ethylene_from_gaussian_log_g3(self): - """ - Uses a Gaussian03 log file for ethylene (C2H4) to test that its - molecular degrees of freedom can be properly read. - """ - - log = GaussianLog(os.path.join(self.data_path, 'ethylene_G3.log')) - conformer, unscaled_frequencies = log.load_conformer() - e0 = log.load_energy() - - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, IdealGasTranslation)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, NonlinearRotor)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, HarmonicOscillator)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, HinderedRotor)]) == 0) - - trans = [mode for mode in conformer.modes if isinstance(mode, IdealGasTranslation)][0] - rot = [mode for mode in conformer.modes if isinstance(mode, NonlinearRotor)][0] - vib = [mode for mode in conformer.modes if isinstance(mode, HarmonicOscillator)][0] - t_list = np.array([298.15], np.float64) - - self.assertAlmostEqual(trans.get_partition_function(t_list), 5.83338e6, delta=1e1) - self.assertAlmostEqual(rot.get_partition_function(t_list), 2.53410e3, delta=1e-2) - self.assertAlmostEqual(vib.get_partition_function(t_list), 1.0304e0, delta=1e-4) - - self.assertAlmostEqual(e0 / constants.Na / constants.E_h, -78.562189, 4) - self.assertEqual(conformer.spin_multiplicity, 1) - self.assertEqual(conformer.optical_isomers, 1) - - def test_load_symmetry_and_optics(self): - """ - Uses a Gaussian03 log file for oxygen (O2) to test that its - molecular degrees of freedom can be properly read. - """ - - log = GaussianLog(os.path.join(self.data_path, 'oxygen.log')) - optical, symmetry, _ = log.get_symmetry_properties() - self.assertEqual(optical, 1) - self.assertEqual(symmetry, 2) - - conf = log.load_conformer()[0] - self.assertEqual(conf.optical_isomers, 1) - found_rotor = False - for mode in conf.modes: - if isinstance(mode, LinearRotor): - self.assertEqual(mode.symmetry, 2) - found_rotor = True - self.assertTrue(found_rotor) - - def test_load_scan_angle(self): - """ - Ensures proper scan angle found in Gaussian scan job - """ - log = GaussianLog(os.path.join(self.data_path, 'isobutanolQOOH_scan.log')) - self.assertAlmostEqual(log._load_scan_angle(), 10.0) - - def test_load_number_scans(self): - """ - Ensures proper scan angle found in Gaussian scan job - """ - log = GaussianLog(os.path.join(self.data_path, 'isobutanolQOOH_scan.log')) - self.assertAlmostEqual(log._load_number_scans(), 36) - - def test_load_scan_with_freq(self): - """ - Ensures that the length of enegies with hr scans and freq calc is correct - """ - log = GaussianLog(os.path.join(self.data_path, 'hr_scan_with_freq.log')) - self.assertAlmostEqual(log._load_number_scans(), 36) - self.assertAlmostEqual(log._load_scan_angle(), 10.0) - vlist, _ = log.load_scan_energies() - self.assertEqual(len(vlist), 37) - - def test_load_negative_frequency(self): - """ - Load an imaginary frequency from a Gaussian output file. - """ - log = GaussianLog(os.path.join(self.data_path, 'hr_scan_with_freq.log')) - imaginary_freq = log.load_negative_frequency() - self.assertEqual(imaginary_freq, -556.0124) - - # verify that an error is raised if there are no negative frequencies - with self.assertRaises(LogError): - log = GaussianLog(os.path.join(self.data_path, 'rocbs-qb3_85_methanol.out')) - imaginary_freq = log.load_negative_frequency() - - -################################################################################ - - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/arkane/ess/molpro.py b/arkane/ess/molpro.py index e27d3ccba38..e94093fcd15 100644 --- a/arkane/ess/molpro.py +++ b/arkane/ess/molpro.py @@ -138,7 +138,7 @@ def load_force_constant_matrix(self): while line != '': # Read force constant matrix if 'Force Constants (Second Derivatives of the Energy) in [a.u.]' in line: - fc = np.zeros((n_rows, n_rows), np.float64) + fc = np.zeros((n_rows, n_rows), float) for i in range(int(math.ceil(n_rows / 5.0))): # Header row line = f.readline() @@ -202,9 +202,9 @@ def load_geometry(self): mass1, num1 = get_element_mass(atom1) mass.append(mass1) number.append(num1) - number = np.array(number, np.int) - mass = np.array(mass, np.float64) - coord = np.array(coord, np.float64) + number = np.array(number, int) + mass = np.array(mass, float) + coord = np.array(coord, float) if len(number) == 0 or len(coord) == 0 or len(mass) == 0: raise LogError('Unable to read atoms from Molpro geometry output file {0}'.format(self.path)) @@ -336,6 +336,7 @@ def load_energy(self, zpe_scale_factor=1.): f12b = True # MRCI could also have a v(4+)z basis, so don't break yet elif 'ccsd' in line.lower() and 'f12' in line.lower(): f12 = True + f12a_section, f12b_section = False, False elif 'mrci' in line.lower(): mrci = True f12a, f12b = False, False @@ -350,11 +351,15 @@ def load_energy(self, zpe_scale_factor=1.): # Search for e_elect for line in lines: if f12 and f12a: - if 'CCSD(T)-F12a' in line and 'energy' in line: + if 'F12a energy' in line: + f12a_section, f12b_section = True, False + if 'CCSD(T)-F12' in line and 'energy' in line and f12a_section: e_elect = float(line.split()[-1]) break elif f12 and f12b: - if 'CCSD(T)-F12b' in line and 'energy' in line: + if 'F12b energy' in line: + f12a_section, f12b_section = False, True + if 'CCSD(T)-F12' in line and 'energy' in line and f12b_section: e_elect = float(line.split()[-1]) break elif mrci: @@ -371,6 +376,9 @@ def load_energy(self, zpe_scale_factor=1.): if 'CCSD' in line and 'energy=' in line: e_elect = float(line.split()[-1]) break + if 'RS2C' in line and 'energy' in line: + e_elect = float(line.split()[-1]) + break if e_elect is None and mrci: # No Davidson correction is given, search for MRCI energy read_e_elect = False @@ -435,10 +443,10 @@ def load_negative_frequency(self): if len(freqs) == 1: return -float(freqs[0]) elif len(freqs) > 1: - logging.info('More than one imaginary frequency in Molpro output file {0}.'.format(self.path)) + logging.info(f'More than one imaginary frequency in Molpro output file {self.path}.') return -float(freqs[0]) else: - raise LogError('Unable to find imaginary frequency in Molpro output file {0}'.format(self.path)) + raise LogError(f'Unable to find imaginary frequency in Molpro output file {self.path}') def load_scan_energies(self): """ @@ -458,7 +466,8 @@ def get_T1_diagnostic(self): if 'T1 diagnostic: ' in line: items = line.split() return float(items[-1]) - raise LogError('Unable to find T1 diagnostic in energy file: {0}'.format(self.path)) + logging.warning(f'Unable to find T1 diagnostic in energy file: {self.path}') + return None def get_D1_diagnostic(self): """ @@ -472,7 +481,8 @@ def get_D1_diagnostic(self): if 'D1 diagnostic: ' in line: items = line.split() return float(items[-1]) - raise LogError('Unable to find D1 diagnostic in energy file: {0}'.format(self.path)) + logging.warning(f'Unable to find D1 diagnostic in energy file: {self.path}') + return None def load_scan_pivot_atoms(self): """Not implemented for Molpro""" diff --git a/arkane/ess/orca.py b/arkane/ess/orca.py index 452c4a84486..a97b78fe44b 100644 --- a/arkane/ess/orca.py +++ b/arkane/ess/orca.py @@ -109,6 +109,9 @@ def load_force_constant_matrix(self): The units of the returned force constants are J/m^2. If no force constant matrix can be found, ``None`` is returned. """ + n_atoms = self.get_number_of_atoms() + if n_atoms == 1: + return None hess_files = list() for (_, _, files) in os.walk(os.path.dirname(self.path)): for file_ in files: @@ -134,7 +137,7 @@ def load_force_constant_matrix(self): while line != '': if '$hessian' in line: line = f.readline() - force = np.zeros((n_rows, n_rows), np.float64) + force = np.zeros((n_rows, n_rows), float) for i in range(int(math.ceil(n_rows / 5.0))): line = f.readline() for j in range(n_rows): @@ -180,9 +183,9 @@ def load_geometry(self): mass1, num1 = get_element_mass(atom1) mass.append(mass1) numbers.append(num1) - coord = np.array(coords, np.float64) - number = np.array(numbers, np.int) - mass = np.array(mass, np.float64) + coord = np.array(coords, float) + number = np.array(numbers, int) + mass = np.array(mass, float) if len(number) == 0 or len(coord) == 0 or len(mass) == 0: raise LogError(f'Unable to read atoms from orca geometry output file {self.path}.') @@ -196,7 +199,7 @@ def load_conformer(self, symmetry=None, spin_multiplicity=0, optical_isomers=Non you can use the `symmetry` parameter to substitute your own value; if not provided, the value in the Orca log file will be adopted. """ - freq, mmass, rot, unscaled_frequencies = [], [], [], [] + freq, mmass, rot, unscaled_frequencies, modes = [], [], [], [], [] e0 = 0.0 if optical_isomers is None or symmetry is None: @@ -212,9 +215,11 @@ def load_conformer(self, symmetry=None, spin_multiplicity=0, optical_isomers=Non if spin_multiplicity == 0 and ' Multiplicity Mult' in line: spin_multiplicity = int(float(line.split()[3])) - if ' Mode freq' in line: + if 'Mode' in line and "freq" in line: frequencies = list() for line_ in log[(i + 2):]: + if "------" in line_: + continue if not line_.strip(): break frequencies.extend([float(line_.split()[1])]) @@ -230,10 +235,10 @@ def load_conformer(self, symmetry=None, spin_multiplicity=0, optical_isomers=Non symbols = [symbol_by_number[i] for i in number] inertia = get_principal_moments_of_inertia(coord, numbers=number, symbols=symbols) inertia = list(inertia[0]) - if len(inertia): + if len(inertia) and not all(i == 0.0 for i in inertia): if any(i == 0.0 for i in inertia): inertia.remove(0.0) - rot.append(LinearRotor(inertia=(inertia, "amu*angstrom^2"), symmetry=symmetry)) + rot.append(LinearRotor(inertia=(inertia[0], "amu*angstrom^2"), symmetry=symmetry)) else: rot.append(NonlinearRotor(inertia=(inertia, "amu*angstrom^2"), symmetry=symmetry)) @@ -241,7 +246,11 @@ def load_conformer(self, symmetry=None, spin_multiplicity=0, optical_isomers=Non mmass.append(translation) # Take only the last modes found (in the event of multiple jobs). - modes = [mmass[-1], rot[-1], freq[-1]] + modes = [mmass[-1]] + if len(rot): + modes.append(rot[-1]) + if len(freq): + modes.append(freq[-1]) return Conformer(E0=(e0 * 0.001, "kJ/mol"), modes=modes, diff --git a/arkane/ess/psi4Test.py b/arkane/ess/psi4Test.py deleted file mode 100644 index 163cd0a23d9..00000000000 --- a/arkane/ess/psi4Test.py +++ /dev/null @@ -1,222 +0,0 @@ -#!/usr/bin/env python3 - -############################################################################### -# # -# RMG - Reaction Mechanism Generator # -# # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # -# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # -# # -# 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. # -# # -############################################################################### - -""" -This module contains unit tests of the :mod:`arkane.ess.psi4` module. -""" - -import os -import unittest - -import numpy as np - -from rmgpy.statmech import IdealGasTranslation, NonlinearRotor, HarmonicOscillator, HinderedRotor - -from arkane.exceptions import LogError -from arkane.ess.psi4 import Psi4Log - -################################################################################ - - -class Psi4LogTest(unittest.TestCase): - """ - Contains unit tests for the Psi4Log module, used for parsing Psi4 log files. - """ - @classmethod - def setUpClass(cls): - """ - A method that is run before all unit tests in this class. - """ - cls.data_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data', 'psi4') - - def test_check_for_errors(self): - """ - Uses Psi4 log files that had various errors to test if errors are properly parsed. - """ - with self.assertRaises(LogError): - Psi4Log(os.path.join(self.data_path, 'IO_error.out')) - - def test_number_of_atoms_from_psi4_log(self): - """ - Uses a Psi4 log files to test that - number of atoms can be properly read. - """ - log = Psi4Log(os.path.join(self.data_path, 'opt_freq.out')) - self.assertEqual(log.get_number_of_atoms(), 3) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_ts.out')) - self.assertEqual(log.get_number_of_atoms(), 4) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft.out')) - self.assertEqual(log.get_number_of_atoms(), 3) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft_ts.out')) - self.assertEqual(log.get_number_of_atoms(), 4) - - def test_energy_from_psi4_log(self): - """ - Uses a Psi4 log files to test that - molecular energies can be properly read. - """ - log = Psi4Log(os.path.join(self.data_path, 'opt_freq.out')) - self.assertAlmostEqual(log.load_energy(), -199599899.9822719, delta=1e-2) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_ts.out')) - self.assertAlmostEqual(log.load_energy(), -395828407.5987777, delta=1e-2) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft.out')) - self.assertAlmostEqual(log.load_energy(), -200640009.37231186, delta=1e-2) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft_ts.out')) - self.assertAlmostEqual(log.load_energy(), -397841662.56434655, delta=1e-2) - - def test_zero_point_energy_from_psi4_log(self): - """ - Uses Psi4 log files to test that zero-point energies can be properly read. - """ - log = Psi4Log(os.path.join(self.data_path, 'opt_freq.out')) - self.assertAlmostEqual(log.load_zero_point_energy(), 60868.832, delta=1e-3) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft.out')) - self.assertAlmostEqual(log.load_zero_point_energy(), 56107.44, delta=1e-3) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft_ts.out')) - self.assertAlmostEqual(log.load_zero_point_energy(), 67328.928, delta=1e-3) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_ts.out')) - self.assertAlmostEqual(log.load_zero_point_energy(), 75136.272, delta=1e-3) - - def test_load_force_constant_matrix_from_psi4_log(self): - """ - Uses Psi4 log files to test that force constant matrices can be properly read. - """ - log = Psi4Log(os.path.join(self.data_path, 'opt_freq.out')) - expected_mat_1 = np.array([[79.60709821, 0., 0., -158.56969492, 0., -119.50250089, -158.56969492, 0., 119.50250089], - [0., 0., 0., 0., 0., 0., 0., 0., 0.], - [0., 0., 51.88196366, -92.52464457, 0., -103.3438893, 92.52464457, 0., -103.3438893], - [-158.56969492, 0., -92.52464457, 682.40616438, 0., 422.33771249, -50.69495535, 0., -53.73729893], - [0., 0., 0., 0., 0., 0., 0., 0., 0.], - [-119.50250089, 0., -103.3438893, 422.33771249, 0., 385.24274073, 53.73729893, 0., 26.45946547], - [-158.56969492, 0., 92.52464457, -50.69495535, 0., 53.73729893, 682.40616438, 0., -422.33771249], - [0., 0., 0., 0., 0., 0., 0., 0., 0.], - [119.50250089, 0., -103.3438893, -53.73729893, 0., 26.45946547, -422.33771249, 0., 385.24274073]], - np.float64) - self.assertTrue(np.allclose(log.load_force_constant_matrix(), expected_mat_1)) - - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft.out')) - expected_mat_2 = np.array([[65.29227021, 0., 0., -130.05593215, 0., -102.09767406, -130.05593215, 0., 102.09767406], - [0., 0., 0., 0., 0., 0., 0., 0., 0.], - [0., 0., 44.51008758, -77.12673693, 0., -88.65982001, 77.12673693, 0., -88.65982001], - [-130.05593215, 0., -77.12673693, 567.48290169, 0., 356.99781537, -49.36504715, 0., -49.73970876], - [0., 0., 0., 0., 0., 0., 0., 0., 0.], - [-102.09767406, 0., -88.65982001, 356.99781537, 0., 336.25221646, 49.73970876, 0., 16.95147799], - [-130.05593215, 0., 77.12673693, -49.36504715, 0., 49.73970876, 567.48290169, 0., -356.99781537], - [0., 0., 0., 0., 0., 0., 0., 0., 0.], - [102.09767406, 0., -88.65982001, -49.73970876, 0., 16.95147799, -356.99781537, 0., 336.25221646]], - np.float64) - self.assertTrue(np.allclose(log.load_force_constant_matrix(), expected_mat_2)) - - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft_ts.out')) - expected_mat_3 = np.array([[-1.13580195, 0., 0., 3.38451439, 0., 0., 1.13580195, 0., 0., -3.38451439, 0., 0.], - [0., 32.96704817, -7.81315371, 0., -24.52602914, 47.62525747, 0., -23.84113467, -5.93732553, 0., -11.82985738, 7.15401071], - [0., -7.81315371, 54.99575056, 0., 23.33047286, -191.28989554, 0., 5.93732553, -7.5316094, 0., -15.85753341, 2.20187269], - [3.38451439, 0., 0., -10.08532992, 0., 0., -3.38451439, 0., 0., 10.08532992, 0., 0.], - [0., -24.52602914, 23.33047286, 0., 143.78387645, -158.67358218, 0., -11.82985738, 15.85753341, 0., 1.05099332, 2.55609183], - [0., 47.62525747, -191.28989554, 0., -158.67358218, 742.27868659, 0., -7.15401071, 2.20187269, 0., -2.55609183, 11.01167933], - [1.13580195, 0., 0., -3.38451439, 0., 0., -1.13580195, 0., 0., 3.38451439, 0., 0.], - [0., -23.84113467, 5.93732553, 0., -11.82985738, -7.15401071, 0., 32.96704817, 7.81315371, 0., -24.52602914, -47.62525747], - [0., -5.93732553, -7.5316094, 0., 15.85753341, 2.20187269, 0., 7.81315371, 54.99575056, 0., -23.33047286, -191.28989554], - [-3.38451439, 0., 0., 10.08532992, 0., 0., 3.38451439, 0., 0., -10.08532992, 0., 0.], - [0., -11.82985738, -15.85753341, 0., 1.05099332, -2.55609183, 0., -24.52602914, -23.33047286, 0., 143.78387645, 158.67358218], - [0., 7.15401071, 2.20187269, 0., 2.55609183, 11.01167933, 0., -47.62525747, -191.28989554, 0., 158.67358218, 742.27868659]], - np.float64) - self.assertTrue(np.allclose(log.load_force_constant_matrix(), expected_mat_3)) - - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_ts.out')) - expected_mat_4 = np.array([[-1.36856086, 0., 0., 3.91653225, 0., 0., 1.36856086, 0., 0., -3.91653225, 0., 0.], - [0., 47.82294224, -11.20296807, 0., -35.81980174, 65.25989773, 0., -35.42652343, -7.19264812, 0., -13.56514966, 8.02470416], - [0., -11.20296807, 66.4797624, 0., 35.78782098, -229.4811002, 0., 7.19264812, -9.74548387, 0., -19.81147687, 3.46263087], - [3.91653225, 0., 0., -11.2082886, 0., 0., -3.91653225, 0., 0., 11.2082886, 0., 0.], - [0., -35.81980174, 35.78782098, 0., 194.95334567, -224.75547126, 0., -13.56514966, 19.81147687, 0., 1.78681563, 3.25854712], - [0., 65.25989773, -229.4811002, 0., -224.75547126, 889.16020169, 0., -8.02470416, 3.46263087, 0., -3.25854712, 11.25397079], - [1.36856086, 0., 0., -3.91653225, 0., 0., -1.36856086, 0., 0., 3.91653225, 0., 0.], - [0., -35.42652343, 7.19264812, 0., -13.56514966, -8.02470416, 0., 47.82294224, 11.20296807, 0., -35.81980174, -65.25989773], - [0., -7.19264812, -9.74548387, 0., 19.81147687, 3.46263087, 0., 11.20296807, 66.4797624, 0., -35.78782098, -229.4811002], - [-3.91653225, 0., 0., 11.2082886, 0., 0., 3.91653225, 0., 0., -11.2082886, 0., 0.], - [0., -13.56514966, -19.81147687, 0., 1.78681563, -3.25854712, 0., -35.81980174, -35.78782098, 0., 194.95334567, 224.75547126], - [0., 8.02470416, 3.46263087, 0., 3.25854712, 11.25397079, 0., -65.25989773, -229.4811002, 0., 224.75547126, 889.16020169]], - np.float64) - self.assertTrue(np.allclose(log.load_force_constant_matrix(), expected_mat_4)) - - def test_load_vibrations_from_psi4_log(self): - """ - Uses a Psi4 log files to test that - molecular energies can be properly read. - """ - log = Psi4Log(os.path.join(self.data_path, 'opt_freq.out')) - conformer, unscaled_frequencies = log.load_conformer() - self.assertEqual(len(conformer.modes[2]._frequencies.value), 3) - self.assertEqual(conformer.modes[2]._frequencies.value[2], 4261.7445) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft_ts.out')) - conformer, unscaled_frequencies = log.load_conformer() - self.assertEqual(len(conformer.modes[2]._frequencies.value), 5) - self.assertEqual(conformer.modes[2]._frequencies.value[2], 1456.2449) - - def test_load_modes_from_psi4_log(self): - """ - Uses a Psi4 log file for opt_freq.out to test that its - molecular modes can be properly read. - """ - log = Psi4Log(os.path.join(self.data_path, 'opt_freq.out')) - conformer, unscaled_frequencies = log.load_conformer() - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, IdealGasTranslation)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, NonlinearRotor)]) == 1) - self.assertTrue(len([mode for mode in conformer.modes if isinstance(mode, HarmonicOscillator)]) == 1) - self.assertEqual(len(unscaled_frequencies), 3) - - def test_load_negative_frequency(self): - """ - Test properly loading negative frequencies. - """ - log_1 = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft_ts.out')) - neg_freq_1 = log_1.load_negative_frequency() - self.assertEqual(neg_freq_1, -617.1749) - log_2 = Psi4Log(os.path.join(self.data_path, 'opt_freq_ts.out')) - neg_freq_2 = log_2.load_negative_frequency() - self.assertEqual(neg_freq_2, -653.3950) - - def test_spin_multiplicity_from_psi4_log(self): - """ - Uses a Psi4 log file for opt_freq_dft_ts.out to test that its - molecular degrees of freedom can be properly read. - """ - log = Psi4Log(os.path.join(self.data_path, 'opt_freq.out')) - conformer, unscaled_frequencies = log.load_conformer() - self.assertEqual(conformer.spin_multiplicity, 1) - log = Psi4Log(os.path.join(self.data_path, 'opt_freq_dft_ts.out')) - conformer, unscaled_frequencies = log.load_conformer() - self.assertEqual(conformer.spin_multiplicity, 1) - - -################################################################################ - - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/arkane/ess/psi4.py b/arkane/ess/psi4_parser.py similarity index 99% rename from arkane/ess/psi4.py rename to arkane/ess/psi4_parser.py index 9b0daa4bc0f..2a995bad1ed 100644 --- a/arkane/ess/psi4.py +++ b/arkane/ess/psi4_parser.py @@ -159,9 +159,9 @@ def load_geometry(self): mass_, num_ = get_element_mass(atom) mass.append(mass_) number.append(num_) - coord = np.array(coord, np.float64) - number = np.array(number, np.int) - mass = np.array(mass, np.float64) + coord = np.array(coord, float) + number = np.array(number, int) + mass = np.array(mass, float) if any(len(param) == 0 for param in [number, coord, mass]): raise LogError(f'Unable to read atoms from Psi4 geometry output file {self.path}.') diff --git a/arkane/ess/qchem.py b/arkane/ess/qchem.py index d6835d47b9d..0dec05a40cd 100644 --- a/arkane/ess/qchem.py +++ b/arkane/ess/qchem.py @@ -149,7 +149,7 @@ def load_force_constant_matrix(self): while line != '': # Read force constant matrix if 'Final Hessian.' in line or 'Hessian of the SCF Energy' in line: - force = np.zeros((n_rows, n_rows), np.float64) + force = np.zeros((n_rows, n_rows), float) for i in range(int(math.ceil(n_rows / 6.0))): # Header row line = f.readline() @@ -199,9 +199,9 @@ def load_geometry(self): mass1, num1 = get_element_mass(atom1) mass.append(mass1) number.append(num1) - coord = np.array(coord, np.float64) - number = np.array(number, np.int) - mass = np.array(mass, np.float64) + coord = np.array(coord, float) + number = np.array(number, int) + mass = np.array(mass, float) if len(number) == 0 or len(coord) == 0 or len(mass) == 0: raise LogError('Unable to read atoms from QChem geometry output file {0}.'.format(self.path)) @@ -364,7 +364,7 @@ def load_scan_energies(self): read = True logging.info(' Assuming {0} is the output from a QChem PES scan...'.format(os.path.basename(self.path))) - v_list = np.array(v_list, np.float64) + v_list = np.array(v_list, float) # check to see if the scanlog indicates that one of your reacting species may not be the lowest energy conformer check_conformer_energy(v_list, self.path) @@ -372,7 +372,7 @@ def load_scan_energies(self): # Also convert units from Hartree/particle to J/mol v_list -= np.min(v_list) v_list *= constants.E_h * constants.Na - angle = np.arange(0.0, 2 * math.pi + 0.00001, 2 * math.pi / (len(v_list) - 1), np.float64) + angle = np.arange(0.0, 2 * math.pi + 0.00001, 2 * math.pi / (len(v_list) - 1), float) return v_list, angle def load_negative_frequency(self): diff --git a/arkane/ess/terachem.py b/arkane/ess/terachem.py index 2e680b0da62..cae46b4e685 100644 --- a/arkane/ess/terachem.py +++ b/arkane/ess/terachem.py @@ -118,7 +118,7 @@ def load_force_constant_matrix(self): while line != '': # Read force constant matrix if '*** Hessian Matrix (Hartree/Bohr^2) ***' in line: - force = np.zeros((n_rows, n_rows), np.float64) + force = np.zeros((n_rows, n_rows), float) for i in range(int(math.ceil(n_rows / 6.0))): # Matrix element rows for j in range(n_rows): @@ -190,9 +190,9 @@ def load_geometry(self): j += 1 break - coords = np.array(coords, np.float64) - numbers = np.array(numbers, np.int) - masses = np.array(masses, np.float64) + coords = np.array(coords, float) + numbers = np.array(numbers, int) + masses = np.array(masses, float) if len(coords) == 0 or len(numbers) == 0 or len(masses) == 0 \ or ((len(coords) != num_of_atoms or len(numbers) != num_of_atoms or len(masses) != num_of_atoms) and num_of_atoms is not None): @@ -319,7 +319,7 @@ def load_scan_energies(self): raise LogError(f'Could not parse scan energies from {self.path}') logging.info(' Assuming {0} is the output from a TeraChem PES scan...'.format(os.path.basename(self.path))) - v_list = np.array(v_list, np.float64) + v_list = np.array(v_list, float) # check to see if the scanlog indicates that one of the reacting species may not be the lowest energy conformer check_conformer_energy(v_list, self.path) @@ -328,7 +328,7 @@ def load_scan_energies(self): # Also convert units from Hartree/particle to J/mol v_list -= np.min(v_list) v_list *= constants.E_h * constants.Na - angles = np.arange(0.0, 2 * math.pi + 0.00001, 2 * math.pi / (len(v_list) - 1), np.float64) + angles = np.arange(0.0, 2 * math.pi + 0.00001, 2 * math.pi / (len(v_list) - 1), float) # remove None's: indices_to_pop = [v_list.index[entry] for entry in v_list if entry is None] diff --git a/arkane/ess/terachemTest.py b/arkane/ess/terachemTest.py deleted file mode 100644 index d8c252c1abe..00000000000 --- a/arkane/ess/terachemTest.py +++ /dev/null @@ -1,418 +0,0 @@ -#!/usr/bin/env python3 - -############################################################################### -# # -# RMG - Reaction Mechanism Generator # -# # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # -# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # -# # -# 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. # -# # -############################################################################### - -""" -This module contains unit tests of the :mod:`arkane.ess.terachem` module. -""" - -import os -import unittest - -import numpy as np - -from rmgpy.statmech.conformer import Conformer - -from arkane.exceptions import LogError -from arkane.ess.terachem import TeraChemLog - -################################################################################ - - -class TeraChemLogTest(unittest.TestCase): - """ - Contains unit tests for the terachem module, used for parsing TeraChem files. - """ - @classmethod - def setUpClass(cls): - """ - A method that is run before all unit tests in this class. - """ - cls.data_path = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'data', 'terachem') - - def test_get_number_of_atoms(self): - """Uses various TeraChem log files to test that number of atoms can be properly read.""" - log_file = TeraChemLog(os.path.join(self.data_path, 'ethane_minimize_output.out')) - self.assertEqual(log_file.get_number_of_atoms(), 6) - log_file = TeraChemLog(os.path.join(self.data_path, 'ethane_coords.xyz')) - self.assertEqual(log_file.get_number_of_atoms(), 6) - log_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_coords.xyz')) - self.assertEqual(log_file.get_number_of_atoms(), 4) - log_file = TeraChemLog(os.path.join(self.data_path, 'ethane_output.geometry')) - self.assertEqual(log_file.get_number_of_atoms(), 6) - log_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_output.geometry')) - self.assertEqual(log_file.get_number_of_atoms(), 4) - - def test_load_force_constant_matrix(self): - """Test loading the Hessian""" - log_file = TeraChemLog(os.path.join(self.data_path, 'ethanol_freq_output.out')) - hessian = log_file.load_force_constant_matrix() - self.assertEqual(len(hessian), 27) # 9 atoms * 3 dof = 27 - self.assertEqual(len(hessian[0]), 27) - - log_file = TeraChemLog(os.path.join(self.data_path, 'ethylamine_freq_output.out')) - hessian = log_file.load_force_constant_matrix() - expected_hessian = [ - [914.9859609920952, -86.71893487707963, 25.53304366219221, -229.64170366910673, 9.65273601863364, - 122.37178242977485, -2.4910286499699716, 0.6227571624924929, 14.323414737327337, -42.347487049489516, - -13.389278993588597, 43.90437995572075, -0.7784464531156161, -3.7365429749549572, 1.8682714874774786, - -0.6227571624924929, -0.15568929062312323, -1.8682714874774786, 3.1137858124624644, -0.46706787186936966, - -0.15568929062312323, 2.802407231216218, 0.6227571624924929, -0.31137858124624646, -99.64114599879886, - 27.40131514966969, 10.742561052995502, -545.6909636340469, 67.10208425856611, -216.40811396614131], - [-86.71893487707963, 853.1773126147153, -244.12080769705722, -20.395297071629145, -150.7072333231833, - 73.7967237553604, 16.035996934181693, 13.389278993588597, -12.61083254047298, 9.808425309256764, - 4.982057299939943, -11.521007506111118, -41.5690405963739, -9.497046728010517, 43.74869066509763, - 0.7784464531156161, 3.1137858124624644, 0.6227571624924929, -0.6227571624924929, -0.6227571624924929, - 1.0898250343618625, -0.0, -0.46706787186936966, -6.227571624924929, 2.9580965218393414, -620.7332017143923, - 60.09606618052557, 119.72506448918175, -94.5033994082358, 95.28184586135141], - [25.53304366219221, -244.12080769705722, 432.81622793228263, 54.95831958996249, 23.820461465337853, - -210.49192092246258, 48.88643725566069, 14.167725446704214, -49.04212654628382, -1.5568929062312322, - -2.9580965218393414, 11.676696796734241, 16.81444338729731, 9.808425309256764, -15.724618352935446, - -0.6227571624924929, 0.9341357437387393, 4.82636800931682, 0.31137858124624646, 2.179650068723725, - 4.982057299939943, -0.7784464531156161, -6.850328787417422, -11.988075377980488, 11.365318215487996, - 143.23414737327337, -40.94628343388141, -155.06653346063072, 59.784687599279316, -126.88677185784543], - [-229.64170366910673, -20.395297071629145, 54.95831958996249, 880.2672491831387, -45.92834073382135, - 71.77276297725982, -131.55745057653914, -13.54496828421172, -26.311490115307823, -390.1573623015468, - 81.1141204146472, -143.3898366638965, -84.38359551773279, 16.50306480605106, -4.35930013744745, - -0.6227571624924929, 0.6227571624924929, 3.7365429749549572, -7.4730859499099145, -26.62286869655407, - -44.838515699459485, 4.35930013744745, 20.550986362252267, 34.563022518333355, 2.3353393593468486, - 0.6227571624924929, 4.514989428070574, -42.970244211982006, -12.14376466860361, 49.04212654628382], - [9.65273601863364, -150.7072333231833, 23.820461465337853, -45.92834073382135, 917.1656110608188, - -66.63501638669673, -16.191686224804815, -175.15045195101362, -61.80864837737992, 74.57517020847602, - -101.50941748627633, 38.455254783911435, 25.377354371569083, -464.4211539287766, 50.59901945251505, - -8.874289565518025, -26.1558008246847, -47.95230151192195, 0.46706787186936966, 6.383260915548052, - 10.275493181126134, 3.7365429749549572, 7.7844645311561615, 17.4372005497898, -48.73074796503757, - -17.125821968543555, 47.64092293067571, 5.449125171809313, 4.047921556201204, -11.521007506111118], - [122.37178242977485, 73.7967237553604, -210.49192092246258, 71.77276297725982, -66.63501638669673, - 700.1347399321851, -33.00612961210212, -67.41346283981235, -223.8811999160512, -132.95865419214724, - 37.209740458926454, -132.80296490152412, -7.317396659286792, 58.383483983671205, -85.1620419708484, - 2.179650068723725, 3.2694751030855875, 6.071882334301805, -2.802407231216218, -11.209628924864871, - -20.706675652875386, -3.8922322655780808, -11.521007506111118, -23.353393593468482, 7.628775240533038, - -6.850328787417422, -19.616850618513528, -22.73063643097599, -9.65273601863364, 9.808425309256764], - [-2.4910286499699716, 16.035996934181693, 48.88643725566069, -131.55745057653914, -16.191686224804815, - -33.00612961210212, 886.3391315174406, -7.4730859499099145, -21.796500687237252, -4.35930013744745, - -24.910286499699716, -42.03610846824327, 1.7125821968543555, 2.6467179405930947, 2.3353393593468486, - -78.62309176467723, 21.329432815367884, -2.179650068723725, -394.04959456712487, 80.49136325215471, - -137.00657574834844, -278.68383021539057, -74.57517020847602, 184.64749867902415, 0.15568929062312323, - 1.8682714874774786, -2.3353393593468486, 2.6467179405930947, 1.0898250343618625, 2.4910286499699716], - [0.6227571624924929, 13.389278993588597, 14.167725446704214, -13.54496828421172, -175.15045195101362, - -67.41346283981235, -7.4730859499099145, 850.219216092876, -70.37155936165169, 1.2455143249849858, - 5.916193043678683, 9.341357437387394, -8.7186002748949, -25.065975790322838, -46.86247647756009, - 22.1078792684835, -467.22356115999276, 54.17987313684688, 78.77878105530036, -95.9046030238439, - 38.76663336515768, -74.41948091785291, -107.42561052995504, 66.79070567731986, 0.46706787186936966, - 3.2694751030855875, 2.802407231216218, 0.6227571624924929, -1.2455143249849858, -0.9341357437387393], - [14.323414737327337, -12.61083254047298, -49.04212654628382, -26.311490115307823, -61.80864837737992, - -223.8811999160512, -21.796500687237252, -70.37155936165169, 750.2666915128308, -6.538950206171175, - -13.389278993588597, -20.083918490382896, -0.9341357437387393, 0.46706787186936966, 5.916193043678683, - -3.1137858124624644, 55.26969817120874, -86.09617771458714, -138.40777936395656, 37.98818691204207, - -132.33589702965475, 185.27025584151662, 66.32363780545049, -249.72562215948963, -0.46706787186936966, - -1.7125821968543555, 1.8682714874774786, -1.8682714874774786, 1.2455143249849858, 3.580853684331834], - [-42.347487049489516, 9.808425309256764, -1.5568929062312322, -390.1573623015468, 74.57517020847602, - -132.95865419214724, -4.35930013744745, 1.2455143249849858, -6.538950206171175, 437.17552806973, - -82.82670261150155, 139.34191510769529, 0.31137858124624646, 2.802407231216218, -1.0898250343618625, - 0.15568929062312323, -0.46706787186936966, 0.46706787186936966, 1.8682714874774786, -0.6227571624924929, - -0.7784464531156161, 0.46706787186936966, -0.15568929062312323, -0.9341357437387393, 0.15568929062312323, - -0.46706787186936966, -1.2455143249849858, -3.580853684331834, -4.514989428070574, 5.2934358811861895], - [-13.389278993588597, 4.982057299939943, -2.9580965218393414, 81.1141204146472, -101.50941748627633, - 37.209740458926454, -24.910286499699716, 5.916193043678683, -13.389278993588597, -82.82670261150155, - 97.46149593007515, -36.58698329643396, 46.239719315067596, -9.18566814676427, 18.83840416539791, - -0.46706787186936966, 1.401203615608109, 1.5568929062312322, -1.5568929062312322, -1.2455143249849858, - -5.449125171809313, 0.6227571624924929, 0.7784464531156161, 0.7784464531156161, -0.46706787186936966, - 0.6227571624924929, -1.401203615608109, -4.047921556201204, 0.9341357437387393, 1.0898250343618625], - [43.90437995572075, -11.521007506111118, 11.676696796734241, -143.3898366638965, 38.455254783911435, - -132.80296490152412, -42.03610846824327, 9.341357437387394, -20.083918490382896, 139.34191510769529, - -36.58698329643396, 150.39585474193703, -7.006018078040545, 1.7125821968543555, -2.6467179405930947, - 0.9341357437387393, 0.15568929062312323, 2.3353393593468486, -0.46706787186936966, -5.760503753055559, - -7.4730859499099145, 0.46706787186936966, 0.7784464531156161, 1.5568929062312322, -0.6227571624924929, - -0.0, 1.2455143249849858, 8.25153240302553, 3.2694751030855875, -4.047921556201204], - [-0.7784464531156161, -41.5690405963739, 16.81444338729731, -84.38359551773279, 25.377354371569083, - -7.317396659286792, 1.7125821968543555, -8.7186002748949, -0.9341357437387393, 0.31137858124624646, - 46.239719315067596, -7.006018078040545, 85.47342055209465, -14.323414737327337, -4.982057299939943, - 1.401203615608109, -1.5568929062312322, -0.9341357437387393, 0.31137858124624646, -0.46706787186936966, - 1.2455143249849858, 0.31137858124624646, 0.31137858124624646, -0.31137858124624646, -5.760503753055559, - -4.35930013744745, 5.2934358811861895, 1.2455143249849858, -1.0898250343618625, -1.8682714874774786], - [-3.7365429749549572, -9.497046728010517, 9.808425309256764, 16.50306480605106, -464.4211539287766, - 58.383483983671205, 2.6467179405930947, -25.065975790322838, 0.46706787186936966, 2.802407231216218, - -9.18566814676427, 1.7125821968543555, -14.323414737327337, 503.8105444564267, -65.54519135233488, - -0.7784464531156161, -0.15568929062312323, -5.137746590563067, -0.6227571624924929, 1.2455143249849858, - 0.46706787186936966, 0.31137858124624646, 0.7784464531156161, -0.15568929062312323, -2.4910286499699716, - 2.4910286499699716, 0.31137858124624646, -0.15568929062312323, 0.15568929062312323, -0.6227571624924929], - [1.8682714874774786, 43.74869066509763, -15.724618352935446, -4.35930013744745, 50.59901945251505, - -85.1620419708484, 2.3353393593468486, -46.86247647756009, 5.916193043678683, -1.0898250343618625, - 18.83840416539791, -2.6467179405930947, -4.982057299939943, -65.54519135233488, 103.84475684562318, - -1.5568929062312322, -5.2934358811861895, -8.25153240302553, 0.15568929062312323, 1.401203615608109, - 2.023960778100602, 0.15568929062312323, 1.5568929062312322, 2.3353393593468486, 7.7844645311561615, - 2.179650068723725, -3.580853684331834, -0.31137858124624646, -0.6227571624924929, 1.0898250343618625], - [-0.6227571624924929, 0.7784464531156161, -0.6227571624924929, -0.6227571624924929, -8.874289565518025, - 2.179650068723725, -78.62309176467723, 22.1078792684835, -3.1137858124624644, 0.15568929062312323, - -0.46706787186936966, 0.9341357437387393, 1.401203615608109, -0.7784464531156161, -1.5568929062312322, - 75.50930595221476, -22.73063643097599, 4.514989428070574, -0.9341357437387393, 47.018165768183216, - -6.071882334301805, 2.802407231216218, -37.67680833079582, 3.425164393708711, 0.6227571624924929, - 0.15568929062312323, 0.6227571624924929, 0.0, 0.31137858124624646, 0.0], - [-0.15568929062312323, 3.1137858124624644, 0.9341357437387393, 0.6227571624924929, -26.1558008246847, - 3.2694751030855875, 21.329432815367884, -467.22356115999276, 55.26969817120874, -0.46706787186936966, - 1.401203615608109, 0.15568929062312323, -1.5568929062312322, -0.15568929062312323, -5.2934358811861895, - -22.73063643097599, 508.4812231751205, -57.760726821178714, 1.2455143249849858, -9.18566814676427, - 2.023960778100602, 0.31137858124624646, -11.05393963424175, 2.179650068723725, 1.0898250343618625, - 0.6227571624924929, -1.0898250343618625, 0.31137858124624646, -0.0, 0.15568929062312323], - [-1.8682714874774786, 0.6227571624924929, 4.82636800931682, 3.7365429749549572, -47.95230151192195, - 6.071882334301805, -2.179650068723725, 54.17987313684688, -86.09617771458714, 0.46706787186936966, - 1.5568929062312322, 2.3353393593468486, -0.9341357437387393, -5.137746590563067, -8.25153240302553, - 4.514989428070574, -57.760726821178714, 89.8327206895421, 0.46706787186936966, 19.77253990913665, - -3.7365429749549572, -4.670678718693697, 33.31750819334837, -4.514989428070574, 0.31137858124624646, - 1.401203615608109, -0.31137858124624646, 0.31137858124624646, -0.15568929062312323, -0.15568929062312323], - [3.1137858124624644, -0.6227571624924929, 0.31137858124624646, -7.4730859499099145, 0.46706787186936966, - -2.802407231216218, -394.04959456712487, 78.77878105530036, -138.40777936395656, 1.8682714874774786, - -1.5568929062312322, -0.46706787186936966, 0.31137858124624646, -0.6227571624924929, 0.15568929062312323, - -0.9341357437387393, 1.2455143249849858, 0.46706787186936966, 426.4329670167345, -87.18600274894901, - 155.37791204187698, -30.670790252755275, 8.7186002748949, -14.167725446704214, 0.15568929062312323, - 0.31137858124624646, 0.15568929062312323, 0.7784464531156161, 0.31137858124624646, -0.6227571624924929], - [-0.46706787186936966, -0.6227571624924929, 2.179650068723725, -26.62286869655407, 6.383260915548052, - -11.209628924864871, 80.49136325215471, -95.9046030238439, 37.98818691204207, -0.6227571624924929, - -1.2455143249849858, -5.760503753055559, -0.46706787186936966, 1.2455143249849858, 1.401203615608109, - 47.018165768183216, -9.18566814676427, 19.77253990913665, -87.18600274894901, 96.06029231446702, - -37.67680833079582, -13.07790041234235, 2.179650068723725, -7.161707368663668, 0.31137858124624646, - 0.15568929062312323, -0.15568929062312323, 0.9341357437387393, 0.6227571624924929, 0.46706787186936966], - [-0.15568929062312323, 1.0898250343618625, 4.982057299939943, -44.838515699459485, 10.275493181126134, - -20.706675652875386, -137.00657574834844, 38.76663336515768, -132.33589702965475, -0.7784464531156161, - -5.449125171809313, -7.4730859499099145, 1.2455143249849858, 0.46706787186936966, 2.023960778100602, - -6.071882334301805, 2.023960778100602, -3.7365429749549572, 155.37791204187698, -37.67680833079582, - 143.23414737327337, 30.048033090262784, -9.497046728010517, 15.724618352935446, -0.15568929062312323, - 0.31137858124624646, -0.31137858124624646, 1.8682714874774786, -0.46706787186936966, -1.7125821968543555], - [2.802407231216218, -0.0, -0.7784464531156161, 4.35930013744745, 3.7365429749549572, -3.8922322655780808, - -278.68383021539057, -74.41948091785291, 185.27025584151662, 0.46706787186936966, 0.6227571624924929, - 0.46706787186936966, 0.31137858124624646, 0.31137858124624646, 0.15568929062312323, 2.802407231216218, - 0.31137858124624646, -4.670678718693697, -30.670790252755275, -13.07790041234235, 30.048033090262784, - 297.67792367141163, 82.98239190212468, -205.50986362252266, 0.0, -0.15568929062312323, - -0.15568929062312323, 0.7784464531156161, -0.6227571624924929, -0.9341357437387393], - [0.6227571624924929, -0.46706787186936966, -6.850328787417422, 20.550986362252267, 7.7844645311561615, - -11.521007506111118, -74.57517020847602, -107.42561052995504, 66.32363780545049, -0.15568929062312323, - 0.7784464531156161, 0.7784464531156161, 0.31137858124624646, 0.7784464531156161, 1.5568929062312322, - -37.67680833079582, -11.05393963424175, 33.31750819334837, 8.7186002748949, 2.179650068723725, - -9.497046728010517, 82.98239190212468, 107.58129982057814, -73.32965588349104, 0.0, -0.15568929062312323, - -1.0898250343618625, -0.7784464531156161, 0.0, 0.31137858124624646], - [-0.31137858124624646, -6.227571624924929, -11.988075377980488, 34.563022518333355, 17.4372005497898, - -23.353393593468482, 184.64749867902415, 66.79070567731986, -249.72562215948963, -0.9341357437387393, - 0.7784464531156161, 1.5568929062312322, -0.31137858124624646, -0.15568929062312323, 2.3353393593468486, - 3.425164393708711, 2.179650068723725, -4.514989428070574, -14.167725446704214, -7.161707368663668, - 15.724618352935446, -205.50986362252266, -73.32965588349104, 268.40833703426443, -0.6227571624924929, - -0.6227571624924929, 1.2455143249849858, -0.7784464531156161, 0.0, 0.31137858124624646], - [-99.64114599879886, 2.9580965218393414, 11.365318215487996, 2.3353393593468486, -48.73074796503757, - 7.628775240533038, 0.15568929062312323, 0.46706787186936966, -0.46706787186936966, 0.15568929062312323, - -0.46706787186936966, -0.6227571624924929, -5.760503753055559, -2.4910286499699716, 7.7844645311561615, - 0.6227571624924929, 1.0898250343618625, 0.31137858124624646, 0.15568929062312323, 0.31137858124624646, - -0.15568929062312323, 0.0, 0.0, -0.6227571624924929, 103.06631039250756, -18.83840416539791, - -13.389278993588597, -0.9341357437387393, 65.38950206171175, -11.676696796734241], - [27.40131514966969, -620.7332017143923, 143.23414737327337, 0.6227571624924929, -17.125821968543555, - -6.850328787417422, 1.8682714874774786, 3.2694751030855875, -1.7125821968543555, -0.46706787186936966, - 0.6227571624924929, -0.0, -4.35930013744745, 2.4910286499699716, 2.179650068723725, 0.15568929062312323, - 0.6227571624924929, 1.401203615608109, 0.31137858124624646, 0.15568929062312323, 0.31137858124624646, - -0.15568929062312323, -0.15568929062312323, -0.6227571624924929, -18.83840416539791, 647.5117597015695, - -131.86882915778537, -6.383260915548052, -14.946171899819829, -6.227571624924929], - [10.742561052995502, 60.09606618052557, -40.94628343388141, 4.514989428070574, 47.64092293067571, - -19.616850618513528, -2.3353393593468486, 2.802407231216218, 1.8682714874774786, -1.2455143249849858, - -1.401203615608109, 1.2455143249849858, 5.2934358811861895, 0.31137858124624646, -3.580853684331834, - 0.6227571624924929, -1.0898250343618625, -0.31137858124624646, 0.15568929062312323, -0.15568929062312323, - -0.31137858124624646, -0.15568929062312323, -1.0898250343618625, 1.2455143249849858, -13.389278993588597, - -131.86882915778537, 68.03622000230486, -4.047921556201204, 24.754597209076593, -7.628775240533038], - [-545.6909636340469, 119.72506448918175, -155.06653346063072, -42.970244211982006, 5.449125171809313, - -22.73063643097599, 2.6467179405930947, 0.6227571624924929, -1.8682714874774786, -3.580853684331834, - -4.047921556201204, 8.25153240302553, 1.2455143249849858, -0.15568929062312323, -0.31137858124624646, 0.0, - 0.31137858124624646, 0.31137858124624646, 0.7784464531156161, 0.9341357437387393, 1.8682714874774786, - 0.7784464531156161, -0.7784464531156161, -0.7784464531156161, -0.9341357437387393, -6.383260915548052, - -4.047921556201204, 587.8827613929133, -116.14421080484992, 174.68338407914425], - [67.10208425856611, -94.5033994082358, 59.784687599279316, -12.14376466860361, 4.047921556201204, - -9.65273601863364, 1.0898250343618625, -1.2455143249849858, 1.2455143249849858, -4.514989428070574, - 0.9341357437387393, 3.2694751030855875, -1.0898250343618625, 0.15568929062312323, -0.6227571624924929, - 0.31137858124624646, -0.0, -0.15568929062312323, 0.31137858124624646, 0.6227571624924929, - -0.46706787186936966, -0.6227571624924929, 0.0, 0.0, 65.38950206171175, -14.946171899819829, - 24.754597209076593, -116.14421080484992, 105.09027117060819, -78.15602389280787], - [-216.40811396614131, 95.28184586135141, -126.88677185784543, 49.04212654628382, -11.521007506111118, - 9.808425309256764, 2.4910286499699716, -0.9341357437387393, 3.580853684331834, 5.2934358811861895, - 1.0898250343618625, -4.047921556201204, -1.8682714874774786, -0.6227571624924929, 1.0898250343618625, 0.0, - 0.15568929062312323, -0.15568929062312323, -0.6227571624924929, 0.46706787186936966, -1.7125821968543555, - -0.9341357437387393, 0.31137858124624646, 0.31137858124624646, -11.676696796734241, -6.227571624924929, - -7.628775240533038, 174.68338407914425, -78.15602389280787, 125.95263611410668]] - np.testing.assert_almost_equal(hessian, np.array(expected_hessian, np.float64)) - - def test_load_geometry(self): - """Test loading the geometry from a TeraChem xyz output file""" - log_file = TeraChemLog(os.path.join(self.data_path, 'ethane_coords.xyz')) - coords, numbers, masses = log_file.load_geometry() - np.testing.assert_almost_equal( - coords, np.array([[0.66409651, 0.00395265, 0.07100793], - [-0.66409647, -0.00395253, -0.0710079], - [1.24675866, 0.88983869, -0.1613784], - [1.19483972, -0.8753068, 0.42244414], - [-1.19483975, 0.87530673, -0.42244421], - [-1.24675868, -0.88983873, 0.16137844]], np.float64)) - np.testing.assert_almost_equal(numbers, np.array([6, 6, 1, 1, 1, 1], np.float64)) - np.testing.assert_almost_equal(masses, np.array( - [12., 12., 1.00782503, 1.00782503, 1.00782503, 1.00782503], np.float64)) - - log_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_coords.xyz')) - coords, numbers, masses = log_file.load_geometry() - np.testing.assert_almost_equal( - coords, np.array([[-4.23756410e-03, 4.24348000e-05, -5.28516700e-04], - [1.19165823e+00, -1.75471911e-02, 1.58030931e-01], - [-5.96146428e-01, 9.38505681e-01, 4.33255558e-02], - [-5.91274235e-01, -9.21000915e-01, -2.00827970e-01]], np.float64)) - np.testing.assert_almost_equal(numbers, np.array([6, 8, 1, 1], np.float64)) - np.testing.assert_almost_equal( - masses, np.array([12., 15.99491462, 1.00782503, 1.00782503], np.float64)) - - log_file = TeraChemLog(os.path.join(self.data_path, 'ethane_output.geometry')) - coords, numbers, masses = log_file.load_geometry() - np.testing.assert_almost_equal( - coords, np.array([[0.66409651, 0.00395265, 0.07100793], - [-0.66409647, -0.00395253, -0.0710079], - [1.24675866, 0.88983869, -0.1613784], - [1.19483972, -0.8753068, 0.42244414], - [-1.19483975, 0.87530673, -0.42244421], - [-1.24675868, -0.88983873, 0.16137844]], np.float64)) - np.testing.assert_almost_equal(numbers, np.array([6, 6, 1, 1, 1, 1], np.float64)) - np.testing.assert_almost_equal( - masses, np.array([12., 12., 1.00782504, 1.00782504, 1.00782504, 1.00782504], np.float64)) - - log_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_output.geometry')) - coords, numbers, masses = log_file.load_geometry() - np.testing.assert_almost_equal( - coords, np.array([[-1.2224100e-02, 1.8041000e-04, -1.6211600e-03], - [1.2016482e+00, -1.7734170e-02, 1.5936241e-01], - [-5.9716440e-01, 9.3272817e-01, 4.2440100e-02], - [-5.9225970e-01, -9.1517440e-01, -2.0018135e-01]], np.float64)) - np.testing.assert_almost_equal(numbers, np.array([6, 8, 1, 1], np.float64)) - np.testing.assert_almost_equal( - masses, np.array([12., 15.99491464, 1.00782504, 1.00782504], np.float64)) - - log_file = TeraChemLog(os.path.join(self.data_path, 'ethylamine_freq_output.out')) - coords, numbers, masses = log_file.load_geometry() - np.testing.assert_almost_equal( - coords, np.array([[2.370236, 0.065481, -1.194536], - [0.512276, -0.516064, 0.779232], - [0.859257, 0.87292, 3.300986], - [-1.367578, -0.100279, 0.008089], - [0.56292, -2.564216, 1.100445], - [0.755566, 2.927958, 3.038153], - [2.705598, 0.43874, 4.141338], - [-0.600934, 0.336582, 4.672435], - [2.352825, 1.959707, -1.552162], - [4.141389, -0.322693, -0.540207]], np.float64)) - np.testing.assert_almost_equal(numbers, np.array([7, 6, 6, 1, 1, 1, 1, 1, 1, 1], np.float64)) - np.testing.assert_almost_equal( - masses, np.array([14.003074, 12., 12., 1.00782503, 1.00782503, 1.00782503, 1.00782503, - 1.00782503, 1.00782503, 1.00782503], np.float64)) - - log_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_freq_output.out')) - coords, numbers, masses = log_file.load_geometry() - np.testing.assert_almost_equal( - coords, np.array([[2.261989e+00, -1.149050e-01, 1.783170e-01], - [-8.108000e-03, 2.710000e-04, -6.880000e-04], - [-1.038653e+00, 1.827038e+00, -6.398200e-02], - [-1.215229e+00, -1.712404e+00, -1.136470e-01]], np.float64)) - np.testing.assert_almost_equal(numbers, np.array([8, 6, 1, 1], np.float64)) - np.testing.assert_almost_equal( - masses, np.array([15.99491462, 12., 1.00782503, 1.00782503], np.float64)) - - def test_load_conformer(self): - """ - Test parsing frequencies and spin multiplicity from a TeraChem log file. - Translation and rotation modes are not read from the TeraCHem log, and are instead added in statmech. - """ - log_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_freq_output.out')) - conformer, unscaled_freqs = log_file.load_conformer() - self.assertIsInstance(conformer, Conformer) - self.assertEqual(len(conformer.modes), 1) - np.testing.assert_almost_equal(conformer.modes[0].frequencies.value_si, unscaled_freqs) - expected_freqs = [1198.6352081, 1276.1991058, 1563.6275932, 1893.2440765, - 2916.3917533, 2965.8683956] - np.testing.assert_almost_equal(conformer.modes[0].frequencies.value_si, expected_freqs) - self.assertEqual(conformer.spin_multiplicity, 1) - - failed_log_file = TeraChemLog(os.path.join(self.data_path, 'failed_freq_job.out')) - with self.assertRaises(LogError): - failed_log_file.load_conformer() - - def test_load_energy(self): - """Test loading the energy in J/mol from a TeraChem output.out or results.dat file""" - output_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_sp_terachem_output.out')) - results_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_sp_terachem_results.dat')) - freq_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_freq_output.out')) - opt_file = TeraChemLog(os.path.join(self.data_path, 'ethane_minimize_output.out')) - e_elect_1 = output_file.load_energy() - e_elect_2 = results_file.load_energy() - e_elect_3 = freq_file.load_energy() - e_elect_4 = opt_file.load_energy() - self.assertEqual(e_elect_1, e_elect_2) - self.assertEqual(e_elect_1, e_elect_3) - self.assertAlmostEqual(e_elect_1, -300621953.7863082) - self.assertAlmostEqual(e_elect_4, -206346606.4271929) - - def test_load_zero_point_energy(self): - """Test loading the ZPE from a TeraChem freq output file""" - log_file = TeraChemLog(os.path.join(self.data_path, 'ethylamine_freq_output.out')) - zpe = log_file.load_zero_point_energy() - self.assertAlmostEqual(zpe, 243113.46765236984) - - log_file = TeraChemLog(os.path.join(self.data_path, 'formaldehyde_freq_output.out')) - zpe = log_file.load_zero_point_energy() - self.assertAlmostEqual(zpe, 70663.2091453692) - - def test_load_scan_energies(self): - """Test loading a PES scan from a TeraCHem log file""" - log_file = TeraChemLog(os.path.join(self.data_path, 'ethanol_scan_terachem_output.out')) - v_list, angles = log_file.load_scan_energies() - print(angles) - expected_v_list = [3.31469351e+00, 5.61670297e+02, 2.28894412e+03, 5.02988537e+03, - 8.06230147e+03, 1.09146826e+04, 1.31616066e+04, 1.44091777e+04, - 1.42173813e+04, 1.28403610e+04, 1.07514495e+04, 7.96656078e+03, - 4.81040645e+03, 2.42069223e+03, 7.90256554e+02, 4.20132486e+00, - 4.54592173e+02, 2.06279144e+03, 4.67391931e+03, 7.62857835e+03, - 1.04970774e+04, 1.27455046e+04, 1.42866289e+04, 1.43930501e+04, - 1.31587081e+04, 1.10047441e+04, 8.24254519e+03, 5.10264086e+03, - 2.56880350e+03, 7.56736797e+02, 1.30067263e+00, 5.19872864e+02, - 2.30963595e+03, 5.02046166e+03, 7.97285489e+03, 1.06923710e+04, - 1.29244615e+04, 1.43422341e+04, 1.43905580e+04, 1.32047110e+04, - 1.12088126e+04, 8.31162367e+03, 5.06568695e+03, 2.54966151e+03, - 8.50076205e+02, 0.00000000e+00] - expected_angles = [0., 0.13962634, 0.27925268, 0.41887902, 0.55850536, 0.6981317, - 0.83775804, 0.97738438, 1.11701072, 1.25663706, 1.3962634, 1.53588974, - 1.67551608, 1.81514242, 1.95476876, 2.0943951, 2.23402144, 2.37364778, - 2.51327412, 2.65290046, 2.7925268, 2.93215314, 3.07177948, 3.21140582, - 3.35103216, 3.4906585, 3.63028484, 3.76991118, 3.90953752, 4.04916386, - 4.1887902, 4.32841654, 4.46804289, 4.60766923, 4.74729557, 4.88692191, - 5.02654825, 5.16617459, 5.30580093, 5.44542727, 5.58505361, 5.72467995, - 5.86430629, 6.00393263, 6.14355897, 6.28318531] # radians - np.testing.assert_almost_equal(v_list, expected_v_list, 4) - np.testing.assert_almost_equal(angles, expected_angles) - -################################################################################ - - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/arkane/inputTest.py b/arkane/inputTest.py deleted file mode 100644 index c2e2671414f..00000000000 --- a/arkane/inputTest.py +++ /dev/null @@ -1,268 +0,0 @@ -#!/usr/bin/env python3 - -############################################################################### -# # -# RMG - Reaction Mechanism Generator # -# # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # -# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # -# # -# 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. # -# # -############################################################################### - -""" -This module contains unit tests of the :mod:`arkane.input` module. -""" - -import os -import unittest - -import rmgpy -from rmgpy.exceptions import InputError -from rmgpy.kinetics.tunneling import Eckart -from rmgpy.pdep.collision import SingleExponentialDown -from rmgpy.statmech.rotation import NonlinearRotor -from rmgpy.statmech.translation import IdealGasTranslation -from rmgpy.statmech.vibration import HarmonicOscillator -from rmgpy.thermo.nasa import NASAPolynomial, NASA -from rmgpy.transport import TransportData - -from arkane.input import species, transitionState, reaction, SMILES, load_input_file, process_model_chemistry -from arkane.modelchem import LevelOfTheory, CompositeLevelOfTheory - -################################################################################ - - -class InputTest(unittest.TestCase): - """ - Contains unit tests for the Arkane input module - """ - - def test_species(self): - """ - Test loading a species from input file-like kew word arguments - """ - label0 = 'CH2O' - kwargs = {'E0': (28.69, 'kcal/mol'), - 'structure': SMILES('C=O'), - 'collisionModel': TransportData(sigma=(3.69e-10, 'm'), epsilon=(4.0, 'kJ/mol')), - 'energyTransferModel': SingleExponentialDown(alpha0=(0.956, 'kJ/mol'), T0=(300, 'K'), n=0.95), - 'spinMultiplicity': 1, - 'opticalIsomers': 1, - 'modes': [HarmonicOscillator(frequencies=([1180, 1261, 1529, 1764, 2931, 2999], 'cm^-1')), - NonlinearRotor(rotationalConstant=([1.15498821005263, 1.3156969584727, 9.45570474524524], - "cm^-1"), symmetry=2, quantum=False), - IdealGasTranslation(mass=(30.0106, "g/mol")), - ]} - - spc0 = species(label0, **kwargs) - self.assertEqual(spc0.label, 'CH2O') - self.assertEqual(spc0.smiles, 'C=O') - self.assertAlmostEqual(spc0.conformer.E0.value_si, 120038.96) - self.assertEqual(spc0.conformer.spin_multiplicity, 1) - self.assertEqual(spc0.conformer.optical_isomers, 1) - self.assertEqual(len(spc0.conformer.modes), 3) - self.assertIsInstance(spc0.transport_data, TransportData) - self.assertIsInstance(spc0.energy_transfer_model, SingleExponentialDown) - - def test_species_atomic_nasa_polynomial(self): - """ - Test loading a atom with NASA polynomials - """ - label0 = "H(1)" - kwargs = {"structure": SMILES('[H]'), - "thermo": NASA(polynomials=[ - NASAPolynomial(coeffs=[2.5, 0, 0, 0, 0, 25473.7, -0.446683], Tmin=(200, 'K'), Tmax=(1000, 'K')), - NASAPolynomial(coeffs=[2.5, 0, 0, 0, 0, 25473.7, -0.446683], Tmin=(1000, 'K'), Tmax=(6000, 'K'))], - Tmin=(200, 'K'), Tmax=(6000, 'K'), comment="""Thermo library: FFCM1(-)"""), - "energyTransferModel": SingleExponentialDown(alpha0=(3.5886, 'kJ/mol'), T0=(300, 'K'), n=0.85)} - spc0 = species(label0, **kwargs) - self.assertEqual(spc0.label, label0) - self.assertEqual(spc0.smiles, '[H]') - self.assertTrue(spc0.has_statmech()) - self.assertEqual(spc0.thermo, kwargs['thermo']) - - def test_species_polyatomic_nasa_polynomial(self): - """ - Test loading a species with NASA polynomials - """ - label0 = "benzyl" - kwargs = {"structure": SMILES('[c]1ccccc1'), - "thermo": NASA(polynomials=[NASAPolynomial( - coeffs=[2.78632, 0.00784632, 7.97887e-05, -1.11617e-07, 4.39429e-11, 39695, 11.5114], - Tmin=(100, 'K'), Tmax=(943.73, 'K')), - NASAPolynomial( - coeffs=[13.2455, 0.0115667, -2.49996e-06, 4.66496e-10, -4.12376e-14, - 35581.1, -49.6793], Tmin=(943.73, 'K'), Tmax=(5000, 'K'))], - Tmin=(100, 'K'), Tmax=(5000, 'K'), - comment="""Thermo library: Fulvene_H + radical(CbJ)"""), - "energyTransferModel": SingleExponentialDown(alpha0=(3.5886, 'kJ/mol'), T0=(300, 'K'), n=0.85)} - spc0 = species(label0, **kwargs) - self.assertEqual(spc0.label, label0) - self.assertTrue(spc0.has_statmech()) - self.assertEqual(spc0.thermo, kwargs['thermo']) - - def test_transition_state(self): - """ - Test loading a transition state from input file-like kew word arguments - """ - label0 = 'TS1' - kwargs = {'E0': (39.95, 'kcal/mol'), - 'spinMultiplicity': 2, - 'opticalIsomers': 1, - 'frequency': (-1934, 'cm^-1'), - 'modes': [HarmonicOscillator(frequencies=([792, 987, 1136, 1142, 1482, 2441, 3096, 3183], 'cm^-1')), - NonlinearRotor(rotationalConstant=([0.928, 0.962, 5.807], "cm^-1"), symmetry=1, - quantum=False), - IdealGasTranslation(mass=(31.01843, "g/mol"))]} - - ts0 = transitionState(label0, **kwargs) - self.assertEqual(ts0.label, 'TS1') - self.assertAlmostEqual(ts0.conformer.E0.value_si, 167150.8) - self.assertEqual(ts0.conformer.spin_multiplicity, 2) - self.assertEqual(ts0.conformer.optical_isomers, 1) - self.assertEqual(ts0.frequency.value_si, -1934.0) - self.assertEqual(len(ts0.conformer.modes), 3) - - def test_reaction(self): - """ - Test loading a reaction from input file-like kew word arguments - """ - - species( - label='methoxy', - structure=SMILES('C[O]'), - E0=(9.44, 'kcal/mol'), - modes=[ - HarmonicOscillator(frequencies=([758, 960, 1106, 1393, 1403, 1518, 2940, 3019, 3065], 'cm^-1')), - NonlinearRotor(rotationalConstant=([0.916, 0.921, 5.251], "cm^-1"), symmetry=3, quantum=False), - IdealGasTranslation(mass=(31.01843, "g/mol"))], - spinMultiplicity=2, - opticalIsomers=1, - molecularWeight=(31.01843, 'amu'), - collisionModel=TransportData(sigma=(3.69e-10, 'm'), epsilon=(4.0, 'kJ/mol')), - energyTransferModel=SingleExponentialDown(alpha0=(0.956, 'kJ/mol'), T0=(300, 'K'), n=0.95)) - - species( - label='formaldehyde', - E0=(28.69, 'kcal/mol'), - molecularWeight=(30.0106, "g/mol"), - collisionModel=TransportData(sigma=(3.69e-10, 'm'), epsilon=(4.0, 'kJ/mol')), - energyTransferModel=SingleExponentialDown(alpha0=(0.956, 'kJ/mol'), T0=(300, 'K'), n=0.95), - spinMultiplicity=1, - opticalIsomers=1, - modes=[HarmonicOscillator(frequencies=([1180, 1261, 1529, 1764, 2931, 2999], 'cm^-1')), - NonlinearRotor(rotationalConstant=([1.15498821005263, 1.3156969584727, 9.45570474524524], "cm^-1"), - symmetry=2, quantum=False), - IdealGasTranslation(mass=(30.0106, "g/mol"))]) - - species( - label='H', - E0=(0.000, 'kcal/mol'), - molecularWeight=(1.00783, "g/mol"), - collisionModel=TransportData(sigma=(3.69e-10, 'm'), epsilon=(4.0, 'kJ/mol')), - energyTransferModel=SingleExponentialDown(alpha0=(0.956, 'kJ/mol'), T0=(300, 'K'), n=0.95), - modes=[IdealGasTranslation(mass=(1.00783, "g/mol"))], - spinMultiplicity=2, - opticalIsomers=1) - - transitionState( - label='TS3', - E0=(34.1, 'kcal/mol'), - spinMultiplicity=2, - opticalIsomers=1, - frequency=(-967, 'cm^-1'), - modes=[HarmonicOscillator(frequencies=([466, 581, 1169, 1242, 1499, 1659, 2933, 3000], 'cm^-1')), - NonlinearRotor(rotationalConstant=([0.970, 1.029, 3.717], "cm^-1"), symmetry=1, quantum=False), - IdealGasTranslation(mass=(31.01843, "g/mol"))]) - - reactants = ['formaldehyde', 'H'] - products = ['methoxy'] - tunneling = 'Eckart' - - rxn = reaction('CH2O+H=Methoxy', reactants, products, 'TS3', tunneling=tunneling) - self.assertEqual(rxn.label, 'CH2O+H=Methoxy') - self.assertEqual(len(rxn.reactants), 2) - self.assertEqual(len(rxn.products), 1) - self.assertAlmostEqual(rxn.reactants[0].conformer.E0.value_si, 0) - self.assertAlmostEqual(rxn.reactants[1].conformer.E0.value_si, 120038.96) - self.assertAlmostEqual(rxn.products[0].conformer.E0.value_si, 39496.96) - self.assertAlmostEqual(rxn.transition_state.conformer.E0.value_si, 142674.4) - self.assertAlmostEqual(rxn.transition_state.frequency.value_si, -967.0) - self.assertIsInstance(rxn.transition_state.tunneling, Eckart) - - def test_load_input_file(self): - """Test loading an Arkane input file""" - path = os.path.join(os.path.dirname(os.path.dirname(rmgpy.__file__)), 'examples', 'arkane', 'networks', - 'acetyl+O2', 'input.py') - job_list, reaction_dict, species_dict, transition_state_dict, network_dict, model_chemistry \ - = load_input_file(path) - - self.assertEqual(len(job_list), 1) - - self.assertEqual(len(reaction_dict), 5) - self.assertTrue('entrance1' in reaction_dict) - self.assertTrue('exit2' in reaction_dict) - - self.assertEqual(len(species_dict), 9) - self.assertTrue('acetyl' in species_dict) - self.assertTrue('hydroperoxyl' in species_dict) - - self.assertEqual(len(transition_state_dict), 5) - self.assertTrue('entrance1' in transition_state_dict) - self.assertTrue('isom1' in transition_state_dict) - - self.assertEqual(len(network_dict), 1) - self.assertTrue('acetyl + O2' in network_dict) - - self.assertIsNone(model_chemistry) - - def test_process_model_chemistry(self): - """ - Test processing the model chemistry to derive the sp and freq levels - """ - mc = 'ccsd(t)-f12a/aug-cc-pvtz//b3lyp/6-311++g(3df,3pd)' - lot = process_model_chemistry(mc) - self.assertIsInstance(lot, CompositeLevelOfTheory) - self.assertEqual(lot.energy, LevelOfTheory('ccsd(t)-f12a', 'aug-cc-pvtz')) - self.assertEqual(lot.freq, LevelOfTheory('b3lyp', '6-311++g(3df,3pd)')) - - mc = 'b3lyp-d3/def2-tzvp' - lot = process_model_chemistry(mc) - self.assertIsInstance(lot, LevelOfTheory) - self.assertEqual(lot, LevelOfTheory('b3lyp-d3', 'def2-tzvp')) - - mc = 'cbs-qb3' - lot = process_model_chemistry(mc) - self.assertIsInstance(lot, LevelOfTheory) - self.assertEqual(lot, LevelOfTheory('cbs-qb3')) - - mc = LevelOfTheory('test') - lot = process_model_chemistry(mc) - self.assertIs(mc, lot) - - with self.assertRaises(InputError): - process_model_chemistry('CCSD(T)-F12a/aug-cc-pVTZ//CCSD(T)-F12a/aug-cc-pVTZ//B3LYP/6-311++G(3df,3pd)') - -################################################################################ - - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/arkane/kinetics.py b/arkane/kinetics.py index 2153a0c6f25..6b2ffcdffff 100644 --- a/arkane/kinetics.py +++ b/arkane/kinetics.py @@ -602,7 +602,7 @@ def draw(self, reaction, file_format, path=None): break # Determine naive position of each well (one per column) - coordinates = np.zeros((len(self.wells), 2), np.float64) + coordinates = np.zeros((len(self.wells), 2), float) x = padding for i in range(len(self.wells)): well = self.wells[i] diff --git a/arkane/main.py b/arkane/main.py index d3adf14a173..9526b6e75c0 100644 --- a/arkane/main.py +++ b/arkane/main.py @@ -222,7 +222,7 @@ def execute(self): job.execute(output_directory=self.output_directory, plot=self.plot, jobnum=bacjob_num) bacjob_num += 1 if isinstance(job, AEJob): - job.execute(output_file=output_file) + job.execute(output_directory=self.output_directory, plot=self.plot) with open(chemkin_file, 'a') as f: f.write('\n') @@ -465,7 +465,7 @@ def log_header(level=logging.INFO): logging.log(level, '# Authors: RMG Developers (rmg_dev@mit.edu) #') logging.log(level, '# P.I.s: William H. Green (whgreen@mit.edu) #') logging.log(level, '# Richard H. West (r.west@neu.edu) #') - logging.log(level, '# Website: http://reactionmechanismgenerator.github.io/ #') + logging.log(level, '# Website: https://reactionmechanismgenerator.github.io/ #') logging.log(level, '# #') logging.log(level, '################################################################') logging.log(level, '') diff --git a/arkane/modelchemTest.py b/arkane/modelchemTest.py deleted file mode 100644 index d1163f41db6..00000000000 --- a/arkane/modelchemTest.py +++ /dev/null @@ -1,308 +0,0 @@ -#!/usr/bin/env python3 - -############################################################################### -# # -# RMG - Reaction Mechanism Generator # -# # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # -# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # -# # -# 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. # -# # -############################################################################### - -""" -This script contains unit tests for the :mod:`arkane.modelchem` module. -""" - -import unittest -from dataclasses import FrozenInstanceError - -from arkane.modelchem import (LOT, LevelOfTheory, CompositeLevelOfTheory, - model_chem_to_lot, str_to_lot, get_software_id) - -# Instances for use in tests -FREQ = LevelOfTheory( - method='wB97X-D', - basis='def2-TZVP', - software='Gaussian 16', - args='very-tight' -) -ENERGY = LevelOfTheory( - method='DLPNO-CCSD(T)-F12', - basis='def2-TZVP', - software='Orca' -) -COMPOSITE = CompositeLevelOfTheory( - freq=FREQ, - energy=ENERGY -) - -# Representations corresponding to instances -FREQ_REPR = "LevelOfTheory(method='wb97xd',basis='def2tzvp',software='gaussian',args=('verytight',))" -ENERGY_REPR = "LevelOfTheory(method='dlpnoccsd(t)f12',basis='def2tzvp',software='orca')" -COMPOSITE_REPR = f"CompositeLevelOfTheory(freq={FREQ_REPR},energy={ENERGY_REPR})" - -# Dictionaries corresponding to instances -FREQ_DICT = { - 'class': 'LevelOfTheory', - 'method': 'wb97xd', - 'basis': 'def2tzvp', - 'software': 'gaussian', - 'args': ['verytight'] # This is a list instead of tuple because that's what YAML files expect -} -ENERGY_DICT = { - 'class': 'LevelOfTheory', - 'method': 'dlpnoccsd(t)f12', - 'basis': 'def2tzvp', - 'software': 'orca', -} -COMPOSITE_DICT = { - 'class': 'CompositeLevelOfTheory', - 'freq': FREQ_DICT, - 'energy': ENERGY_DICT -} - -# Model chemistries corresponding to instances -FREQ_MODELCHEM = 'wb97xd/def2tzvp' -ENERGY_MODELCHEM = 'dlpnoccsd(t)f12/def2tzvp' -COMPOSITE_MODELCHEM = f'{ENERGY_MODELCHEM}//{FREQ_MODELCHEM}' - - -class TestLevelOfTheory(unittest.TestCase): - """ - A class for testing that the LevelOfTheory class functions properly. - """ - - def test_attrs(self): - """ - Test that instance behaves correctly. - """ - self.assertEqual(FREQ.method, 'wb97xd') - self.assertEqual(FREQ.basis, 'def2tzvp') - self.assertEqual(FREQ.software, 'gaussian') - self.assertTupleEqual(FREQ.args, ('verytight',)) - with self.assertRaises(FrozenInstanceError): - FREQ.method = '' - - self.assertEqual(repr(FREQ), FREQ_REPR) - self.assertEqual(repr(ENERGY), ENERGY_REPR) - - with self.assertRaises(ValueError): - _ = LevelOfTheory(method=FREQ.method) - lot = LevelOfTheory(method=FREQ.method, software=FREQ.software) - self.assertIsNone(lot.basis) - self.assertIsNone(lot.auxiliary_basis) - self.assertIsNone(lot.cabs) - self.assertIsNone(lot.software_version) - self.assertIsNone(lot.solvent) - self.assertIsNone(lot.solvation_method) - self.assertIsNone(lot.args) - - self.assertIsInstance(FREQ, LOT) - - def test_comparison(self): - """ - Test comparisons between instances. - """ - self.assertIsInstance(hash(FREQ), int) - self.assertNotEqual(FREQ, ENERGY) - with self.assertRaises(TypeError): - _ = ENERGY > FREQ - - # Test args in different order - lot1 = LevelOfTheory('method', args=('arg1', 'arg2')) - lot2 = LevelOfTheory('method', args=('arg2', 'arg1')) - self.assertEqual(lot1, lot2) - - def test_simple(self): - """ - Test that simple level of theory can be obtained. - """ - lot = FREQ.simple() - self.assertIsNot(lot, FREQ) - self.assertEqual(lot.method, FREQ.method) - self.assertEqual(lot.basis, FREQ.basis) - self.assertEqual(lot.software, FREQ.software) - for attr, val in lot.__dict__.items(): - if attr not in {'method', 'basis', 'software'}: - self.assertIsNone(val) - - def test_to_model_chem(self): - """ - Test conversion to model chemistry. - """ - self.assertEqual(FREQ.to_model_chem(), FREQ_MODELCHEM) - self.assertEqual(ENERGY.to_model_chem(), ENERGY_MODELCHEM) - - lot = LevelOfTheory( - method='CBS-QB3', - software='g16' - ) - self.assertEqual(lot.to_model_chem(), 'cbsqb3') - - def test_update(self): - """ - Test updating attributes. - """ - lot = FREQ.update(software='Q-Chem') - self.assertIsNot(lot, FREQ) - self.assertEqual(lot.software, 'qchem') - with self.assertRaises(TypeError): - FREQ.update(test='test') - - def test_as_dict(self): - """ - Test conversion to dictionary. - """ - self.assertDictEqual(FREQ.as_dict(), FREQ_DICT) - self.assertDictEqual(ENERGY.as_dict(), ENERGY_DICT) - - -class TestCompositeLevelOfTheory(unittest.TestCase): - """ - A class for testing that the CompositeLevelOfTheory class functions properly. - """ - - def test_attrs(self): - """ - Test that instance behaves correctly. - """ - self.assertIs(COMPOSITE.freq, FREQ) - self.assertIs(COMPOSITE.energy, ENERGY) - self.assertEqual(repr(COMPOSITE), COMPOSITE_REPR) - with self.assertRaises(FrozenInstanceError): - COMPOSITE.energy = '' - - self.assertIsInstance(COMPOSITE, LOT) - - def test_comparison(self): - """ - Test comparisons between instances. - """ - other = CompositeLevelOfTheory(freq=ENERGY, energy=FREQ) - self.assertIsInstance(hash(COMPOSITE), int) - self.assertNotEqual(COMPOSITE, other) - with self.assertRaises(TypeError): - _ = COMPOSITE > other - - def test_simple(self): - """ - Test that simple level of theory can be obtained. - """ - lot = COMPOSITE.simple() - self.assertIsNot(lot, COMPOSITE) - self.assertEqual(lot.freq.method, COMPOSITE.freq.method) - self.assertEqual(lot.freq.basis, COMPOSITE.freq.basis) - self.assertEqual(lot.freq.software, COMPOSITE.freq.software) - self.assertEqual(lot.energy.method, COMPOSITE.energy.method) - self.assertEqual(lot.energy.basis, COMPOSITE.energy.basis) - for attr, val in lot.freq.__dict__.items(): - if attr not in {'method', 'basis', 'software'}: - self.assertIsNone(val) - for attr, val in lot.energy.__dict__.items(): - if attr not in {'method', 'basis'}: - self.assertIsNone(val) - - def test_to_model_chem(self): - """ - Test conversion to model chemistry. - """ - self.assertEqual(COMPOSITE.to_model_chem(), COMPOSITE_MODELCHEM) - - def test_as_dict(self): - """ - Test conversion to dictionary. - """ - self.assertDictEqual(COMPOSITE.as_dict(), COMPOSITE_DICT) - - -class TestFuncs(unittest.TestCase): - """ - A class for testing that the functions in the modelchem module work. - """ - - def test_model_chem_to_lot(self): - """ - Test model chemistry to quantum calculation settings conversion. - """ - self.assertEqual( - model_chem_to_lot(FREQ_MODELCHEM, software='gaussian', args='verytight'), - FREQ - ) - self.assertEqual( - model_chem_to_lot(FREQ_MODELCHEM, - freq_settings={'software': 'gaussian', 'args': 'verytight'}), - FREQ - ) - self.assertEqual( - model_chem_to_lot(FREQ_MODELCHEM, - freq_settings={'software': 'gaussian', 'args': 'verytight'}, - energy_settings={'unused setting': None}), - FREQ - ) - self.assertEqual( - model_chem_to_lot(ENERGY_MODELCHEM, energy_settings={'software': 'orca'}), - ENERGY - ) - self.assertEqual( - model_chem_to_lot(COMPOSITE_MODELCHEM, - freq_settings={'software': 'gaussian', 'args': 'verytight'}, - energy_settings={'software': 'orca'}), - COMPOSITE - ) - - def test_str_to_lot(self): - """ - Test key to quantum calculation settings conversion. - """ - self.assertEqual(str_to_lot(FREQ_REPR), FREQ) - self.assertEqual(str_to_lot(ENERGY_REPR), ENERGY) - self.assertEqual(str_to_lot(COMPOSITE_REPR), COMPOSITE) - - def test_get_software_id(self): - """ - Test standardized software identifiers. - """ - test_names = ['gaussian', 'Gaussian 09', 'g-16', 'Gau 03'] - for name in test_names: - self.assertEqual(get_software_id(name), 'gaussian') - - test_names = ['qchem', 'QChem', 'Q-Chem'] - for name in test_names: - self.assertEqual(get_software_id(name), 'qchem') - - test_names = ['molpro', 'Molpro', 'MOLPRO'] - for name in test_names: - self.assertEqual(get_software_id(name), 'molpro') - - test_names = ['orca', 'Orca', 'ORCA'] - for name in test_names: - self.assertEqual(get_software_id(name), 'orca') - - test_names = ['terachem', 'Terachem', 'TeraChem', 'Tera-Chem', 'Tera Chem'] - for name in test_names: - self.assertEqual(get_software_id(name), 'terachem') - - with self.assertRaises(ValueError): - get_software_id('g') - - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/arkane/pdep.py b/arkane/pdep.py index e00be3cc998..60fb0fd05d5 100644 --- a/arkane/pdep.py +++ b/arkane/pdep.py @@ -317,7 +317,7 @@ def generate_T_list(self): if self.Tlist is None: if self.interpolation_model[0].lower() == 'chebyshev': # Distribute temperatures on a Gauss-Chebyshev grid - Tlist = np.zeros(Tcount, np.float64) + Tlist = np.zeros(Tcount, float) for i in range(Tcount): T = -math.cos((2 * i + 1) * math.pi / (2 * self.Tcount)) T = 2.0 / ((1.0 / Tmax - 1.0 / Tmin) * T + 1.0 / Tmax + 1.0 / Tmin) @@ -389,7 +389,7 @@ def generate_P_list(self): pass elif self.interpolation_model[0].lower() == 'chebyshev': # Distribute pressures on a Gauss-Chebyshev grid - Plist = np.zeros(Pcount, np.float64) + Plist = np.zeros(Pcount, float) for i in range(Pcount): P = -math.cos((2 * i + 1) * math.pi / (2 * self.Pcount)) P = 10 ** (0.5 * ((math.log10(Pmax) - math.log10(Pmin)) * P + math.log10(Pmax) + math.log10(Pmin))) diff --git a/arkane/statmech.py b/arkane/statmech.py index a63600f24b0..af82a045bb8 100644 --- a/arkane/statmech.py +++ b/arkane/statmech.py @@ -37,6 +37,7 @@ import math import os import pathlib +import warnings import matplotlib.pyplot as plt import numpy as np @@ -252,9 +253,9 @@ def hinderedRotor2D(scandir, pivots1, top1, symmetry1, pivots2, top2, symmetry2, return [scandir, pivots1, top1, symmetry1, pivots2, top2, symmetry2, symmetry] -def hinderedRotorClassicalND(calcPath, pivots, tops, sigmas, semiclassical): +def hinderedRotorClassicalND(calc_path, pivots, tops, sigmas, semiclassical): """Read an N dimensional hindered rotor directive, and return the attributes in a list""" - return [calcPath, pivots, tops, sigmas, semiclassical] + return [calc_path, pivots, tops, sigmas, semiclassical] class StatMechJob(object): @@ -575,6 +576,8 @@ def create_log(log_path, check_for_errors=True): # and the zero point energy scaling factor, see https://pubs.acs.org/doi/10.1021/ct100326h Section 3.1.3. zpe_scale_factor = self.frequencyScaleFactor / 1.014 + e_electronic_with_corrections, zpe = 0, 0 + logging.debug(' Reading energy...') if e0 is None: if e_electronic is None: @@ -686,7 +689,7 @@ def create_log(log_path, check_for_errors=True): # Set the difference as the isodesmic EO correction e_electronic_with_corrections += isodesmic_thermo.value_si - uncorrected_thermo - e0 = e_electronic_with_corrections + zpe + e0 = e_electronic_with_corrections + zpe if e0 is None else e0 logging.debug(' E0 (0 K) = {0:g} kcal/mol'.format(e0 / 4184.)) conformer.E0 = (e0 * 0.001, "kJ/mol") @@ -711,7 +714,7 @@ def create_log(log_path, check_for_errors=True): else: self.supporting_info.append(None) self.supporting_info.append(e_electronic) - self.supporting_info.append(e_electronic + zpe) + self.supporting_info.append(e_electronic + zpe if e_electronic is not None and zpe is not None else None) self.supporting_info.append(e0) self.supporting_info.append(list([symbol_by_number[x] for x in number])) # atom symbols self.supporting_info.append(coordinates) @@ -923,7 +926,7 @@ def create_hindered_rotor_figure(self, angle, v_list, cosine_rotor, fourier_roto Plot the potential for the rotor, along with its cosine and Fourier series potential fits, and save it in the `hindered_rotor_plots` attribute. """ - phi = np.arange(0, 6.3, 0.02, np.float64) + phi = np.arange(0, 6.3, 0.02, float) Vlist_cosine = np.zeros_like(phi) Vlist_fourier = np.zeros_like(phi) for i in range(phi.shape[0]): @@ -999,7 +1002,7 @@ def project_rotors(conformer, hessian, rotors, linear, is_ts, get_projected_out_ constant matrix and use this to determine the vibrational frequencies. The list of vibrational frequencies is returned in cm^-1. - Refer to Gaussian whitepaper (http://gaussian.com/vib/) for procedure to calculate + Refer to Gaussian whitepaper (https://gaussian.com/vib/) for procedure to calculate harmonic oscillator vibrational frequencies using the force constant matrix. """ n_rotors = 0 @@ -1050,7 +1053,7 @@ def project_rotors(conformer, hessian, rotors, linear, is_ts, get_projected_out_ if linear: external = 5 - d = np.zeros((n_atoms * 3, external), np.float64) + d = np.zeros((n_atoms * 3, external), float) # Transform the coordinates to the principal axes p = np.dot(coordinates, inertia_xyz) @@ -1076,9 +1079,9 @@ def project_rotors(conformer, hessian, rotors, linear, is_ts, get_projected_out_ # Make sure projection matrix is orthonormal - inertia = np.identity(n_atoms * 3, np.float64) + inertia = np.identity(n_atoms * 3, float) - p = np.zeros((n_atoms * 3, 3 * n_atoms + external), np.float64) + p = np.zeros((n_atoms * 3, 3 * n_atoms + external), float) p[:, 0:external] = d[:, 0:external] p[:, external:external + 3 * n_atoms] = inertia[:, 0:3 * n_atoms] @@ -1111,7 +1114,7 @@ def project_rotors(conformer, hessian, rotors, linear, is_ts, get_projected_out_ i += 1 # T is the transformation vector from cartesian to internal coordinates - T = np.zeros((n_atoms * 3, 3 * n_atoms - external), np.float64) + T = np.zeros((n_atoms * 3, 3 * n_atoms - external), float) T[:, 0:3 * n_atoms - external] = p[:, external:3 * n_atoms] @@ -1132,12 +1135,12 @@ def project_rotors(conformer, hessian, rotors, linear, is_ts, get_projected_out_ logging.debug('Frequencies from internal Hessian') for i in range(3 * n_atoms - external): - with np.warnings.catch_warnings(): - np.warnings.filterwarnings('ignore', r'invalid value encountered in sqrt') + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', r'invalid value encountered in sqrt') logging.debug(np.sqrt(eig[i]) / (2 * math.pi * constants.c * 100)) # Now we can start thinking about projecting out the internal rotations - d_int = np.zeros((3 * n_atoms, n_rotors), np.float64) + d_int = np.zeros((3 * n_atoms, n_rotors), float) counter = 0 for i, rotor in enumerate(rotors): @@ -1188,7 +1191,7 @@ def project_rotors(conformer, hessian, rotors, linear, is_ts, get_projected_out_ # Normal modes in mass weighted cartesian coordinates vmw = np.dot(T, v) - eigm = np.zeros((3 * n_atoms - external, 3 * n_atoms - external), np.float64) + eigm = np.zeros((3 * n_atoms - external, 3 * n_atoms - external), float) for i in range(3 * n_atoms - external): eigm[i, i] = eig[i] @@ -1231,7 +1234,7 @@ def project_rotors(conformer, hessian, rotors, linear, is_ts, get_projected_out_ # Do the projection d_int_proj = np.dot(vmw.T, d_int) proj = np.dot(d_int, d_int.T) - inertia = np.identity(n_atoms * 3, np.float64) + inertia = np.identity(n_atoms * 3, float) proj = inertia - proj fm = np.dot(proj, np.dot(fm, proj)) # Get eigenvalues of mass-weighted force constant matrix @@ -1243,8 +1246,8 @@ def project_rotors(conformer, hessian, rotors, linear, is_ts, get_projected_out_ logging.debug('Frequencies from projected Hessian') for i in range(3 * n_atoms): - with np.warnings.catch_warnings(): - np.warnings.filterwarnings('ignore', r'invalid value encountered in sqrt') + with warnings.catch_warnings(): + warnings.filterwarnings('ignore', r'invalid value encountered in sqrt') logging.debug(np.sqrt(eig[i]) / (2 * math.pi * constants.c * 100)) return np.sqrt(eig[-n_vib:]) / (2 * math.pi * constants.c * 100) diff --git a/arkane/statmechTest.py b/arkane/statmechTest.py deleted file mode 100644 index 9846197505f..00000000000 --- a/arkane/statmechTest.py +++ /dev/null @@ -1,385 +0,0 @@ -#!/usr/bin/env python3 - -############################################################################### -# # -# RMG - Reaction Mechanism Generator # -# # -# Copyright (c) 2002-2023 Prof. William H. Green (whgreen@mit.edu), # -# Prof. Richard H. West (r.west@neu.edu) and the RMG Team (rmg_dev@mit.edu) # -# # -# 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. # -# # -############################################################################### - -""" -This module contains unit tests of the :mod:`arkane.statmech` module. -""" - -import os -import unittest - -import numpy as np - -from rmgpy.species import Species -from rmgpy.exceptions import InputError - -from arkane import Arkane -from arkane.ess.qchem import QChemLog -from arkane.modelchem import LevelOfTheory -from arkane.statmech import ScanLog, StatMechJob, determine_rotor_symmetry, is_linear - -################################################################################ - - -class TestStatmech(unittest.TestCase): - """ - Contains unit tests of the StatmechJob class. - """ - - @classmethod - def setUp(cls): - """A method that is run before each unit test in this class""" - arkane = Arkane() - cls.job_list = arkane.load_input_file(os.path.join(os.path.dirname(os.path.abspath(__file__)), - 'data', 'Benzyl', 'input.py')) - - def test_gaussian_log_file_error(self): - """Test that the proper error is raised if gaussian geometry and frequency file paths are not the same""" - job = self.job_list[-2] - self.assertTrue(isinstance(job, StatMechJob)) - with self.assertRaises(InputError): - job.load() - - def test_rotor_symmetry_determination(self): - """ - Test that the correct symmetry number is determined for rotor potential scans. - """ - path1 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data', 'NCC_NRotor.out') - path2 = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'data', 'NCC_CRotor.out') - scan_log1 = QChemLog(path1) - scan_log2 = QChemLog(path2) - v_list1, angle = scan_log1.load_scan_energies() - v_list2, angle = scan_log2.load_scan_energies() - symmetry1 = determine_rotor_symmetry(energies=v_list1, label='NCC', pivots=[]) - symmetry2 = determine_rotor_symmetry(energies=v_list2, label='NCC', pivots=[]) - self.assertEqual(symmetry1, 1) - self.assertEqual(symmetry2, 3) - - def test_is_linear(self): - """Test that we can determine the linearity of a molecule from it's coordinates""" - xyz1 = np.array([ - [0.000000, 0.000000, 0.000000], - [0.000000, 0.000000, 1.159076], - [0.000000, 0.000000, -1.159076]]) # a trivial case - xyz2 = np.array([ - [-0.06618943, -0.12360663, -0.07631983], - [-0.79539707, 0.86755487, 1.02675668], - [-0.68919931, 0.25421823, -1.34830853], - [0.01546439, -1.54297548, 0.44580391], - [1.94428095, 0.40772394, 1.03719428], - [2.20318015, -0.14715186, -0.64755729], - [1.59252246, 1.51178950, -0.33908352], - [-0.87856890, -2.02453514, 0.38494433], - [-1.34135876, 1.49608206, 0.53295071]]) # a non-linear multi-atom molecule - xyz3 = np.array([ - [0.0000000000, 0.0000000000, 0.3146069129], - [-1.0906813653, 0.0000000000, -0.1376405244], - [1.0906813653, 0.0000000000, -0.1376405244]]) # NO2, a non-linear 3-atom molecule - xyz4 = np.array([ - [0.0000000000, 0.0000000000, 0.1413439534], - [-0.8031792912, 0.0000000000, -0.4947038368], - [0.8031792912, 0.0000000000, -0.4947038368]]) # NH2, a non-linear 3-atom molecule - xyz5 = np.array([ - [-0.5417345330, 0.8208150346, 0.0000000000], - [0.9206183692, 1.6432038228, 0.0000000000], - [-1.2739176462, 1.9692549926, 0.0000000000]]) # HSO, a non-linear 3-atom molecule - xyz6 = np.array([ - [1.18784533, 0.98526702, 0.00000000], - [0.04124533, 0.98526702, 0.00000000], - [-1.02875467, 0.98526702, 0.00000000]]) # HCN, a linear 3-atom molecule - xyz7 = np.array([ - [-4.02394116, 0.56169428, 0.00000000], - [-5.09394116, 0.56169428, 0.00000000], - [-2.82274116, 0.56169428, 0.00000000], - [-1.75274116, 0.56169428, 0.00000000]]) # C2H2, a linear 4-atom molecule - xyz8 = np.array([ - [-1.02600933, 2.12845307, 0.00000000], - [-0.77966935, 0.95278385, 0.00000000], - [-1.23666197, 3.17751246, 0.00000000], - [-0.56023545, -0.09447399, 0.00000000]]) # C2H2, just 0.5 degree off from linearity, so NOT linear - xyz9 = np.array([ - [-1.1998, 0.1610, 0.0275], - [-1.4021, 0.6223, -0.8489], - [-1.48302, 0.80682, -1.19946]]) # just 3 points in space on a straight line (not a physical molecule) - xyz10 = np.array([ - [-1.1998, 0.1610, 0.0275]]) # mono-atomic species, non-linear - xyz11 = np.array([ - [1.06026500, -0.07706800, 0.03372800], - [3.37340700, -0.07706800, 0.03372800], - [2.21683600, -0.07706800, 0.03372800]]) # CO2 at wb97xd/6-311+g(d,p), linear - xyz12 = np.array([ - [1.05503600, -0.00335000, 0.09823600], - [2.42816800, -0.00335000, 0.09823600], - [-0.14726400, -0.00335000, 0.09823600], - [3.63046800, -0.00335000, 0.09823600], - [-1.21103500, -0.00335000, 0.09823600], - [4.69423900, -0.00335000, 0.09823600]]) # C#CC#C at wb97xd/6-311+g(d,p), linear - - self.assertTrue(is_linear(xyz1)) - self.assertTrue(is_linear(xyz6)) - self.assertTrue(is_linear(xyz7)) - self.assertTrue(is_linear(xyz9)) - self.assertTrue(is_linear(xyz11)) - self.assertTrue(is_linear(xyz12)) - self.assertFalse(is_linear(xyz2)) - self.assertFalse(is_linear(xyz3)) - self.assertFalse(is_linear(xyz4)) - self.assertFalse(is_linear(xyz5)) - self.assertFalse(is_linear(xyz8)) - self.assertFalse(is_linear(xyz10)) - - def test_specifying_absolute_file_paths(self): - """Test specifying absolute file paths of statmech files""" - h2o2_input = """#!/usr/bin/env python -# -*- coding: utf-8 -*- - -bonds = {{'H-O': 2, 'O-O': 1}} - -externalSymmetry = 2 - -spinMultiplicity = 1 - -opticalIsomers = 1 - -energy = {{'b3lyp/6-311+g(3df,2p)': Log('{energy}')}} - -geometry = Log('{freq}') - -frequencies = Log('{freq}') - -rotors = [HinderedRotor(scanLog=Log('{scan}'), pivots=[1, 2], top=[1, 3], symmetry=1, fit='fourier')] - -""" - abs_arkane_path = os.path.abspath(os.path.dirname(__file__)) # this is the absolute path to `.../RMG-Py/arkane` - energy_path = os.path.join('arkane', 'data', 'H2O2', 'sp_a19032.out') - freq_path = os.path.join('arkane', 'data', 'H2O2', 'freq_a19031.out') - scan_path = os.path.join('arkane', 'data', 'H2O2', 'scan_a19034.out') - h2o2_input = h2o2_input.format(energy=energy_path, freq=freq_path, scan=scan_path) - h2o2_path = os.path.join(abs_arkane_path, 'data', 'H2O2', 'H2O2.py') - if not os.path.exists(os.path.dirname(h2o2_path)): - os.makedirs(os.path.dirname(h2o2_path)) - with open(h2o2_path, 'w') as f: - f.write(h2o2_input) - h2o2 = Species(label='H2O2', smiles='OO') - self.assertIsNone(h2o2.conformer) - statmech_job = StatMechJob(species=h2o2, path=h2o2_path) - statmech_job.level_of_theory = LevelOfTheory('b3lyp', '6-311+g(3df,2p)') - statmech_job.load(pdep=False, plot=False) - self.assertAlmostEqual(h2o2.conformer.E0.value_si, -146031.49933673252) - os.remove(h2o2_path) - - def test_hinder_rotor_from_1d_array(self): - """Test assigning hindered rotor 1D PES profile directly to HinderedRotor1DArray""" - h2o2_input = """#!/usr/bin/env python -# -*- coding: utf-8 -*- - -bonds = {{'H-O': 2, 'O-O': 1}} - -externalSymmetry = 2 - -spinMultiplicity = 1 - -opticalIsomers = 1 - -energy = {{'b3lyp/6-311+g(3df,2p)': Log('{energy}')}} - -geometry = Log('{freq}') - -frequencies = Log('{freq}') - -rotors = [HinderedRotor1DArray( - angles=[0. , 0.17453293, 0.34906585, 0.52359878, 0.6981317 , - 0.87266463, 1.04719755, 1.22173048, 1.3962634 , 1.57079633, - 1.74532925, 1.91986218, 2.0943951 , 2.26892803, 2.44346095, - 2.61799388, 2.7925268 , 2.96705973, 3.14159265, 3.31612558, - 3.4906585 , 3.66519143, 3.83972435, 4.01425728, 4.1887902 , - 4.36332313, 4.53785606, 4.71238898, 4.88692191, 5.06145483, - 5.23598776, 5.41052068, 5.58505361, 5.75958653, 5.93411946, - 6.10865238, 6.28318531], - energies=[0.00000000e+00, 3.09449290e+02, 1.07459871e+03, 2.05925305e+03, - 3.02877926e+03, 3.79724994e+03, 4.23486826e+03, 4.26190303e+03, - 3.88196432e+03, 3.15173930e+03, 2.20016363e+03, 1.20431941e+03, - 3.94499732e+02, 7.23850312e+00, 2.77854025e+02, 1.40711827e+03, - 3.50375319e+03, 6.57899330e+03, 1.05208190e+04, 1.50847596e+04, - 1.99269611e+04, 2.46164740e+04, 2.86972097e+04, 3.17430074e+04, - 3.34148312e+04, 3.35267510e+04, 3.20643922e+04, 2.91936786e+04, - 2.52325029e+04, 2.06007483e+04, 1.57531541e+04, 1.11268684e+04, - 7.08120679e+03, 3.87554760e+03, 1.63995547e+03, 3.80256396e+02, - 6.14367036e-01], - pivots=[1, 2], top=[1, 3], symmetry=1, fit='fourier')] -""" - angles = np.array([0. , 0.17453293, 0.34906585, 0.52359878, 0.6981317 , - 0.87266463, 1.04719755, 1.22173048, 1.3962634 , 1.57079633, - 1.74532925, 1.91986218, 2.0943951 , 2.26892803, 2.44346095, - 2.61799388, 2.7925268 , 2.96705973, 3.14159265, 3.31612558, - 3.4906585 , 3.66519143, 3.83972435, 4.01425728, 4.1887902 , - 4.36332313, 4.53785606, 4.71238898, 4.88692191, 5.06145483, - 5.23598776, 5.41052068, 5.58505361, 5.75958653, 5.93411946, - 6.10865238, 6.28318531]) - energies = np.array([0.00000000e+00, 3.09449290e+02, 1.07459871e+03, 2.05925305e+03, - 3.02877926e+03, 3.79724994e+03, 4.23486826e+03, 4.26190303e+03, - 3.88196432e+03, 3.15173930e+03, 2.20016363e+03, 1.20431941e+03, - 3.94499732e+02, 7.23850312e+00, 2.77854025e+02, 1.40711827e+03, - 3.50375319e+03, 6.57899330e+03, 1.05208190e+04, 1.50847596e+04, - 1.99269611e+04, 2.46164740e+04, 2.86972097e+04, 3.17430074e+04, - 3.34148312e+04, 3.35267510e+04, 3.20643922e+04, 2.91936786e+04, - 2.52325029e+04, 2.06007483e+04, 1.57531541e+04, 1.11268684e+04, - 7.08120679e+03, 3.87554760e+03, 1.63995547e+03, 3.80256396e+02, - 6.14367036e-01]) - abs_arkane_path = os.path.abspath(os.path.dirname(__file__)) # this is the absolute path to `.../RMG-Py/arkane` - energy_path = os.path.join('arkane', 'data', 'H2O2', 'sp_a19032.out') - freq_path = os.path.join('arkane', 'data', 'H2O2', 'freq_a19031.out') - h2o2_input = h2o2_input.format(energy=energy_path, freq=freq_path, angles=angles, energies=energies) - h2o2_path = os.path.join(abs_arkane_path, 'data', 'H2O2', 'H2O2_PES.py') - os.makedirs(os.path.dirname(h2o2_path), exist_ok=True) - with open(h2o2_path, 'w') as f: - f.write(h2o2_input) - h2o2 = Species(label='H2O2', smiles='OO') - self.assertIsNone(h2o2.conformer) - statmech_job = StatMechJob(species=h2o2, path=h2o2_path) - statmech_job.level_of_theory = LevelOfTheory('b3lyp', '6-311+g(3df,2p)') - statmech_job.load(pdep=False, plot=False) - self.assertEqual(len(statmech_job.raw_hindered_rotor_data), 1) - self.assertEqual(statmech_job.raw_hindered_rotor_data[0][2], 1) - self.assertTrue(np.allclose(statmech_job.raw_hindered_rotor_data[0][3], angles, atol=1e-6)) - self.assertTrue(np.allclose(statmech_job.raw_hindered_rotor_data[0][4], energies, atol=1e-6)) - self.assertAlmostEqual(h2o2.conformer.E0.value_si, -146031.49933673252) - os.remove(h2o2_path) - - def test_scanlog_class(self): - """ - Test scanlog works for various input format and returns the correct PES profiles. - """ - angles = np.array([0. , 0.17453293, 0.34906585, 0.52359878, 0.6981317 , - 0.87266463, 1.04719755, 1.22173048, 1.3962634 , 1.57079633, - 1.74532925, 1.91986218, 2.0943951 , 2.26892803, 2.44346095, - 2.61799388, 2.7925268 , 2.96705973, 3.14159265, 3.31612558, - 3.4906585 , 3.66519143, 3.83972435, 4.01425728, 4.1887902 , - 4.36332313, 4.53785606, 4.71238898, 4.88692191, 5.06145483, - 5.23598776, 5.41052068, 5.58505361, 5.75958653, 5.93411946, - 6.10865238, 6.28318531]) - energies = np.array([0.00000000e+00, 3.09449290e+02, 1.07459871e+03, 2.05925305e+03, - 3.02877926e+03, 3.79724994e+03, 4.23486826e+03, 4.26190303e+03, - 3.88196432e+03, 3.15173930e+03, 2.20016363e+03, 1.20431941e+03, - 3.94499732e+02, 7.23850312e+00, 2.77854025e+02, 1.40711827e+03, - 3.50375319e+03, 6.57899330e+03, 1.05208190e+04, 1.50847596e+04, - 1.99269611e+04, 2.46164740e+04, 2.86972097e+04, 3.17430074e+04, - 3.34148312e+04, 3.35267510e+04, 3.20643922e+04, 2.91936786e+04, - 2.52325029e+04, 2.06007483e+04, 1.57531541e+04, 1.11268684e+04, - 7.08120679e+03, 3.87554760e+03, 1.63995547e+03, 3.80256396e+02, - 6.14367036e-01]) - abs_arkane_path = os.path.abspath(os.path.dirname(__file__)) - scanpath1 = os.path.join(abs_arkane_path, 'data', 'H2O2', 'scan.txt') - scanlog1 = ScanLog(scanpath1) - angles1, energies1 = scanlog1.load() - self.assertTrue(np.allclose(angles, angles1, atol=1e-6)) - self.assertTrue(np.allclose(energies, energies1, atol=1e-6)) - - scanpath2 = os.path.join(abs_arkane_path, 'data', 'H2O2', 'scan.yml') - scanlog2 = ScanLog(scanpath2) - angles2, energies2 = scanlog2.load() - self.assertTrue(np.allclose(angles, angles2, atol=1e-6)) - print(energies, energies2) - self.assertTrue(np.allclose(energies, energies2, atol=1e-6)) - - scanpath3 = os.path.join(abs_arkane_path, 'data', 'H2O2', 'scan.csv') - scanlog3 = ScanLog(scanpath3) - angles3, energies3 = scanlog3.load() - self.assertTrue(np.allclose(angles, angles3, atol=1e-6)) - self.assertTrue(np.allclose(energies, energies3, atol=1e-6)) - - def test_hindered_rotor_from_scan_logs(self): - """ - Test assigning hindered rotor 1D PES profile via ScanLog to HinderedRotor in statmech jobs. - """ - angles = np.array([0. , 0.17453293, 0.34906585, 0.52359878, 0.6981317 , - 0.87266463, 1.04719755, 1.22173048, 1.3962634 , 1.57079633, - 1.74532925, 1.91986218, 2.0943951 , 2.26892803, 2.44346095, - 2.61799388, 2.7925268 , 2.96705973, 3.14159265, 3.31612558, - 3.4906585 , 3.66519143, 3.83972435, 4.01425728, 4.1887902 , - 4.36332313, 4.53785606, 4.71238898, 4.88692191, 5.06145483, - 5.23598776, 5.41052068, 5.58505361, 5.75958653, 5.93411946, - 6.10865238, 6.28318531]) - energies = np.array([0.00000000e+00, 3.09449290e+02, 1.07459871e+03, 2.05925305e+03, - 3.02877926e+03, 3.79724994e+03, 4.23486826e+03, 4.26190303e+03, - 3.88196432e+03, 3.15173930e+03, 2.20016363e+03, 1.20431941e+03, - 3.94499732e+02, 7.23850312e+00, 2.77854025e+02, 1.40711827e+03, - 3.50375319e+03, 6.57899330e+03, 1.05208190e+04, 1.50847596e+04, - 1.99269611e+04, 2.46164740e+04, 2.86972097e+04, 3.17430074e+04, - 3.34148312e+04, 3.35267510e+04, 3.20643922e+04, 2.91936786e+04, - 2.52325029e+04, 2.06007483e+04, 1.57531541e+04, 1.11268684e+04, - 7.08120679e+03, 3.87554760e+03, 1.63995547e+03, 3.80256396e+02, - 6.14367036e-01]) - h2o2_input = """#!/usr/bin/env python -# -*- coding: utf-8 -*- - -bonds = {{'H-O': 2, 'O-O': 1}} - -externalSymmetry = 2 - -spinMultiplicity = 1 - -opticalIsomers = 1 - -energy = {{'b3lyp/6-311+g(3df,2p)': Log('{energy}')}} - -geometry = Log('{freq}') - -frequencies = Log('{freq}') - -rotors = [HinderedRotor(scanLog=ScanLog('{scan}'), pivots=[1, 2], top=[1, 3], symmetry=1, fit='fourier')] - -""" - abs_arkane_path = os.path.abspath(os.path.dirname(__file__)) # this is the absolute path to `.../RMG-Py/arkane` - energy_path = os.path.join(abs_arkane_path, 'data', 'H2O2', 'sp_a19032.out') - freq_path = os.path.join(abs_arkane_path, 'data', 'H2O2', 'freq_a19031.out') - h2o2_path = os.path.join(abs_arkane_path, 'data', 'H2O2', 'H2O2.py') - h2o2 = Species(label='H2O2', smiles='OO') - os.makedirs(os.path.dirname(h2o2_path), exist_ok=True) - - for file in ['scan.txt', 'scan.csv', 'scan.yml']: - scan_path = os.path.join(abs_arkane_path, 'data', 'H2O2', file) - h2o2_input_tmp = h2o2_input.format(energy=energy_path, freq=freq_path, scan=scan_path) - with open(h2o2_path, 'w') as f: - f.write(h2o2_input_tmp) - statmech_job = StatMechJob(species=h2o2, path=h2o2_path) - statmech_job.level_of_theory = LevelOfTheory('b3lyp', '6-311+g(3df,2p)') - statmech_job.load(pdep=False, plot=False) - self.assertEqual(len(statmech_job.raw_hindered_rotor_data), 1) - self.assertTrue(np.allclose(statmech_job.raw_hindered_rotor_data[0][3], angles, atol=1e-6)) - self.assertTrue(np.allclose(statmech_job.raw_hindered_rotor_data[0][4], energies, atol=1e-6)) - os.remove(h2o2_path) - - - -################################################################################ - - -if __name__ == '__main__': - unittest.main(testRunner=unittest.TextTestRunner(verbosity=2)) diff --git a/arkane/thermo.py b/arkane/thermo.py index 557aeeaa9c5..a5fe0b4e6a5 100644 --- a/arkane/thermo.py +++ b/arkane/thermo.py @@ -116,7 +116,7 @@ def generate_thermo(self): logging.info("Thermo already generated for species {}. Skipping thermo generation.".format(species)) return None - Tlist = np.arange(10.0, 3001.0, 10.0, np.float64) + Tlist = np.arange(10.0, 3001.0, 10.0, float) Cplist = np.zeros_like(Tlist) H298 = 0.0 S298 = 0.0 diff --git a/documentation/Makefile b/documentation/Makefile index fb901249e9c..5c30e66cd72 100644 --- a/documentation/Makefile +++ b/documentation/Makefile @@ -3,7 +3,7 @@ # You can set these variables from the command line. SPHINXOPTS = -SPHINXBUILD = python-jl $$(which sphinx-build) +SPHINXBUILD = python $$(which sphinx-build) PAPER = BUILDDIR = build @@ -41,20 +41,6 @@ setup_github_pages: rm -rf $(BUILDDIR)/html git clone --single-branch --branch gh-pages --origin official git@github.com:ReactionMechanismGenerator/RMG-Py.git build/html -publish: $(BUILDDIR)/html/.git -# Commit changes to gh-pages and push to github, to publish the results! - touch $(BUILDDIR)/html/.nojekyll -ifdef COMMITMESSAGE # Use the provided COMMITMESSAGE variable for noninteractive use. - cd $(BUILDDIR)/html; git add -A .; git commit -m "$(COMMITMESSAGE)"; git push official gh-pages -else # Prompt for a commit message - cd $(BUILDDIR)/html; git add -A .; git commit; git push official gh-pages -endif - -continous_integration_setup: -# This target is intended to be used when automatically compiling documentation with Continous Integration - @rm -rf $(BUILDDIR)/html - @git clone --single-branch --branch gh-pages --origin official https://${GH_TOKEN}@github.com/ReactionMechanismGenerator/RMG-Py.git $(BUILDDIR)/html - clean: # set aside the git repository info used to push pages to github mkdir build_temp diff --git a/documentation/RMG-Py_API_Reference.pdf b/documentation/RMG-Py_API_Reference.pdf index 377313f82c6..e1750792d0f 100644 Binary files a/documentation/RMG-Py_API_Reference.pdf and b/documentation/RMG-Py_API_Reference.pdf differ diff --git a/documentation/RMG-Py_and_Arkane_Documentation.pdf b/documentation/RMG-Py_and_Arkane_Documentation.pdf index 3bd4283016c..674e37f91b4 100644 Binary files a/documentation/RMG-Py_and_Arkane_Documentation.pdf and b/documentation/RMG-Py_and_Arkane_Documentation.pdf differ diff --git a/documentation/make.bat b/documentation/make.bat deleted file mode 100644 index 91ef85e170e..00000000000 --- a/documentation/make.bat +++ /dev/null @@ -1,170 +0,0 @@ -@ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^` where ^ is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. changes to make an overview over all changed/added/deprecated items - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\RMGPy.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\RMGPy.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - if errorlevel 1 exit /b 1 - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - if errorlevel 1 exit /b 1 - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - if errorlevel 1 exit /b 1 - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - if errorlevel 1 exit /b 1 - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - if errorlevel 1 exit /b 1 - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -:end diff --git a/documentation/source/latex-rmg.rst b/documentation/source/latex-rmg.rst index 84d4c459d86..5fdeb4998f3 100644 --- a/documentation/source/latex-rmg.rst +++ b/documentation/source/latex-rmg.rst @@ -8,19 +8,19 @@ RMG is an automatic chemical reaction mechanism generator that constructs kinetic models composed of elementary chemical reaction steps using a general understanding of how molecules react. This documentation is for the newer Python version of RMG that we call RMG-Py. -+---------------------------------------------+----------------------------------------------------------------------------------------+ -| I want to... | Resource | -+=============================================+========================================================================================+ -| analyze models & search databases | `RMG website resources `__ (no download needed) | -+---------------------------------------------+----------------------------------------------------------------------------------------+ -| create mechanisms automatically | Download RMG with the RMG User's Guide | -+---------------------------------------------+----------------------------------------------------------------------------------------+ -| make transition state theory calculations | Run Arkane after downloading RMG. See the Arkane User's Guide | -+---------------------------------------------+----------------------------------------------------------------------------------------+ -| post an issue with RMG | `GitHub issues page `__ | -+---------------------------------------------+----------------------------------------------------------------------------------------+ -| contribute to the RMG project | `RMG developer's wiki `__ | -+---------------------------------------------+----------------------------------------------------------------------------------------+ ++---------------------------------------------+---------------------------------------------------------------------------------------------------------------+ +| I want to... | Resource | ++=============================================+===============================================================================================================+ +| analyze models & search databases | `RMG website resources `__ (no download needed) | ++---------------------------------------------+---------------------------------------------------------------------------------------------------------------+ +| create mechanisms automatically | Download RMG with the RMG User's Guide | ++---------------------------------------------+---------------------------------------------------------------------------------------------------------------+ +| make transition state theory calculations | Run Arkane after downloading RMG. See the Arkane User's Guide | ++---------------------------------------------+---------------------------------------------------------------------------------------------------------------+ +| post an issue with RMG | `GitHub issues page `__ | ++---------------------------------------------+---------------------------------------------------------------------------------------------------------------+ +| contribute to the RMG project | `Contributor guidelines `__ | ++---------------------------------------------+---------------------------------------------------------------------------------------------------------------+ Arkane is developed and distributed as part of RMG-Py, but can be used as a stand-alone application for Thermochemistry, Transition State Theory, and Master Equation chemical kinetics diff --git a/documentation/source/reference/chemkin/index.rst b/documentation/source/reference/chemkin/index.rst index 555b603bb90..5ed52f572cd 100644 --- a/documentation/source/reference/chemkin/index.rst +++ b/documentation/source/reference/chemkin/index.rst @@ -41,8 +41,6 @@ Function Description :func:`save_chemkin_file` Save a reaction mechanism to a Chemkin file :func:`save_species_dictionary` Save a species dictionary to a file :func:`save_transport_file` Save a Chemkin transport properties file -:func:`save_html_file` Save an HTML file representing a Chemkin mechanism -:func:`save_java_kinetics_library` Save a mechanism to a (Chemkin-like) kinetics library for RMG-Java ---------------------------------- ------------------------------------------------ :func:`get_species_identifier` Return the Chemkin-valid identifier for a given species :func:`mark_duplicate_reactions` Find and mark all duplicate reactions in a mechanism diff --git a/documentation/source/reference/chemkin/writer.rst b/documentation/source/reference/chemkin/writer.rst index b09f105ce8f..bfb287e2a8b 100644 --- a/documentation/source/reference/chemkin/writer.rst +++ b/documentation/source/reference/chemkin/writer.rst @@ -13,10 +13,6 @@ Main functions .. autofunction:: rmgpy.chemkin.save_transport_file -.. autofunction:: rmgpy.chemkin.save_html_file - -.. autofunction:: rmgpy.chemkin.save_java_kinetics_library - Helper functions ================ diff --git a/documentation/source/reference/data/index.rst b/documentation/source/reference/data/index.rst index 9d56c1f1931..2655aa99fd1 100644 --- a/documentation/source/reference/data/index.rst +++ b/documentation/source/reference/data/index.rst @@ -50,7 +50,7 @@ Class Description =========================== ==================================================== :class:`DepositoryReaction` A reaction with kinetics determined from querying a kinetics depository :class:`LibraryReaction` A reaction with kinetics determined from querying a kinetics library -:class:`TemplateReaction` A reaction with kinetics determined from querying a kinetics group additivity or rate rules method +:class:`TemplateReaction` A reaction with kinetics determined from querying a rate rules method :class:`ReactionRecipe` A sequence of actions that represent the process of a chemical reaction --------------------------- ---------------------------------------------------- :class:`KineticsDepository` A depository of all kinetics parameters for one or more reactions diff --git a/documentation/source/reference/kinetics/index.rst b/documentation/source/reference/kinetics/index.rst index d18d872a724..63a55a97740 100644 --- a/documentation/source/reference/kinetics/index.rst +++ b/documentation/source/reference/kinetics/index.rst @@ -57,6 +57,19 @@ Class Description ======================= ======================================================== + +Heterogenous catalysis kinetics models +====================================== + +.. currentmodule:: rmgpy.kinetics + +============================ ======================================================== +Class Description +============================ ======================================================== +:class:`StickingCoefficient` A kinetics model to give Sticking Coefficients for surface adsorption, following Arrhenius form. +:class:`SurfaceArrhenius` A kinetics model based on (modified) Arrhenius for surface reactions. +============================ ======================================================== + .. toctree:: :hidden: @@ -72,3 +85,5 @@ Class Description troe wigner eckart + surfacearrhenius + stickingcoefficient diff --git a/documentation/source/reference/kinetics/stickingcoefficient.rst b/documentation/source/reference/kinetics/stickingcoefficient.rst new file mode 100644 index 00000000000..919ac7dbb8f --- /dev/null +++ b/documentation/source/reference/kinetics/stickingcoefficient.rst @@ -0,0 +1,22 @@ +********************************** +rmgpy.kinetics.StickingCoefficient +********************************** + +.. autoclass:: rmgpy.kinetics.StickingCoefficient + + The Sticking coefficient class uses an Arrhenius-like expression to determine + the sticking coefficient :math:`\gamma` of a species on a surface. + + .. math:: \gamma = A (T/T_0)^{n} \exp\left(-\frac{E_\mathrm{a}}{RT}\right) + + Above, :math:`A` is the preexponential factor, :math:`T_0` is the reference + temperature, :math:`n` is the temperature exponent, and :math:`E_\mathrm{a}` + is the activation energy. + + The sticking coefficient is then used to calculate the rate coefficient :math:`k` + using the following expression: + + .. math:: k = \frac{\gamma}{\Gamma} \sqrt{\frac{RT}{2 \pi W}} + + where :math:`\Gamma` is the surface site density and :math:`W` is the molecular + weight of the gas phase species. diff --git a/documentation/source/reference/kinetics/surfacearrhenius.rst b/documentation/source/reference/kinetics/surfacearrhenius.rst new file mode 100644 index 00000000000..dee89d1d1ca --- /dev/null +++ b/documentation/source/reference/kinetics/surfacearrhenius.rst @@ -0,0 +1,17 @@ +******************************* +rmgpy.kinetics.SurfaceArrhenius +******************************* + +.. autoclass:: rmgpy.kinetics.SurfaceArrhenius + + The SurfaceArrhenius class uses a rate expression that is identical to the + Arrhenius class: + + .. math:: k(T) = A \left( \frac{T}{T_0} \right)^n \exp \left( -\frac{E_\mathrm{a}}{RT} \right) + + Above, :math:`A` is the preexponential factor, :math:`T_0` is the reference + temperature, :math:`n` is the temperature exponent, and :math:`E_\mathrm{a}` + is the activation energy. + + The only difference is the units for :math:`A` are in terms of surface concentration + (:math:`\mathrm{mol/m^2}`) instead of volume concentration (:math:`\mathrm{mol/m^3}`). diff --git a/documentation/source/reference/molecule/graph.rst b/documentation/source/reference/molecule/graph.rst index 8750b3e161c..c37c78de30f 100644 --- a/documentation/source/reference/molecule/graph.rst +++ b/documentation/source/reference/molecule/graph.rst @@ -1,3 +1,5 @@ +.. _rmgpy.molecule.graph.Graph: + ************************** rmgpy.molecule.graph.Graph ************************** diff --git a/documentation/source/reference/molecule/group.rst b/documentation/source/reference/molecule/group.rst index 2654849ec31..3f8e0e691cf 100644 --- a/documentation/source/reference/molecule/group.rst +++ b/documentation/source/reference/molecule/group.rst @@ -1,3 +1,5 @@ +.. _rmgpy.molecule.Group: + ******************** rmgpy.molecule.Group ******************** diff --git a/documentation/source/reference/molecule/molecule.rst b/documentation/source/reference/molecule/molecule.rst index 7a556771beb..777ad002f88 100644 --- a/documentation/source/reference/molecule/molecule.rst +++ b/documentation/source/reference/molecule/molecule.rst @@ -1,3 +1,5 @@ +.. _rmgpy.molecule.Molecule: + *********************** rmgpy.molecule.Molecule *********************** diff --git a/documentation/source/theory/rmg/dynamics.rst b/documentation/source/theory/rmg/dynamics.rst index a2aae7fdd21..6fe52c0b045 100644 --- a/documentation/source/theory/rmg/dynamics.rst +++ b/documentation/source/theory/rmg/dynamics.rst @@ -67,31 +67,31 @@ for movement from surface to bulk core based on flux or dynamics criterion. Key Parameters for Dynamics Criterion and Surface Algorithm =========================================================== -* **toleranceMoveEdgeReactionToCore** +* ``toleranceMoveEdgeReactionToCore`` An edge reaction will be pulled directly into the bulk core if its dynamics number ever exceeds this value. -* **toleranceMoveEdgeReactionToSurface** +* ``toleranceMoveEdgeReactionToSurface`` An edge reaction will be pulled into the surface if its dynamics number ever exceeds this value. -* **toleranceMoveEdgeReactionToCoreInterrupt** +* ``toleranceMoveEdgeReactionToCoreInterrupt`` When any reaction's dynamics number exceeds this value the simulation will be interrupted. -* **toleranceMoveEdgeReactionToSurfaceInterrupt** +* ``toleranceMoveEdgeReactionToSurfaceInterrupt`` When the dynamics number of any reaction that would be valid for movement to the surface exceeds this value the simulation will be interrupted -* **toleranceMoveSurfaceReactionToCore** +* ``toleranceMoveSurfaceReactionToCore`` A surface reaction will be pulled into the bulk core if its dynamics number ever exceeds this value. Note this is done on the fly during simulation. -* **toleranceMoveSurfaceSpeciesToCore** +* ``toleranceMoveSurfaceSpeciesToCore`` A surface species will be pulled into the bulk core if it's rate ratio ever exceeds this value. Note this is done on the fly during simulation. diff --git a/documentation/source/theory/rmg/prune.rst b/documentation/source/theory/rmg/prune.rst index fdbdbc5aabf..d30ed7efb2a 100644 --- a/documentation/source/theory/rmg/prune.rst +++ b/documentation/source/theory/rmg/prune.rst @@ -12,30 +12,30 @@ in order to achieve both low memory consumption and mechanism accuracy. Pruning Key Parameters in Pruning ========================= -* toleranceKeepInEdge +* ``toleranceKeepInEdge`` - Any edge species to prune should have peak flux along the whole conversion course lower than toleranceKeepInEdge :math:`*` characteristic flux. Thus, larger values will lead to smaller edge mechanisms. + Any edge species to prune should have peak flux along the whole conversion course lower than ``toleranceKeepInEdge`` :math:`*` characteristic flux. Thus, larger values will lead to smaller edge mechanisms. -* toleranceMoveToCore +* ``toleranceMoveToCore`` - Any edge species to enter core model should have flux at some point larger than toleranceMoveToCore :math:`*` characteristic flux Thus, in general, smaller values will lead to larger core mechanisms. + Any edge species to enter core model should have flux at some point larger than ``toleranceMoveToCore`` :math:`*` characteristic flux. Thus, in general, smaller values will lead to larger core mechanisms. -* toleranceInterrupSimulation +* ``toleranceInterruptSimulation`` - Once flux of any edge species exceeds toleranceInterruptSimulation :math:`*` characteristic flux, dynamic simulation will be stopped. + Once flux of any edge species exceeds ``toleranceInterruptSimulation`` :math:`*` characteristic flux, dynamic simulation will be stopped. Usually this tolerance will be set a very high value so that any flux's exceeding that means mechanism is too incomplete to continue dynamic simulation. -* maximumEdgeSpecies +* ``maximumEdgeSpecies`` If dynamic simulation isn't interrupted in half way and total number of the edge species whose peak fluxes are higher than - toleranceKeepInEdge :math:`*` characteristic flux exceeds maximumEdgeSpecies, such excessive amount of edge species with lowest peak fluxes will be pruned. + ``toleranceKeepInEdge`` :math:`*` characteristic flux exceeds ``maximumEdgeSpecies``, such excessive amount of edge species with lowest peak fluxes will be pruned. -* minCoreSizeForPrune +* ``minCoreSizeForPrune`` Ensures that a minimum number of species are in the core before pruning occurs, in order to avoid pruning the model when it is far away from completeness. The default value is set to 50 species. -* minSpeciesExistIterationsForPrune +* ``minSpeciesExistIterationsForPrune`` Set the number of iterations an edge species must stay in the job before it can be pruned. The default value is 2 iterations. @@ -46,20 +46,20 @@ How Pruning Works The goal of pruning is to delete those "useless" edge species. So "usefulness" should be defined and it's natural to have flux as a criterion for "usefulness". Since flux changes with reactant conversion, peak flux is chosen here to make decision of pruning or not. - Every time pruning is triggered, edge species with peak flux lower than toleranceKeepInEdge :math:`*` characteristic flux will be deleted. + Every time pruning is triggered, edge species with peak flux lower than ``toleranceKeepInEdge`` :math:`*` characteristic flux will be deleted. .. figure:: fluxDiagramWithTolerance.png - However, pruning is not always triggered because of toleranceInterruptSimulation. As mentioned above, in order to prune, RMG needs to figure out + However, pruning is not always triggered because of ``toleranceInterruptSimulation``. As mentioned above, in order to prune, RMG needs to figure out the peak flux of each edge species, which requires dynamic simulation to complete. If some run of dynamic simulation is terminated in half way - by toleranceInterruptSimulation, pruning is rejected although there might be some edge species with peak fluxes lower than - toleranceKeepInEdge :math:`*` characteristic flux. Since pruning requires to complete dynamic simulation, setting toleranceInterruptSimulation to be positive infinity, - as an extreme case, means always enabling pruning. Another extreme case would be that it has same value as toleranceMoveToCore where + by ``toleranceInterruptSimulation``, pruning is rejected although there might be some edge species with peak fluxes lower than + ``toleranceKeepInEdge`` :math:`*` characteristic flux. Since pruning requires to complete dynamic simulation, setting ``toleranceInterruptSimulation`` to be positive infinity, + as an extreme case, means always enabling pruning. Another extreme case would be that it has same value as ``toleranceMoveToCore`` where no pruning occurs. - In summary, each run of dynamic simulation will proceed towards terminationConversion unless some flux exceeds - toleranceInterruptSimulation :math:`*` characteristic flux.Following complete simulation is the pruning of edge species whose flux is not high enough be kept - in the edge, which is followed by pruning of excessive amount of edge species to make sure total edge species number is no greater than maximumEdgeSpecies. + In summary, each run of dynamic simulation will proceed towards ``terminationConversion`` unless some flux exceeds + ``toleranceInterruptSimulation`` :math:`*` characteristic flux. Following complete simulation is the pruning of edge species whose flux is not high enough be kept + in the edge, which is followed by pruning of excessive amount of edge species to make sure total edge species number is no greater than ``maximumEdgeSpecies``. diff --git a/documentation/source/users/arkane/credits.rst b/documentation/source/users/arkane/credits.rst index 4e9d9cc9812..ded1cd6aad9 100644 --- a/documentation/source/users/arkane/credits.rst +++ b/documentation/source/users/arkane/credits.rst @@ -9,7 +9,7 @@ Project Supervisors: - Prof. William H. Green (whgreen@mit.edu) - Prof. Richard H. West (r.west@northeastern.edu) - Prof. C. Franklin Goldsmith (franklin_Goldsmith@brown.edu) -- Asst. Prof. Alon Grinberg Dana (alon@technion.ac.il) +- Prof. Alon Grinberg Dana (alon@technion.ac.il) Developers: (rmg_dev@mit.edu) @@ -24,10 +24,10 @@ Developers: (rmg_dev@mit.edu) - Dr. D.S. Ranasinghe - Dr. R.J. Gillis - Dr. A.M. Payne -- Asst. Prof. Y.-P. Li -- X. Dong -- K.A. Spiekermann -- H. Wu +- Prof. Y.-P. Li +- Dr. X. Dong +- Dr. K.A. Spiekermann +- Mr. H. Wu - Dr. E.E. Dames - Dr. Z.J. Buras, - Dr. N.M. Vandewiele @@ -41,11 +41,4 @@ Developers: (rmg_dev@mit.edu) How to Cite *********** -A. Grinberg Dana, M.S. Johnson, J.W. Allen, S. Sharma, S. Raman, M. Liu, C.W. Gao, C.A. Grambow, M.J. Goldman, -D.S. Ranasinghe, R.J. Gillis, A.M. Payne, Y.-P. Li, X. Dong, K.A. Spiekermann, H. Wu, E.E. Dames, Z.J. Buras, -N.M. Vandewiele, N.W. Yee, S.S. Merchant, B. Buesser, C.A. Class, C.F. Goldsmith, R.H. West, W.H. Green, -"Automated reaction kinetics and network exploration (Arkane): -A statistical mechanics, thermodynamics, transition state theory, and master equation software", -*International Journal of Chemical Kinetics* 2023, 55(6), 300-323. - -DOI: `10.1002/kin.21637 `_ +Please refer to the ``Arkane`` reference in the `CITATIONS.bib file `_. diff --git a/documentation/source/users/arkane/faq.rst b/documentation/source/users/arkane/faq.rst index dd4c6e6cf04..f4cffc64728 100644 --- a/documentation/source/users/arkane/faq.rst +++ b/documentation/source/users/arkane/faq.rst @@ -30,8 +30,8 @@ data and physical quantities. .. [#f2] No longer distributed -.. _MultiWell: https://clasp-research.engin.umich.edu/multiwell/ -.. _UNIMOL: http://www.ccl.net/cca/software/SOURCES/FORTRAN/unimol/index.shtml -.. _ChemRate: https://kinetics.nist.gov/ChemRate/ -.. _Variflex: http://web.archive.org/web/20181126234555/http://ftp.tcg.anl.gov/pub/variflex/Summary.vrfx +.. _MultiWell: https://web.archive.org/web/20220927051103/https://multiwell.engin.umich.edu/about/ +.. _UNIMOL: https://server.ccl.net//cca/software/SOURCES/FORTRAN/unimol/index.shtml +.. _ChemRate: https://web.archive.org/web/20220621125921/https://kinetics.nist.gov/ChemRate/ +.. _Variflex: https://web.archive.org/web/20181126234555/http://ftp.tcg.anl.gov/pub/variflex/Summary.vrfx .. _MESMER: https://sourceforge.net/projects/mesmer/ diff --git a/documentation/source/users/arkane/input.rst b/documentation/source/users/arkane/input.rst index 002b00b1c77..4e3a53de0a9 100644 --- a/documentation/source/users/arkane/input.rst +++ b/documentation/source/users/arkane/input.rst @@ -170,7 +170,7 @@ Frequency Scale Factor ====================== Frequency scale factors are empirically fit to experiment for different ``modelChemistry``. -Refer to NIST website for values (http://cccbdb.nist.gov/vibscalejust.asp). +Refer to NIST website for values (https://cccbdb.nist.gov/vibscalejustx.asp). For CBS-QB3, which is not included in the link above, ``frequencyScaleFactor = 0.99`` according to Montgomery et al. (*J. Chem. Phys. 1999, 110, 2822–2827*). The frequency scale factor is automatically assigned according to the supplied ``modelChemistry``, if available @@ -617,7 +617,7 @@ systems in literature. For example, if the user is interested in a pressure-depe formula C7H8, the single exponential down parameters for toluene in helium availabe from literature could be used for all unimolecular isomers in the network (assuming helium is the bath gas). One helpful literature source for calculated exponential down parameters is the following paper: -http://www.sciencedirect.com/science/article/pii/S1540748914001084#s0060 +http://www.sciencedirect.com/science/article/pii/S1540748914001084 Option #2: Directly Enter Molecular Properties @@ -1056,7 +1056,7 @@ An example of the ``network`` function is given below along with a scheme of the .. image:: acetyl+O2.jpg -Image source: `J.W. Allen, PhD dissertation, MIT 2013 `_, +Image source: `J.W. Allen, PhD dissertation, MIT 2013 `_, calculated at the RQCISD(T)/CBS//B3LYP/6-311++G(d,p) level of theory Pressure Dependent Rate Calculation diff --git a/documentation/source/users/arkane/installation.rst b/documentation/source/users/arkane/installation.rst index df4930184c0..2eebc128edb 100644 --- a/documentation/source/users/arkane/installation.rst +++ b/documentation/source/users/arkane/installation.rst @@ -21,7 +21,8 @@ Installing Q2DTor Q2DTor is a software for calculating the partition functions and themodynamic properties of molecular systems with two or more torsional modes developed by David Ferro Costas (david.ferro@usc.es) and Antonio Fernandez Ramos (qf.ramos@usc.es) at the Universidade de Santiago de Compostela. Arkane can integrate Q2DTor to compute the quantum mechanical partition function -of 2D rotors. +of 2D rotors. +Learn more at https://github.com/cathedralpkg/Q2DTor For use of Q2DTor and HinderedRotor2D within Arkane please cite: D. Ferro-Costas, M. N. D. S. Cordeiro, D. G. Truhlar, A. Fernández-Ramos, Comput. Phys. Commun. 232, 190-205, 2018. diff --git a/documentation/source/users/arkane/introduction.rst b/documentation/source/users/arkane/introduction.rst index 22cc0857e95..26ab75fe195 100644 --- a/documentation/source/users/arkane/introduction.rst +++ b/documentation/source/users/arkane/introduction.rst @@ -31,7 +31,7 @@ License ======= Arkane is provided as free, open source code under the terms of the -`MIT/X11 License `_. The +`MIT/X11 License `_. The full, official license is reproduced below diff --git a/documentation/source/users/arkane/running.rst b/documentation/source/users/arkane/running.rst index f5d674feba5..f6cc90d8e45 100644 --- a/documentation/source/users/arkane/running.rst +++ b/documentation/source/users/arkane/running.rst @@ -34,8 +34,8 @@ to decrease; the latter two cause it to increase. Suppressing plot creation ========================= -Arkane by default will generate many plot files. By adding the ``-p``/``--no-plot`` -flag, Arkane will not generate any plots, reducing file size of output and +Arkane by default will generate many plot files and the previous files will be overwritten on subsequent runs. +By adding the ``-p``/``--no-plot`` flag, Arkane will not generate any plots, reducing file size of output and increasing the calculation speed. Help diff --git a/documentation/source/users/rmg/credits.rst b/documentation/source/users/rmg/credits.rst index faa4284055d..6618c6499f6 100755 --- a/documentation/source/users/rmg/credits.rst +++ b/documentation/source/users/rmg/credits.rst @@ -16,26 +16,29 @@ Project Supervisors: Current Developers: (rmg_dev@mit.edu) -- Dr. Alon Grinberg Dana +- Prof. Alon Grinberg Dana - Dr. Matt Johnson -- Yen-Ting Wang -- Xiaorui Dong -- Hao-Wei Pang +- Dr. Anna Doner - Oscar Wu -- Kevin Spiekermann - Jonathan Zheng - Jackson Burns - Nathan Morgan +- Prof. Richard H. West - Prof. C. Franklin Goldsmith -- Dr. Katrin Blondal - Dr. Bjarne Kreitz +- Chao Xu - Chris Blais - Sevy Harris - Nora Khalil Previous Developers: +- Dr. Xiaorui Dong +- Dr. Hao-Wei Pang +- Dr. Kevin Spiekermann +- Yen-Ting Wang - Dr. Joshua W. Allen +- Dr. Katrin Blondal - Dr. Yunsie Chung - Dr. David Farina - Dr. Mark Goldman @@ -66,25 +69,4 @@ Previous Developers: How to Cite *********** -C.W. Gao, J.W. Allen, W.H. Green, R.H. West, -"Reaction Mechanism Generator: Automatic construction of chemical kinetic mechanisms", -*Computer Physics Communications* 2016, 203, 212-225. - -DOI: `10.1016/j.cpc.2016.02.013 `_ - - -M. Liu, A. Grinberg Dana, M.S. Johnson, M.J. Goldman, A. Jocher, A.M. Payne, C.A. Grambow, K. Han, N.W. Yee, -E.J. Mazeau, K. Blondal, R.H. West, C.F. Goldsmith, W.H. Green, -"Reaction Mechanism Generator v3.0: Advances in Automatic Mechanism Generation", -*Journal of Chemical Information and Modeling* 2021, 61(6), 2686–2696. - -DOI: `10.1021/acs.jcim.0c01480 `_ - - - -M.S. Johnson, X. Dong, A. Grinberg Dana, Y. Chung, D. Farina, R.J. Gillis, M. Liu, N.W. Yee, K. Blondal, -E. Mazeau, C.A. Grambow, A.M. Payne, K.A. Spiekermann, H.-W. Pang, C.F. Goldsmith, R.H. West, W.H. Green, -"The RMG Database for Chemical Property Prediction", -*Chemical Information* 2022, 62(20), 4906–4915. - -DOI: `10.1021/acs.jcim.2c00965 `_ +Please refer to the ``RMG``, ``RMG3``, and ``RMG_Database`` citations in the `CITATIONS.bib file `_. diff --git a/documentation/source/users/rmg/database/introduction.rst b/documentation/source/users/rmg/database/introduction.rst index 11ac0a45196..8aa68a8eee8 100644 --- a/documentation/source/users/rmg/database/introduction.rst +++ b/documentation/source/users/rmg/database/introduction.rst @@ -296,10 +296,12 @@ alongside normal group entries. The starred atoms in the forbidden group ban the specified reaction recipe from occurring in matched products and reactants. In addition for forbidding groups, there is the option of forbidding specific -molecules or species. Forbidding a molecule will prevent that exact structure -from being generated, while forbidding a species will prevent any of its resonance -structures from being generated. To specify a forbidden molecule or species, simply -replace the ``group`` keyword with ``molecule`` or ``species``: :: +molecules or species in ``RMG-database/input/forbiddenStructures.py``. +Forbidding a molecule will prevent that exact structure from being generated, +while forbidding a species will prevent any of its resonance structures from being +generated. Note that specific molecules or species can only be forbidden globally +and should not be specified in the groups.py file. To specify a forbidden molecule +or species, simply replace the ``group`` keyword with ``molecule`` or ``species``: :: # This forbids a molecule forbidden( @@ -347,4 +349,4 @@ text shows the syntax in groups.py and a schematic is given underneath. Individual groups only describe part of the reaction. To describe an entire reaction we need one group from each tree, which we call **node templates** or simply templates. (C_pri, O_pri_rad), (H2, O_sec_rad), and (X_H, Y_rad) are all valid examples of templates. -Templates can be filled in with kinetic parameters from the training set or rules. \ No newline at end of file +Templates can be filled in with kinetic parameters from the training set or rules. diff --git a/documentation/source/users/rmg/database/kinetics.rst b/documentation/source/users/rmg/database/kinetics.rst index 7c1a1a61952..3ec2953d5fa 100644 --- a/documentation/source/users/rmg/database/kinetics.rst +++ b/documentation/source/users/rmg/database/kinetics.rst @@ -52,150 +52,7 @@ Kinetic libraries should also be used in the cases where: * No family exists for the class of reaction * You are not confident about the accuracy of kinetic parameters -Below is a list of pre-packaged kinetics library reactions in RMG: - - -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Library |Description | -+=============================================================+==========================================================================================+ -|1989_Stewart_2CH3_to_C2H5_H |Chemically Activated Methyl Recombination to Ethyl (2CH3 -> C2H5 + H) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|2001_Tokmakov_H_Toluene_to_CH3_Benzene |H + Toluene = CH3 + Benzene | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|2005_Senosiain_OH_C2H2 |pathways on the OH + acetylene surface | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|2006_Joshi_OH_CO |pathways on OH + CO = HOCO = H + CO2 surface | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|2009_Sharma_C5H5_CH3_highP |Cyclopentadienyl + CH3 in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|2015_Buras_C2H3_C4H6_highP |Vinyl + 1,3-Butadiene and other C6H9 reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|biCPD_H_shift |Sigmatropic 1,5-H shifts on biCPD PES | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|BurkeH2O2inArHe |Comprehensive H2/O2 kinetic model in Ar or He atmosphere | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|BurkeH2O2inN2 |Comprehensive H2/O2 kinetic model in N2 atmosphere | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|C2H4+O_Klipp2017 |C2H4 + O intersystem crossing reactions, probably important for all C/H/O combustion | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|C10H11 |Cyclopentadiene pyrolysis in the presence of ethene | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|C3 |Cyclopentadiene pyrolysis in the presence of ethene | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|C6H5_C4H4_Mebel |Formation Mechanism of Naphthalene and Indene | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Chernov |Soot Formation with C1 and C2 Fuels (aromatic reactions only) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|CurranPentane |Ignition of pentane isomers | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Dooley |Methyl formate (contains several mechanisms) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|ERC-FoundationFuelv0.9 |Small molecule combustio (natural gas) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Ethylamine |Ethylamine pyrolysis and oxidation | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|FFCM1(-) |Foundational Fuel Chemistry Model Version 1.0 (excited species removed) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2005_Ismail_C6H5_C4H6_highP |Phenyl + 1,3-Butadiene and other C10H11 reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2012_Matsugi_C3H3_C7H7_highP |Propargyl + Benzyl and other C10H10 reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2016_Mebel_C9H9_highP |C9H9 reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2016_Mebel_C10H9_highP |C10H9 reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2016_Mebel_Indene_CH3_highP |CH3 + Indene in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2017_Buras_C6H5_C3H6_highP |Phenyl + Propene and other C9H11 reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2017_Mebel_C6H4C2H_C2H2_highP |C10H7 HACA reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2017_Mebel_C6H5_C2H2_highP |C8H7 HACA reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2017_Mebel_C6H5_C4H4_highP |Phenyl + Vinylacetylene and other C10H9 reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/2017_Mebel_C6H5C2H2_C2H2_highP |C10H9 HACA reactions in high-P limit | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|First_to_Second_Aromatic_Ring/phenyl_diacetylene_effective |Effective Phenyl + Diacetylene rates to Benzofulvenyl and 2-Napthyl | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Fulvene_H |Cyclopentadiene pyrolysis in the presence of ethene | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|GRI-HCO |The `HCO <=> H + CO` reaction | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|GRI-Mech3.0 |Gas Research Institute natural gas mechanism optimized for 1 atm (discontinued Feb. 2000) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|GRI-Mech3.0-N |GRI-Mech3.0 including nitrogen chemistry (NOx from N2) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Glarborg |Mechanisms by P. Glarborg, assorted by carbon number | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|JetSurF2.0 |Jet Surrogate Fuel model up tp C12 (excited species removed) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Klippenstein_Glarborg2016 |Methane oxidation at high pressures and intermediate temperatures | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Lai_Hexylbenzene |Alkylaromatic reactions for hexylbenzene | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Mebel_C6H5_C2H2 |Pathways from benzene to naphthalene | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Mebel_Naphthyl |Reactions of naphthyl-1 and naphthyl-2 | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Methylformate |Methyl formate | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Narayanaswamy |Oxidation of substituted aromatic species (aromatic reactions only) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Nitrogen_Dean_and_Bozzelli |Combustion Chemistry of Nitrogen | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Nitrogen_Glarborg_Gimenez_et_al |High pressure C2H4 oxidation with nitrogen chemistry | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Nitrogen_Glarborg_Lucassen_et_al |Fuel-nitrogen conversion in the combustion of small amines | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Nitrogen_Glarborg_Zhang_et_al |Premixed nitroethane flames at low pressure | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|NOx |important NOx related reactions, e.g., thermal & prompt NO, N2O | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|NOx/LowT |Low temperature kinetics (~<1000K) for selected reactions from the NOx library | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|OxygenSingTrip |Reactions of singlet and triplet oxygen | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|SOx |important SOx related reactions, e.g., H-S, C-S, SOx | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/DMDS |Dimethyl disulfide (CH3SSCH3) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/DMS |Dimethyl disulfide (CH3SSCH3) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/DTBS |Di-tert-butyl Sulfide (C4H9SSC4H9) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/GlarborgBozzelli |SO2 effect on moist CO oxidation with and without NO | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/GlarborgH2S |H2S oxidation at high pressures | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/GlarborgMarshall |OCS chemistry | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/GlarborgNS |Interactions between nitrogen and sulfur species in combustion | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/Hexanethial_nr |Hexyl sulfide (C6H13SC6H13) + hexadecane (C16H34) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/Sendt |Small sulfur molecule | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/TP_Song |Thiophene (C4H4S, aromatic) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|Sulfur/Thial_Hydrolysis |Thioformaldehyde (CH2S) and thioacetaldehyde (C2H4S) to COS and CO2 | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|TEOS |Organic oxidized silicone | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|c-C5H5_CH3_Sharma |Cyclopentadienyl + CH3 | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|combustion_core |Leeds University natural gas mechanism (contains versions 2-5) | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|fascella |Cyclopentadienyl + acetyl | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|kislovB |Formation of indene in combustion | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|naphthalene_H |Cyclopentadiene pyrolysis in the presence of ethene Part 1 | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|vinylCPD_H |Cyclopentadiene pyrolysis in the presence of ethene Part 2 | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ -|PrimaryH2O2 |Updated rate parameters for the H2O2 system that include ter-molecular reactions | -+-------------------------------------------------------------+------------------------------------------------------------------------------------------+ +`A full list of the libraries can be found on the RMG website `_ (please allow 1-2 minutes for the website to load). .. _kinetics_families_db: @@ -212,237 +69,7 @@ Each reaction family contains the files: * training.py containing a training set for the family * rules.py containing kinetic parameters for rules -There are currently 74 reaction families in RMG: - -.. |f00| image:: images/kinetics_families/1+2_Cycloaddition.png - :scale: 40% -.. |f01| image:: images/kinetics_families/1,2-Birad_to_alkene.png - :scale: 40% -.. |f02| image:: images/kinetics_families/1,2_Insertion_CO.png - :scale: 40% -.. |f03| image:: images/kinetics_families/1,2_Insertion_carbene.png - :scale: 40% -.. |f04| image:: images/kinetics_families/1,2_NH3_elimination.png - :scale: 40% -.. |f05| image:: images/kinetics_families/1,2_shiftC.png - :scale: 40% -.. |f06| image:: images/kinetics_families/1,2_shiftS.png - :scale: 40% -.. |f07| image:: images/kinetics_families/1,3_Insertion_CO2.png - :scale: 40% -.. |f08| image:: images/kinetics_families/1,3_Insertion_ROR.png - :scale: 40% -.. |f09| image:: images/kinetics_families/1,3_Insertion_RSR.png - :scale: 40% -.. |f10| image:: images/kinetics_families/1,3_NH3_elimination.png - :scale: 40% -.. |f75| image:: images/kinetics_families/1,3_sigmatropic_rearrangement.png - :scale: 40% -.. |f11| image:: images/kinetics_families/1,4_Cyclic_birad_scission.png - :scale: 40% -.. |f12| image:: images/kinetics_families/1,4_Linear_birad_scission.png - :scale: 40% -.. |f13| image:: images/kinetics_families/2+2_cycloaddition.png - :scale: 40% -.. |f17| image:: images/kinetics_families/6_membered_central_C-C_shift.png - :scale: 40% -.. |f18| image:: images/kinetics_families/Baeyer-Villiger_step1_cat.png - :scale: 40% -.. |f19| image:: images/kinetics_families/Baeyer-Villiger_step2.png - :scale: 40% -.. |f20| image:: images/kinetics_families/Baeyer-Villiger_step2_cat.png - :scale: 40% -.. |f21| image:: images/kinetics_families/Bimolec_Hydroperoxide_Decomposition.png - :scale: 40% -.. |f22| image:: images/kinetics_families/Birad_R_Recombination.png - :scale: 40% -.. |f23| image:: images/kinetics_families/Birad_recombination.png - :scale: 40% -.. |f24| image:: images/kinetics_families/CO_Disproportionation.png - :scale: 40% -.. |f25| image:: images/kinetics_families/Concerted_Intra_Diels_alder_monocyclic_1,2_shiftH.png - :scale: 40% -.. |f26| image:: images/kinetics_families/Cyclic_Ether_Formation.png - :scale: 40% -.. |f27| image:: images/kinetics_families/Cyclic_Thioether_Formation.png - :scale: 40% -.. |f28| image:: images/kinetics_families/Cyclopentadiene_scission.png - :scale: 40% -.. |f29| image:: images/kinetics_families/Diels_alder_addition.png - :scale: 40% -.. |f30| image:: images/kinetics_families/Disproportionation.png - :scale: 40% -.. |f31| image:: images/kinetics_families/HO2_Elimination_from_PeroxyRadical.png - :scale: 40% -.. |f32| image:: images/kinetics_families/H_Abstraction.png - :scale: 40% -.. |f33| image:: images/kinetics_families/Intra_2+2_cycloaddition_Cd.png - :scale: 40% -.. |f34| image:: images/kinetics_families/Intra_5_membered_conjugated_C=C_C=C_addition.png - :scale: 40% -.. |f35| image:: images/kinetics_families/Intra_Diels_alder_monocyclic.png - :scale: 40% -.. |f36| image:: images/kinetics_families/Intra_Disproportionation.png - :scale: 40% -.. |f37| image:: images/kinetics_families/Intra_RH_Add_Endocyclic.png - :scale: 40% -.. |f38| image:: images/kinetics_families/Intra_RH_Add_Exocyclic.png - :scale: 40% -.. |f39| image:: images/kinetics_families/Intra_R_Add_Endocyclic.png - :scale: 40% -.. |f40| image:: images/kinetics_families/Intra_R_Add_ExoTetCyclic.png - :scale: 40% -.. |f41| image:: images/kinetics_families/Intra_R_Add_Exo_scission.png - :scale: 40% -.. |f42| image:: images/kinetics_families/Intra_R_Add_Exocyclic.png - :scale: 40% -.. |f43| image:: images/kinetics_families/Intra_Retro_Diels_alder_bicyclic.png - :scale: 40% -.. |f44| image:: images/kinetics_families/Intra_ene_reaction.png - :scale: 40% -.. |f45| image:: images/kinetics_families/Korcek_step1.png - :scale: 40% -.. |f46| image:: images/kinetics_families/Korcek_step1_cat.png - :scale: 40% -.. |f47| image:: images/kinetics_families/Korcek_step2.png - :scale: 40% -.. |f48| image:: images/kinetics_families/Peroxyl_Disproportionation.png - :scale: 40% -.. |f49| image:: images/kinetics_families/Peroxyl_Termination.png - :scale: 40% -.. |f50| image:: images/kinetics_families/R_Addition_COm.png - :scale: 40% -.. |f51| image:: images/kinetics_families/R_Addition_CSm.png - :scale: 40% -.. |f52| image:: images/kinetics_families/R_Addition_MultipleBond.png - :scale: 40% -.. |f53| image:: images/kinetics_families/R_Recombination.png - :scale: 40% -.. |f54| image:: images/kinetics_families/Singlet_Carbene_Intra_Disproportionation.png - :scale: 40% -.. |f55| image:: images/kinetics_families/Singlet_Val6_to_triplet.png - :scale: 40% -.. |f56| image:: images/kinetics_families/SubstitutionS.png - :scale: 40% -.. |f57| image:: images/kinetics_families/Substitution_O.png - :scale: 40% -.. |f58| image:: images/kinetics_families/Surface_Abstraction.png - :scale: 40% -.. |f59| image:: images/kinetics_families/Surface_Adsorption_Bidentate.png - :scale: 40% -.. |f60| image:: images/kinetics_families/Surface_Adsorption_Dissociative.png - :scale: 40% -.. |f61| image:: images/kinetics_families/Surface_Adsorption_Double.png - :scale: 40% -.. |f62| image:: images/kinetics_families/Surface_Adsorption_Single.png - :scale: 40% -.. |f63| image:: images/kinetics_families/Surface_Adsorption_vdW.png - :scale: 40% -.. |f64| image:: images/kinetics_families/Surface_Bidentate_Dissociation.png - :scale: 40% -.. |f65| image:: images/kinetics_families/Surface_Dissociation.png - :scale: 40% -.. |f66| image:: images/kinetics_families/Surface_Dissociation_vdW.png - :scale: 40% -.. |f67| image:: images/kinetics_families/Surface_Recombination.png - :scale: 40% -.. |f68| image:: images/kinetics_families/intra_H_migration.png - :scale: 40% -.. |f69| image:: images/kinetics_families/intra_NO2_ONO_conversion.png - :scale: 40% -.. |f70| image:: images/kinetics_families/intra_OH_migration.png - :scale: 40% -.. |f71| image:: images/kinetics_families/intra_substitutionCS_cyclization.png - :scale: 40% -.. |f72| image:: images/kinetics_families/intra_substitutionCS_isomerization.png - :scale: 40% -.. |f73| image:: images/kinetics_families/intra_substitutionS_cyclization.png - :scale: 40% -.. |f74| image:: images/kinetics_families/intra_substitutionS_isomerization.png - :scale: 40% -.. |f76| image:: images/kinetics_families/lone_electron_pair_bond.png - :scale: 40% - -.. table:: - :widths: 40 60 - - ===================================================== ===== - **1+2_Cycloaddition** |f00| - **1,2-Birad_to_alkene** |f01| - **1,2_Insertion_CO** |f02| - **1,2_Insertion_carbene** |f03| - **1,2_NH3_elimination** |f04| - **1,2_shiftC** |f05| - **1,2_shiftS** |f06| - **1,3_Insertion_CO2** |f07| - **1,3_Insertion_ROR** |f08| - **1,3_Insertion_RSR** |f09| - **1,3_NH3_elimination** |f10| - **1,3_sigmatropic_rearrangement** |f75| - **1,4_Cyclic_birad_scission** |f11| - **1,4_Linear_birad_scission** |f12| - **2+2_cycloaddition** |f13| - **6_membered_central_C-C_shift** |f17| - **Baeyer-Villiger_step1_cat** |f18| - **Baeyer-Villiger_step2** |f19| - **Baeyer-Villiger_step2_cat** |f20| - **Bimolec_Hydroperoxide_Decomposition** |f21| - **Birad_R_Recombination** |f22| - **Birad_recombination** |f23| - **CO_Disproportionation** |f24| - **Concerted_Intra_Diels_alder_monocyclic_1,2_shiftH** |f25| - **Cyclic_Ether_Formation** |f26| - **Cyclic_Thioether_Formation** |f27| - **Cyclopentadiene_scission** |f28| - **Diels_alder_addition** |f29| - **Disproportionation** |f30| - **HO2_Elimination_from_PeroxyRadical** |f31| - **H_Abstraction** |f32| - **Intra_2+2_cycloaddition_Cd** |f33| - **Intra_5_membered_conjugated_C=C_C=C_addition** |f34| - **Intra_Diels_alder_monocyclic** |f35| - **Intra_Disproportionation** |f36| - **Intra_RH_Add_Endocyclic** |f37| - **Intra_RH_Add_Exocyclic** |f38| - **Intra_R_Add_Endocyclic** |f39| - **Intra_R_Add_ExoTetCyclic** |f40| - **Intra_R_Add_Exo_scission** |f41| - **Intra_R_Add_Exocyclic** |f42| - **Intra_Retro_Diels_alder_bicyclic** |f43| - **Intra_ene_reaction** |f44| - **Korcek_step1** |f45| - **Korcek_step1_cat** |f46| - **Korcek_step2** |f47| - **Peroxyl_Disproportionation** |f48| - **Peroxyl_Termination** |f49| - **R_Addition_COm** |f50| - **R_Addition_CSm** |f51| - **R_Addition_MultipleBond** |f52| - **R_Recombination** |f53| - **Singlet_Carbene_Intra_Disproportionation** |f54| - **Singlet_Val6_to_triplet** |f55| - **SubstitutionS** |f56| - **Substitution_O** |f57| - **Surface_Abstraction** |f58| - **Surface_Adsorption_Bidentate** |f59| - **Surface_Adsorption_Dissociative** |f60| - **Surface_Adsorption_Double** |f61| - **Surface_Adsorption_Single** |f62| - **Surface_Adsorption_vdW** |f63| - **Surface_Bidentate_Dissociation** |f64| - **Surface_Dissociation** |f65| - **Surface_Dissociation_vdW** |f66| - **Surface_Recombination** |f67| - **intra_H_migration** |f68| - **intra_NO2_ONO_conversion** |f69| - **intra_OH_migration** |f70| - **intra_substitutionCS_cyclization** |f71| - **intra_substitutionCS_isomerization** |f72| - **intra_substitutionS_cyclization** |f73| - **intra_substitutionS_isomerization** |f74| - **lone_electron_pair_bond** |f76| - ===================================================== ===== - +`A full list of the kinetic families can be found on the RMG website `_ (please allow 1-2 minutes for the website to load). Recipe ------ diff --git a/documentation/source/users/rmg/database/modification.rst b/documentation/source/users/rmg/database/modification.rst index 1fa567022f7..dce49a25bff 100644 --- a/documentation/source/users/rmg/database/modification.rst +++ b/documentation/source/users/rmg/database/modification.rst @@ -61,7 +61,6 @@ There are several places in the RMG-database and RMG-Py source code where reacti * ``getReactionPairs``: figuring out which species becomes which for flux analyses * ``__generateReactions``: correcting degeneracy eg. dividing by 2 for radical recombination * rmgpy.data.kinetics.rules - * ``processOldLibraryEntry``: determining units when importing RMG-Java database * ``getAllRules``: for radical recombination add reverse templates * rmgpy.data.kinetics.groups * ``getReactionTemplate``: for radical recombination duplicate the template diff --git a/documentation/source/users/rmg/faq.rst b/documentation/source/users/rmg/faq.rst index 2d2b3acc1e2..714ea9105aa 100644 --- a/documentation/source/users/rmg/faq.rst +++ b/documentation/source/users/rmg/faq.rst @@ -9,60 +9,26 @@ We have compiled some common questions about installing and using RMG below. For any other questions related to RMG and its usage and installation, please post an issue on our `GitHub issues page `_, where you can also search for any previous reports of your issue. -Alternatively, you can also ask questions via the `RMG-Py chat room `_ -or by contacting us directly at rmg_dev@mit.edu. +Alternatively, you can contact us directly at rmg_dev@mit.edu. Installing RMG ============== -#. **How can I install RMG-Py without Anaconda?** - - Usually we don't recommend installing RMG-Py without Anaconda because it takes longer and is easier to get trouble - with package management. But one still can try direct installation on Linux or MacOS by following - :ref:`Linux instruction` or :ref:`MacOS instruction`. The RMG team does not use this install approach - internally any more, so these instructions are not actively maintained. - -#. **Why does RMG-Py not work natively on Windows?** +#. **Why does RMG-Py not work natively from source on Windows?** One major challenge with supporting Windows is ensuring that all of our dependencies support Windows. This becomes non-trivial as we add more dependencies to support increasing RMG functionality. Ensuring that code within RMG is platform-agnostic is also challenging, since it is rarely the first priority for new development because our main focus is on research. -#. **What is the recommended way to run RMG-Py on Windows?** - - The currently recommended way to run RMG on Windows is to set up a Linux environment. There are multiple ways you - can approach this. Windows 10 supports a Linux subsystem which allows one to set up a Linux environment within - Windows without using virtualization. You can find instructions on setting up RMG within the Linux subsystem - :ref:`here`. - - Another option would be to set up a full Linux virtual machine using something like VirtualBox or VMWare Workstation. - The benefit of this option is being able to run in a full Linux environment. However, running two operating systems - simultaneously does result in excess resource overhead, so it may not be suitable for running extended RMG jobs. - Instructions for setting up a virtual machine can be found :ref:`here`. - - A third option that we are currently beginning to explore using `Docker `_, which is a - container-based infrastructure which shares the same benefits as a virtual machine but with less overhead. There - are some test images of RMG-Py which can be found on `Docker Hub `_ if you would like to - give this a try. More detailed instructions will be made available once we officially support this approach. - -#. **Windows binary installation gives ``WindowsError: [Error 5]``?** - - Error 5 is access is denied, so this is either a permissions error, or an issue with the Windows file lock. - `These posts `_ suggest rebooting the computer (in case it's a file lock), - and running the anaconda prompt, from which you run ``conda create -c rmg --name rmg_env rmg rmgdatabase``, - as an administrator (in case it's a permissions error). Please checkout one example from a user having - `Windows binary installation issue `_. - Running RMG =========== #. **How do I run a basic RMG job?** - Please see step-by-step instructions in the either the :ref:`binary` or :ref:`source ` - installation instructions. In general, the syntax is :: + Please see step-by-step instructions in the installation instructions. In general, the syntax is :: rmg.py input.py @@ -98,24 +64,6 @@ Running RMG factors, such as poor thermochemistry or rate constants. Unfortunately, there is currently no good way to debug and fix these types of errors. -#. **Why did I get** ``Segmentation fault:11`` **after installing RMG on my machine?** - - **Segmentation fault** is a typical error in C code, caused by a program trying to read or write an illegal memory - location, i.e. one it is not allowed to access. The most common cause in RMG is a conflict between two different - versions of a shared library. RMG has some dependencies which are written in C++, e.g. rdkit, openbabel. If you - compile one of these with a different version of some compiler library, or you compile RMG using one version and - run it with another, you will often get a Segmentation fault. Chances are those packages are not up to date, or - maybe your environmental variable ``PATH`` is messed up so that the wrong version of something is being found. - Please see one example from a user having same - `Segmentation fault issue `_. - -#. **Why did I get** ``IOError: [Errno 13] Permission denied: 'C:\\RMG.log'`` - - You do not have permission to write to the log file. Try running the RMG from a different folder that you do have - write permission to, such as within your user's documents directory, or else try running the command prompt as an - Administrator (so that you have write permission everywhere). See for example - `issue #817 `_. - Miscellaneous ============= diff --git a/documentation/source/users/rmg/features.rst b/documentation/source/users/rmg/features.rst index 8c73016d673..ebaa2f69103 100755 --- a/documentation/source/users/rmg/features.rst +++ b/documentation/source/users/rmg/features.rst @@ -4,30 +4,30 @@ Overview of Features ******************** -Thermodynamics estimation using group additivity. +**Thermodynamics estimation using group additivity.** Group additivity based on Benson's groups provide fast and reliable thermochemistry estimates. A standalone utility for estimating heat of formation, entropy, and heat capacity is also included. -Rate-based model enlargement +**Rate-based model enlargement.** Reactions are added to the model based on their rate, fastest first. -Rate-based termination. +**Rate-based termination.** The model enlargement stops when all excluded reactions are slower than a given threshold. This provides a controllable error bound on the kinetic model that is generated. -Extensible libraries +**Extensible libraries.** Ability to include reaction models on top of the provided reaction families. -Pressure-dependent reaction networks. +**Pressure-dependent reaction networks.** Dissociation, combination, and isomerization reactions have the potential to have rate coefficients that are dependent on both temperature and pressure, and RMG is able to estimate both for networks of arbitrary complexity with a bounded error. -Simultaneous mechanism generation for several conditions. +**Simultaneous mechanism generation for several conditions.** Concurrent generation of a reaction mechanism over multiple temperature and pressure conditions. Mechanisms generated this way are valid over a range of reaction conditions. -Dynamic simulation to a target conversion or time. +**Dynamic simulation to a target conversion or time.** Often the desired simulation time is not known *a priori*, so a target conversion is preferred. -Transport properties estimation using group additivity +**Transport properties estimation using group additivity.** The Lennard-Jones sigma and epsilon parameters are estimated using empirical correlations (based on a species' critical properties and acentric factor). The critical properties are estimated using a group-additivity approach; the acentric factor is also estimated using empirical correlations. A standalone application for estimating these parameters is provided, and the output is stored in CHEMKIN-readable format. diff --git a/documentation/source/users/rmg/input.rst b/documentation/source/users/rmg/input.rst index 33814e3f846..1106f3a341f 100644 --- a/documentation/source/users/rmg/input.rst +++ b/documentation/source/users/rmg/input.rst @@ -49,7 +49,7 @@ by Benson's method. For example, if you wish to use the GRI-Mech 3.0 mechanism [GRIMech3.0]_ as a ThermoLibrary in your model, the syntax will be:: - thermoLibraries = ['primaryThermoLibrary','GRI-Mech3.0'] + thermoLibraries = ['primaryThermoLibrary', 'GRI-Mech3.0'] .. [GRIMech3.0] Gregory P. Smith, David M. Golden, Michael Frenklach, Nigel W. Moriarty, Boris Eiteneer, Mikhail Goldenberg, C. Thomas Bowman, Ronald K. Hanson, Soonho Song, William C. Gardiner, Jr., Vitali V. Lissianski, and Zhiwei Qin http://combustion.berkeley.edu/gri-mech/ @@ -59,8 +59,8 @@ ThermoLibrary field must be with respect to the :file:`$RMG/RMG-database/input/t directory. .. note:: - Checks during the initialization are maid to avoid users to use "liquid thermo librairies" in gas phase simulations or to use - "liquid phase libraries" obtained in another solvent that the one defined in the input file in liquid phase simulations. + Checks during the initialization are made to avoid users using "liquid thermo libraries" in gas phase simulations or using + "liquid phase libraries" obtained in another solvent than the one defined in the input file in liquid phase simulations. .. _reactionlibraries: @@ -78,7 +78,7 @@ In the following example, the user has created a reaction library with a few additional reactions specific to n-butane, and these reactions are to be used in addition to the Glarborg C3 library:: - reactionLibraries = [('Glarborg/C3',False)], + reactionLibraries = [('Glarborg/C3', False)], The keyword False/True permits user to append all unused reactions (= kept in the edge) from this library to the chemkin file. True means those reactions will be appended. Using just the string inputs would lead to @@ -104,6 +104,23 @@ given in each mechanism, the different mechanisms can have different units. Library. +.. _externallib: + +External Libraries +------------------ +Users may direct RMG to use thermo and/or kinetic libraries which are not included in the RMG database, +e.g., a library a user created that was intentionally saved to a path different than the conventional +RMG-database location. In such cases, the user can specify the full path to the library in the input file:: + + thermoLibraries = ['path/to/your/thermo/library/file.py'] + +or:: + + reactionLibraries = [(path/to/your/kinetic/library/folder/'] + +Combinations in any order of RMG's legacy libraries and users' external libraries are allowed, +and the order in which the libraries are specified is the order in which they are loaded and given priority. + .. _seedmechanism: Seed Mechanisms @@ -630,9 +647,9 @@ this is more likely to kick out species RMG might otherwise have added to core. Advanced Setting: Taking Multiple Species At A Time ---------------------------------------------------- -Taking multiple objects (species, reactions or pdepNetworks) during a given simulation can often decrease your overall model generation time +Taking multiple objects (``Species``, ``Reaction`` or ``PDepNetwork``) during a given simulation can often decrease your overall model generation time over only taking one. For this purpose there is a ``maxNumObjsPerIter`` parameter that allows RMG to take -that many species, reactions or pdepNetworks from a given simulation. This is done in the order they trigger their respective criteria. +that many ``Species``, ``Reaction`` or ``PDepNetwork`` from a given simulation. This is done in the order they trigger their respective criteria. You can also set ``terminateAtMaxObjects=True`` to cause it to terminate when it has the maximum number of objects allowed rather than waiting around until it hits an interrupt tolerance. This @@ -652,6 +669,14 @@ For example :: Note that this can also result in larger models, however, sometimes these larger models (from taking more than one object at a time) pick up chemistry that would otherwise have been missed. + +Advanced Settings: Other +---------------------------------------------------- +- ``dynamicsTimeScale``: The time before which the dynamics criterion cannot be used to bring reactions into the model. This is useful because the math behind the dynamics criterion breaks down as ``t`` approaches 0, thus restricting the use of the dynamics criterion until later times may reduce the number of junk species/reactions added to the model. + +- ``ignoreOverallFluxCriterion``: Causes RMG to use the given flux criterion only for determining if a ``PDepNetwork`` should be explored and not whether species should enter the model. Lets you run pressure dependence alongside the dynamics criterion without the flux criterion. + + .. _ontheflyquantumcalculations: On the fly Quantum Calculations @@ -995,6 +1020,7 @@ all of RMG's reaction families. :: maximumCarbeneRadicals=0, maximumIsotopicAtoms=2, allowSingletO2 = False, + speciesCuttingThreshold=20, ) An additional flag ``allowed`` can be set to allow species @@ -1004,6 +1030,9 @@ products that form. By default, the ``allowSingletO2`` flag is set to ``False``. See :ref:`representing_oxygen` for more information. +Note that ``speciesCuttingThreshold`` is set by default to 20 heavy atoms. This means that if a species containing +20 or more heavy atoms is generated, it will be automatically split into fragments to save computational resources. +If fragments are not desired, the ``speciesCuttingThreshold`` may be set to an arbitrarily large number. Staging ======== @@ -1012,7 +1041,7 @@ It is now possible to concatenate different model and simulator blocks into the There must be the same number of each of these blocks (although only having one simulator block and many model blocks is enabled as well) and RMG will enter each stage these define in the order they were put in the input file. -To enable easier manipulation of staging a new parameter in the model block was developed maxNumSpecies that is the number of core species at which that stage (or if it is the last stage the entire model generation process) will terminate. +To enable easier manipulation of staging a new parameter in the model block was developed ``maxNumSpecies`` that is the number of core species at which that stage (or if it is the last stage the entire model generation process) will terminate. For example :: diff --git a/documentation/source/users/rmg/installation/anacondaDeveloper.rst b/documentation/source/users/rmg/installation/anacondaDeveloper.rst index eedc86ae1cc..0b836246a44 100644 --- a/documentation/source/users/rmg/installation/anacondaDeveloper.rst +++ b/documentation/source/users/rmg/installation/anacondaDeveloper.rst @@ -4,26 +4,12 @@ Installation by Source Using Anaconda Environment for Unix-based Systems: Linux and Mac OSX ******************************************************************************************* -#. Install the `conda` package manager, if you do not already have it (or Anaconda). - Select one of the following options: +#. Install the `conda` package manager via `miniforge`, if you do not already have it (or Anaconda), by following the `Miniforge installation instructions `_. - a. Users of Fedora Linux and Red Hat derivatives (RHEL, CentOS Stream) may install from the official repositories and EPEL, respectively, with the command :: +#. If your `conda` version is older than 23.10.0, manually switch the solver backend to `libmamba` (or update your conda):: - sudo dnf install conda - - b. All other users, download and install `Miniconda `_. - - The download will be a .sh file with a name like ``Miniconda3-latest-Linux-x86_64.sh``. - Open a terminal in the same directory as this file, and type the following to install Conda - (replace the name of your .sh file below). :: - - bash Miniconda3-latest-Linux-x86_64.sh - - **When prompted to append Anaconda to your PATH, select or type Yes**. - Install the Conda folder inside your home directory - (typically ``/home/YourUsername/`` in Linux and ``/Users/YourUsername`` in Mac). - - Note that you should reinitialize or restart your terminal in order for the changes to take effect, as the installer will tell you. + conda install -n base conda-libmamba-solver + conda config --set solver libmamba #. There are a few system-level dependencies which are required and should not be installed via Conda. These include `Git `_ for version control, `GNU Make `_, and the C and C++ compilers from the `GNU Compiler Collection (GCC) `_ for compiling RMG. @@ -71,29 +57,18 @@ Installation by Source Using Anaconda Environment for Unix-based Systems: Linux For information on using ``ssh`` with GitHub see the `Connecting to GitHub with SSH `_ -#. Switch the conda solver backend to speed up creation of the RMG environment :: - - conda install -n base conda-libmamba-solver - conda config --set solver libmamba - #. Navigate to the RMG-Py directory :: cd RMG-Py -#. Apple silicon (M1+) users only: execute the following commands - **instead of** the following `conda env create -f environment.yml` step. - (This will tell conda that we want to the environment to use x86 - architecture rather than the native ARM64 architecture) :: - - conda create -n rmg_env - conda activate rmg_env - conda config --env --set subdir osx-64 - conda env update -f environment.yml - #. Create the conda environment for RMG-Py:: conda env create -f environment.yml + To give it a different name (such as ``rmg_env2``), you can use the ``-n`` flag:: + + conda env create -f environment.yml -n rmg_env2 + If either of these commands return an error due to being unable to find the ``conda`` command, try to either close and reopen your terminal to refresh your environment variables or type the following command. @@ -110,55 +85,56 @@ Installation by Source Using Anaconda Environment for Unix-based Systems: Linux conda activate rmg_env -#. Switch the conda solver to libmamba again, to accelerate any changes you might make to this conda environment in the future:: - - conda config --set solver libmamba - #. Compile RMG-Py after activating the conda environment :: make -#. Modify environment variables. Add RMG-Py to the PYTHONPATH to ensure that you can access RMG modules from any folder. - *This is important before the next step in which julia dependencies are installed.* - Also, add your RMG-Py folder to PATH to launch ``rmg.py`` from any folder. +#. **Optional**: add your RMG-Py folder to ``PATH`` to launch ``rmg.py`` from any folder. - In general, these commands should be placed in the appropriate shell initialization file. + In general, this commands should be placed in the appropriate shell initialization file. For Linux users using bash (the default on distributions mentioned here), these should be placed in ``~/.bashrc``. For MacOS users using bash (default before MacOS Catalina), these should be placed in ``~/.bash_profile``, which you should create if it doesn't exist. For MacOS users using zsh (default beginning in MacOS Catalina), these should be placed in ``~/.zshrc``. :: - export PYTHONPATH=YourFolder/RMG-Py/:$PYTHONPATH export PATH=YourFolder/RMG-Py/:$PATH NOTE: Make sure to change ``YourFolder`` to the path leading to the ``RMG-Py`` code. Not doing so will lead to an error stating that python cannot find the module ``rmgpy``. Be sure to either close and reopen your terminal to refresh your environment variables (``source ~/.bashrc`` or ``source ~/.zshrc``). -#. Install and Link Julia dependencies: :: +#. **Optional (Recommended)**: Install and Link Julia dependencies. - julia -e 'using Pkg; Pkg.add("PyCall");Pkg.build("PyCall");Pkg.add(PackageSpec(name="ReactionMechanismSimulator",rev="main")); using ReactionMechanismSimulator;' + Installing Julia and ReactionMechanismSimulator.jl (RMS) will enable all the features in RMG that require RMS-based reactors, + as well as using ``method='ode'`` when solving the Master Equation with Arkane. + Note that installing RMS can cause errors when running Cantera simulations; this should not affect normal RMG use, but if you wish to run Cantera simulations you will need to maintain a separate conda environment without RMS in it. - python -c "import julia; julia.install(); import diffeqpy; diffeqpy.install()" + Ensure that you have modified your environment variables as described above, and then run the following: :: + source install_rms.sh + + Follow the instructions that it provides for installing Julia and Juliaup, + which can involve several steps including restarting your terminal or shell. + Run the script again, until it finishes installing RMS and all of its dependencies, and reports that ReactionMechanismSimulator is installed. #. Finally, you can run RMG from any location by typing the following (given that you have prepared the input file as ``input.py`` in the current folder). :: - python-jl replace/with/path/to/rmg.py input.py + python replace/with/path/to/rmg.py input.py You may now use RMG-Py, Arkane, as well as any of the :ref:`Standalone Modules ` included in the RMG-Py package. +For more information about using conda, please check out the `conda user guide `_. Debugging ========= If you wish to debug using the (very helpful) debugger in `VSCode `_, -here is an example launch configuration to put in your launch.json file, -which can be found in the .vscode folder. +here is an example launch configuration to put in your ``launch.json`` file, +which can be found in the ``.vscode`` folder. You might have to edit them slightly to match your exact paths. Specifically, you will need ``/opt/miniconda3/envs/rmg_env`` to point to where your conda environment is located. This configuration will allow you to debug the rms_constant_V example, running through -python-jl. :: +python. :: { "name": "Python: rmg.py rms_constant_V", @@ -166,7 +142,7 @@ python-jl. :: "request": "launch", "cwd": "${workspaceFolder}/", "program": "rmg.py", - "python": "/opt/miniconda3/envs/rmg_env/bin/python-jl", + "python": "/opt/miniconda3/envs/rmg_env/bin/python", "args": [ "examples/rmg/rms_constant_V/input.py", ], @@ -178,16 +154,16 @@ python-jl. :: }, This configuration will allow you to debug a subset of the unit tests. -Open one of the many test files named `*Test.py` before you launch it:: +Open one of the many test files named ``*Test.py`` in ``test/rmgpy`` before you launch it:: - { - "name": "Python: nosetest Current File", + { + "name": "Python: pytest Current File", "type": "python", "request": "launch", - "program": "/opt/miniconda3/envs/rmg_env/bin/nosetests", + "program": "/opt/miniconda3/envs/rmg_env/bin/pytest", + "python": "/opt/miniconda3/envs/rmg_env/bin/python", "args": [ - "--nologcapture", - "--nocapture", + "--capture=no", "--verbose", "${file}" ], @@ -204,13 +180,12 @@ This configuration will allow you to debug running all the database tests.:: "name": "Test RMG-database", "type": "python", "request": "launch", - "program": "/opt/miniconda3/envs/rmg_env/bin/nosetests", + "program": "/opt/miniconda3/envs/rmg_env/bin/pytest", + "python": "/opt/miniconda3/envs/rmg_env/bin/python", "args": [ - "--nologcapture", - "--nocapture", + "--capture=no", "--verbose", - "--detailed-errors", - "${workspaceFolder}/testing/databaseTest.py" + "${workspaceFolder}/test/database/databaseTest.py" ], "console": "integratedTerminal", "env": { @@ -219,6 +194,22 @@ This configuration will allow you to debug running all the database tests.:: }, }, +This configuration will allow you to use the debugger breakpoints inside unit tests being run by the pytest framework:: + + { + "name": "Python: Debug Tests", + "type": "python", + "request": "launch", + "program": "${file}", + "purpose": ["debug-test"], + "python": "/opt/miniconda3/envs/rmg_env/bin/python", + "console": "integratedTerminal", + "justMyCode": false, + "env": {"PYTEST_ADDOPTS": "--no-cov",} // without disabling coverage VS Code doesn't stop at breakpoints while debugging because pytest-cov is using the same technique to access the source code being run + } + +See more about testing in VSCode in the :ref:`Testing in VSCode ` section below. + Test Suite ========== @@ -242,31 +233,74 @@ Make sure that the environment is active before running the tests: ``conda activ make test-database +.. _vscode_testing: + +Testing in VSCode +================= + +Once you have the Python extension installed and a Python file open within the editor, +a test beaker icon will be displayed on the VS Code Activity bar. +The beaker icon is for the Test Explorer view. When opening the Test Explorer, +you will see a Configure Tests button if you don't have a test framework enabled. +Once you select Configure Tests, you will be prompted to select a test framework +(**select `pytest`**) +and a folder containing the tests +(**select `test`**). +To configure the rest of the settings, find the ``settings.json`` file in your ``.vscode`` folder. +You can use the following settings to configure the pytest framework:: + + "python.testing.pytestEnabled": true, + "python.testing.pytestPath": "python -m pytest", + "python.testing.pytestArgs": [ + "-p", "julia.pytestplugin", + "--julia-compiled-modules=no", + "--ignore", "test/regression", + "-m", "not functional", + // "-n", "auto", // number of parallel processes, if you install pytest-xdist + "test" + ], + +To run the tests, you can click the Run All Tests button in the Test Explorer view. +Learn more at the `Python testing in Visual Studio Code `_ documentation. + +Given the time taken for Julia to compile things every time it launches, +you might find this to be painfully slow even for a simple test. +It may be possible to use ``--julia-sysimage=JULIA_SYSIMAGE`` instead of ``--julia-compiled-modules=no``, +or disable PyJulia entirely. +If you find a better way to do this, or clearer instructions, +please `update this section `_. + + Running Examples ================ A number of basic examples can be run immediately. Additional example input files can be found in the ``RMG-Py/examples`` folder. Please read more on :ref:`Example Input Files ` in the documentation. -#. **Minimal Example**: this will run an Ethane pyrolysis model. It should take less than a minute to complete. The results will be in the ``RMG-Py/testing/minimal`` folder:: +#. **Minimal Example**: this will run an Ethane pyrolysis model. It should take less than a minute to complete. The results will be in the ``RMG-Py/testing/eg1`` folder:: cd RMG-Py make eg1 -#. **Hexadiene Example**: this will run a Hexadiene model with pressure dependence and QMTP. Note that you must have MOPAC installed for this to run. The results will be in the ``RMG-Py/testing/hexadiene`` folder:: +#. **Hexadiene Example**: this will run a Hexadiene model with pressure dependence and QMTP. Note that you must have MOPAC installed for this to run. The results will be in the ``RMG-Py/testing/eg2`` folder:: cd RMG-Py make eg2 -#. **Liquid Phase Example**: this will run a liquid phase RMG model. The results will be in the ``RMG-Py/testing/liquid_phase`` folder :: +#. **Liquid Phase Example**: this will run a liquid phase RMG model. The results will be in the ``RMG-Py/testing/eg3`` folder :: cd RMG-Py make eg3 -#. **ThermoEstimator Example**: this will run the :ref:`Thermo Estimation Module ` on a few molecules. Note that you must have MOPAC installed for this to run completely. The results will be in the ``RMG-Py/testing/thermoEstimator`` folder :: +#. **ThermoEstimator Example**: this will run the :ref:`Thermo Estimation Module ` on a few molecules. Note that you must have MOPAC installed for this to run completely. The results will be in the ``RMG-Py/testing/eg4`` folder :: cd RMG-Py make eg4 +#. **RMS Constant Volume Example**: this will run a constant volume reactor using the ReactionMechanismSimulator.jl package. Note that you must have Julia and ReactionMechanismSimulator.jl installed for this to run completely. The results will be in the ``RMG-Py/testing/eg8`` folder :: + + cd RMG-Py + make eg8 + Building Documentation ====================== diff --git a/documentation/source/users/rmg/installation/anacondaDeveloperWindows.rst b/documentation/source/users/rmg/installation/anacondaDeveloperWindows.rst index 22503f32308..81b0eff1190 100644 --- a/documentation/source/users/rmg/installation/anacondaDeveloperWindows.rst +++ b/documentation/source/users/rmg/installation/anacondaDeveloperWindows.rst @@ -10,7 +10,7 @@ Installation by Source Using Anaconda Environment for Windows .. image:: images/AnacondaInstallWindows.png :align: center -#. Install `Git `_, the open source version control package. When asked, append Git tools to your Command Prompt. It is also recommended to commit Unix-style line endings: +#. Install `Git `_, the open source version control package. When asked, append Git tools to your Command Prompt. It is also recommended to commit Unix-style line endings: .. image:: images/InstallGit.png :align: center @@ -44,7 +44,7 @@ Installation by Source Using Anaconda Environment for Windows #. If you set any new environment variables, you must now close and reopen the command prompt so that those environment variables can be refreshed and used. -#. Optional: If you wish to use the :ref:`QMTP interface ` with `MOPAC `_ to run quantum mechanical calculations for improved thermochemistry estimates of cyclic species, please obtain a legal license through the `MOPAC License Request Form `_. Once you have it, type the following into your command prompt :: +#. Optional: If you wish to use the :ref:`QMTP interface ` with `MOPAC `_ to run quantum mechanical calculations for improved thermochemistry estimates of cyclic species, please obtain a legal license through the `MOPAC License Request Form `_. Once you have it, type the following into your command prompt :: mopac password_string_here diff --git a/documentation/source/users/rmg/installation/anacondaUser.rst b/documentation/source/users/rmg/installation/anacondaUser.rst index 1c42d02e283..d2da18ecdf8 100644 --- a/documentation/source/users/rmg/installation/anacondaUser.rst +++ b/documentation/source/users/rmg/installation/anacondaUser.rst @@ -5,86 +5,42 @@ Binary Installation Using Anaconda for Unix-Based Systems: Linux and Mac OSX **************************************************************************** -#. Install the `conda` package manager, if you do not already have it (or Anaconda). - Select one of the following options: +#. Install the `conda` package manager via `miniforge`, if you do not already have it (or Anaconda), by following the `Miniforge installation instructions `_. - a. Users of Fedora Linux and Red Hat derivatives (RHEL, CentOS Stream) may install from the official repositories and EPEL, respectively, with the command :: +#. Install both RMG and the RMG-database binaries through the terminal. Dependencies will be installed automatically. It is safest to make a new conda environment for RMG and its dependencies. Type the following command into the terminal to create the new environment named 'rmg_env' containing the latest stable version of the RMG program and its database. :: - sudo dnf install conda - - b. All other users, download and install `Miniconda `_. - - The download will be a .sh file with a name like ``Miniconda3-latest-Linux-x86_64.sh``. - Open a terminal in the same directory as this file, and type the following to install Conda - (replace the name of your .sh file below). :: - - bash Miniconda3-latest-Linux-x86_64.sh - - **When prompted to append Anaconda to your PATH, select or type Yes**. - Install the Conda folder inside your home directory - (typically ``/home/YourUsername/`` in Linux and ``/Users/YourUsername`` in Mac). - - Note that you should reinitialize or restart your terminal in order for the changes to take effect, as the installer will tell you. - -#. Install both RMG and the RMG-database binaries through the terminal. Dependencies will be installed automatically. It is safest to make a new conda environment for RMG and its dependencies. Type the following command into the terminal to create the new environment named 'rmg_env' containing the latest stable version of the RMG program and its database. :: - - conda create -c defaults -c rmg -c rdkit -c cantera -c pytorch -c conda-forge --name rmg_env rmg rmgdatabase + conda create --name rmg_env 'rmg::rmg' Whenever you wish to use it you must first activate the environment:: conda activate rmg_env -#. You may now run an RMG test job. Save the `Minimal Example Input File `_ - to a local directory. Use the terminal to run your RMG job inside that folder using the following command :: - - rmg.py input.py - - If you encounter the ImportError related to ``libmkl_rt.so.2``, refer to the :ref:`Fixing the ImportError related to libmkl_rt.so.2 ` - section below to fix the error and re-run the RMG test job. - -You may now use RMG-Py, Arkane, as well as any of the :ref:`Standalone Modules ` included in the RMG-Py package. + For more information about using conda, please check out the `conda user guide `_. + + To install a specific version of RMG, add the version to the install command:: -.. _fixImportError: + conda create --name rmg_33_env 'rmg::rmg==3.3.0' + + Not all versions of RMG are available via conda for all platforms. Check the `official RMG conda channel `_ to see which are available for download. -Fixing the ImportError related to ``libmkl_rt.so.2`` -============================================================ - -You may encounter the following ImportError when you try to run a RMG test job :: - - Traceback (most recent call last): - File "/PATH-TO-YOUR-ANACONDA/envs/rmg_env/bin/rmg.py", line 48, in - from rmgpy.rmg.main import RMG, initialize_log, process_profile_stats, make_profile_graph - File "/PATH-TO-YOUR-ANACONDA/envs/rmg_env/lib/python3.7/site-packages/rmgpy/rmg/main.py", line 51, in - from cantera import ck2cti - File "/PATH-TO-YOUR-ANACONDA/envs/rmg_env/lib/python3.7/site-packages/cantera/__init__.py", line 4, in - from ._cantera import * - ImportError: libmkl_rt.so.2: cannot open shared object file: No such file or directory - -where ``PATH-TO-YOUR-ANACONDA`` is the path to the ``Anaconda3`` directory installed on your machine. -The default install location of Anaconda on Linux is ``/home//Anaconda3``. - -To fix this issue, simply copy ``libmkl_rt.so.1`` as ``libmkl_rt.so.2`` under the rmg environment library by typing the following -line on your terminal:: - - cp /PATH-TO-YOUR-ANACONDA/envs/rmg_env/lib/libmkl_rt.so.1 /PATH-TO-YOUR-ANACONDA/envs/rmg_env/lib/libmkl_rt.so.2 - -Note that ``PATH-TO-YOUR-ANACONDA`` needs to be the path to your ``Anaconda3`` directory, which mostly likely looks -like ``/home//Anaconda3``. If you are unable to locate the ``libmkl_rt.so.1`` file on your computer, you can find its location with the following command:: - - locate libmkl_rt.so.1 - -After copying the file as ``libmkl_rt.so.2``, try running the RMG test job again:: +#. You may now run an RMG test job. Save the `Minimal Example Input File `_ + to a local directory. Use the terminal to run your RMG job inside that folder using the following command :: rmg.py input.py -You will see a line saying ``MODEL GENERATION COMPLETED`` on your terminal if your RMG test job ran successfully. + You will see a line saying ``MODEL GENERATION COMPLETED`` on your terminal if your RMG test job ran successfully. Updating your binary installation of RMG in Linux or Mac OSX ============================================================ -If you had previously installed a binary version of the RMG package, you may -check and update your installation to the latest stable version available on Anaconda by typing the following command on the terminal :: +If you had previously installed a binary version of the RMG package and wish to update to a newer version, we suggest creating a new conda environment and installing the updated version there :: + + conda create --name rmg_xyz_env 'rmg::rmg==x.y.z' + +It is also possible, though not advisable, to update your existing installation to the latest stable version available on Anaconda by typing the following command on the terminal :: source activate rmg_env - conda update rmg rmgdatabase -c rmg + conda update 'rmg::rmg' + +Doing this may break any other code present in the conda environment and RMG may not function correctly. If you attempt this update method and face issues, please attempt to install the new version of RMG in a new conda environment before reaching out for assistance. diff --git a/documentation/source/users/rmg/installation/anacondaUserWindows.rst b/documentation/source/users/rmg/installation/anacondaUserWindows.rst index 082bb8531cb..ac2fb0f145a 100644 --- a/documentation/source/users/rmg/installation/anacondaUserWindows.rst +++ b/documentation/source/users/rmg/installation/anacondaUserWindows.rst @@ -17,7 +17,7 @@ Binary Installation Using Anaconda for Windows activate rmg_env -#. Optional: If you wish to use the :ref:`QMTP interface ` with `MOPAC `_ to run quantum mechanical calculations for improved thermochemistry estimates of cyclic species, please obtain a legal license through the `MOPAC License Request Form `_.Once you have it, type the following into your command prompt (while the environment is activated) :: +#. Optional: If you wish to use the :ref:`QMTP interface ` with `MOPAC `_ to run quantum mechanical calculations for improved thermochemistry estimates of cyclic species, please obtain a legal license through the `MOPAC License Request Form `_.Once you have it, type the following into your command prompt (while the environment is activated) :: mopac password_string_here diff --git a/documentation/source/users/rmg/installation/dependencies.rst b/documentation/source/users/rmg/installation/dependencies.rst index 1e257148f9b..6cfbf0dc492 100644 --- a/documentation/source/users/rmg/installation/dependencies.rst +++ b/documentation/source/users/rmg/installation/dependencies.rst @@ -8,49 +8,9 @@ Dependencies List of Dependencies ==================== -Briefly, RMG depends on the following packages, almost all of which can be found in the `RMG anaconda channel `_ as binary packages. +A list of RMG's dependencies can be found in the ``environment.yml`` file on the `RMG GitHub page `_. -* **boost:** portable C++ source libraries -* **cairo:** a 2D vector graphics library with support for multiple backends including image buffers, PNG, PostScript, PDF, and SVG file output. Used for molecular diagram generation -* **cairocffi:** a set of Python bindings and object-oriented API for cairo -* **coverage:** code coverage measurement for Python -* **cython:** compiling Python modules to C for speed up -* **dde:** Data Driven Estimator for neural network thermochemistry prediction -* **ffmpeg:** (optional) used to encode videos, necessary for generating video flux diagrams -* **gaussian:** (optional) commerical software program for quantum mechanical calculations. Must be installed separately. -* **gcc:** GNU compiler collection for C,C++, and Fortran. (MinGW is used in windows) -* **gprof2dot:** converts Python profiling output to a dot graph -* **graphviz:** generating flux diagrams -* **jinja2:** Python templating language for html rendering -* **jupyter:** (optional) for using IPython notebooks -* **lpsolve:** mixed integer linear programming solver, used for resonance structure generation. Must also install Python extension. -* **markupsafe:** implements XML/HTML/XHTML markup safe strings for Python -* **matplotlib:** library for making plots -* **mock:** for unit-testing -* **mopac:** semi-empirical software package for QM calculations -* **mpmath:** for arbitrary-precision arithmetic used in Arkane -* **muq:** (optional) MIT Uncertainty Quantification library, used for global uncertainty analysis -* **networkx:** (optional) network analysis for reaction-path analysis IPython notebook -* **nose:** advanced unit test controls -* **numpy:** fast matrix operations -* **openbabel:** chemical toolbox for speaking the many languages of chemical data -* **psutil:** system utilization diagnostic tool -* **pydas:** differential algebraic system solver -* **pydot:** interface to Dot graph language -* **pydqed:** constrained nonlinear optimization -* **pyparsing:** a general parsing module for python -* **pyrdl:** RingDecomposerLib for graph ring perception -* **pyyaml:** Python framework for YAML -* **pyzmq:** Python bindings for zeroMQ -* **quantities:** unit conversion -* **rdkit:** open-source cheminformatics toolkit -* **scipy:** fast mathematical toolkit -* **setuptools:** for packaging Python projects -* **sphinx:** documentation generation -* **symmetry:** calculating symmetry numbers of chemical point groups -* **xlwt:** generating Excel output files - .. _dependenciesRestrictions: License Restrictions on Dependencies @@ -58,9 +18,9 @@ License Restrictions on Dependencies All of RMG's dependencies except the ones listed below are freely available and compatible with RMG's open source MIT license (though the specific nature of their licenses vary). -* **pydas**: The DAE solvers used in the simulations come from `Linda Petzold’s research group `_ at UCSB. For running sensitivity analysis in RMG, the DASPK 3.1 solver is required, which "is subject to copyright restrictions” for non-academic use. Please visit their website for more details. To run RMG without this restriction, one may switch to compiling with the DASSL solver instead in RMG, which is "available in the public domain.” +* **pydas**: The DAE solvers used in the simulations come from `Linda Petzold's research group `_ at UCSB. For running sensitivity analysis in RMG, the DASPK 3.1 solver is required, which "is subject to copyright restrictions” for non-academic use. Please visit their website for more details. To run RMG without this restriction, one may switch to compiling with the DASSL solver instead in RMG, which is "available in the public domain.” -If you wish to do on-the-fly quantum chemistry calculations of thermochemistry (advisable for fused cyclic species in particular, where the ring corrections to group additive estimates are lacking), -the then you will need the third-party software for the QM calculations: +If you wish to do on-the-fly quantum chemistry calculations of thermochemistry (such as to improve estimates for fused cyclic species), +then you will need the third-party software for the QM calculations: -* **gaussian**: Gaussian03 and Gaussian09 are currently supported and commercially available. See `https://gaussian.com `_ for more details. +* **gaussian**: Gaussian16, Gaussian09 and Gaussian03 are currently supported and commercially available. See `https://gaussian.com `_ for more details. diff --git a/documentation/source/users/rmg/installation/index.rst b/documentation/source/users/rmg/installation/index.rst index 654de6c474f..00e6f876b4a 100644 --- a/documentation/source/users/rmg/installation/index.rst +++ b/documentation/source/users/rmg/installation/index.rst @@ -14,19 +14,19 @@ Recommended Install: Docker RMG is primarily distributed using Docker, a software package for delivering applications. -#. Download and install `Docker `_. +#. Download and install `Docker `_. -#. Open a terminal, powershell, or command prompt and run ``docker pull reactionmechanismgenerator/rmg:3.1.1``. +#. Open a terminal, powershell, or command prompt and run ``docker pull reactionmechanismgenerator/rmg:3.3.0``. This step may take some time as the image is downloaded. -#. Run ``docker run --name rmgcontainer -v "C:\Users\rmguser\myrmgfiles:/rmg/RMG-Py/myrmgfiles" -it reactionmechanismgenerator/rmg:3.1.1`` +#. Run ``docker run --name rmgcontainer -v "C:\Users\rmguser\myrmgfiles:/rmg/RMG-Py/myrmgfiles" -it reactionmechanismgenerator/rmg:3.3.0`` This command will make the folder ``C:\Users\rmguser\myrmgfiles`` on your computer accessible from inside the container to easily edit and transfer input and output files. Change the path to match your individual computer. If the folder does not exist when the command is run, it will be created. - If you want to use jupyter notebook inside the docker container, run ``docker run --name rmgcontainer -v "C:\Users\rmguser\myrmgfiles:/rmg/RMG-Py/myrmgfiles" -it -p 8888:8888 reactionmechanismgenerator/rmg:3.1.1`` instead. + If you want to use jupyter notebook inside the docker container, run ``docker run --name rmgcontainer -v "C:\Users\rmguser\myrmgfiles:/rmg/RMG-Py/myrmgfiles" -it -p 8888:8888 reactionmechanismgenerator/rmg:3.3.0`` instead. And you can start the jupyter notebook by running ``jupyter notebook --ip 0.0.0.0 --no-browser --allow-root`` inside the container. Then you can access the jupyter notebook from your browser by going to ``http://localhost:8888``. You may need to copy and paste the token from the terminal into the browser to access the notebook. @@ -39,6 +39,12 @@ For users unfamiliar with bash or Linux, we recommend looking at `Terminal vs File Manager `_, and `Must Know Linux/Unix Commands `_. +.. NOTE:: + The docker instructions above which specify ``rmg:3.3.0`` are for the version 3.3.0 release of RMG-Py (July 2025), the user guide for which is archived in a `4mb PDF here `_. + If you want to use the latest development version, which corresponds to the user guide you are reading online `on the RMG website `_, you can replace the version number in the docker pull command with "latest" or omit it entirely. + For example, you can run ``docker pull reactionmechanismgenerator/rmg:latest`` or ``docker pull reactionmechanismgenerator/rmg`` to get the latest development version corresponding to `the main branch `_. + Be sure to also change the version number in the docker run commands to match the version you pulled. + A full list of available docker images can be found at `Docker Hub `_. Alternative Install: Binary Installation Using Anaconda =========================================================== @@ -46,20 +52,20 @@ Alternative Install: Binary Installation Using Anaconda If you are accustomed to using the Anaconda package manager or cannot tolerate the storage overhead of Docker, installation from conda is also available. This is recommended for users who want to use RMG out of the box and are not interested in changing the RMG code or making many additions to RMG's thermodynamic and kinetics databases. If this does interest you, please see the Developer Install below. - + .. toctree:: :maxdepth: 1 - - anacondaUser + anacondaUser Developer Install: Installation from Source =========================================================== -RMG-Py can now be built by source using the Anaconda Python Platform to assist in installing -all necessary dependencies. This is recommended for a developer who may be altering the RMG source code -or someone who expects to manipulate the databases extensively. You will also be able to access the latest -source code updates and patches through Github. +RMG-Py can be built from source using the Anaconda Python Platform to assist in installing all necessary dependencies. +This is recommended for a developer who may be altering the RMG source code or someone who expects to manipulate the databases extensively. +You will also be able to access the latest source code updates and patches through Github. +It is also currently the only option to avoid the storage and memory overhead of Docker. +Installation by Conda without compiling from source is limited to `older versions of RMG-Py `_ and is not currently recommended (but would follow instructions below if you needed). .. toctree:: :maxdepth: 1 diff --git a/documentation/source/users/rmg/installation/linux.rst b/documentation/source/users/rmg/installation/linux.rst index 47aa8fded10..ba6567b2ef6 100644 --- a/documentation/source/users/rmg/installation/linux.rst +++ b/documentation/source/users/rmg/installation/linux.rst @@ -16,7 +16,7 @@ The instructions listed below were written for Ubuntu 12.04 and should generally sudo apt-get install git g++ gfortran python-dev liblapack-dev sudo apt-get install python-openbabel python-setuptools python-pip -* After creating a `Github account `_, generate your public key: :: +* After creating a `Github account `_, generate your public key: :: cd ~; ssh-keygen # press enter to save to the default directory # create a password if desired diff --git a/documentation/source/users/rmg/installation/linuxSubsystem.rst b/documentation/source/users/rmg/installation/linuxSubsystem.rst index 2f49fdc99d8..118e9bf855c 100644 --- a/documentation/source/users/rmg/installation/linuxSubsystem.rst +++ b/documentation/source/users/rmg/installation/linuxSubsystem.rst @@ -14,13 +14,13 @@ Installing the Linux Subsystem =================================== 1. Follow the instructions provided by Microsoft to install the Linux subsystem, available `here - `_. The basic steps include enabling the Windows Linux + `_. The basic steps include enabling the Windows Linux subsystem from a powershell **run as an administrator**, and downloading the latest LTS version of Ubuntu *from the Windows store*. We recommend Ubuntu (for which these instructions were made) over the other Linux distributions. 2. Once the Linux subsystem is installed, open a web browser in Windows and go to the - `Anaconda Python Platform Downloads Page `_. Go to the tab for the + `Anaconda Python Platform Downloads Page `_. Go to the tab for the **Linux Installer**, and **right click** on the download icon for Python to copy the link location. Open an Ubuntu terminal (type in ``Ubuntu`` into the Windows search bar if you are unsure where to find it) and paste the link into the terminal immediately after typing the ``wget`` command, so that your terminal looks like the following: :: diff --git a/documentation/source/users/rmg/installation/macos.rst b/documentation/source/users/rmg/installation/macos.rst index 1212f096a92..261dfba0957 100644 --- a/documentation/source/users/rmg/installation/macos.rst +++ b/documentation/source/users/rmg/installation/macos.rst @@ -30,7 +30,7 @@ homebrew-python (which used to be at ``https://github.com/Homebrew/homebrew-pyth brew update brew install git -* Optional (but recommended for Nitrogen-chemistry nomenclature): install `OpenBabel `_:: +* Optional (but recommended for Nitrogen-chemistry nomenclature): install `OpenBabel `_:: brew install open-babel --with-python --HEAD @@ -102,4 +102,4 @@ homebrew-python (which used to be at ``https://github.com/Homebrew/homebrew-pyth make eg2 To run with on-the-fly Quantum Mechanics calculations, you will also need to install -`MOPAC `_ or `Gaussian `_, then run `make QM`. +`MOPAC `_ or `Gaussian `_, then run `make QM`. diff --git a/documentation/source/users/rmg/installation/updatingSourceCode.rst b/documentation/source/users/rmg/installation/updatingSourceCode.rst index 0ac84e08353..0f0cf6ad4fb 100644 --- a/documentation/source/users/rmg/installation/updatingSourceCode.rst +++ b/documentation/source/users/rmg/installation/updatingSourceCode.rst @@ -32,8 +32,8 @@ We also recommend that the RMS julia package is updated:: julia -e 'using Pkg; Pkg.update("ReactionMechanismSimulator")' For more information about how to use the Git workflow to make changes to the source code, please -refer to the handy `Git Tutorial `_ +refer to the handy `Git Tutorial `_ For information on updating your local repository from ``https`` to ``ssh``, please see `Managing remote repositories -`_ +`_ diff --git a/documentation/source/users/rmg/installation/virtualMachineSetup.rst b/documentation/source/users/rmg/installation/virtualMachineSetup.rst index 5377ddc5c8c..130b6d47a7a 100644 --- a/documentation/source/users/rmg/installation/virtualMachineSetup.rst +++ b/documentation/source/users/rmg/installation/virtualMachineSetup.rst @@ -16,10 +16,7 @@ Windows 8/10. Click on the ``Performance`` tab--from here you can see if virtual .. image:: images/Virtualization_Enabled.png :align: center - -For Windows 7 or earlier you can download and run -`Microsoft's Virtualization Detection Tool `_. - +| If enabled, you can continue on with installing a virtual machine on your PC. If virtualization is currently disabled, though, you will have to enable this from the BIOS setting on your computer. How to do this varies from PC to PC (we recommend doing a quick google search for your make/model, as there are many instructions for this online), but the @@ -50,7 +47,7 @@ popular Linux distributions out there, with plenty of support available online. any other Linux distribution you like (see `Linux DistroWatch`_). .. _Linux DistroWatch: https://distrowatch.com/ -.. _Ubuntu: https://ubuntu.com/#download +.. _Ubuntu: https://ubuntu.com/#download-ubuntu 1. Go to the Ubuntu_ website and click on the download link for 18.04 LTS (Desktop, not Server). Note that newer versions of Ubuntu might be available, but we recommend downloading only the LTS (long term support) versions. Note that @@ -71,7 +68,7 @@ and `Oracle VirtualBox`_. VMware Workstation Pro is the recommended choice, thou access to it (since it is not free). If not, VirtualBox (which is free) runs well and will work just as fine. Use the hyperlinks below to jump ahead to the setup instructions for the virtual machine software of your choice. -.. _VMware Workstation Pro: https://my.vmware.com/en/web/vmware/info/slug/desktop_end_user_computing/vmware_workstation_pro/15_0 +.. _VMware Workstation Pro: https://knowledge.broadcom.com/external/article/315638/download-and-install-vmware-fusion.html .. _Oracle VirtualBox: https://www.virtualbox.org/wiki/Downloads diff --git a/documentation/source/users/rmg/introduction.rst b/documentation/source/users/rmg/introduction.rst index fcad088b9f7..9757151da05 100644 --- a/documentation/source/users/rmg/introduction.rst +++ b/documentation/source/users/rmg/introduction.rst @@ -11,7 +11,7 @@ This version is written in Python, and called RMG-Py. License ======= -RMG is an open source program, available to the general public free of charge. The primary RMG code is distributed under the terms of the `MIT/X11 License `_. However, RMG has a number of dependencies of various licenses, some of which may be more restrictive. **It is the user's responsibility to ensure these licenses have been obtained.** +RMG is an open source program, available to the general public free of charge. The primary RMG code is distributed under the terms of the `MIT/X11 License `_. However, RMG has a number of dependencies of various licenses, some of which may be more restrictive. **It is the user's responsibility to ensure these licenses have been obtained.** .. literalinclude:: ../../../../LICENSE.txt :language: none diff --git a/documentation/source/users/rmg/kinetics.rst b/documentation/source/users/rmg/kinetics.rst index d6ca9cdeefc..f13125cea93 100644 --- a/documentation/source/users/rmg/kinetics.rst +++ b/documentation/source/users/rmg/kinetics.rst @@ -6,6 +6,8 @@ Kinetics Estimation This section gives in-depth descriptions of algorithms used for determining kinetic parameters. For general usage of the kinetic database see :ref:`kineticsDatabase`. + + Priority of Kinetic Databases ----------------------------- When multiple sources are available for kinetic parameters, the following priority @@ -40,38 +42,36 @@ parameters +-------+--------------------------------------------------------------------------------------+ |Rank 8 |B3LYP & lower DFT (rotors if necessary) | +-------+--------------------------------------------------------------------------------------+ -|Rank 9 |Group Additivity | +|Rank 9 |Direct Estimate/Guess | +-------+--------------------------------------------------------------------------------------+ -|Rank 10|Direct Estimate/Guess | -+-------+--------------------------------------------------------------------------------------+ -|Rank 11|Average of Rates | +|Rank 10|Average of Rates | +-------+--------------------------------------------------------------------------------------+ |Rank 0 |General Estimate (Never used in generation) | +-------+--------------------------------------------------------------------------------------+ The rank of 0 is assigned to kinetics that are generally default values for top level nodes that we have little faith in. It is never used in generation and its value will in fact be overriden -by averages of its child nodes, which generates an averaged rate rule with rank 11. +by averages of its child nodes, which generates an averaged rate rule with rank 10. Only non-zero rules are used in generation. A rank of 1 is assigned to the most trustworthy kinetics, while a rank of 10 is considered very poor. Thus, a rate rule of rank 3 will be given priority over a rate rule of rank 5. -Short Glossary: +**Short Glossary:** -FCI (Full Configuration Interaction): Exact solution to Schrodinger equation within the chosen basis +**FCI (Full Configuration Interaction):** Exact solution to Schrodinger equation within the chosen basis set and Born-Oppenheimer approximation; possible for about 12 electrons with reasonably sized basis set (cost grows factorially with number of electrons). -Wn (Weizmann-n): Composite methods often with sub-kJ/mol accuracies; W1 is possible for about 9 heavy +**Wn (Weizmann-n):** Composite methods often with sub-kJ/mol accuracies; W1 is possible for about 9 heavy atoms; W1 aims to reproduce CCSD(T)/CBS; W4 aims to reproduce CCSDTQ5/CBS. -HEAT (High Accuracy Extrapolated ab inito thermochemistry): Sub-kJ/mol accuracies; essentially +**HEAT (High Accuracy Extrapolated ab inito thermochemistry):** Sub-kJ/mol accuracies; essentially CCSDTQ with various corrections; similar in cost to Wn. -CBS (Complete Basis Set): Typically obtained by extrapolating to the complete basis set limit, +**CBS (Complete Basis Set):** Typically obtained by extrapolating to the complete basis set limit, i.e., successive cc-pVDZ, cc-pVTZ, cc-pVQZ, etc. calculations with some extrapolation formula. -CCSD(T)-F12: Coupled cluster with explicit electron correlation; chemical accuracy (1 kcal/mol) +**CCSD(T)-F12:** Coupled cluster with explicit electron correlation; chemical accuracy (1 kcal/mol) possible with double-zeta basis sets. Kinetic Families @@ -113,5 +113,28 @@ average for :math:`A` is a geometric mean, while the average for :math:`n`, If there are still no "sibling" kinetics, then the groups will continue to fall up to more and more general nodes. In the worst case, the root nodes may be used. +Kinetic averaging takes into account the nodal distances (the distance between a child node and its parent). +By default, the nodal distance is 1, but custom values can be specified within a ``group.py`` file, in order of +ascending precedence: either in a list of values for each tree e.g. ``treeDistances = [1,2,5]``, +or directly assigned to an entry in the group definition e.g. ``Entry(... nodalDistance=5, )``. +This may be desired in special cases where one or more child nodes matches the family but has very different +kinetics, leading to poor overall tree estimates. + A :ref:`Full List of the Kinetics Families ` in RMG is available. +Reverse Rates +------------- +Rates in the reverse direction are calculated from the forward rate (as defined by the family) +and the equilibrium constant (as calculated from thermodynamic parameters). + +Reaction Comments +----------------- +Reaction comments are saved by RMG to the ``chem_annotated.inp`` Chemkin input file. +These comments contain information about the source of the reaction rate and are read by RMG when +loading the Chemkin file. These comments are compiled from many different locations in the code. + +Comments attached to the kinetics attribute of the entry used are included first. +These can occur if there is a comment hard-coded in the kinetics database, or if the rate rule was +derived from a training reaction, in which case ``From Training reaction # for rate rule ##`` +is automatically added. Then, comments describing the match are added based on the details of +how the kinetics were estiamted. Finally, additional metadata about the reaction type are included. diff --git a/documentation/source/users/rmg/modules/convertFAME.rst b/documentation/source/users/rmg/modules/convertFAME.rst deleted file mode 100644 index f709206826b..00000000000 --- a/documentation/source/users/rmg/modules/convertFAME.rst +++ /dev/null @@ -1,29 +0,0 @@ -.. _convertFAME: - -*********************************** -Convert FAME to Arkane Input File -*********************************** - -This module is utilized to convert FAME file types (used in RMG-Java) to Arkane (formerly called CanTherm) objects -(used in RMG-Py) for pressure dependent calculations. - -FAME is an early version of the pdep code in Arkane, and it is written in Fortran and used by RMG-Java. -This script enables importing FAME input files into Arkane. Note that it is mostly designed to load the FAME input files -generated automatically by RMG-Java, and may not load hand-crafted FAME input files. If you specify a `moleculeDict`, -then this script will use it to associate the species with their structures. :: - - python convertFAME.py fame_object - -where ``fame_object`` is the FAME file used to be converted into the Arkane object. - -Some additional options involve adding an RMG dictionary to process with the file. The syntax for this is :: - - python convertFAME.py -d RMG_dictionary.txt fame_object - -where ``RMG_dictionary.txt`` is the dictionary to process with the file. - -A max energy cuttoff is also possible when converting the file formats. :: - - python convertFAME.py -d RMG_dictionary.txt -x value units value units fame_object - -where ``value`` represents the max energy amount and ``units`` represents its units diff --git a/documentation/source/users/rmg/modules/generateFluxDiagram.rst b/documentation/source/users/rmg/modules/generateFluxDiagram.rst index d4d7c1bc078..4fc19f04288 100644 --- a/documentation/source/users/rmg/modules/generateFluxDiagram.rst +++ b/documentation/source/users/rmg/modules/generateFluxDiagram.rst @@ -10,7 +10,7 @@ that shows interconnected arrows between species that represent fluxes. To use this method, you just need a Chemkin input file and an RMG species dictionary. The syntax is as follows:: - python generateFluxDiagram.py [-h] [--java] [--no-dlim] [-s SPECIES] [-f] + python generateFluxDiagram.py [-h] [--no-dlim] [-s SPECIES] [-f] [-n N] [-e N] [-c TOL] [-r TOL] [-t S] INPUT CHEMKIN DICTIONARY [CHEMKIN_OUTPUT] @@ -24,7 +24,6 @@ Positional arguments:: Optional arguments:: -h, --help show this help message and exit - --java process RMG-Java model --no-dlim Turn off diffusion-limited rates -s DIR, --species DIR Path to folder containing species images -f, --foreign Not an RMG generated Chemkin file (will be checked for duplicates) diff --git a/documentation/source/users/rmg/modules/index.rst b/documentation/source/users/rmg/modules/index.rst index 5db2c622c3a..3bb8d7c2007 100644 --- a/documentation/source/users/rmg/modules/index.rst +++ b/documentation/source/users/rmg/modules/index.rst @@ -18,7 +18,6 @@ otherwise. simulate generateFluxDiagram thermoEstimation - convertFAME databaseScripts standardizeModelSpeciesNames isotopes diff --git a/documentation/source/users/rmg/releaseNotes.rst b/documentation/source/users/rmg/releaseNotes.rst index 82c9fbf24a4..c0702736a96 100644 --- a/documentation/source/users/rmg/releaseNotes.rst +++ b/documentation/source/users/rmg/releaseNotes.rst @@ -4,6 +4,52 @@ Release Notes ************* +RMG-Py Version 3.3.0 +==================== +Date: July 10, 2025 + +The below list is a summary. For a complete list of all changes, see the `Official Release Page `_. + +- Software Improvements + - RMG-Py now uses Python 3.9 + - RMS and Julia are now optional when running RMG + - Avoid using proprietary channels with conda + - Deploy RMG on Conda and Docker on a continuing basis + - Improved documentation build procedure + - Testing system overhauled, including automated regression testing and a new testing framework (pytest) + - Deprecated conda packages have been replaced with their official versions + +- Bug Fixes + - cclib incompatibility fixes + - Logical short circuits in object comparisons + +- New Features + - Electrochemistry with Lithium + - Automated Fragment Modeling + - Surface Reactions and Catalysis functionality + - Parses for new methods and software + +RMG-Database Version 3.3.0 +========================== +Date: July 10, 2025 + +The below list is a summary. For a complete list of all changes, see the `Official Release Page `_. + +- Features + - Electrochemistry with Lithium + - AECs and BACs + - New families and update autogenerated families + - New and updated data for nitrogen combustion, surface catalysis, and others + +- Bugfixes + - Duplicates removed + - Accidental infinite loops resolved + - Critical Pressure Estimation bug resolved + +- Miscellaneous + - Continuous integration updated to use RMG-Py testing + - Conda recipe updated for ease of use + RMG-Py Version 3.2.0 ==================== Date: August 2, 2023 diff --git a/documentation/source/users/rmg/running.rst b/documentation/source/users/rmg/running.rst index 0bb21b80a6e..0755c6199e7 100755 --- a/documentation/source/users/rmg/running.rst +++ b/documentation/source/users/rmg/running.rst @@ -10,7 +10,7 @@ Running a basic RMG job is straightforward, as shown in the example below. Howev Basic run:: - python-jl rmg.py input.py + python rmg.py input.py .. _inputflags: @@ -19,7 +19,7 @@ Input flags The options for input flags can be found in ``/RMG-Py/rmgpy/util.py``. Running :: - python-jl rmg.py -h + python rmg.py -h at the command line will print the documentation from ``util.py``, which is reproduced below for convenience:: @@ -63,23 +63,23 @@ Some representative example usages are shown below. Run by restarting from a seed mechanism:: - python-jl rmg.py -r path/to/seed/ input.py + python rmg.py -r path/to/seed/ input.py Run with CPU time profiling:: - python-jl rmg.py -p input.py + python rmg.py -p input.py Run with multiprocessing for reaction generation and QMTP:: - python-jl rmg.py -n input.py + python rmg.py -n input.py Run with setting a limit on the maximum execution time:: - python-jl rmg.py -t input.py + python rmg.py -t input.py Run with setting a limit on the maximum number of iterations:: - python-jl rmg.py -i input.py + python rmg.py -i input.py Details on the multiprocessing implementation @@ -91,16 +91,46 @@ Currently, multiprocessing is implemented for reaction generation and the genera Details on profiling RMG jobs ----------------------------- -Here, we explain how to profile an RMG job. For starters, use the ``saveSeedModulus`` option in the input file, as described in the Section :ref:`Miscellaneous Options `, to save the seed mechanism at regular intervals, perhaps every 50 or 100 iterations depending on the size of the mechanism. This option is particularly important for saving intermediate steps when working with large mechanisms; it may be prudent to save and examine how the chemistry changes over mechanism development rather than just obtaining the final seed mechanism. +Here, we explain how to profile an RMG job. For starters, use the ``saveSeedModulus`` option in the input file, as described +in the Section :ref:`Miscellaneous Options `, to save the seed mechanism at regular intervals, +perhaps every 50 or 100 iterations depending on the size of the mechanism. This option is particularly important for saving +intermediate steps when working with large mechanisms; it may be prudent to save and examine how the chemistry changes over +mechanism development rather than just obtaining the final seed mechanism. These seeds can then be restarted with use of the ``-r`` flag, as described in the Section :ref:`Input Flags ` above. Additionally, restarting these seeds with the ``-i`` flag allows examination of how computational effort, time spent in each module, individual processor memory consumption if using the the ``-n`` flag, and overall memory consumption change over the course of mechanism development. To time profile, one could use:: rmg.py -r /seed -p -i 15 restart_from_seed.py -such that 15 iterations was arbitrarily chosen as a representative sample size to obtain profiling information. To run memory profiling, one option is to install a `python memory profiler `_ as an additional dependency. As detailed in their linked GitHub, there are options for line-by-line memory usage of small functions and for time-based memory usage. +such that 15 iterations was arbitrarily chosen as a representative sample size to obtain profiling information. +To run memory profiling, one option is to install a `python memory profiler `_ as +an additional dependency. As detailed in their linked GitHub, there are options for line-by-line memory usage of small functions +and for time-based memory usage. An example of memory profiling is:: mprof run --multiprocess rmg.py -r /seed -i 15 -n 3 restart_from_seed.py -such that this example demonstrates how to obtain memory consumption for each of three specified processes and again use 15 iterations to obtain representative profiling information. Please see the linked GitHub to learn more about how the memory profiler tool can help characterize your process. +such that this example demonstrates how to obtain memory consumption for each of three specified processes +and again use 15 iterations to obtain representative profiling information. Please see the linked GitHub to +learn more about how the memory profiler tool can help characterize your process. + + +Logging +-------- +As RMG runs, it will continuously log information as the run progresses. By default, this will include +input file information, databases loaded, kinetic rate rules used, thermo estimation, model enlargment details, +reaction simulation (to see if termination criteria are met), and (after several iterations) final mechanism +details, execution time, and memory usage. + +The logged information can be controlled by +specifying one of the optional arguments: + +``-q`` or ``--quiet``: Only warnings and errors are printed, but not saved in ``RMG.log``. + +``-v`` or ``--verbose``: Includes much more information about which kinetic families and rules are used. +Also includes details about new species and new template reactions before estimating thermo of new created species +after model enlargment. + +``-d`` or ``--debug``: In addition to ``--verbose`` info, also provides information about how to find the specific kinetics groups +when they are loaded. + diff --git a/documentation/source/users/rmg/species.rst b/documentation/source/users/rmg/species.rst index fccd09b9c34..8ae5e640fa0 100644 --- a/documentation/source/users/rmg/species.rst +++ b/documentation/source/users/rmg/species.rst @@ -4,9 +4,29 @@ Species Representation ********************** -Species objects in RMG contain a variety of attributes, including user given names, -thermochemistry, as well as structural isomers. See the :ref:`rmgpy.species.Species` class -documentation for more information. +The base class for chemical structures in RMG is ``Graph`` (see :ref:`rmgpy.molecule.graph.Graph`), +which is a basic implementation of a 2D mathematical graph. +A graph is comprised of a set of vertices connected by a set of edges. +In RMG, the Graph class does not store any chemical information on its own, +but it is the parent class of Group and Molecule. + +The ``Group`` class is used to represent a molecular fragment, whereas the ``Molecule`` class +is used to represent a specific molecular structure. +A ``Group`` object can have a list of allowed specifications for each atom or bond property, +while a ``Molecule`` object can only have one. Additionally, a ``Group`` object does not +have to have a complete molecule while a Molecule object must be a full chemical structure. +See the :ref:`rmgpy.molecule.Group` and :ref:`rmgpy.molecule.Molecule` class documentation. + +Finally, there is the ``Species`` class. Although colloquially we use molecules and species +interchangeably, these terms have precise meanings in RMG. +A ``Species`` object contains a list of molecule objects which are different representations of +the same chemical compound (i.e., resonance structures). +It also contains a descriptive label for the species, its thermochemical properties, transport data, +and molecular weight, among other information. This distinction is important because many chemical +compounds have resonance structures. Therefore, a ``Molecule`` object is a graph that denotes the structure +of a specific resonance isomer, while a ``Species`` incorporates all resonance structures found into one object. +This prevents duplicate reactions from being generated for two molecule objects that are really the same chemical compound. +See the :ref:`rmgpy.species.Species` class documentation for more information. RMG considers each species to be unique, and comprised of a set of molecular structural isomers, including resonance isomers. RMG uses the list of resonance isomers to diff --git a/documentation/source/users/rmg/surfaces.rst b/documentation/source/users/rmg/surfaces.rst index 1b6e7557076..8cbd8f02bf9 100644 --- a/documentation/source/users/rmg/surfaces.rst +++ b/documentation/source/users/rmg/surfaces.rst @@ -30,7 +30,7 @@ The full database of available metals can be found in ``input/surface/libraries/ Here is an example catalyst properties block for Pt(111):: catalystProperties( - metal = Pt111 + metal = "Pt111" ) Here is an example custom catalyst properties block for Pt(111):: @@ -340,7 +340,7 @@ input file specifications Coverage dependent parameters are applied if the "coverage_dependence" attribute is set to "True" in the catalyst properties block:: catalystProperties( - metal = Pt111 + metal = "Pt111" coverageDependence=True, ) diff --git a/documentation/source/users/rmg/thermo.rst b/documentation/source/users/rmg/thermo.rst index b566ed48a45..b3f45cda8ef 100644 --- a/documentation/source/users/rmg/thermo.rst +++ b/documentation/source/users/rmg/thermo.rst @@ -154,7 +154,7 @@ On-the-fly Quantum-chemical calculation of Thermochemical Properties (QMTP) =========================================================================== An interface for performing on-the-fly quantum and force field calculations has been developed and integrated into RMG to complement the species thermochemistry databases and -group contribution methods [Magoon and Green]_. This interface is particularly interesting for the estimation of +group contribution methods [MagoonAndGreen]_. This interface is particularly interesting for the estimation of thermochemistry of molecules that are not present in one of the species thermochemistry databases, and which cannot be estimated with sufficient accuracy using the Benson group additivity framework. This pertains specifically to polycyclic fused ring containing species, whose ring strain cannot be modeled using @@ -283,11 +283,11 @@ References .. [Lay1995] Lay, T.; Bozzelli, J.; Dean, A.; Ritter, E. J. Phys. Chem. 1995, 99,14514-14527 -.. [Magoon and Green] Magoon, Gregory R., and William H. Green. "Design and implementation of a next-generation software interface for on-the-fly quantum and force field calculations in automated reaction mechanism generation." Computers & Chemical Engineering 52 (2013): 35-45. +.. [MagoonAndGreen] Magoon, Gregory R., and William H. Green. "Design and implementation of a next-generation software interface for on-the-fly quantum and force field calculations in automated reaction mechanism generation." Computers & Chemical Engineering 52 (2013): 35-45. .. [Allinger] Allinger, N. L., & Lii, J.-H. (2008). MM4(2008) and MM4(2003). -.. [Patchkovskii] Patchkovskii, S. (2003). SYMMETRY, originally from ``http://www.cobalt.chem.ucalgary.ca/ps/symmetry/`` now mirrored at https://github.com/nquesada/symmetry. +.. [Patchkovskii] Patchkovskii, S. (2003). SYMMETRY, originally from ``https://www.cobalt.chem.ucalgary.ca/ps/symmetry/`` now mirrored at https://github.com/nquesada/symmetry. .. [Yu] "Estimation method for the thermochemical properties of polycyclic aromatic molecules" (Ph.D), Joanna Yu, M.I.T (2005) diff --git a/environment.yml b/environment.yml index f1c805a9796..591acb91a51 100644 --- a/environment.yml +++ b/environment.yml @@ -14,89 +14,89 @@ # Changelog: # - May 15, 2023 Added this changelog, added inline documentation, # made dependency list more explicit (@JacksonBurns). +# - October 16, 2023 Switched RDKit and descripatastorus to conda-forge, +# moved diffeqpy to pip and (temporarily) removed chemprop +# - April 17, 2024 Limit versions of cclib at advice of maintainers. +# - August 4, 2024 Restricted pyrms to <2 +# - May 14, 2024 Removed diffeqpy by switching to call SciMLBase and Sundials using JuliaCall +# - March 15, 2024 - started migration to Python 3.9 +# - April 14, 2025 Removed Julia dependencies, now considered optional # name: rmg_env channels: - - defaults - - rmg - conda-forge - - cantera + - rmg dependencies: # System-level dependencies - we could install these at the OS level # but by installing them in the conda environment we get better control - - cairo - - cairocffi - - ffmpeg - - xlrd - - xlwt - - h5py - - graphviz - - markupsafe - - psutil + - conda-forge::cairo + - conda-forge::cairocffi + - conda-forge::ffmpeg >= 7 + - conda-forge::xlrd + - conda-forge::xlwt + - conda-forge::h5py + - conda-forge::graphviz >=12 + - conda-forge::markupsafe + - conda-forge::psutil # conda-forge not default, since default has a version information bug # (see https://github.com/ReactionMechanismGenerator/RMG-Py/pull/2421) - conda-forge::ncurses - conda-forge::suitesparse + # see https://github.com/ReactionMechanismGenerator/RMG-Py/issues/2750 + - conda-forge::graphviz + # ThermoCentralDatabaseInterface fails if pyopenssl is too old. 20 is just a guess at the version number. + - conda-forge::pyopenssl >20 # external software tools for chemistry - - coolprop - - cantera::cantera=2.6 + - conda-forge::coolprop + - conda-forge::cantera =2.6 - conda-forge::mopac - - conda-forge::cclib >=1.6.3 + # see https://github.com/ReactionMechanismGenerator/RMG-Py/pull/2639#issuecomment-2050292972 + - conda-forge::cclib >=1.6.3,<1.9 - conda-forge::openbabel >= 3 - -# general-purpose external software tools - - conda-forge::julia>=1.8.5,!=1.9.0 - - conda-forge::pyjulia >=0.6 + - conda-forge::rdkit >=2022.09.1 # Python tools - - python >=3.7 - - coverage - - cython >=0.25.2 - - scikit-learn - - scipy - - numpy >=1.10.0 - - pydot - - jinja2 - - jupyter - - pymongo - - pyparsing - - pyyaml - - networkx - - nose - - matplotlib >=1.5 - - mpmath - - pandas + - conda-forge::python >=3.9 # leave as GEQ so that GitHub actions can add EQ w/o breaking (contradictory deps) + - conda-forge::setuptools <80 + - conda-forge::coverage + - conda-forge::cython >=0.25.2,<3.1 + - conda-forge::scikit-learn + - conda-forge::scipy >=1.9 + - conda-forge::numpy >=1.10.0,<2 + - conda-forge::pydot + - conda-forge::jinja2 + - conda-forge::jupyter + - conda-forge::pymongo + - conda-forge::pyparsing + - conda-forge::pyyaml + - conda-forge::networkx + - conda-forge::pytest + - conda-forge::pytest-cov + - conda-forge::pytest-check + - conda-forge::pyutilib + - conda-forge::matplotlib >=1.5 + - conda-forge::mpmath + - conda-forge::pandas + - conda-forge::gprof2dot + - conda-forge::numdifftools + # bug in quantities, see: + # https://github.com/ReactionMechanismGenerator/RMG-Py/pull/2694#issuecomment-2489286263 + - conda-forge::quantities !=0.16.0,!=0.16.1 + - conda-forge::ringdecomposerlib-python # packages we maintain - - rmg::gprof2dot - - rmg::lpsolve55 - - rmg::muq2 - - rmg::numdifftools - rmg::pydas >=1.0.3 - rmg::pydqed >=1.0.3 - - rmg::pyrdl - - rmg::pyrms - - rmg::quantities - rmg::symmetry -# packages we would like to stop maintaining (and why) - - rmg::diffeqpy - # we should use the official verison https://github.com/SciML/diffeqpy), - # rather than ours (which is only made so that we can get it from conda) - # It is only on pip, so we will need to do something like: - # https://stackoverflow.com/a/35245610 - - - rmg::chemprop - # Our build of this is version 0.0.1 (!!) and we are using parts - # of the API that are now gone. Need a serious PR to fix this. - - - rmg::rdkit >=2020.03.3.0 - # We should use the official channel, not sure how difficult this - # change will be. +# configure packages to use OpenBLAS instead of Intel MKL + - blas=*=openblas -# conda mutex metapackage - - nomkl +# optional dependencies for using ReactionMechanismSimulator +# remove the leading '#' to install the required dependencies +# or simply run `install_rms.sh` which will handle this for you + # - conda-forge::pyjuliacall # additional packages that are required, but not specified here (and why) # pydqed, pydas, mopac, and likely others require a fortran compiler (specifically gfortran) diff --git a/examples/arkane/networks/CH2NH2/input.py b/examples/arkane/networks/CH2NH2_mse/input.py similarity index 100% rename from examples/arkane/networks/CH2NH2/input.py rename to examples/arkane/networks/CH2NH2_mse/input.py diff --git a/examples/arkane/networks/CH2NH2/yaml_files/CH2NH.yml b/examples/arkane/networks/CH2NH2_mse/yaml_files/CH2NH.yml similarity index 100% rename from examples/arkane/networks/CH2NH2/yaml_files/CH2NH.yml rename to examples/arkane/networks/CH2NH2_mse/yaml_files/CH2NH.yml diff --git a/examples/arkane/networks/CH2NH2/yaml_files/CH2NH2.yml b/examples/arkane/networks/CH2NH2_mse/yaml_files/CH2NH2.yml similarity index 100% rename from examples/arkane/networks/CH2NH2/yaml_files/CH2NH2.yml rename to examples/arkane/networks/CH2NH2_mse/yaml_files/CH2NH2.yml diff --git a/examples/arkane/networks/CH2NH2/yaml_files/CH2NH_to_CH2NH2.yml b/examples/arkane/networks/CH2NH2_mse/yaml_files/CH2NH_to_CH2NH2.yml similarity index 100% rename from examples/arkane/networks/CH2NH2/yaml_files/CH2NH_to_CH2NH2.yml rename to examples/arkane/networks/CH2NH2_mse/yaml_files/CH2NH_to_CH2NH2.yml diff --git a/examples/arkane/networks/CH2NH2/yaml_files/CH2NH_to_CH3NH.yml b/examples/arkane/networks/CH2NH2_mse/yaml_files/CH2NH_to_CH3NH.yml similarity index 100% rename from examples/arkane/networks/CH2NH2/yaml_files/CH2NH_to_CH3NH.yml rename to examples/arkane/networks/CH2NH2_mse/yaml_files/CH2NH_to_CH3NH.yml diff --git a/examples/arkane/networks/CH2NH2/yaml_files/CH3NH.yml b/examples/arkane/networks/CH2NH2_mse/yaml_files/CH3NH.yml similarity index 100% rename from examples/arkane/networks/CH2NH2/yaml_files/CH3NH.yml rename to examples/arkane/networks/CH2NH2_mse/yaml_files/CH3NH.yml diff --git a/examples/arkane/networks/CH2NH2/yaml_files/CH3NH_to_CH2NH2.yml b/examples/arkane/networks/CH2NH2_mse/yaml_files/CH3NH_to_CH2NH2.yml similarity index 100% rename from examples/arkane/networks/CH2NH2/yaml_files/CH3NH_to_CH2NH2.yml rename to examples/arkane/networks/CH2NH2_mse/yaml_files/CH3NH_to_CH2NH2.yml diff --git a/examples/arkane/networks/CH2NH2/yaml_files/H.yml b/examples/arkane/networks/CH2NH2_mse/yaml_files/H.yml similarity index 100% rename from examples/arkane/networks/CH2NH2/yaml_files/H.yml rename to examples/arkane/networks/CH2NH2_mse/yaml_files/H.yml diff --git a/examples/arkane/networks/acetyl+O2/input.py b/examples/arkane/networks/acetyl+O2_cse/input.py similarity index 100% rename from examples/arkane/networks/acetyl+O2/input.py rename to examples/arkane/networks/acetyl+O2_cse/input.py diff --git a/examples/arkane/networks/acetyl+O2_rs/input.py b/examples/arkane/networks/acetyl+O2_rs/input.py new file mode 100644 index 00000000000..84a57961fa6 --- /dev/null +++ b/examples/arkane/networks/acetyl+O2_rs/input.py @@ -0,0 +1,284 @@ +################################################################################ +# +# Arkane input file for acetyl + O2 pressure-dependent reaction network +# +################################################################################ + +title = 'acetyl + oxygen' + +description = \ +""" +The chemically-activated reaction of acetyl with oxygen. This system is of +interest in atmospheric chemistry as a step in the conversion of acetaldehyde +to the secondary pollutant peroxyacetylnitrate (PAN); it is also potentially +important in the ignition chemistry of ethanol. +""" + +species( + label = 'acetylperoxy', + structure = SMILES('CC(=O)O[O]'), + E0 = (-34.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([54.2977,104.836,156.05],"amu*angstrom^2"), symmetry=1), + HarmonicOscillator(frequencies=([319.695,500.474,536.674,543.894,727.156,973.365,1037.77,1119.72,1181.55,1391.11,1449.53,1454.72,1870.51,3037.12,3096.93,3136.39],"cm^-1")), + HinderedRotor(inertia=(7.38359,"amu*angstrom^2"), symmetry=1, fourier=([[-1.95191,-11.8215,0.740041,-0.049118,-0.464522],[0.000227764,0.00410782,-0.000805364,-0.000548218,-0.000266277]],"kJ/mol")), + HinderedRotor(inertia=(2.94723,"amu*angstrom^2"), symmetry=3, fourier=([[0.130647,0.0401507,-2.54582,-0.0436065,-0.120982],[-0.000701659,-0.000989654,0.00783349,-0.00140978,-0.00145843]],"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + molecularWeight = (75.04,"g/mol"), + collisionModel = TransportData(sigma=(5.09,'angstrom'), epsilon=(473,'K')), + energyTransferModel = SingleExponentialDown( + alpha0 = (0.5718,'kcal/mol'), + T0 = (300,'K'), + n = 0.85, + ), +) + +species( + label = 'hydroperoxylvinoxy', + structure = SMILES('[CH2]C(=O)OO'), + E0 = (-32.4,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([44.8034,110.225,155.029],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([318.758,420.907,666.223,675.962,752.824,864.66,998.471,1019.54,1236.21,1437.91,1485.74,1687.9,3145.44,3262.88,3434.34],"cm^-1")), + HinderedRotor(inertia=(1.68464,"u*angstrom**2"), symmetry=2, fourier=([[0.359649,-16.1155,-0.593311,1.72918,0.256314],[-7.42981e-06,-0.000238057,3.29276e-05,-6.62608e-05,8.8443e-05]],"kJ/mol")), + HinderedRotor(inertia=(8.50433,"u*angstrom**2"), symmetry=1, fourier=([[-7.53504,-23.4471,-3.3974,-0.940593,-0.313674],[-4.58248,-2.47177,0.550012,1.03771,0.844226]],"kJ/mol")), + HinderedRotor(inertia=(0.803309,"u*angstrom**2"), symmetry=1, fourier=([[-8.65946,-3.97888,-1.13469,-0.402197,-0.145101],[4.41884e-05,4.83249e-05,1.30275e-05,-1.31353e-05,-6.66878e-06]],"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + molecularWeight = (75.04,"g/mol"), + collisionModel = TransportData(sigma=(5.09,'angstrom'), epsilon=(473,'K')), + energyTransferModel = SingleExponentialDown( + alpha0 = (0.5718,'kcal/mol'), + T0 = (300,'K'), + n = 0.85, + ), +) + +species( + label = 'acetyl', + structure = SMILES('C[C]=O'), + E0 = (0.0,'kcal/mol'), #(-20.5205,"kJ/mol") + modes = [ + IdealGasTranslation(mass=(43.05,"g/mol")), + NonlinearRotor(inertia=([5.94518,50.8166,53.6436],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([464.313,845.126,1010.54,1038.43,1343.54,1434.69,1442.25,1906.18,2985.46,3076.57,3079.46],"cm^-1")), + HinderedRotor(inertia=(1.61752,"u*angstrom**2"), symmetry=3, barrier=(2.00242,"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, +) + +species( + label = 'oxygen', + structure = SMILES('[O][O]'), + E0 = (0.0,'kcal/mol'), #(-5.74557,"kJ/mol") + modes = [ + IdealGasTranslation(mass=(32.00,"g/mol")), + LinearRotor(inertia=(11.6056,"u*angstrom**2"), symmetry=2), + HarmonicOscillator(frequencies=([1621.54],"cm^-1")), + ], + spinMultiplicity = 3, + opticalIsomers = 1, +) + +species( + label = 'ketene', + structure = SMILES('C=C=O'), + E0 = (-6.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(42.0106,"g/mol")), + NonlinearRotor(inertia=([1.76922,48.8411,50.6103],"u*angstrom**2"), symmetry=2), + HarmonicOscillator(frequencies=([441.622,548.317,592.155,981.379,1159.66,1399.86,2192.1,3150.02,3240.58],"cm^-1")), + ], + spinMultiplicity = 1, + opticalIsomers = 1, +) + +species( + label = 'lactone', + structure = SMILES('C1OC1(=O)'), + E0 = (-30.8,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(58.0055,"g/mol")), + NonlinearRotor(inertia=([20.1707,62.4381,79.1616],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([484.387,527.771,705.332,933.372,985.563,1050.26,1107.93,1176.43,1466.54,1985.09,3086.23,3186.46],"cm^-1")), + ], + spinMultiplicity = 1, + opticalIsomers = 1, +) + + + +species( + label = 'hydroxyl', + structure = SMILES('[OH]'), + E0 = (0.0,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(17.0027,"g/mol")), + LinearRotor(inertia=(0.899988,"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([3676.39],"cm^-1")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, +) + +species( + label = 'hydroperoxyl', + structure = SMILES('O[O]'), + E0 = (0.0,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(32.9977,"g/mol")), + NonlinearRotor(inertia=([0.811564,14.9434,15.755],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([1156.77,1424.28,3571.81],"cm^-1")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, +) + +species( + label = 'nitrogen', + structure = SMILES('N#N'), + molecularWeight = (28.04,"g/mol"), + collisionModel = TransportData(sigma=(3.70,'angstrom'), epsilon=(94.9,'K')), + reactive = False +) + +################################################################################ + +transitionState( + label = 'entrance1', + E0 = (0.0,'kcal/mol'), +) + +transitionState( + label = 'isom1', + E0 = (-5.8,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([49.3418,103.697,149.682],"u*angstrom**2"), symmetry=1, quantum=False), + HarmonicOscillator(frequencies=([148.551,306.791,484.573,536.709,599.366,675.538,832.594,918.413,1022.28,1031.45,1101.01,1130.05,1401.51,1701.26,1844.17,3078.6,3163.07],"cm^-1"), quantum=True), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency = (-1679.04,'cm^-1'), +) + +transitionState( + label = 'exit1', + E0 = (0.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([55.4256, 136.1886, 188.2442],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([59.9256,204.218,352.811,466.297,479.997,542.345,653.897,886.657,1017.91,1079.17,1250.02,1309.14,1370.36,1678.52,2162.41,3061.53,3135.55],"cm^-1")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency=(-1053.25,'cm^-1'), +) + +transitionState( + label = 'exit2', + E0 = (-4.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.0082,"g/mol"), quantum=False), + NonlinearRotor(inertia=([51.7432,119.373,171.117],"u*angstrom**2"), symmetry=1, quantum=False), + HarmonicOscillator(frequencies=([250.311,383.83,544.382,578.988,595.324,705.422,964.712,1103.25,1146.91,1415.98,1483.33,1983.79,3128,3143.84,3255.29],"cm^-1")), + HinderedRotor(inertia=(9.35921,"u*angstrom**2"), symmetry=1, fourier=([[-11.2387,-12.5928,-3.87844,1.13314,-0.358812],[-1.59863,-8.03329,-5.05235,3.13723,2.45989]],"kJ/mol")), + HinderedRotor(inertia=(0.754698,"u*angstrom**2"), symmetry=1, barrier=(47.7645,"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency=(-404.271,'cm^-1'), +) + +transitionState( + label = 'exit3', + E0 = (-7.2,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([53.2821, 120.4050, 170.1570],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([152.155,181.909,311.746,348.646,608.487,624.378,805.347,948.875,995.256,996.982,1169.1,1412.6,1834.83,3124.43,3245.2,3634.45],"cm^-1")), + HinderedRotor(inertia=(0.813269,"u*angstrom**2"), symmetry=1, fourier=([[-1.15338,-2.18664,-0.669531,-0.11502,-0.0512599],[0.00245222,0.0107485,0.00334564,-0.00165288,-0.0028674]],"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency=(-618.234,'cm^-1'), +) + +################################################################################ + +reaction( + label = 'entrance1', + reactants = ['acetyl', 'oxygen'], + products = ['acetylperoxy'], + transitionState = 'entrance1', + kinetics = Arrhenius(A=(2.65e6,'m^3/(mol*s)'), n=0.0, Ea=(0.0,'kcal/mol'), T0=(1,"K")), +) + +reaction( + label = 'isom1', + reactants = ['acetylperoxy'], + products = ['hydroperoxylvinoxy'], + transitionState = 'isom1', + tunneling = 'Eckart', +) + +reaction( + label = 'exit1', + reactants = ['acetylperoxy'], + products = ['ketene', 'hydroperoxyl'], + transitionState = 'exit1', + tunneling = 'Eckart', +) + +reaction( + label = 'exit2', + reactants = ['hydroperoxylvinoxy'], + products = ['ketene', 'hydroperoxyl'], + transitionState = 'exit2', + tunneling = 'Eckart', +) + +reaction( + label = 'exit3', + reactants = ['hydroperoxylvinoxy'], + products = ['lactone', 'hydroxyl'], + transitionState = 'exit3', + tunneling = 'Eckart', +) + +################################################################################# + +network( + label = 'acetyl + O2', + isomers = [ + 'acetylperoxy', + 'hydroperoxylvinoxy', + ], + reactants = [ + ('acetyl', 'oxygen'), + ('ketene', 'hydroperoxyl'), + ('lactone', 'hydroxyl') + ], + bathGas = { + 'nitrogen': 1.0, + } +) + +################################################################################# + +pressureDependence( + 'acetyl + O2', + Tmin=(300.0,'K'), Tmax=(2000.0,'K'), Tcount=8, + Pmin=(0.01,'bar'), Pmax=(100.0,'bar'), Pcount=5, + maximumGrainSize = (1.0,'kcal/mol'), + minimumGrainCount = 250, + method = 'reservoir state', + interpolationModel = ('chebyshev', 6, 4), + activeJRotor = True, +) diff --git a/examples/arkane/networks/acetyl+O2_sls/input.py b/examples/arkane/networks/acetyl+O2_sls/input.py new file mode 100644 index 00000000000..31b1c945c24 --- /dev/null +++ b/examples/arkane/networks/acetyl+O2_sls/input.py @@ -0,0 +1,286 @@ +################################################################################ +# +# Arkane input file for acetyl + O2 pressure-dependent reaction network +# +# uses method = 'simulation least squares' for PressureDependence +# +################################################################################ + +title = 'acetyl + oxygen' + +description = \ +""" +The chemically-activated reaction of acetyl with oxygen. This system is of +interest in atmospheric chemistry as a step in the conversion of acetaldehyde +to the secondary pollutant peroxyacetylnitrate (PAN); it is also potentially +important in the ignition chemistry of ethanol. +""" + +species( + label = 'acetylperoxy', + structure = SMILES('CC(=O)O[O]'), + E0 = (-34.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([54.2977,104.836,156.05],"amu*angstrom^2"), symmetry=1), + HarmonicOscillator(frequencies=([319.695,500.474,536.674,543.894,727.156,973.365,1037.77,1119.72,1181.55,1391.11,1449.53,1454.72,1870.51,3037.12,3096.93,3136.39],"cm^-1")), + HinderedRotor(inertia=(7.38359,"amu*angstrom^2"), symmetry=1, fourier=([[-1.95191,-11.8215,0.740041,-0.049118,-0.464522],[0.000227764,0.00410782,-0.000805364,-0.000548218,-0.000266277]],"kJ/mol")), + HinderedRotor(inertia=(2.94723,"amu*angstrom^2"), symmetry=3, fourier=([[0.130647,0.0401507,-2.54582,-0.0436065,-0.120982],[-0.000701659,-0.000989654,0.00783349,-0.00140978,-0.00145843]],"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + molecularWeight = (75.04,"g/mol"), + collisionModel = TransportData(sigma=(5.09,'angstrom'), epsilon=(473,'K')), + energyTransferModel = SingleExponentialDown( + alpha0 = (0.5718,'kcal/mol'), + T0 = (300,'K'), + n = 0.85, + ), +) + +species( + label = 'hydroperoxylvinoxy', + structure = SMILES('[CH2]C(=O)OO'), + E0 = (-32.4,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([44.8034,110.225,155.029],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([318.758,420.907,666.223,675.962,752.824,864.66,998.471,1019.54,1236.21,1437.91,1485.74,1687.9,3145.44,3262.88,3434.34],"cm^-1")), + HinderedRotor(inertia=(1.68464,"u*angstrom**2"), symmetry=2, fourier=([[0.359649,-16.1155,-0.593311,1.72918,0.256314],[-7.42981e-06,-0.000238057,3.29276e-05,-6.62608e-05,8.8443e-05]],"kJ/mol")), + HinderedRotor(inertia=(8.50433,"u*angstrom**2"), symmetry=1, fourier=([[-7.53504,-23.4471,-3.3974,-0.940593,-0.313674],[-4.58248,-2.47177,0.550012,1.03771,0.844226]],"kJ/mol")), + HinderedRotor(inertia=(0.803309,"u*angstrom**2"), symmetry=1, fourier=([[-8.65946,-3.97888,-1.13469,-0.402197,-0.145101],[4.41884e-05,4.83249e-05,1.30275e-05,-1.31353e-05,-6.66878e-06]],"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + molecularWeight = (75.04,"g/mol"), + collisionModel = TransportData(sigma=(5.09,'angstrom'), epsilon=(473,'K')), + energyTransferModel = SingleExponentialDown( + alpha0 = (0.5718,'kcal/mol'), + T0 = (300,'K'), + n = 0.85, + ), +) + +species( + label = 'acetyl', + structure = SMILES('C[C]=O'), + E0 = (0.0,'kcal/mol'), #(-20.5205,"kJ/mol") + modes = [ + IdealGasTranslation(mass=(43.05,"g/mol")), + NonlinearRotor(inertia=([5.94518,50.8166,53.6436],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([464.313,845.126,1010.54,1038.43,1343.54,1434.69,1442.25,1906.18,2985.46,3076.57,3079.46],"cm^-1")), + HinderedRotor(inertia=(1.61752,"u*angstrom**2"), symmetry=3, barrier=(2.00242,"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, +) + +species( + label = 'oxygen', + structure = SMILES('[O][O]'), + E0 = (0.0,'kcal/mol'), #(-5.74557,"kJ/mol") + modes = [ + IdealGasTranslation(mass=(32.00,"g/mol")), + LinearRotor(inertia=(11.6056,"u*angstrom**2"), symmetry=2), + HarmonicOscillator(frequencies=([1621.54],"cm^-1")), + ], + spinMultiplicity = 3, + opticalIsomers = 1, +) + +species( + label = 'ketene', + structure = SMILES('C=C=O'), + E0 = (-6.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(42.0106,"g/mol")), + NonlinearRotor(inertia=([1.76922,48.8411,50.6103],"u*angstrom**2"), symmetry=2), + HarmonicOscillator(frequencies=([441.622,548.317,592.155,981.379,1159.66,1399.86,2192.1,3150.02,3240.58],"cm^-1")), + ], + spinMultiplicity = 1, + opticalIsomers = 1, +) + +species( + label = 'lactone', + structure = SMILES('C1OC1(=O)'), + E0 = (-30.8,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(58.0055,"g/mol")), + NonlinearRotor(inertia=([20.1707,62.4381,79.1616],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([484.387,527.771,705.332,933.372,985.563,1050.26,1107.93,1176.43,1466.54,1985.09,3086.23,3186.46],"cm^-1")), + ], + spinMultiplicity = 1, + opticalIsomers = 1, +) + + + +species( + label = 'hydroxyl', + structure = SMILES('[OH]'), + E0 = (0.0,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(17.0027,"g/mol")), + LinearRotor(inertia=(0.899988,"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([3676.39],"cm^-1")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, +) + +species( + label = 'hydroperoxyl', + structure = SMILES('O[O]'), + E0 = (0.0,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(32.9977,"g/mol")), + NonlinearRotor(inertia=([0.811564,14.9434,15.755],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([1156.77,1424.28,3571.81],"cm^-1")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, +) + +species( + label = 'nitrogen', + structure = SMILES('N#N'), + molecularWeight = (28.04,"g/mol"), + collisionModel = TransportData(sigma=(3.70,'angstrom'), epsilon=(94.9,'K')), + reactive = False +) + +################################################################################ + +transitionState( + label = 'entrance1', + E0 = (0.0,'kcal/mol'), +) + +transitionState( + label = 'isom1', + E0 = (-5.8,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([49.3418,103.697,149.682],"u*angstrom**2"), symmetry=1, quantum=False), + HarmonicOscillator(frequencies=([148.551,306.791,484.573,536.709,599.366,675.538,832.594,918.413,1022.28,1031.45,1101.01,1130.05,1401.51,1701.26,1844.17,3078.6,3163.07],"cm^-1"), quantum=True), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency = (-1679.04,'cm^-1'), +) + +transitionState( + label = 'exit1', + E0 = (0.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([55.4256, 136.1886, 188.2442],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([59.9256,204.218,352.811,466.297,479.997,542.345,653.897,886.657,1017.91,1079.17,1250.02,1309.14,1370.36,1678.52,2162.41,3061.53,3135.55],"cm^-1")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency=(-1053.25,'cm^-1'), +) + +transitionState( + label = 'exit2', + E0 = (-4.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.0082,"g/mol"), quantum=False), + NonlinearRotor(inertia=([51.7432,119.373,171.117],"u*angstrom**2"), symmetry=1, quantum=False), + HarmonicOscillator(frequencies=([250.311,383.83,544.382,578.988,595.324,705.422,964.712,1103.25,1146.91,1415.98,1483.33,1983.79,3128,3143.84,3255.29],"cm^-1")), + HinderedRotor(inertia=(9.35921,"u*angstrom**2"), symmetry=1, fourier=([[-11.2387,-12.5928,-3.87844,1.13314,-0.358812],[-1.59863,-8.03329,-5.05235,3.13723,2.45989]],"kJ/mol")), + HinderedRotor(inertia=(0.754698,"u*angstrom**2"), symmetry=1, barrier=(47.7645,"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency=(-404.271,'cm^-1'), +) + +transitionState( + label = 'exit3', + E0 = (-7.2,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([53.2821, 120.4050, 170.1570],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([152.155,181.909,311.746,348.646,608.487,624.378,805.347,948.875,995.256,996.982,1169.1,1412.6,1834.83,3124.43,3245.2,3634.45],"cm^-1")), + HinderedRotor(inertia=(0.813269,"u*angstrom**2"), symmetry=1, fourier=([[-1.15338,-2.18664,-0.669531,-0.11502,-0.0512599],[0.00245222,0.0107485,0.00334564,-0.00165288,-0.0028674]],"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency=(-618.234,'cm^-1'), +) + +################################################################################ + +reaction( + label = 'entrance1', + reactants = ['acetyl', 'oxygen'], + products = ['acetylperoxy'], + transitionState = 'entrance1', + kinetics = Arrhenius(A=(2.65e6,'m^3/(mol*s)'), n=0.0, Ea=(0.0,'kcal/mol'), T0=(1,"K")), +) + +reaction( + label = 'isom1', + reactants = ['acetylperoxy'], + products = ['hydroperoxylvinoxy'], + transitionState = 'isom1', + tunneling = 'Eckart', +) + +reaction( + label = 'exit1', + reactants = ['acetylperoxy'], + products = ['ketene', 'hydroperoxyl'], + transitionState = 'exit1', + tunneling = 'Eckart', +) + +reaction( + label = 'exit2', + reactants = ['hydroperoxylvinoxy'], + products = ['ketene', 'hydroperoxyl'], + transitionState = 'exit2', + tunneling = 'Eckart', +) + +reaction( + label = 'exit3', + reactants = ['hydroperoxylvinoxy'], + products = ['lactone', 'hydroxyl'], + transitionState = 'exit3', + tunneling = 'Eckart', +) + +################################################################################# + +network( + label = 'acetyl + O2', + isomers = [ + 'acetylperoxy', + 'hydroperoxylvinoxy', + ], + reactants = [ + ('acetyl', 'oxygen'), + ('ketene', 'hydroperoxyl'), + ('lactone', 'hydroxyl') + ], + bathGas = { + 'nitrogen': 1.0, + } +) + +################################################################################# + +pressureDependence( + 'acetyl + O2', + Tmin=(300.0,'K'), Tmax=(2000.0,'K'), Tcount=8, + Pmin=(0.01,'bar'), Pmax=(100.0,'bar'), Pcount=5, + maximumGrainSize = (1.0,'kcal/mol'), + minimumGrainCount = 250, + method = 'simulation least squares', + interpolationModel = ('chebyshev', 6, 4), + activeJRotor = True, +) diff --git a/examples/arkane/networks/acetyl+O2_slse/input.py b/examples/arkane/networks/acetyl+O2_slse/input.py new file mode 100644 index 00000000000..8e57408de5c --- /dev/null +++ b/examples/arkane/networks/acetyl+O2_slse/input.py @@ -0,0 +1,286 @@ +################################################################################ +# +# Arkane input file for acetyl + O2 pressure-dependent reaction network +# +# uses method = 'simulation least squares eigen' for PressureDependence +# +################################################################################ + +title = 'acetyl + oxygen' + +description = \ +""" +The chemically-activated reaction of acetyl with oxygen. This system is of +interest in atmospheric chemistry as a step in the conversion of acetaldehyde +to the secondary pollutant peroxyacetylnitrate (PAN); it is also potentially +important in the ignition chemistry of ethanol. +""" + +species( + label = 'acetylperoxy', + structure = SMILES('CC(=O)O[O]'), + E0 = (-34.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([54.2977,104.836,156.05],"amu*angstrom^2"), symmetry=1), + HarmonicOscillator(frequencies=([319.695,500.474,536.674,543.894,727.156,973.365,1037.77,1119.72,1181.55,1391.11,1449.53,1454.72,1870.51,3037.12,3096.93,3136.39],"cm^-1")), + HinderedRotor(inertia=(7.38359,"amu*angstrom^2"), symmetry=1, fourier=([[-1.95191,-11.8215,0.740041,-0.049118,-0.464522],[0.000227764,0.00410782,-0.000805364,-0.000548218,-0.000266277]],"kJ/mol")), + HinderedRotor(inertia=(2.94723,"amu*angstrom^2"), symmetry=3, fourier=([[0.130647,0.0401507,-2.54582,-0.0436065,-0.120982],[-0.000701659,-0.000989654,0.00783349,-0.00140978,-0.00145843]],"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + molecularWeight = (75.04,"g/mol"), + collisionModel = TransportData(sigma=(5.09,'angstrom'), epsilon=(473,'K')), + energyTransferModel = SingleExponentialDown( + alpha0 = (0.5718,'kcal/mol'), + T0 = (300,'K'), + n = 0.85, + ), +) + +species( + label = 'hydroperoxylvinoxy', + structure = SMILES('[CH2]C(=O)OO'), + E0 = (-32.4,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([44.8034,110.225,155.029],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([318.758,420.907,666.223,675.962,752.824,864.66,998.471,1019.54,1236.21,1437.91,1485.74,1687.9,3145.44,3262.88,3434.34],"cm^-1")), + HinderedRotor(inertia=(1.68464,"u*angstrom**2"), symmetry=2, fourier=([[0.359649,-16.1155,-0.593311,1.72918,0.256314],[-7.42981e-06,-0.000238057,3.29276e-05,-6.62608e-05,8.8443e-05]],"kJ/mol")), + HinderedRotor(inertia=(8.50433,"u*angstrom**2"), symmetry=1, fourier=([[-7.53504,-23.4471,-3.3974,-0.940593,-0.313674],[-4.58248,-2.47177,0.550012,1.03771,0.844226]],"kJ/mol")), + HinderedRotor(inertia=(0.803309,"u*angstrom**2"), symmetry=1, fourier=([[-8.65946,-3.97888,-1.13469,-0.402197,-0.145101],[4.41884e-05,4.83249e-05,1.30275e-05,-1.31353e-05,-6.66878e-06]],"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + molecularWeight = (75.04,"g/mol"), + collisionModel = TransportData(sigma=(5.09,'angstrom'), epsilon=(473,'K')), + energyTransferModel = SingleExponentialDown( + alpha0 = (0.5718,'kcal/mol'), + T0 = (300,'K'), + n = 0.85, + ), +) + +species( + label = 'acetyl', + structure = SMILES('C[C]=O'), + E0 = (0.0,'kcal/mol'), #(-20.5205,"kJ/mol") + modes = [ + IdealGasTranslation(mass=(43.05,"g/mol")), + NonlinearRotor(inertia=([5.94518,50.8166,53.6436],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([464.313,845.126,1010.54,1038.43,1343.54,1434.69,1442.25,1906.18,2985.46,3076.57,3079.46],"cm^-1")), + HinderedRotor(inertia=(1.61752,"u*angstrom**2"), symmetry=3, barrier=(2.00242,"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, +) + +species( + label = 'oxygen', + structure = SMILES('[O][O]'), + E0 = (0.0,'kcal/mol'), #(-5.74557,"kJ/mol") + modes = [ + IdealGasTranslation(mass=(32.00,"g/mol")), + LinearRotor(inertia=(11.6056,"u*angstrom**2"), symmetry=2), + HarmonicOscillator(frequencies=([1621.54],"cm^-1")), + ], + spinMultiplicity = 3, + opticalIsomers = 1, +) + +species( + label = 'ketene', + structure = SMILES('C=C=O'), + E0 = (-6.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(42.0106,"g/mol")), + NonlinearRotor(inertia=([1.76922,48.8411,50.6103],"u*angstrom**2"), symmetry=2), + HarmonicOscillator(frequencies=([441.622,548.317,592.155,981.379,1159.66,1399.86,2192.1,3150.02,3240.58],"cm^-1")), + ], + spinMultiplicity = 1, + opticalIsomers = 1, +) + +species( + label = 'lactone', + structure = SMILES('C1OC1(=O)'), + E0 = (-30.8,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(58.0055,"g/mol")), + NonlinearRotor(inertia=([20.1707,62.4381,79.1616],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([484.387,527.771,705.332,933.372,985.563,1050.26,1107.93,1176.43,1466.54,1985.09,3086.23,3186.46],"cm^-1")), + ], + spinMultiplicity = 1, + opticalIsomers = 1, +) + + + +species( + label = 'hydroxyl', + structure = SMILES('[OH]'), + E0 = (0.0,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(17.0027,"g/mol")), + LinearRotor(inertia=(0.899988,"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([3676.39],"cm^-1")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, +) + +species( + label = 'hydroperoxyl', + structure = SMILES('O[O]'), + E0 = (0.0,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(32.9977,"g/mol")), + NonlinearRotor(inertia=([0.811564,14.9434,15.755],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([1156.77,1424.28,3571.81],"cm^-1")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, +) + +species( + label = 'nitrogen', + structure = SMILES('N#N'), + molecularWeight = (28.04,"g/mol"), + collisionModel = TransportData(sigma=(3.70,'angstrom'), epsilon=(94.9,'K')), + reactive = False +) + +################################################################################ + +transitionState( + label = 'entrance1', + E0 = (0.0,'kcal/mol'), +) + +transitionState( + label = 'isom1', + E0 = (-5.8,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([49.3418,103.697,149.682],"u*angstrom**2"), symmetry=1, quantum=False), + HarmonicOscillator(frequencies=([148.551,306.791,484.573,536.709,599.366,675.538,832.594,918.413,1022.28,1031.45,1101.01,1130.05,1401.51,1701.26,1844.17,3078.6,3163.07],"cm^-1"), quantum=True), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency = (-1679.04,'cm^-1'), +) + +transitionState( + label = 'exit1', + E0 = (0.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([55.4256, 136.1886, 188.2442],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([59.9256,204.218,352.811,466.297,479.997,542.345,653.897,886.657,1017.91,1079.17,1250.02,1309.14,1370.36,1678.52,2162.41,3061.53,3135.55],"cm^-1")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency=(-1053.25,'cm^-1'), +) + +transitionState( + label = 'exit2', + E0 = (-4.6,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.0082,"g/mol"), quantum=False), + NonlinearRotor(inertia=([51.7432,119.373,171.117],"u*angstrom**2"), symmetry=1, quantum=False), + HarmonicOscillator(frequencies=([250.311,383.83,544.382,578.988,595.324,705.422,964.712,1103.25,1146.91,1415.98,1483.33,1983.79,3128,3143.84,3255.29],"cm^-1")), + HinderedRotor(inertia=(9.35921,"u*angstrom**2"), symmetry=1, fourier=([[-11.2387,-12.5928,-3.87844,1.13314,-0.358812],[-1.59863,-8.03329,-5.05235,3.13723,2.45989]],"kJ/mol")), + HinderedRotor(inertia=(0.754698,"u*angstrom**2"), symmetry=1, barrier=(47.7645,"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency=(-404.271,'cm^-1'), +) + +transitionState( + label = 'exit3', + E0 = (-7.2,'kcal/mol'), + modes = [ + IdealGasTranslation(mass=(75.04,"g/mol")), + NonlinearRotor(inertia=([53.2821, 120.4050, 170.1570],"u*angstrom**2"), symmetry=1), + HarmonicOscillator(frequencies=([152.155,181.909,311.746,348.646,608.487,624.378,805.347,948.875,995.256,996.982,1169.1,1412.6,1834.83,3124.43,3245.2,3634.45],"cm^-1")), + HinderedRotor(inertia=(0.813269,"u*angstrom**2"), symmetry=1, fourier=([[-1.15338,-2.18664,-0.669531,-0.11502,-0.0512599],[0.00245222,0.0107485,0.00334564,-0.00165288,-0.0028674]],"kJ/mol")), + ], + spinMultiplicity = 2, + opticalIsomers = 1, + frequency=(-618.234,'cm^-1'), +) + +################################################################################ + +reaction( + label = 'entrance1', + reactants = ['acetyl', 'oxygen'], + products = ['acetylperoxy'], + transitionState = 'entrance1', + kinetics = Arrhenius(A=(2.65e6,'m^3/(mol*s)'), n=0.0, Ea=(0.0,'kcal/mol'), T0=(1,"K")), +) + +reaction( + label = 'isom1', + reactants = ['acetylperoxy'], + products = ['hydroperoxylvinoxy'], + transitionState = 'isom1', + tunneling = 'Eckart', +) + +reaction( + label = 'exit1', + reactants = ['acetylperoxy'], + products = ['ketene', 'hydroperoxyl'], + transitionState = 'exit1', + tunneling = 'Eckart', +) + +reaction( + label = 'exit2', + reactants = ['hydroperoxylvinoxy'], + products = ['ketene', 'hydroperoxyl'], + transitionState = 'exit2', + tunneling = 'Eckart', +) + +reaction( + label = 'exit3', + reactants = ['hydroperoxylvinoxy'], + products = ['lactone', 'hydroxyl'], + transitionState = 'exit3', + tunneling = 'Eckart', +) + +################################################################################# + +network( + label = 'acetyl + O2', + isomers = [ + 'acetylperoxy', + 'hydroperoxylvinoxy', + ], + reactants = [ + ('acetyl', 'oxygen'), + ('ketene', 'hydroperoxyl'), + ('lactone', 'hydroxyl') + ], + bathGas = { + 'nitrogen': 1.0, + } +) + +################################################################################# + +pressureDependence( + 'acetyl + O2', + Tmin=(300.0,'K'), Tmax=(2000.0,'K'), Tcount=8, + Pmin=(0.01,'bar'), Pmax=(100.0,'bar'), Pcount=5, + maximumGrainSize = (1.0,'kcal/mol'), + minimumGrainCount = 250, + method = 'simulation least squares eigen', + interpolationModel = ('chebyshev', 6, 4), + activeJRotor = True, +) diff --git a/examples/arkane/networks/n-butanol/input.py b/examples/arkane/networks/n-butanol_msc/input.py similarity index 100% rename from examples/arkane/networks/n-butanol/input.py rename to examples/arkane/networks/n-butanol_msc/input.py diff --git a/examples/arkane/species/OCHO/OCHO.py b/examples/arkane/species/OCHO/OCHO.py new file mode 100644 index 00000000000..dd975714556 --- /dev/null +++ b/examples/arkane/species/OCHO/OCHO.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +# encoding: utf-8 + +externalSymmetry = 2 + +spinMultiplicity = 2 + +opticalIsomers = 1 + +energy = (-342.84,'kJ/mol') + +geometry = Log('freq.out') + +frequencies = Log('freq.out') diff --git a/examples/arkane/species/OCHO/freq.out b/examples/arkane/species/OCHO/freq.out new file mode 100644 index 00000000000..c05fe63786d --- /dev/null +++ b/examples/arkane/species/OCHO/freq.out @@ -0,0 +1,1336 @@ + Entering Gaussian System, Link 0=g09 + Initial command: + /usr/local/g09/l1.exe "/gtmp/jintaowu/scratch/g09/968294.zeus-master/Gau-2013201.inp" -scrdir="/gtmp/jintaowu/scratch/g09/968294.zeus-master/" + Entering Link 1 = /usr/local/g09/l1.exe PID= 2013202. + + Copyright (c) 1988,1990,1992,1993,1995,1998,2003,2009,2013, + Gaussian, Inc. All Rights Reserved. + + This is part of the Gaussian(R) 09 program. It is based on + the Gaussian(R) 03 system (copyright 2003, Gaussian, Inc.), + the Gaussian(R) 98 system (copyright 1998, Gaussian, Inc.), + the Gaussian(R) 94 system (copyright 1995, Gaussian, Inc.), + the Gaussian 92(TM) system (copyright 1992, Gaussian, Inc.), + the Gaussian 90(TM) system (copyright 1990, Gaussian, Inc.), + the Gaussian 88(TM) system (copyright 1988, Gaussian, Inc.), + the Gaussian 86(TM) system (copyright 1986, Carnegie Mellon + University), and the Gaussian 82(TM) system (copyright 1983, + Carnegie Mellon University). Gaussian is a federally registered + trademark of Gaussian, Inc. + + This software contains proprietary and confidential information, + including trade secrets, belonging to Gaussian, Inc. + + This software is provided under written license and may be + used, copied, transmitted, or stored only in accord with that + written license. + + The following legend is applicable only to US Government + contracts under FAR: + + RESTRICTED RIGHTS LEGEND + + Use, reproduction and disclosure by the US Government is + subject to restrictions as set forth in subparagraphs (a) + and (c) of the Commercial Computer Software - Restricted + Rights clause in FAR 52.227-19. + + Gaussian, Inc. + 340 Quinnipiac St., Bldg. 40, Wallingford CT 06492 + + + --------------------------------------------------------------- + Warning -- This program may not be used in any manner that + competes with the business of Gaussian, Inc. or will provide + assistance to any competitor of Gaussian, Inc. The licensee + of this program is prohibited from giving any competitor of + Gaussian, Inc. access to this program. By using this program, + the user acknowledges that Gaussian, Inc. is engaged in the + business of creating and licensing software in the field of + computational chemistry and represents and warrants to the + licensee that it is not a competitor of Gaussian, Inc. and that + it will not use this program in any manner prohibited above. + --------------------------------------------------------------- + + + Cite this work as: + Gaussian 09, Revision D.01, + M. J. Frisch, G. W. Trucks, H. B. Schlegel, G. E. Scuseria, + M. A. Robb, J. R. Cheeseman, G. Scalmani, V. Barone, B. Mennucci, + G. A. Petersson, H. Nakatsuji, M. Caricato, X. Li, H. P. Hratchian, + A. F. Izmaylov, J. Bloino, G. Zheng, J. L. Sonnenberg, M. Hada, + M. Ehara, K. Toyota, R. Fukuda, J. Hasegawa, M. Ishida, T. Nakajima, + Y. Honda, O. Kitao, H. Nakai, T. Vreven, J. A. Montgomery, Jr., + J. E. Peralta, F. Ogliaro, M. Bearpark, J. J. Heyd, E. Brothers, + K. N. Kudin, V. N. Staroverov, T. Keith, R. Kobayashi, J. Normand, + K. Raghavachari, A. Rendell, J. C. Burant, S. S. Iyengar, J. Tomasi, + M. Cossi, N. Rega, J. M. Millam, M. Klene, J. E. Knox, J. B. Cross, + V. Bakken, C. Adamo, J. Jaramillo, R. Gomperts, R. E. Stratmann, + O. Yazyev, A. J. Austin, R. Cammi, C. Pomelli, J. W. Ochterski, + R. L. Martin, K. Morokuma, V. G. Zakrzewski, G. A. Voth, + P. Salvador, J. J. Dannenberg, S. Dapprich, A. D. Daniels, + O. Farkas, J. B. Foresman, J. V. Ortiz, J. Cioslowski, + and D. J. Fox, Gaussian, Inc., Wallingford CT, 2013. + + ****************************************** + Gaussian 09: EM64L-G09RevD.01 24-Apr-2013 + 16-Jan-2025 + ****************************************** + %chk=check.chk + %mem=184320mb + %NProcShared=16 + Will use up to 16 processors via shared memory. + ---------------------------------------------------------------------- + #P guess=read ub2plypd3/def2tzvp freq IOp(7/33=1) integral=(grid=ultra + fine, Acc2E=12) IOp(2/9=2000) scf=(direct,tight) + ---------------------------------------------------------------------- + 1/10=4,30=1,38=1/1,3; + 2/9=2000,12=2,17=6,18=5,40=1/2; + 3/5=44,7=101,11=2,16=1,25=1,30=1,71=2,74=-60,75=-5,116=2,140=1/1,2,3; + 4/5=1/1; + 5/5=2,32=2,38=6,87=12,98=1/2; + 8/6=3,8=1,10=1,19=11,30=-1,87=12/1; + 9/15=3,16=-3,87=12/6; + 11/6=1,8=1,15=11,17=12,24=-1,27=1,28=-2,29=300,32=6,42=3,87=12/1,2,10; + 10/6=2,21=1,87=12/2; + 8/6=4,8=1,10=1,19=11,30=-1,87=12/11,4; + 10/5=1,20=4,87=12/2; + 11/12=2,14=11,16=1,17=2,28=-2,42=3,87=12/2,10,12; + 6/7=2,8=2,9=2,10=2/1; + 7/8=1,10=1,12=2,25=1,33=1,44=2,87=12/1,2,3,16; + 1/10=4,30=1/3; + 99//99; + Leave Link 1 at Thu Jan 16 16:09:25 2025, MaxMem= 24159191040 cpu: 0.6 + (Enter /usr/local/g09/l101.exe) + ---- + OCHO + ---- + Symbolic Z-matrix: + Charge = 0 Multiplicity = 2 + O 1.16019 -0.35657 0.02978 + C -0.01753 0.07206 -0.00045 + O -0.86664 -0.84999 -0.02219 + H -0.27602 1.1345 -0.00714 + + NAtoms= 4 NQM= 4 NQMF= 0 NMMI= 0 NMMIF= 0 + NMic= 0 NMicF= 0. + Isotopes and Nuclear Properties: + (Nuclear quadrupole moments (NQMom) in fm**2, nuclear magnetic moments (NMagM) + in nuclear magnetons) + + Atom 1 2 3 4 + IAtWgt= 16 12 16 1 + AtmWgt= 15.9949146 12.0000000 15.9949146 1.0078250 + NucSpn= 0 0 0 1 + AtZEff= 0.0000000 0.0000000 0.0000000 0.0000000 + NQMom= 0.0000000 0.0000000 0.0000000 0.0000000 + NMagM= 0.0000000 0.0000000 0.0000000 2.7928460 + AtZNuc= 8.0000000 6.0000000 8.0000000 1.0000000 + Leave Link 101 at Thu Jan 16 16:09:25 2025, MaxMem= 24159191040 cpu: 0.5 + (Enter /usr/local/g09/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Initialization pass. + Trust Radius=3.00D-01 FncErr=1.00D-07 GrdErr=1.00D-07 + Number of steps in this run= 2 maximum allowed number of steps= 2. + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Thu Jan 16 16:09:25 2025, MaxMem= 24159191040 cpu: 0.1 + (Enter /usr/local/g09/l202.exe) + Input orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 0 1.160188 -0.356566 0.029781 + 2 6 0 -0.017527 0.072059 -0.000452 + 3 8 0 -0.866638 -0.849990 -0.022189 + 4 1 0 -0.276021 1.134498 -0.007140 + --------------------------------------------------------------------- + Distance matrix (angstroms): + 1 2 3 4 + 1 O 0.000000 + 2 C 1.253653 0.000000 + 3 O 2.086670 1.253649 0.000000 + 4 H 2.070587 1.093453 2.070567 0.000000 + Stoichiometry CHO2(2) + Framework group C1[X(CHO2)] + Deg. of freedom 6 + Full point group C1 NOp 1 + Largest Abelian subgroup C1 NOp 1 + Largest concise Abelian subgroup C1 NOp 1 + Standard orientation: + --------------------------------------------------------------------- + Center Atomic Atomic Coordinates (Angstroms) + Number Number Type X Y Z + --------------------------------------------------------------------- + 1 8 0 -1.043337 -0.259075 0.000000 + 2 6 0 0.000002 0.435971 -0.000001 + 3 8 0 1.043333 -0.259081 0.000000 + 4 1 0 0.000023 1.529424 0.000002 + --------------------------------------------------------------------- + Rotational constants (GHZ): 75.0432824 14.5130173 12.1611150 + Leave Link 202 at Thu Jan 16 16:09:25 2025, MaxMem= 24159191040 cpu: 0.0 + (Enter /usr/local/g09/l301.exe) + Standard basis: def2TZVP (5D, 7F) + Ernie: Thresh= 0.10000D-02 Tol= 0.10000D-05 Strict=F. + There are 114 symmetry adapted cartesian basis functions of A symmetry. + There are 99 symmetry adapted basis functions of A symmetry. + 99 basis functions, 161 primitive gaussians, 114 cartesian basis functions + 12 alpha electrons 11 beta electrons + nuclear repulsion energy 63.7455969840 Hartrees. + IExCor= 419 DFT=T Ex+Corr=B2PLYPD3 ExCW=0 ScaHFX= 0.530000 + ScaDFX= 0.470000 0.470000 0.730000 0.730000 ScalE2= 0.270000 0.270000 + IRadAn= 5 IRanWt= -1 IRanGd= 0 ICorTp=0 IEmpDi=141 + NAtoms= 4 NActive= 4 NUniq= 4 SFac= 1.00D+00 NAtFMM= 60 NAOKFM=F Big=F + Integral buffers will be 131072 words long. + Raffenetti 2 integral format. + Two-electron integral symmetry is turned on. + R6Disp: Grimme-D3(BJ) Dispersion energy= -0.0010312063 Hartrees. + Nuclear repulsion after empirical dispersion term = 63.7445657777 Hartrees. + Leave Link 301 at Thu Jan 16 16:09:25 2025, MaxMem= 24159191040 cpu: 0.3 + (Enter /usr/local/g09/l302.exe) + NPDir=0 NMtPBC= 1 NCelOv= 1 NCel= 1 NClECP= 1 NCelD= 1 + NCelK= 1 NCelE2= 1 NClLst= 1 CellRange= 0.0. + One-electron integrals computed using PRISM. + 1 Symmetry operations used in ECPInt. + ECPInt: NShTT= 703 NPrTT= 2280 LenC2= 701 LenP2D= 2013. + LDataN: DoStor=T MaxTD1= 6 Len= 172 + NBasis= 99 RedAO= T EigKep= 1.33D-03 NBF= 99 + NBsUse= 99 1.00D-06 EigRej= -1.00D+00 NBFU= 99 + Precomputing XC quadrature grid using + IXCGrd= 4 IRadAn= 5 IRanWt= -1 IRanGd= 0 AccXCQ= 0.00D+00. + Generated NRdTot= 0 NPtTot= 0 NUsed= 0 NTot= 32 + NSgBfM= 114 114 114 114 114 MxSgAt= 4 MxSgA2= 4. + Leave Link 302 at Thu Jan 16 16:09:25 2025, MaxMem= 24159191040 cpu: 1.9 + (Enter /usr/local/g09/l303.exe) + DipDrv: MaxL=1. + Leave Link 303 at Thu Jan 16 16:09:25 2025, MaxMem= 24159191040 cpu: 0.2 + (Enter /usr/local/g09/l401.exe) + Initial guess from the checkpoint file: "check.chk" + B after Tr= 0.000010 0.683722 0.000001 + Rot= 0.012729 -0.119068 0.992803 -0.001552 Ang=-178.54 deg. + Guess basis will be translated and rotated to current coordinates. + JPrj=2 DoOrth=T DoCkMO=T. + Initial guess = 0.0000 = 0.0000 = 0.5000 = 0.7674 S= 0.5086 + Leave Link 401 at Thu Jan 16 16:09:25 2025, MaxMem= 24159191040 cpu: 1.1 + (Enter /usr/local/g09/l502.exe) + UHF open shell SCF: + Using DIIS extrapolation, IDIIS= 1040. + Integral symmetry usage will be decided dynamically. + Keep R1 and R2 ints in memory in canonical form, NReq=26550013. + IVT= 60190 IEndB= 60190 NGot= 24159191040 MDV= 24134623401 + LenX= 24134623401 LenY= 24134609964 + Requested convergence on RMS density matrix=1.00D-08 within 128 cycles. + Requested convergence on MAX density matrix=1.00D-06. + Requested convergence on energy=1.00D-06. + No special actions if energy rises. + FoFCou: FMM=F IPFlag= 0 FMFlag= 0 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 600 IOpCl= 0 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 4950 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Symmetry not used in FoFCou. + + Cycle 1 Pass 1 IDiag 1: + E= -188.831667109921 + DIIS: error= 1.19D-07 at cycle 1 NSaved= 1. + NSaved= 1 IEnMin= 1 EnMin= -188.831667109921 IErMin= 1 ErrMin= 1.19D-07 + ErrMax= 1.19D-07 0.00D+00 EMaxC= 1.00D-01 BMatC= 3.87D-12 BMatP= 3.87D-12 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: 0.100D+01 + Coeff: 0.100D+01 + Gap= 0.452 Goal= None Shift= 0.000 + Gap= 0.227 Goal= None Shift= 0.000 + RMSDP=2.53D-08 MaxDP=5.50D-07 OVMax= 8.46D-07 + + Cycle 2 Pass 1 IDiag 1: + E= -188.831667109922 Delta-E= 0.000000000000 Rises=F Damp=F + DIIS: error= 4.95D-08 at cycle 2 NSaved= 2. + NSaved= 2 IEnMin= 2 EnMin= -188.831667109922 IErMin= 2 ErrMin= 4.95D-08 + ErrMax= 4.95D-08 0.00D+00 EMaxC= 1.00D-01 BMatC= 4.47D-13 BMatP= 3.87D-12 + IDIUse=1 WtCom= 1.00D+00 WtEn= 0.00D+00 + Coeff-Com: -0.478D-01 0.105D+01 + Coeff: -0.478D-01 0.105D+01 + Gap= 0.452 Goal= None Shift= 0.000 + Gap= 0.227 Goal= None Shift= 0.000 + RMSDP=7.26D-09 MaxDP=1.34D-07 DE=-4.55D-13 OVMax= 9.94D-07 + + SCF Done: E(UB2PLYPD3) = -188.831667110 A.U. after 2 cycles + NFock= 2 Conv=0.73D-08 -V/T= 2.0030 + = 0.0000 = 0.0000 = 0.5000 = 0.7674 S= 0.5086 + = 0.000000000000E+00 + KE= 1.882753720078D+02 PE=-5.726976462364D+02 EE= 1.318460413409D+02 + Annihilation of the first spin contaminant: + S**2 before annihilation 0.7674, after 0.7501 + Leave Link 502 at Thu Jan 16 16:09:26 2025, MaxMem= 24159191040 cpu: 12.5 + (Enter /usr/local/g09/l801.exe) + DoSCS=T DFT=T ScalE2(SS,OS)= 0.270000 0.270000 + ExpMin= 9.52D-02 ExpMax= 2.70D+04 ExpMxC= 9.22D+02 IAcc=3 IRadAn= 5 AccDes= 0.00D+00 + HarFok: IExCor= 205 AccDes= 0.00D+00 IRadAn= 5 IDoV=-2 UseB2=F ITyADJ=14 + ICtDFT= 12500011 ScaDFX= 1.000000 1.000000 1.000000 1.000000 + Largest valence mixing into a core orbital is 9.46D-05 + Largest core mixing into a valence orbital is 1.58D-05 + Largest valence mixing into a core orbital is 9.27D-05 + Largest core mixing into a valence orbital is 1.68D-05 + Range of M.O.s used for correlation: 4 99 + NBasis= 99 NAE= 12 NBE= 11 NFC= 3 NFV= 0 + NROrb= 96 NOA= 9 NOB= 8 NVA= 87 NVB= 88 + + **** Warning!!: The largest alpha MO coefficient is 0.11634593D+02 + + + **** Warning!!: The largest beta MO coefficient is 0.11761201D+02 + + Leave Link 801 at Thu Jan 16 16:09:26 2025, MaxMem= 24159191040 cpu: 0.5 + (Enter /usr/local/g09/l906.exe) + DoSCS=T DFT=T ScalE2(SS,OS)= 0.270000 0.270000 + Frozen-core derivative calculation, NFC= 3 NFV= 0. + FulOut=F Deriv=T AODrv=T NAtomX= 4 + MMem= 0 MDisk= 9 MDiskD= 9 + W3Min= 270864 MinDsk= 473795 NBas6D= 114 + NBas2D= 6810 NTT= 6555 LW2= 7400000 + MDV= 24159026317 MDiskM= 1059518 NBas2p= 6805 + Disk-based method using ON**2 memory for 9 occupieds at a time. + Permanent disk used for amplitudes= 1468038 words. + Estimated scratch disk usage= 25258677 words. + IMap= 1 2 3 4 5 6 7 8 9 10 11 12 + Actual scratch disk usage= 24510645 words. + JobTyp=2 Pass 1: I= 4 to 12 NPSUse= 16 ParTrn=T ParDer=T DoDerP=T. + (rs|ai) integrals will be sorted in core. + IMap= 1 2 3 4 5 6 7 8 9 10 11 + Actual scratch disk usage= 24510645 words. + JobTyp=3 Pass 1: I= 4 to 11 NPSUse= 16 ParTrn=T ParDer=T DoDerP=T. + (rs|ai) integrals will be sorted in core. + Spin components of T(2) and E(2): + alpha-alpha T2 = 0.3102162699D-01 E2= -0.2609925659D-01 + alpha-beta T2 = 0.2091039623D+00 E2= -0.1489205330D+00 + beta-beta T2 = 0.6194292438D-01 E2= -0.3023844421D-01 + The integrals were generated 2 times. + E2(B2PLYPD3) = -0.2052582338D+00 E(B2PLYPD3) = -0.18903692534375D+03 + Leave Link 906 at Thu Jan 16 16:10:02 2025, MaxMem= 24159191040 cpu: 560.0 + (Enter /usr/local/g09/l1101.exe) + Using compressed Sx but separate Hx and Fx, NAtomX= 4. + Will process 5 centers per pass. + 1 Symmetry operations used in ECPInt. + ECPInt: NShTT= 703 NPrTT= 2280 LenC2= 701 LenP2D= 2013. + LDataN: DoStor=T MaxTD1= 7 Len= 274 + R6Disp: Adding Grimme-D3(BJ) dispersion energy 1st derivatives to the gradient. + Leave Link 1101 at Thu Jan 16 16:10:02 2025, MaxMem= 24159191040 cpu: 10.5 + (Enter /usr/local/g09/l1102.exe) + Leave Link 1102 at Thu Jan 16 16:10:02 2025, MaxMem= 24159191040 cpu: 0.1 + (Enter /usr/local/g09/l1110.exe) + Forming Gx(P) for the SCF density, NAtomX= 4. + Integral derivatives from FoFJK, PRISM(SPDF). + Do as many integral derivatives as possible in FoFJK. + G2DrvN: MDV= 24159190904. + G2DrvN: will do 5 centers at a time, making 1 passes. + Calling FoFCou, ICntrl= 3107 FMM=F I1Cent= 0 AccDes= 1.00D-12. + FoFJK: IHMeth= 1 ICntrl= 3107 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F + IRaf= 0 NMat= 1 IRICut= 1 DoRegI=T DoRafI=F ISym2E= 0. + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 3107 IOpCl= 1 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Symmetry not used in FoFCou. + End of G2Drv F.D. properties file 721 does not exist. + End of G2Drv F.D. properties file 722 does not exist. + End of G2Drv F.D. properties file 788 does not exist. + Leave Link 1110 at Thu Jan 16 16:10:06 2025, MaxMem= 24159191040 cpu: 61.7 + (Enter /usr/local/g09/l1002.exe) + Minotr: UHF open shell wavefunction. + IDoAtm=1111 + Frozen-core window. + Direct CPHF calculation. + Differentiating once with respect to electric field. + with respect to dipole field. + Differentiating once with respect to nuclear coordinates. + Requested convergence is 1.0D-08 RMS, and 1.0D-07 maximum. + Secondary convergence is 1.0D-12 RMS, and 1.0D-12 maximum. + NewPWx=T KeepS1=T KeepF1=T KeepIn=T MapXYZ=F SortEE=F KeepMc=T. + MDV= 24159190804 using IRadAn= 1. + Generate precomputed XC quadrature information. + Keep R1 and R2 ints in memory in canonical form, NReq=26506497. + FoFCou: FMM=F IPFlag= 0 FMFlag= 0 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 600 IOpCl= 0 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 4950 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Symmetry not used in FoFCou. + Solving linear equations simultaneously, MaxMat= 0. + There are 15 degrees of freedom in the 1st order CPHF. IDoFFX=6 NUNeed= 15. + 12 vectors produced by pass 0 Test12= 1.34D-14 6.67D-09 XBig12= 7.09D+01 6.91D+00. + AX will form 12 AO Fock derivatives at one time. + 12 vectors produced by pass 1 Test12= 1.34D-14 6.67D-09 XBig12= 3.65D+01 2.28D+00. + 12 vectors produced by pass 2 Test12= 1.34D-14 6.67D-09 XBig12= 1.10D+01 1.02D+00. + 12 vectors produced by pass 3 Test12= 1.34D-14 6.67D-09 XBig12= 1.32D-01 1.03D-01. + 12 vectors produced by pass 4 Test12= 1.34D-14 6.67D-09 XBig12= 1.72D-03 1.30D-02. + 12 vectors produced by pass 5 Test12= 1.34D-14 6.67D-09 XBig12= 2.39D-05 1.49D-03. + 12 vectors produced by pass 6 Test12= 1.34D-14 6.67D-09 XBig12= 2.10D-07 1.11D-04. + 11 vectors produced by pass 7 Test12= 1.34D-14 6.67D-09 XBig12= 2.24D-09 1.07D-05. + 6 vectors produced by pass 8 Test12= 1.34D-14 6.67D-09 XBig12= 1.71D-11 9.29D-07. + 2 vectors produced by pass 9 Test12= 1.34D-14 6.67D-09 XBig12= 1.40D-13 7.85D-08. + 1 vectors produced by pass 10 Test12= 1.34D-14 6.67D-09 XBig12= 8.44D-16 9.74D-09. + InvSVY: IOpt=1 It= 1 EMax= 8.58D-15 + Solved reduced A of dimension 104 with 12 vectors. + FullF1: Do perturbations 1 to 15. + Saving first derivative matrices. + End of Minotr F.D. properties file 721 does not exist. + End of Minotr F.D. properties file 722 does not exist. + End of Minotr F.D. properties file 788 does not exist. + Leave Link 1002 at Thu Jan 16 16:10:13 2025, MaxMem= 24159191040 cpu: 109.1 + (Enter /usr/local/g09/l811.exe) + MDV= 24159191040. + DoSCS=T DFT=T ScalE2(SS,OS)= 0.270000 0.270000 + Form MO integral derivatives with frozen-active canonical formalism. + MOERI=1 MOERIx=1 NAtoms= 4 NAtomX= 4. + Discarding MO integrals. + MO basis two electron integral derivatives will not be stored on disk. + IAlg= 3 DoFC=T DoPWx=T Debug=F. + Frozen-core window: NFC= 3 NFV= 0. + Reordered first order wavefunction length = 5969734 + In DefCFB: NBatch= 1 ICI= 12 ICA= 88 LFMax= 88 + Large arrays: LIAPS= 90829728 LIARS= 60673536 words. + In StABat: MaxSiz= 36 MinSiz= 6 NAtomB= 4 + DoIAMN: NPSUse= 16. + In DefCFB: NBatch= 1 ICI= 12 ICA= 88 LFMax= 88 + Large arrays: LIAPS= 90829728 LIARS= 60673536 words. + In StABat: MaxSiz= 36 MinSiz= 6 NAtomB= 4 + Leave Link 811 at Thu Jan 16 16:10:33 2025, MaxMem= 24159191040 cpu: 318.8 + (Enter /usr/local/g09/l804.exe) + Frozen-core window: NFC= 3 NFV= 0. + Open-shell transformation, MDV= 24159191040 ITran=4 ISComp=1. + Semi-Direct transformation. + ModeAB= 2 MOrb= 12 LenV= 24158582667 + LASXX= 5313561 LTotXX= 5313561 LenRXX= 5313561 + LTotAB= 5553900 MaxLAS= 7787340 LenRXY= 7787340 + NonZer= 10627122 LenScr= 16693248 LnRSAI= 0 + LnScr1= 0 LExtra= 0 Total= 29794149 + MaxDsk= -1 SrtSym= F ITran= 4 + DoSDTr: NPSUse= 16 + JobTyp=1 Pass 1: I= 1 to 12. + (rs|ai) integrals will be sorted in core. + Complete sort for first half transformation. + First half transformation complete. + Begin second half transformation for I= 10. + Begin second half transformation for I= 10. + Complete sort for second half transformation. + Second half transformation complete. + ModeAB= 2 MOrb= 11 LenV= 24158582667 + LASXX= 4907848 LTotXX= 4907848 LenRXX= 7138395 + LTotAB= 3958152 MaxLAS= 7138395 LenRXY= 3958152 + NonZer= 9815696 LenScr= 15493120 LnRSAI= 0 + LnScr1= 0 LExtra= 0 Total= 26589667 + MaxDsk= -1 SrtSym= F ITran= 4 + DoSDTr: NPSUse= 16 + JobTyp=2 Pass 1: I= 1 to 11. + (rs|ai) integrals will be sorted in core. + Complete sort for first half transformation. + First half transformation complete. + Begin second half transformation for I= 10. + Begin second half transformation for I= 10. + Complete sort for second half transformation. + Second half transformation complete. + SymMOI: orbitals are not symmetric. + DoSCS=T DFT=T ScalE2(SS,OS)= 0.270000 0.270000 + Spin components of T(2) and E(2): + alpha-alpha T2 = 0.3102162699D-01 E2= -0.2609925659D-01 + alpha-beta T2 = 0.2091039623D+00 E2= -0.1489205330D+00 + beta-beta T2 = 0.6194292438D-01 E2= -0.3023844421D-01 + E2(B2PLYPD3) = -0.2052582338D+00 E(B2PLYPD3) = -0.18903692534375D+03 + Leave Link 804 at Thu Jan 16 16:10:38 2025, MaxMem= 24159191040 cpu: 75.8 + (Enter /usr/local/g09/l1002.exe) + Minotr: UHF open shell wavefunction. + Computing MP2/KS-MP2 derivatives. + Using Z-Vector for PSCF gradient. + Skipping F1 and S1 gradient terms here. + IDoAtm=1111 + Frozen-core window. + Direct CPHF calculation. + Differentiating once with respect to electric field. + with respect to dipole field. + Differentiating once with respect to nuclear coordinates. + Requested convergence is 1.0D-10 RMS, and 1.0D-09 maximum. + NewPWx=T KeepS1=F KeepF1=F KeepIn=T MapXYZ=F SortEE=F KeepMc=T. + MDV= 24159190804 using IRadAn= 5. + Using stored XC quadrature information. + Keep R1 and R2 ints in memory in canonical form, NReq=26505311. + FoFCou: FMM=F IPFlag= 0 FMFlag= 0 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 600 IOpCl= 0 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 4950 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Symmetry not used in FoFCou. + Solving linear equations separately, MaxMat= 0. + There are 1 degrees of freedom in the 1st order CPHF. IDoFFX=0 NUNeed= 1. + LinEq1: Iter= 0 NonCon= 1 RMS=2.53D-03 Max=6.43D-02 NDo= 1 + AX will form 1 AO Fock derivatives at one time. + LinEq1: Iter= 1 NonCon= 1 RMS=7.67D-04 Max=9.08D-03 NDo= 1 + LinEq1: Iter= 2 NonCon= 1 RMS=2.98D-04 Max=3.98D-03 NDo= 1 + LinEq1: Iter= 3 NonCon= 1 RMS=1.66D-04 Max=2.44D-03 NDo= 1 + LinEq1: Iter= 4 NonCon= 1 RMS=6.29D-05 Max=1.05D-03 NDo= 1 + LinEq1: Iter= 5 NonCon= 1 RMS=1.60D-05 Max=2.19D-04 NDo= 1 + LinEq1: Iter= 6 NonCon= 1 RMS=4.65D-06 Max=9.59D-05 NDo= 1 + LinEq1: Iter= 7 NonCon= 1 RMS=4.63D-06 Max=1.02D-04 NDo= 1 + LinEq1: Iter= 8 NonCon= 1 RMS=2.01D-06 Max=2.46D-05 NDo= 1 + LinEq1: Iter= 9 NonCon= 1 RMS=6.40D-07 Max=1.20D-05 NDo= 1 + LinEq1: Iter= 10 NonCon= 1 RMS=2.78D-07 Max=5.08D-06 NDo= 1 + LinEq1: Iter= 11 NonCon= 1 RMS=7.32D-08 Max=1.21D-06 NDo= 1 + LinEq1: Iter= 12 NonCon= 1 RMS=1.61D-08 Max=1.85D-07 NDo= 1 + LinEq1: Iter= 13 NonCon= 1 RMS=4.69D-09 Max=1.41D-07 NDo= 1 + LinEq1: Iter= 14 NonCon= 1 RMS=1.76D-09 Max=3.69D-08 NDo= 1 + LinEq1: Iter= 15 NonCon= 1 RMS=2.73D-10 Max=5.75D-09 NDo= 1 + LinEq1: Iter= 16 NonCon= 1 RMS=5.59D-11 Max=1.07D-09 NDo= 1 + LinEq1: Iter= 17 NonCon= 0 RMS=1.16D-11 Max=1.42D-10 NDo= 1 + Linear equations converged to 1.000D-10 1.000D-09 after 17 iterations. + End of Minotr F.D. properties file 721 does not exist. + End of Minotr F.D. properties file 722 does not exist. + End of Minotr F.D. properties file 788 does not exist. + Leave Link 1002 at Thu Jan 16 16:10:44 2025, MaxMem= 24159191040 cpu: 97.9 + (Enter /usr/local/g09/l1102.exe) + Use density number 2. + Symmetrizing basis deriv contribution to polar: + IMax=3 JMax=2 DiffMx= 0.00D+00 + Leave Link 1102 at Thu Jan 16 16:10:44 2025, MaxMem= 24159191040 cpu: 0.2 + (Enter /usr/local/g09/l1110.exe) + Forming Gx(P) for generalized density number 2 NAtomX= 4. + Integral derivatives from FoFJK, PRISM(SPDF). + Do as many integral derivatives as possible in FoFJK. + G2DrvN: MDV= 24159190904. + G2DrvN: will do 5 centers at a time, making 1 passes. + Calling FoFCou, ICntrl= 3107 FMM=F I1Cent= 0 AccDes= 1.00D-12. + FoFJK: IHMeth= 1 ICntrl= 3107 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F + IRaf= 0 NMat= 1 IRICut= 1 DoRegI=T DoRafI=F ISym2E= 0. + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 3107 IOpCl= 1 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Symmetry not used in FoFCou. + End of G2Drv F.D. properties file 721 does not exist. + End of G2Drv F.D. properties file 722 does not exist. + End of G2Drv F.D. properties file 788 does not exist. + Leave Link 1110 at Thu Jan 16 16:10:48 2025, MaxMem= 24159191040 cpu: 66.3 + (Enter /usr/local/g09/l1112.exe) + MP22nd: MDV= 24159191040 + DoSCS=T DFT=T ScalE2(SS,OS)= 0.270000 0.270000 + Using stored XC quadrature information. + This link is doing NAtomX= 4 total of 15 degrees of freedom. + Using ON3 I/O method in MakUI. + Frozen-core window: NFC= 3 NFV= 0. + Using Ix for Sx. + Use MO integrals over full window. + Using OV2 memory method for fx*t*t/D, MaxI= 11 DoOO2=F NP= 16. + R2 and R3 integrals will be kept in memory, NReq= 44914580. + FoFCou: FMM=F IPFlag= 0 FMFlag= 0 FMFlg1= 0 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl= 600 IOpCl= 0 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Symmetry not used in FoFCou. + DD1Dir will call FoFMem 1 times, MxPair= 386 + NAB= 132 NAA= 66 NBB= 55. + Symmetry is being used. + FoFJK: IHMeth= 1 ICntrl= 0 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F + IRaf= 0 NMat= 15 IRICut= 37 DoRegI=T DoRafI=T ISym2E= 2. + R6Disp: Adding Grimme-D3(BJ) dispersion energy 1st derivatives to the gradient. + Discarding MO integrals. + Leave Link 1112 at Thu Jan 16 16:11:14 2025, MaxMem= 24159191040 cpu: 401.0 + (Enter /usr/local/g09/l601.exe) + Copying SCF densities to generalized density rwf, IOpCl= 1 IROHF=0. + + ********************************************************************** + + Population analysis using the SCF density. + + ********************************************************************** + + Orbital symmetries: + Alpha Orbitals: + Occupied (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + Virtual (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) + Beta Orbitals: + Occupied (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + Virtual (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) (A) + (A) (A) (A) (A) + The electronic state is 2-A. + Alpha occ. eigenvalues -- -19.81274 -19.81272 -10.79640 -1.31440 -1.19473 + Alpha occ. eigenvalues -- -0.74475 -0.65801 -0.59253 -0.56583 -0.46345 + Alpha occ. eigenvalues -- -0.46170 -0.42843 + Alpha virt. eigenvalues -- 0.02341 0.09621 0.14654 0.15740 0.23626 + Alpha virt. eigenvalues -- 0.30432 0.42591 0.43381 0.45084 0.46591 + Alpha virt. eigenvalues -- 0.52364 0.56066 0.56407 0.59994 0.63050 + Alpha virt. eigenvalues -- 0.74884 0.75973 0.78818 0.86013 0.95493 + Alpha virt. eigenvalues -- 1.09481 1.11607 1.39899 1.42773 1.50296 + Alpha virt. eigenvalues -- 1.53193 1.58336 1.62257 1.66458 1.72238 + Alpha virt. eigenvalues -- 1.93472 1.97258 1.99249 2.06363 2.15292 + Alpha virt. eigenvalues -- 2.19105 2.23027 2.40302 2.46346 2.65271 + Alpha virt. eigenvalues -- 2.67443 2.74260 2.82765 2.90551 2.97043 + Alpha virt. eigenvalues -- 3.01002 3.03380 3.03470 3.09817 3.22658 + Alpha virt. eigenvalues -- 3.22821 3.48772 3.49409 3.55811 3.59161 + Alpha virt. eigenvalues -- 3.79645 3.82333 4.16128 4.41766 4.43562 + Alpha virt. eigenvalues -- 5.23918 5.24495 5.25825 5.27406 5.32708 + Alpha virt. eigenvalues -- 5.49339 5.71420 5.75409 5.98142 5.99860 + Alpha virt. eigenvalues -- 6.15199 6.20897 6.40933 6.40973 6.45216 + Alpha virt. eigenvalues -- 6.50076 6.51270 6.72211 6.90953 6.91994 + Alpha virt. eigenvalues -- 6.96241 7.06210 7.14158 7.18555 23.36489 + Alpha virt. eigenvalues -- 44.04108 44.15995 + Beta occ. eigenvalues -- -19.79316 -19.79314 -10.79838 -1.27078 -1.13638 + Beta occ. eigenvalues -- -0.73156 -0.58982 -0.57120 -0.55475 -0.40396 + Beta occ. eigenvalues -- -0.35555 + Beta virt. eigenvalues -- -0.12875 0.02729 0.09634 0.15028 0.16963 + Beta virt. eigenvalues -- 0.23385 0.31074 0.42941 0.43871 0.45248 + Beta virt. eigenvalues -- 0.47703 0.52943 0.56582 0.58540 0.62093 + Beta virt. eigenvalues -- 0.65619 0.75957 0.76424 0.79770 0.86054 + Beta virt. eigenvalues -- 0.96452 1.10759 1.12766 1.40391 1.43047 + Beta virt. eigenvalues -- 1.51359 1.54293 1.58402 1.65711 1.68256 + Beta virt. eigenvalues -- 1.74382 1.93630 1.97664 2.02559 2.08634 + Beta virt. eigenvalues -- 2.16564 2.20778 2.24002 2.42572 2.47253 + Beta virt. eigenvalues -- 2.65342 2.68648 2.75186 2.88485 2.91439 + Beta virt. eigenvalues -- 2.98762 3.00632 3.03238 3.04975 3.11190 + Beta virt. eigenvalues -- 3.22588 3.23884 3.50395 3.51637 3.55859 + Beta virt. eigenvalues -- 3.59491 3.80115 3.83564 4.16708 4.42937 + Beta virt. eigenvalues -- 4.44799 5.27712 5.28209 5.29261 5.30548 + Beta virt. eigenvalues -- 5.34540 5.52257 5.74038 5.78485 6.00457 + Beta virt. eigenvalues -- 6.00927 6.16578 6.22258 6.45624 6.46558 + Beta virt. eigenvalues -- 6.49829 6.53790 6.55942 6.77326 6.91836 + Beta virt. eigenvalues -- 6.93611 6.99518 7.08628 7.18652 7.20821 + Beta virt. eigenvalues -- 23.36359 44.05610 44.17484 + Condensed to atoms (all electrons): + 1 2 3 4 + 1 O 7.894869 0.474929 -0.060613 -0.069063 + 2 C 0.474929 4.271738 0.474939 0.413317 + 3 O -0.060613 0.474939 7.894868 -0.069065 + 4 H -0.069063 0.413317 -0.069065 0.609637 + Atomic-Atomic Spin Densities. + 1 2 3 4 + 1 O 0.627020 -0.020654 -0.055687 0.017473 + 2 C -0.020654 -0.087680 -0.020655 0.007966 + 3 O -0.055687 -0.020655 0.626993 0.017473 + 4 H 0.017473 0.007966 0.017473 -0.058167 + Mulliken charges and spin densities: + 1 2 + 1 O -0.240122 0.568153 + 2 C 0.365077 -0.121023 + 3 O -0.240129 0.568125 + 4 H 0.115174 -0.015255 + Sum of Mulliken charges = 0.00000 1.00000 + Mulliken charges and spin densities with hydrogens summed into heavy atoms: + 1 2 + 1 O -0.240122 0.568153 + 2 C 0.480251 -0.136278 + 3 O -0.240129 0.568125 + APT charges: + 1 + 1 O 4.130954 + 2 C -24.231973 + 3 O 4.132278 + 4 H 15.968742 + Sum of APT charges = 0.00000 + APT charges with hydrogens summed into heavy atoms: + 1 + 1 O 4.130954 + 2 C -8.263232 + 3 O 4.132278 + Electronic spatial extent (au): = 115.5139 + Charge= 0.0000 electrons + Dipole moment (field-independent basis, Debye): + X= 0.0000 Y= 2.6669 Z= 0.0000 Tot= 2.6669 + Quadrupole moment (field-independent basis, Debye-Ang): + XX= -19.1026 YY= -14.6845 ZZ= -16.0552 + XY= 0.0000 XZ= 0.0000 YZ= 0.0000 + Traceless Quadrupole moment (field-independent basis, Debye-Ang): + XX= -2.4885 YY= 1.9296 ZZ= 0.5589 + XY= 0.0000 XZ= 0.0000 YZ= 0.0000 + Octapole moment (field-independent basis, Debye-Ang**2): + XXX= -0.0001 YYY= 2.2916 ZZZ= 0.0000 XYY= 0.0000 + XXY= 0.9248 XXZ= 0.0000 XZZ= 0.0000 YZZ= 0.0204 + YYZ= 0.0000 XYZ= 0.0000 + Hexadecapole moment (field-independent basis, Debye-Ang**3): + XXXX= -85.0286 YYYY= -28.8949 ZZZZ= -13.1914 XXXY= 0.0000 + XXXZ= 0.0000 YYYX= 0.0001 YYYZ= 0.0000 ZZZX= 0.0000 + ZZZY= 0.0000 XXYY= -19.5433 XXZZ= -16.6003 YYZZ= -7.7889 + XXYZ= 0.0000 YYXZ= 0.0000 ZZXY= 0.0000 + N-N= 6.374456577771D+01 E-N=-5.726976471210D+02 KE= 1.882753720078D+02 + Exact polarizability:-397.877 -0.002 18.271 0.000 -0.092-869.874 + Approx polarizability: 49.030 0.000 19.220 0.000 0.000 13.201 + Isotropic Fermi Contact Couplings + Atom a.u. MegaHertz Gauss 10(-4) cm-1 + 1 O(17) 0.04419 -26.79047 -9.55951 -8.93634 + 2 C(13) -0.03390 -38.11147 -13.59912 -12.71262 + 3 O(17) 0.04418 -26.78046 -9.55593 -8.93300 + 4 H(1) -0.00226 -10.08882 -3.59994 -3.36527 + -------------------------------------------------------- + Center ---- Spin Dipole Couplings ---- + 3XX-RR 3YY-RR 3ZZ-RR + -------------------------------------------------------- + 1 Atom 0.948373 0.158841 -1.107213 + 2 Atom 0.062377 0.024976 -0.087353 + 3 Atom 0.948412 0.158511 -1.106923 + 4 Atom 0.003472 0.013309 -0.016781 + -------------------------------------------------------- + XY XZ YZ + -------------------------------------------------------- + 1 Atom -1.665544 0.002541 -0.002302 + 2 Atom 0.000007 0.000000 0.000053 + 3 Atom 1.665029 -0.002541 -0.002302 + 4 Atom 0.000003 0.000000 0.000017 + -------------------------------------------------------- + + + --------------------------------------------------------------------------------- + Anisotropic Spin Dipole Couplings in Principal Axis System + --------------------------------------------------------------------------------- + + Atom a.u. MegaHertz Gauss 10(-4) cm-1 Axes + + Baa -1.1581 83.798 29.901 27.952 0.6202 0.7844 0.0045 + 1 O(17) Bbb -1.1072 80.117 28.588 26.724 -0.0036 -0.0029 1.0000 + Bcc 2.2653 -163.915 -58.489 -54.676 0.7844 -0.6202 0.0010 + + Baa -0.0874 -11.722 -4.183 -3.910 0.0000 -0.0005 1.0000 + 2 C(13) Bbb 0.0250 3.352 1.196 1.118 -0.0002 1.0000 0.0005 + Bcc 0.0624 8.370 2.987 2.792 1.0000 0.0002 0.0000 + + Baa -1.1578 83.775 29.893 27.944 -0.6202 0.7845 0.0045 + 3 O(17) Bbb -1.1069 80.096 28.580 26.717 0.0036 -0.0029 1.0000 + Bcc 2.2647 -163.872 -58.474 -54.662 0.7845 0.6202 -0.0010 + + Baa -0.0168 -8.953 -3.195 -2.987 0.0000 -0.0006 1.0000 + 4 H(1) Bbb 0.0035 1.852 0.661 0.618 1.0000 -0.0003 0.0000 + Bcc 0.0133 7.101 2.534 2.369 0.0003 1.0000 0.0006 + + + --------------------------------------------------------------------------------- + + No NMR shielding tensors so no spin-rotation constants. + Leave Link 601 at Thu Jan 16 16:11:14 2025, MaxMem= 24159191040 cpu: 2.9 + (Enter /usr/local/g09/l701.exe) + Compute integral second derivatives. + ... and contract with generalized density number 2. + Use density number 2. + R6Disp: Adding Grimme-D3(BJ) dispersion energy 2nd derivatives to the Hessian. + Entering OneElI... + Calculate overlap and kinetic energy integrals + NBasis = 114 MinDer = 2 MaxDer = 2 + Requested accuracy = 0.1000D-14 + PrsmSu: NPrtUS= 16 ThrOK=T IAlg=1 NPAlg=1 LenDen= 0. + Prism: IPart= 0 DynPar=F LinDyn=F Incr= 1. + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + PRISM was handed 1509926589 working-precision words and 702 shell-pairs + IPart= 8 NShTot= 40 NBatch= 23 AvBLen= 1.7 + IPart= 12 NShTot= 33 NBatch= 18 AvBLen= 1.8 + IPart= 10 NShTot= 35 NBatch= 19 AvBLen= 1.8 + IPart= 2 NShTot= 56 NBatch= 33 AvBLen= 1.7 + IPart= 7 NShTot= 40 NBatch= 23 AvBLen= 1.7 + IPart= 9 NShTot= 36 NBatch= 19 AvBLen= 1.9 + IPart= 3 NShTot= 51 NBatch= 28 AvBLen= 1.8 + IPart= 6 NShTot= 43 NBatch= 25 AvBLen= 1.7 + IPart= 5 NShTot= 46 NBatch= 27 AvBLen= 1.7 + IPart= 15 NShTot= 32 NBatch= 18 AvBLen= 1.8 + IPart= 4 NShTot= 51 NBatch= 28 AvBLen= 1.8 + IPart= 11 NShTot= 35 NBatch= 19 AvBLen= 1.8 + IPart= 14 NShTot= 32 NBatch= 18 AvBLen= 1.8 + IPart= 13 NShTot= 32 NBatch= 18 AvBLen= 1.8 + IPart= 1 NShTot= 67 NBatch= 38 AvBLen= 1.8 + IPart= 0 NShTot= 73 NBatch= 41 AvBLen= 1.8 + PrSmSu: NxtVal= 17. + Entering OneElI... + Calculate potential energy integrals + NBasis = 114 MinDer = 2 MaxDer = 2 + Requested accuracy = 0.1000D-14 + PrsmSu: NPrtUS= 16 ThrOK=T IAlg=1 NPAlg=1 LenDen= 0. + Prism: IPart= 0 DynPar=F LinDyn=F Incr= 1. + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + PRISM was handed 1509928287 working-precision words and 697 shell-pairs + IPart= 10 NShTot= 140 NBatch= 35 AvBLen= 4.0 + IPart= 1 NShTot= 268 NBatch= 67 AvBLen= 4.0 + IPart= 12 NShTot= 132 NBatch= 33 AvBLen= 4.0 + IPart= 11 NShTot= 136 NBatch= 34 AvBLen= 4.0 + IPart= 8 NShTot= 160 NBatch= 40 AvBLen= 4.0 + IPart= 2 NShTot= 228 NBatch= 57 AvBLen= 4.0 + IPart= 3 NShTot= 208 NBatch= 52 AvBLen= 4.0 + IPart= 6 NShTot= 164 NBatch= 41 AvBLen= 4.0 + IPart= 7 NShTot= 160 NBatch= 40 AvBLen= 4.0 + IPart= 13 NShTot= 128 NBatch= 32 AvBLen= 4.0 + IPart= 15 NShTot= 128 NBatch= 32 AvBLen= 4.0 + IPart= 9 NShTot= 144 NBatch= 36 AvBLen= 4.0 + IPart= 5 NShTot= 176 NBatch= 44 AvBLen= 4.0 + IPart= 4 NShTot= 200 NBatch= 50 AvBLen= 4.0 + IPart= 0 NShTot= 288 NBatch= 72 AvBLen= 4.0 + IPart= 14 NShTot= 128 NBatch= 32 AvBLen= 4.0 + PrSmSu: NxtVal= 17. + 1 Symmetry operations used in ECPInt. + ECPInt: NShTT= 703 NPrTT= 2280 LenC2= 701 LenP2D= 2013. + LDataN: DoStor=F MaxTD1= 8 Len= 415 + LDataN: DoStor=T MaxTD1= 8 Len= 415 + ECPSu: NPrtUS= 16 ThrOK=T + Polarizability after L701: + 1 2 3 + 1 -0.397877D+03 + 2 -0.153792D-02 0.182714D+02 + 3 -0.215726D-03 -0.917408D-01 -0.869874D+03 + Dipole Derivatives after L701: + 1 2 3 4 5 + 1 -0.290976D+02 -0.161359D+02 0.165761D-04 0.639332D+02 -0.968054D-03 + 2 -0.233596D-01 -0.432849D+00 0.431548D-02 0.160878D-03 0.968452D+00 + 3 -0.200609D-01 0.120397D-02 0.419233D+02 0.290256D-04 -0.682708D-03 + 6 7 8 9 10 + 1 -0.335667D-04 -0.290944D+02 0.161369D+02 0.381996D-05 -0.574109D+01 + 2 -0.141914D-01 0.232134D-01 -0.432832D+00 0.431556D-02 -0.147446D-04 + 3 -0.137598D+03 0.200350D-01 0.121752D-02 0.419241D+02 -0.311393D-05 + 11 12 + 1 -0.278174D-04 0.131706D-04 + 2 -0.102770D+00 0.556034D-02 + 3 -0.173879D-02 0.537501D+02 + Hessian after L701: + 1 2 3 4 5 + 1 0.153107D+01 + 2 -0.470280D+01 0.782885D+01 + 3 -0.104609D-02 -0.825705D-04 0.136150D+02 + 4 -0.563444D+01 0.341529D+01 0.119444D-03 0.151418D+02 + 5 0.603467D+01 -0.656236D+01 -0.616945D-04 0.118343D-03 0.136220D+02 + 6 0.321445D-02 -0.191143D-03 -0.179121D+02 -0.452793D-05 0.286971D-03 + 7 0.375544D+01 0.121532D+01 0.924995D-03 -0.563408D+01 -0.603488D+01 + 8 -0.121538D+01 -0.147087D+01 0.209902D-03 -0.341552D+01 -0.656270D+01 + 9 -0.926238D-03 0.209261D-03 0.162645D+01 -0.116686D-03 -0.616896D-04 + 10 0.347928D+00 0.721846D-01 0.165415D-05 -0.387329D+01 0.936489D-04 + 11 -0.116491D+00 0.204371D+00 -0.656370D-04 0.103536D-03 -0.496898D+00 + 12 -0.124212D-02 0.644525D-04 0.267072D+01 0.176953D-05 -0.163587D-03 + 6 7 8 9 10 + 6 0.471057D+02 + 7 -0.321040D-02 0.153079D+01 + 8 -0.193256D-03 0.470306D+01 0.782915D+01 + 9 -0.179129D+02 0.104487D-02 -0.819295D-04 0.136157D+02 + 10 0.000000D+00 0.347850D+00 -0.721639D-01 -0.194756D-05 0.317751D+01 + 11 0.974268D-04 0.116501D+00 0.204420D+00 -0.656416D-04 -0.114385D-03 + 12 -0.112806D+02 0.124054D-02 0.652830D-04 0.267077D+01 0.000000D+00 + 11 12 + 11 0.881074D-01 + 12 0.338519D-04 0.593915D+01 + Leave Link 701 at Thu Jan 16 16:11:14 2025, MaxMem= 24159191040 cpu: 5.0 + (Enter /usr/local/g09/l702.exe) + L702 exits ... SP integral derivatives will be done elsewhere. + Leave Link 702 at Thu Jan 16 16:11:14 2025, MaxMem= 24159191040 cpu: 0.2 + (Enter /usr/local/g09/l703.exe) + Compute integral second derivatives, UseDBF=F ICtDFT= 0. + Integral derivatives from FoFJK, PRISM(SPDF). + ICntrl= 10100127. + Calling FoFJK, ICntrl= 10100127 FMM=F ISym2X=0 I1Cent= 0 IOpClX= 1 NMat=1 NMatS=1 NMatT=0. + FoFJK: IHMeth= 1 ICntrl=10100127 DoSepK=F KAlg= 0 I1Cent= 0 FoldK=F + IRaf= 0 NMat= 1 IRICut= 1 DoRegI=T DoRafI=F ISym2E= 0. + FoFCou: FMM=F IPFlag= 0 FMFlag= 100000 FMFlg1= 800 + NFxFlg= 0 DoJE=F BraDBF=F KetDBF=F FulRan=T + wScrn= 0.000000 ICntrl=10100127 IOpCl= 1 I1Cent= 0 NGrid= 0 + NMat0= 1 NMatS0= 1 NMatT0= 0 NMatD0= 1 NMtDS0= 0 NMtDT0= 0 + Symmetry not used in FoFCou. + FoFCou: KetSym=F NOpSet= 1 NOpAb=1 NOp= 1. + FoFCou: CnvScl= 1.00D+00 Thresh= 1.00D-12 IAcrcy= 10. + PrismS was handed 24159107951 working-precision words and 698 shell-pairs + FoFCou: LinMIO=F DoNuc=F BraDBF=F KetDBF=F HaveP=T PDBF=F HaveZ=T HaveW=F + NIJTC = 10 NIJTAt= 0 NIJTCD= 0 NIJTT = 10 + IJTBeg= 1 IJTEnd= 10 KLTBeg= 1 KLTEnd= 10 + IPTBeg= 1 IPTEnd= 10 IPTBCv= 1 IPTECv= 10 + IZTBeg= 1 IZTEnd= 10 IZTBCv= 1 IZTECv= 10 + IWTBeg= 11 IWTEnd= 10 IWTBCv= 11 IWTECv= 10 + INTBeg= 1 INTEnd= 0 IFTBCv= 1 IFTECv= 10 + NCel replicated for PrismC: 1 + CoulSu: IncDef= 1024 NBBP= 243951 NTPThr= 100 NPartT= 16 Incr= 152 LDynOK=F. + CoulSu: NPrtUS= 16 ThrOK=T IAlg=1 NPAlg=1 LenDen= 0 LWGrdD= 0 DoCopy=F. + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC: IPart= 0 DynPar=T LinDyn=F Incr= 152 UseFst=F UseS4=T IGathr=2. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + Enter PrismC: JobTyp=22 DoJE=F Cont=F. + PrismC was handed 1509928462 working-precision words and 698 shell-pairs + IPart= 5 NShTot= 25783 NShNF= 25783 NShFF= 0 NBatch= 860 AvBLen= 30.0 + IPart= 12 NShTot= 23529 NShNF= 23529 NShFF= 0 NBatch= 840 AvBLen= 28.0 + IPart= 7 NShTot= 23601 NShNF= 23601 NShFF= 0 NBatch= 928 AvBLen= 25.4 + IPart= 1 NShTot= 25527 NShNF= 25527 NShFF= 0 NBatch= 922 AvBLen= 27.7 + IPart= 9 NShTot= 11705 NShNF= 11705 NShFF= 0 NBatch= 444 AvBLen= 26.4 + IPart= 6 NShTot= 12251 NShNF= 12251 NShFF= 0 NBatch= 490 AvBLen= 25.0 + IPart= 14 NShTot= 13797 NShNF= 13797 NShFF= 0 NBatch= 619 AvBLen= 22.3 + IPart= 11 NShTot= 14554 NShNF= 14554 NShFF= 0 NBatch= 594 AvBLen= 24.5 + IPart= 13 NShTot= 12554 NShNF= 12554 NShFF= 0 NBatch= 543 AvBLen= 23.1 + IPart= 3 NShTot= 12638 NShNF= 12638 NShFF= 0 NBatch= 528 AvBLen= 23.9 + IPart= 15 NShTot= 10568 NShNF= 10568 NShFF= 0 NBatch= 345 AvBLen= 30.6 + IPart= 10 NShTot= 15287 NShNF= 15287 NShFF= 0 NBatch= 642 AvBLen= 23.8 + IPart= 2 NShTot= 12337 NShNF= 12337 NShFF= 0 NBatch= 548 AvBLen= 22.5 + IPart= 8 NShTot= 12954 NShNF= 12954 NShFF= 0 NBatch= 489 AvBLen= 26.5 + IPart= 4 NShTot= 12759 NShNF= 12759 NShFF= 0 NBatch= 573 AvBLen= 22.3 + IPart= 0 NShTot= 273 NShNF= 273 NShFF= 0 NBatch= 24 AvBLen= 11.4 + CoulSu: NxtVal= 259161. + ReadGW: IGet=0 IStart= 1 Next= 1 LGW= 0. + Remaining memory in FofDFT 23039.97 Mw + CkSvGd: ISavGI= -1 IRadAn= 5 IRASav= 5 ISavGd= -1. + CalDSu: NPrtUS= 16 ThrOK=T IAlg=1 NPAlg=2 DoDPD=T LenP= 6555 LenD1P= 0. + IPart= 0 IRanGd= 0 ScrnBf=T ScrnGd=T RCrit=4.00D+00 DoMicB=T. + IPart= 5 9261 of 10036 points in 10 batches and 62 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 11 6568 of 6890 points in 7 batches and 72 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 7 7207 of 7556 points in 7 batches and 31 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 0 3202 of 3322 points in 3 batches and 22 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 1 6530 of 6666 points in 5 batches and 32 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 3 3429 of 3568 points in 4 batches and 24 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 4 4650 of 4720 points in 4 batches and 14 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 8 3931 of 4144 points in 4 batches and 26 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 15 4772 of 4910 points in 4 batches and 34 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 9 4543 of 4748 points in 5 batches and 43 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 10 5613 of 6004 points in 6 batches and 38 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 14 4020 of 4130 points in 4 batches and 15 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 2 4323 of 4488 points in 4 batches and 36 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 13 4059 of 4144 points in 4 batches and 15 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 12 6988 of 7164 points in 6 batches and 40 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + IPart= 6 6286 of 6392 points in 5 batches and 37 microbatches, Max-NSigAt= 4 Max-NSgAt2= 4 + Polarizability after L703: + 1 2 3 + 1 -0.397877D+03 + 2 -0.153792D-02 0.182714D+02 + 3 -0.215726D-03 -0.917408D-01 -0.869874D+03 + Dipole Derivatives after L703: + 1 2 3 4 5 + 1 -0.290976D+02 -0.161359D+02 0.165761D-04 0.639332D+02 -0.968054D-03 + 2 -0.233596D-01 -0.432849D+00 0.431548D-02 0.160878D-03 0.968452D+00 + 3 -0.200609D-01 0.120397D-02 0.419233D+02 0.290256D-04 -0.682708D-03 + 6 7 8 9 10 + 1 -0.335667D-04 -0.290944D+02 0.161369D+02 0.381996D-05 -0.574109D+01 + 2 -0.141914D-01 0.232134D-01 -0.432832D+00 0.431556D-02 -0.147446D-04 + 3 -0.137598D+03 0.200350D-01 0.121752D-02 0.419241D+02 -0.311393D-05 + 11 12 + 1 -0.278174D-04 0.131706D-04 + 2 -0.102770D+00 0.556034D-02 + 3 -0.173879D-02 0.537501D+02 + Hessian after L703: + 1 2 3 4 5 + 1 0.237656D+01 + 2 0.131275D+01 0.830789D+00 + 3 -0.971050D-03 0.536691D-04 0.203280D+01 + 4 -0.455899D+01 -0.254766D+01 0.143836D-04 0.100510D+02 + 5 -0.257667D+00 -0.271947D+00 -0.273617D-04 -0.139141D-03 0.852583D+00 + 6 0.316005D-02 -0.184898D-03 -0.664989D+01 -0.451215D-05 0.102316D-03 + 7 0.178716D+01 0.104657D+01 0.959859D-03 -0.455851D+01 0.257801D+00 + 8 -0.104676D+01 -0.543534D+00 0.577415D-04 0.254781D+01 -0.272039D+00 + 9 -0.961101D-03 0.570996D-04 0.203285D+01 -0.116434D-04 -0.273618D-04 + 10 0.395267D+00 0.188340D+00 -0.319358D-05 -0.933533D+00 0.469903D-05 + 11 -0.833015D-02 -0.153077D-01 -0.840489D-04 -0.110108D-04 -0.308597D+00 + 12 -0.122790D-02 0.741292D-04 0.258423D+01 0.177194D-05 -0.475926D-04 + 6 7 8 9 10 + 6 0.217537D+02 + 7 -0.315602D-02 0.237613D+01 + 8 -0.187016D-03 -0.131270D+01 0.830885D+00 + 9 -0.665003D+01 0.969845D-03 0.543128D-04 0.203289D+01 + 10 0.000000D+00 0.395223D+00 -0.188349D+00 0.289857D-05 0.143042D+00 + 11 0.269598D-03 0.833681D-02 -0.153125D-01 -0.840506D-04 0.435094D-05 + 12 -0.845376D+01 0.122631D-02 0.749618D-04 0.258429D+01 0.000000D+00 + 11 12 + 11 0.339217D+00 + 12 -0.101498D-03 0.328524D+01 + Leave Link 703 at Thu Jan 16 16:11:26 2025, MaxMem= 24159191040 cpu: 185.1 + (Enter /usr/local/g09/l716.exe) + FrcOut: + IF = 40 IFX = 52 IFXYZ = 64 + IFFX = 76 IFFFX = 154 IFLen = 12 + IFFLen= 78 IFFFLn= 0 IEDerv= 154 + LEDerv= 629 IFroze= 941 ICStrt= 20794 + Dipole =-1.25355748D-04 9.39254319D-01-1.55941536D-04 + DipoleDeriv =-2.90976382D+01-2.33595685D-02-2.00608673D-02 + -1.61358857D+01-4.32849206D-01 1.20397453D-03 + 1.65761314D-05 4.31547515D-03 4.19233486D+01 + 6.39331741D+01 1.60878141D-04 2.90255691D-05 + -9.68054169D-04 9.68451794D-01-6.82707874D-04 + -3.35666709D-05-1.41913740D-02-1.37597546D+02 + -2.90944489D+01 2.32134350D-02 2.00349557D-02 + 1.61368815D+01-4.32832193D-01 1.21752040D-03 + 3.81996413D-06 4.31556075D-03 4.19241148D+01 + -5.74108702D+00-1.47446156D-05-3.11392708D-06 + -2.78174122D-05-1.02770395D-01-1.73878706D-03 + 1.31705708D-05 5.56033812D-03 5.37500826D+01 + Polarizability=-3.97877296D+02-1.53791570D-03 1.82713804D+01 + -2.15726447D-04-9.17408132D-02-8.69874295D+02 + VibFq2-Diag1: N= 12 IV= 5 MDV= 24159169498 NE2= 2013264124 + Full mass-weighted force constant matrix: + Low frequencies --- -4.3823 -2.1200 -1.6692 -0.0012 -0.0012 -0.0007 + Low frequencies --- 651.3862 1282.0556 1478.8421 + OrtVCM: Ph=1 IPass= 1 DotMx1= 0.00D+00 + OrtVCM: IS= 1 I= 1 IndO= 1 Dot= 1.00D+00 DotN= 1.00D+00 ElMax1= 5.96D-01 ElMax1N= 5.96D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 2 IPass= 1 DotMx2= 0.00D+00 + OrtVCM: IS= 1 I= 2 IndO= 2 Dot= 1.00D+00 DotN= 1.00D+00 ElMax1= 5.96D-01 ElMax1N= 5.96D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 3 IPass= 1 DotMx2= 0.00D+00 + OrtVCM: IS= 1 I= 3 IndO= 3 Dot= 1.00D+00 DotN= 1.00D+00 ElMax1= 5.96D-01 ElMax1N= 5.96D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 4 IPass= 1 DotMx2= 5.35D-17 + OrtVCM: IS= 1 I= 4 IndO= 4 Dot= 1.00D+00 DotN= 1.00D+00 ElMax1= 6.27D-01 ElMax1N= 6.27D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 5 IPass= 1 DotMx2= 2.01D-17 + OrtVCM: IS= 1 I= 5 IndO= 5 Dot= 1.00D+00 DotN= 1.00D+00 ElMax1= 7.07D-01 ElMax1N= 7.07D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 6 IPass= 1 DotMx2= 2.61D-17 + OrtVCM: IS= 1 I= 6 IndO= 6 Dot= 1.00D+00 DotN= 1.00D+00 ElMax1= 6.47D-01 ElMax1N= 6.47D-01 + OrtVCM: Ph=1 IPass= 1 DotMx1= 7.07D-01 + OrtVCM: Ph=1 IPass= 2 DotMx1= 1.91D-16 + OrtVCM: IS= 1 I= 1 IndO= 7 Dot= 6.25D-01 DotN= 6.25D-01 ElMax1= 6.25D-01 ElMax1N= 6.25D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 2 IPass= 1 DotMx2= 1.14D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 2 IPass= 2 DotMx2= 1.70D-17 + OrtVCM: IS= 1 I= 2 IndO= 8 Dot= 2.12D-01 DotN= 2.12D-01 ElMax1= 3.08D-01 ElMax1N= 3.08D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 3 IPass= 1 DotMx2= 3.39D-07 + OrtVCM: Ph=2 NNew= 0 IAdd= 3 IPass= 2 DotMx2= 3.39D-23 + OrtVCM: IS= 1 I= 3 IndO= 9 Dot= 2.39D-02 DotN= 2.39D-02 ElMax1= 1.21D-01 ElMax1N= 1.21D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 4 IPass= 1 DotMx2= 3.45D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 4 IPass= 2 DotMx2= 7.37D-17 + OrtVCM: IS= 1 I= 4 IndO= 10 Dot= 4.79D-01 DotN= 4.79D-01 ElMax1= 4.79D-01 ElMax1N= 4.79D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 5 IPass= 1 DotMx2= 6.68D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 5 IPass= 2 DotMx2= 1.10D-16 + OrtVCM: IS= 1 I= 5 IndO= 11 Dot= 2.20D-01 DotN= 2.20D-01 ElMax1= 3.11D-01 ElMax1N= 3.11D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 6 IPass= 1 DotMx2= 5.83D-01 + OrtVCM: Ph=2 NNew= 0 IAdd= 6 IPass= 2 DotMx2= 3.61D-17 + OrtVCM: IS= 1 I= 6 IndO= 0 Dot= 5.65D-35 DotN= 5.65D-35 ElMax1= 5.34D-18 ElMax1N= 5.34D-18 + SchOr2: IPass= 1 Test2A= 1.00D-01 IOff= 0 NDo= 6 NNew= 5 + OrtVCM: Ph=1 IPass= 1 DotMx1= 5.96D-01 + OrtVCM: Ph=1 IPass= 2 DotMx1= 1.83D-16 + OrtVCM: IS= 1 I= 1 IndO= 12 Dot= 1.50D-02 DotN= 1.50D-02 ElMax1= 1.03D-01 ElMax1N= 1.03D-01 + SchOr2: IPass= 1 Test2A= 1.00D-01 IOff= 6 NDo= 1 NNew= 1 + VibFq2-Diag2: N= 6 IV= 5 MDV= 24159169498 NE2= 4026528249 + Dipole derivatives wrt mode 1: -4.98973D-04 4.75657D+00 3.68153D-04 + Vibrational polarizability contributions from mode 1 0.0000000 1.4349738 0.0000000 + Vibrational hyperpolarizability contributions from mode 1 0.0000000 0.0000000 0.0000000 + Dipole derivatives wrt mode 2: -9.23819D+00 -3.71200D-04 7.21956D-08 + Vibrational polarizability contributions from mode 2 1.3973125 0.0000000 0.0000000 + Vibrational hyperpolarizability contributions from mode 2 0.0000000 0.0000000 0.0000000 + Dipole derivatives wrt mode 3: 5.50405D-04 -7.39597D+00 1.72713D-03 + Vibrational polarizability contributions from mode 3 0.0000000 0.6731001 0.0000000 + Vibrational hyperpolarizability contributions from mode 3 0.0000000 0.0000000 0.0000000 + Dipole derivatives wrt mode 4: 2.04352D-03 -5.65597D+00 1.89101D-03 + Vibrational polarizability contributions from mode 4 0.0000000 0.0895992 0.0000000 + Vibrational hyperpolarizability contributions from mode 4 0.0000000 0.0000000 0.0000000 + Dipole derivatives wrt mode 5: 7.06253D+02 1.57449D-03 -9.88509D-05 + Vibrational polarizability contributions from mode 5 402.0271450 0.0000000 0.0000000 + Vibrational hyperpolarizability contributions from mode 5 0.0000000 0.0000000 0.0000000 + Dipole derivatives wrt mode 6: 6.62785D-04 2.20375D-01 2.13236D+03 + Vibrational polarizability contributions from mode 6 0.0000000 0.0000093 869.3331729 + Vibrational hyperpolarizability contributions from mode 6 0.0000000 0.0000000 0.0000000 + Diagonal vibrational polarizability: + 403.4244576 2.1976824 869.3331730 + NorSel: MapVib= 1 2 3 4 5 6 + Harmonic frequencies (cm**-1), IR intensities (KM/Mole), Raman scattering + activities (A**4/AMU), depolarization ratios for plane and unpolarized + incident light, reduced masses (AMU), force constants (mDyne/A), + and normal coordinates: + 1 2 3 + A A A + Frequencies -- 651.3862 1282.0556 1478.8421 + Red. masses -- 12.2034 1.1753 8.6591 + Frc consts -- 3.0508 1.1382 11.1575 + IR Inten -- 22.6250 85.3442 54.7004 + Atom AN X Y Z X Y Z X Y Z + 1 8 0.51 -0.19 0.00 0.04 0.06 0.00 0.29 0.23 0.00 + 2 6 0.00 0.46 0.00 -0.03 0.00 0.00 0.00 -0.57 0.00 + 3 8 -0.51 -0.19 0.00 0.04 -0.06 0.00 -0.29 0.23 0.00 + 4 1 0.00 0.44 0.00 -0.99 0.00 0.00 0.00 -0.64 0.00 + 4 5 6 + A A A + Frequencies -- 3099.7162 5778.2888 11864.0891 + Red. masses -- 1.0938 7.0451 1.5660 + Frc consts -- 6.1917 138.5910 129.8726 + IR Inten -- 31.9900 498793.4795 4546968.6148 + Atom AN X Y Z X Y Z X Y Z + 1 8 0.00 0.00 0.00 -0.21 -0.12 0.00 0.00 0.00 0.05 + 2 6 0.00 -0.09 0.00 0.62 0.00 0.00 0.00 0.00 -0.21 + 3 8 0.00 0.00 0.00 -0.21 0.12 0.00 0.00 0.00 0.05 + 4 1 0.00 1.00 0.00 -0.70 0.00 0.00 0.00 0.00 0.98 + + ------------------- + - Thermochemistry - + ------------------- + Temperature 298.150 Kelvin. Pressure 1.00000 Atm. + Atom 1 has atomic number 8 and mass 15.99491 + Atom 2 has atomic number 6 and mass 12.00000 + Atom 3 has atomic number 8 and mass 15.99491 + Atom 4 has atomic number 1 and mass 1.00783 + Molecular mass: 44.99765 amu. + Principal axes and moments of inertia in atomic units: + 1 2 3 + Eigenvalues -- 24.04934 124.35327 148.40261 + X 1.00000 0.00000 0.00000 + Y 0.00000 1.00000 0.00000 + Z 0.00000 0.00000 1.00000 + This molecule is an asymmetric top. + Rotational symmetry number 1. + Rotational temperatures (Kelvin) 3.60151 0.69651 0.58364 + Rotational constants (GHZ): 75.04328 14.51302 12.16111 + Zero-point vibrational energy 144475.3 (Joules/Mol) + 34.53042 (Kcal/Mol) + Vibrational temperatures: 937.20 1844.59 2127.72 4459.79 8313.66 + (Kelvin) 17069.76 + + Zero-point correction= 0.055028 (Hartree/Particle) + Thermal correction to Energy= 0.058011 + Thermal correction to Enthalpy= 0.058956 + Thermal correction to Gibbs Free Energy= 0.030519 + Sum of electronic and zero-point Energies= -188.981898 + Sum of electronic and thermal Energies= -188.978914 + Sum of electronic and thermal Enthalpies= -188.977970 + Sum of electronic and thermal Free Energies= -189.006406 + + E (Thermal) CV S + KCal/Mol Cal/Mol-Kelvin Cal/Mol-Kelvin + Total 36.403 7.125 59.850 + Electronic 0.000 0.000 1.377 + Translational 0.889 2.981 37.338 + Rotational 0.889 2.981 20.723 + Vibrational 34.625 1.163 0.412 + Q Log10(Q) Ln(Q) + Total Bot 0.916571D-14 -14.037834 -32.323307 + Total V=0 0.187546D+12 11.273107 25.957289 + Vib (Bot) 0.512211D-25 -25.290551 -58.233646 + Vib (V=0) 0.104807D+01 0.020390 0.046950 + Electronic 0.200000D+01 0.301030 0.693147 + Translational 0.118642D+08 7.074240 16.289040 + Rotational 0.754132D+04 3.877447 8.928152 + + OCHO + IR Spectrum + + 1 5 3 1 1 + 8 7 1 4 2 6 + 6 7 0 7 8 5 + 4 8 0 9 2 1 + + X X X X X X + X X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + X + + Forces in standard orientation: + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 8 0.000007527 0.000004443 -0.000007231 + 2 6 -0.000019385 -0.000001808 0.000023691 + 3 8 0.000007916 -0.000001781 -0.000007231 + 4 1 0.000003942 -0.000000853 -0.000009229 + ------------------------------------------------------------------- + ***** Axes restored to original set ***** + Rotating derivatives, DoTrsp=F IDiff=-2 LEDeriv= 628 LFDPrp= 0 LDFDPr= 0. + ------------------------------------------------------------------- + Center Atomic Forces (Hartrees/Bohr) + Number Number X Y Z + ------------------------------------------------------------------- + 1 8 0.000008547 -0.000002537 -0.000007014 + 2 6 -0.000019864 -0.000002826 0.000023190 + 3 8 0.000007453 0.000003602 -0.000007042 + 4 1 0.000003864 0.000001761 -0.000009133 + ------------------------------------------------------------------- + Cartesian Forces: Max 0.000023190 RMS 0.000010363 + Z-matrix is all fixed cartesians, so copy forces. + Force constants in Cartesian coordinates: + 1 2 3 4 5 + 1 0.289283D+01 + 2 -0.810528D+00 0.313993D+00 + 3 0.211729D-01 -0.209876D-01 0.203332D+01 + 4 -0.496501D+01 0.140535D+01 0.431592D-01 0.954468D+01 + 5 -0.883866D+00 0.132887D+00 -0.229875D-01 0.211280D+01 0.136697D+01 + 6 0.462943D-01 0.366358D-01 -0.664870D+01 -0.313289D+00 0.551322D-01 + 7 0.165705D+01 -0.510912D+00 -0.866845D-02 -0.367611D+01 -0.108541D+01 + 8 0.158171D+01 -0.413171D+00 0.408710D-01 -0.337465D+01 -0.115632D+01 + 9 -0.106410D-01 -0.132656D-01 0.203260D+01 0.764440D-01 -0.280987D-01 + 10 0.415127D+00 -0.839095D-01 -0.556637D-01 -0.903562D+00 -0.143531D+00 + 11 0.112685D+00 -0.337091D-01 0.310422D-02 -0.143508D+00 -0.343538D+00 + 12 -0.568262D-01 -0.238253D-02 0.258278D+01 0.193686D+00 -0.404597D-02 + 6 7 8 9 10 + 6 0.217456D+02 + 7 0.732352D-01 0.168670D+01 + 8 -0.874140D-01 0.152043D+01 0.152049D+01 + 9 -0.664814D+01 -0.800264D-02 0.392067D-01 0.203271D+01 + 10 0.193760D+00 0.332361D+00 0.272509D+00 -0.578004D-01 0.156074D+00 + 11 -0.435396D-02 0.758907D-01 0.490013D-01 0.215758D-02 -0.450678D-01 + 12 -0.844879D+01 -0.565641D-01 0.733633D-02 0.258283D+01 -0.802956D-01 + 11 12 + 11 0.328246D+00 + 12 -0.907839D-03 0.328318D+01 + Final forces over variables, Energy=-1.89036925D+02: + 8.54713174D-06-1.98644063D-05 7.45310634D-06 3.86416828D-06 + -2.53748123D-06-2.82564685D-06 3.60212165D-06 1.76100641D-06 + -7.01406641D-06 2.31895911D-05-7.04228239D-06-9.13324229D-06 + Leave Link 716 at Thu Jan 16 16:11:26 2025, MaxMem= 24159191040 cpu: 0.2 + (Enter /usr/local/g09/l103.exe) + + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + Berny optimization. + Search for a local minimum. + Step number 1 out of a maximum of 2 + All quantities printed in internal units (Hartrees-Bohrs-Radians) + Second derivative matrix not updated -- analytic derivatives used. + The second derivative matrix: + X1 Y1 Z1 X2 Y2 + X1 2.89283 + Y1 -0.81053 0.31399 + Z1 0.02117 -0.02099 2.03332 + X2 -4.96501 1.40535 0.04316 9.54468 + Y2 -0.88387 0.13289 -0.02299 2.11280 1.36697 + Z2 0.04629 0.03664 -6.64870 -0.31329 0.05513 + X3 1.65705 -0.51091 -0.00867 -3.67611 -1.08541 + Y3 1.58171 -0.41317 0.04087 -3.37465 -1.15632 + Z3 -0.01064 -0.01327 2.03260 0.07644 -0.02810 + X4 0.41513 -0.08391 -0.05566 -0.90356 -0.14353 + Y4 0.11268 -0.03371 0.00310 -0.14351 -0.34354 + Z4 -0.05683 -0.00238 2.58278 0.19369 -0.00405 + Z2 X3 Y3 Z3 X4 + Z2 21.74563 + X3 0.07324 1.68670 + Y3 -0.08741 1.52043 1.52049 + Z3 -6.64814 -0.00800 0.03921 2.03271 + X4 0.19376 0.33236 0.27251 -0.05780 0.15607 + Y4 -0.00435 0.07589 0.04900 0.00216 -0.04507 + Z4 -8.44879 -0.05656 0.00734 2.58283 -0.08030 + Y4 Z4 + Y4 0.32825 + Z4 -0.00091 3.28318 + ITU= 0 + Eigenvalues --- 0.11609 0.18084 0.48468 1.36672 15.56442 + Eigenvalues --- 24.94327 + Angle between quadratic step and forces= 80.76 degrees. + Linear search not attempted -- first point. + TrRot= -0.000003 -0.000002 0.000000 0.000001 0.000000 0.000001 + Variable Old X -DE/DX Delta X Delta X Delta X New X + (Linear) (Quad) (Total) + X1 2.19244 0.00001 0.00000 -0.00001 -0.00001 2.19243 + Y1 -0.67381 0.00000 0.00000 0.00000 0.00000 -0.67381 + Z1 0.05628 -0.00001 0.00000 0.00000 0.00000 0.05628 + X2 -0.03312 -0.00002 0.00000 -0.00001 -0.00001 -0.03313 + Y2 0.13617 0.00000 0.00000 0.00000 0.00000 0.13617 + Z2 -0.00085 0.00002 0.00000 0.00000 0.00000 -0.00085 + X3 -1.63771 0.00001 0.00000 0.00000 0.00000 -1.63770 + Y3 -1.60625 0.00000 0.00000 -0.00001 -0.00001 -1.60626 + Z3 -0.04193 -0.00001 0.00000 0.00000 0.00000 -0.04193 + X4 -0.52160 0.00000 0.00000 0.00002 0.00001 -0.52159 + Y4 2.14389 0.00000 0.00000 0.00001 0.00001 2.14390 + Z4 -0.01349 -0.00001 0.00000 0.00000 0.00000 -0.01349 + Item Value Threshold Converged? + Maximum Force 0.000023 0.000450 YES + RMS Force 0.000010 0.000300 YES + Maximum Displacement 0.000015 0.001800 YES + RMS Displacement 0.000008 0.001200 YES + Predicted change in Energy=-8.437481D-11 + Optimization completed. + -- Stationary point found. + GradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGradGrad + + Leave Link 103 at Thu Jan 16 16:11:26 2025, MaxMem= 24159191040 cpu: 0.1 + (Enter /usr/local/g09/l9999.exe) + + Test job not archived. + 1\1\GINC-N132\Freq\UB2PLYPD3-FC\def2TZVP\C1H1O2(2)\JINTAOWU\16-Jan-202 + 5\0\\#P guess=read ub2plypd3/def2tzvp freq IOp(7/33=1) integral=(grid= + ultrafine, Acc2E=12) IOp(2/9=2000) scf=(direct,tight)\\OCHO\\0,2\O,1.1 + 60188,-0.356566,0.029781\C,-0.017527,0.072059,-0.000452\O,-0.866638,-0 + .84999,-0.022189\H,-0.276021,1.134498,-0.00714\\Version=EM64L-G09RevD. + 01\State=2-A\HF=-188.8316671\MP2=-189.0369253\S2=0.767375\S2-1=0.\S2A= + 0.750119\RMSD=7.264e-09\RMSF=1.036e-05\ZeroPoint=0.0550277\Thermal=0.0 + 580115\Dipole=-0.221906,0.9126474,-0.0055829\DipoleDeriv=-31.1589897,- + 7.4635743,-1.8936399,8.6436978,1.6770648,0.2178623,-1.8742115,-0.19361 + 92,41.874786,60.2822649,14.461398,5.0754247,14.4628626,4.4892651,0.364 + 499,5.0721696,0.3775765,-137.4674501,-23.736332,-5.7028925,-1.6643704, + -21.8114606,-5.7483068,-0.5535691,-1.6822854,-0.1480788,41.8814726,-5. + 3869432,-1.2949312,-1.5174144,-1.2950999,-0.4180231,-0.0287922,-1.5156 + 727,-0.0358785,53.7111915\Polar=-374.9341892,-95.5810607,-4.9965622,12 + .6798329,-2.4066459,-869.549459\PG=C01 [X(C1H1O2)]\NImag=0\\2.89283354 + ,-0.81052810,0.31399298,0.02117293,-0.02098764,2.03332300,-4.96500770, + 1.40535005,0.04315921,9.54468165,-0.88386591,0.13288703,-0.02298754,2. + 11280438,1.36697176,0.04629430,0.03663582,-6.64869960,-0.31328919,0.05 + 513217,21.74562965,1.65704723,-0.51091243,-0.00866845,-3.67611210,-1.0 + 8540717,0.07323519,1.68670351,1.58170922,-0.41317091,0.04087097,-3.374 + 64674,-1.15632035,-0.08741403,1.52042889,1.52048993,-0.01064102,-0.013 + 26565,2.03260137,0.07644404,-0.02809866,-6.64814234,-0.00800264,0.0392 + 0673,2.03270699,0.41512693,-0.08390952,-0.05566369,-0.90356185,-0.1435 + 3129,0.19375970,0.33236136,0.27250863,-0.05780038,0.15607356,0.1126847 + 8,-0.03370910,0.00310422,-0.14350768,-0.34353844,-0.00435396,0.0758907 + 2,0.04900133,0.00215758,-0.04506782,0.32824621,-0.05682621,-0.00238253 + ,2.58277522,0.19368595,-0.00404597,-8.44878771,-0.05656410,0.00733633, + 2.58283398,-0.08029564,-0.00090784,3.28317851\\-0.00000855,0.00000254, + 0.00000701,0.00001986,0.00000283,-0.00002319,-0.00000745,-0.00000360,0 + .00000704,-0.00000386,-0.00000176,0.00000913\\\@ + + + YOU CANNOT THROW TO THE GROUND THE LETTERS OF + THE GREEK ALPHABET AND PICK UP THE ILIAD. + - RUFUS CHOATE, 1799-1859 + Job cpu time: 0 days 0 hours 31 minutes 54.0 seconds. + File lengths (MBytes): RWF= 1245 Int= 0 D2E= 0 Chk= 3 Scr= 1 + Normal termination of Gaussian 09 at Thu Jan 16 16:11:26 2025. diff --git a/examples/arkane/species/OCHO/input.py b/examples/arkane/species/OCHO/input.py new file mode 100644 index 00000000000..92682110ae5 --- /dev/null +++ b/examples/arkane/species/OCHO/input.py @@ -0,0 +1,16 @@ +title = 'OCHO' + +description = \ +""" +An example for defining a species using a direct (numeric) E0 input (see in OCHO.py) +""" + + +species('OCHO', 'OCHO.py', + structure = SMILES('[O]C=O'), + collisionModel = TransportData(sigma=(3.59,'angstrom'), epsilon=(4140.61,'J/mol')), + energyTransferModel = SingleExponentialDown(alpha0=(80,'cm^-1'), T0=(300,'K'), n=0.85), +) + +statmech('OCHO') + diff --git a/examples/arkane/species/Toulene_Free_Rotor/TolueneEnergy.log b/examples/arkane/species/Toluene_Free_Rotor/TolueneEnergy.log similarity index 100% rename from examples/arkane/species/Toulene_Free_Rotor/TolueneEnergy.log rename to examples/arkane/species/Toluene_Free_Rotor/TolueneEnergy.log diff --git a/examples/arkane/species/Toulene_Free_Rotor/TolueneFreq.log b/examples/arkane/species/Toluene_Free_Rotor/TolueneFreq.log similarity index 100% rename from examples/arkane/species/Toulene_Free_Rotor/TolueneFreq.log rename to examples/arkane/species/Toluene_Free_Rotor/TolueneFreq.log diff --git a/examples/arkane/species/Toulene_Free_Rotor/input.py b/examples/arkane/species/Toluene_Free_Rotor/input.py similarity index 100% rename from examples/arkane/species/Toulene_Free_Rotor/input.py rename to examples/arkane/species/Toluene_Free_Rotor/input.py diff --git a/examples/arkane/species/Toulene_Free_Rotor/toluene_FreeRotor.py b/examples/arkane/species/Toluene_Free_Rotor/toluene_FreeRotor.py similarity index 100% rename from examples/arkane/species/Toulene_Free_Rotor/toluene_FreeRotor.py rename to examples/arkane/species/Toluene_Free_Rotor/toluene_FreeRotor.py diff --git a/examples/arkane/species/Toulene_Hindered_Rotor/TolueneEnergy.log b/examples/arkane/species/Toluene_Hindered_Rotor/TolueneEnergy.log similarity index 100% rename from examples/arkane/species/Toulene_Hindered_Rotor/TolueneEnergy.log rename to examples/arkane/species/Toluene_Hindered_Rotor/TolueneEnergy.log diff --git a/examples/arkane/species/Toulene_Hindered_Rotor/TolueneFreq.log b/examples/arkane/species/Toluene_Hindered_Rotor/TolueneFreq.log similarity index 100% rename from examples/arkane/species/Toulene_Hindered_Rotor/TolueneFreq.log rename to examples/arkane/species/Toluene_Hindered_Rotor/TolueneFreq.log diff --git a/examples/arkane/species/Toulene_Hindered_Rotor/TolueneRot1.log b/examples/arkane/species/Toluene_Hindered_Rotor/TolueneRot1.log similarity index 100% rename from examples/arkane/species/Toulene_Hindered_Rotor/TolueneRot1.log rename to examples/arkane/species/Toluene_Hindered_Rotor/TolueneRot1.log diff --git a/examples/arkane/species/Toulene_Hindered_Rotor/input.py b/examples/arkane/species/Toluene_Hindered_Rotor/input.py similarity index 100% rename from examples/arkane/species/Toulene_Hindered_Rotor/input.py rename to examples/arkane/species/Toluene_Hindered_Rotor/input.py diff --git a/examples/arkane/species/Toulene_Hindered_Rotor/toluene_HinderedRotor.py b/examples/arkane/species/Toluene_Hindered_Rotor/toluene_HinderedRotor.py similarity index 100% rename from examples/arkane/species/Toulene_Hindered_Rotor/toluene_HinderedRotor.py rename to examples/arkane/species/Toluene_Hindered_Rotor/toluene_HinderedRotor.py diff --git a/examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/TolueneEnergy.log b/examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/TolueneEnergy.log similarity index 100% rename from examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/TolueneEnergy.log rename to examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/TolueneEnergy.log diff --git a/examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/TolueneFreq.log b/examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/TolueneFreq.log similarity index 100% rename from examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/TolueneFreq.log rename to examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/TolueneFreq.log diff --git a/examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/TolueneRot1.log b/examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/TolueneRot1.log similarity index 100% rename from examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/TolueneRot1.log rename to examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/TolueneRot1.log diff --git a/examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/input.py b/examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/input.py similarity index 100% rename from examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/input.py rename to examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/input.py diff --git a/examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/toluene_HinderedRotor.py b/examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/toluene_HinderedRotor.py new file mode 100644 index 00000000000..78d0c3cad82 --- /dev/null +++ b/examples/arkane/species/Toluene_Hindered_Rotor_SemiClassicalND/toluene_HinderedRotor.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +bonds = { + "C-C": 4, + "C-H": 8, + "C=C": 3, +} + +externalSymmetry = 1 + +spinMultiplicity = 1 + +opticalIsomers = 1 + +energy = {"CBS-QB3": Log("TolueneEnergy.log")} + +geometry = Log("TolueneFreq.log") + +frequencies = Log("TolueneFreq.log") + +rotors = [HinderedRotorClassicalND(calc_path="TolueneRot1.log", pivots=[[3, 12]], tops=[[12, 13, 14, 15]], sigmas=[6], semiclassical=True)] diff --git a/examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/toluene_HinderedRotor.py b/examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/toluene_HinderedRotor.py deleted file mode 100755 index fe8f299ac8c..00000000000 --- a/examples/arkane/species/Toulene_Hindered_Rotor_SemiClassicalND/toluene_HinderedRotor.py +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -bonds = { - 'C-C': 4, - 'C-H': 8, - 'C=C': 3, -} - -externalSymmetry = 1 - -spinMultiplicity = 1 - -opticalIsomers = 1 - -energy = { - 'CBS-QB3': Log('TolueneEnergy.log') -} - -geometry = Log('TolueneFreq.log') - -frequencies = Log('TolueneFreq.log') - -rotors = [HinderedRotorClassicalND(calcPath='TolueneRot1.log', pivots=[[3,12]], tops=[[12,13,14,15]], sigmas=[6], semiclassical=True)] diff --git a/examples/arkane/species/thermo_demo/input.py b/examples/arkane/species/thermo_demo/input.py index 6e46762ac83..7afab825325 100644 --- a/examples/arkane/species/thermo_demo/input.py +++ b/examples/arkane/species/thermo_demo/input.py @@ -2,31 +2,33 @@ # encoding: utf-8 # Define the level of theory ("model chemistry"): -modelChemistry = LevelOfTheory(method='CCSD(T)-F12', basis='cc-pVTZ-F12', software='molpro') +modelChemistry = LevelOfTheory(method="CCSD(T)-F12", basis="cc-pVTZ-F12", software="molpro") useHinderedRotors = True useBondCorrections = True +# FIXME: While switching to pytest, the commented-out examples stopped working. I suspect they have not +# been run in some time and fell vitim to tech. debt. + # Define the species: -species('methoxy', 'data/methoxy.py', structure=SMILES('C[O]')) -species('1,2-butadiene', 'data/1,2-butadiene.py', structure=SMILES('C=C=CC')) -species('aziridine', 'data/aziridine.py', structure=SMILES('C1NC1')) -species('hydrazino', 'data/hydrazino.py', structure=SMILES('N[NH]')) -species('1-propene-12-diol', 'data/1-propene-12-diol.py', structure=SMILES('CC(O)=CO')) -species('hydroxyiminomethyl', 'data/hydroxyiminomethyl.py', structure=SMILES('[CH]=NO')) -species('2-methyl-2-propanamine', 'data/2-methyl-2-propanamine.py', structure=SMILES('CC(C)(C)N')) -species('nitrosodioxaziridine', 'data/nitrosodioxaziridine.py', structure=SMILES('O=NN1OO1')) -species('ethynol', 'data/ethynol.py', structure=SMILES('C#CO')) -species('2-iminoethyl', 'data/2-iminoethyl.py', structure=SMILES('[CH2]C=N')) +species("methoxy", "data/methoxy.py", structure=SMILES("C[O]")) +# species("1,2-butadiene", "data/1,2-butadiene.py", structure=SMILES("C=C=CC")) +species("aziridine", "data/aziridine.py", structure=SMILES("C1NC1")) +species("hydrazino", "data/hydrazino.py", structure=SMILES("N[NH]")) +species("1-propene-12-diol", "data/1-propene-12-diol.py", structure=SMILES("CC(O)=CO")) +species("hydroxyiminomethyl", "data/hydroxyiminomethyl.py", structure=SMILES("[CH]=NO")) +species("2-methyl-2-propanamine", "data/2-methyl-2-propanamine.py", structure=SMILES("CC(C)(C)N")) +# species("nitrosodioxaziridine", "data/nitrosodioxaziridine.py", structure=SMILES("O=NN1OO1")) +species("ethynol", "data/ethynol.py", structure=SMILES("C#CO")) +species("2-iminoethyl", "data/2-iminoethyl.py", structure=SMILES("[CH2]C=N")) # Request thermodynamic property calculation with a NASA polynomial output: -thermo('methoxy', 'NASA') -thermo('1,2-butadiene', 'NASA') -thermo('aziridine', 'NASA') -thermo('hydrazino', 'NASA') -thermo('1-propene-12-diol', 'NASA') -thermo('hydroxyiminomethyl', 'NASA') -thermo('2-methyl-2-propanamine', 'NASA') -thermo('nitrosodioxaziridine', 'NASA') -thermo('ethynol', 'NASA') -thermo('2-iminoethyl', 'NASA') - +thermo("methoxy", "NASA") +# thermo("1,2-butadiene", "NASA") +thermo("aziridine", "NASA") +thermo("hydrazino", "NASA") +thermo("1-propene-12-diol", "NASA") +thermo("hydroxyiminomethyl", "NASA") +thermo("2-methyl-2-propanamine", "NASA") +# thermo("nitrosodioxaziridine", "NASA") +thermo("ethynol", "NASA") +thermo("2-iminoethyl", "NASA") diff --git a/examples/rmg/1,3-hexadiene/RMG.bat b/examples/rmg/1,3-hexadiene/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/1,3-hexadiene/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/CO2RR/input.py b/examples/rmg/CO2RR/input.py new file mode 100644 index 00000000000..182f8785888 --- /dev/null +++ b/examples/rmg/CO2RR/input.py @@ -0,0 +1,317 @@ +# Data sources +database( + thermoLibraries=['surfaceThermoPt111', 'primaryThermoLibrary', 'thermo_DFT_CCSDTF12_BAC','DFT_QCI_thermo', 'electrocatThermo', + # 'CO2RR_Adsorbates_Ag111' + ], + reactionLibraries = [('Surface/CPOX_Pt/Deutschmann2006_adjusted', False)], + seedMechanisms = [], + kineticsDepositories = ['training'], + kineticsFamilies = ['electrochem', + # 'surface', + 'Surface_Abstraction', + 'Surface_Abstraction_vdW', + 'Surface_Abstraction_Single_vdW', + 'Surface_Abstraction_Beta_double_vdW', + 'Surface_Adsorption_Dissociative', + 'Surface_Adsorption_Dissociative_Double', + 'Surface_Adsorption_vdW', + 'Surface_Dissociation', + 'Surface_Dissociation_Double_vdW', + 'Surface_Dissociation_vdW', + 'Surface_EleyRideal_Addition_Multiple_Bond', + 'Surface_Migration', + ], + kineticsEstimator = 'rate rules', + +) + +catalystProperties( + metal = 'Ag111' +) + +# List of species +species( + label='CO2', + reactive=True, + structure=adjacencyList( + """ +1 O u0 p2 c0 {2,D} +2 C u0 p0 c0 {1,D} {3,D} +3 O u0 p2 c0 {2,D} +"""), +) + + +species( + label='proton', + reactive=True, + structure=adjacencyList( + """ +1 H u0 p0 c+1 +"""), +) + +species( + label='vacantX', + reactive=True, + structure=adjacencyList("1 X u0"), +) + +species( + label='H', + reactive=True, + structure=adjacencyList( + """ +1 H u1 p0 c0 +"""), +) + +species( + label='CO2X', + reactive=True, + structure=adjacencyList(""" +1 O u0 p2 c0 {3,D} +2 O u0 p2 c0 {3,D} +3 C u0 p0 c0 {1,D} {2,D} +4 X u0 p0 c0 +"""), +) + +species( + label='CHO2X', + reactive=True, + structure=adjacencyList(""" +1 O u0 p2 c0 {3,S} {5,S} +2 O u0 p2 c0 {3,D} +3 C u0 p0 c0 {1,S} {2,D} {4,S} +4 H u0 p0 c0 {3,S} +5 X u0 p0 c0 {1,S} +"""), +) + +species( + label='CO2HX', + reactive=True, + structure=adjacencyList(""" +1 O u0 p2 c0 {2,S} {4,S} +2 C u0 p0 c0 {1,S} {3,D} {5,S} +3 O u0 p2 c0 {2,D} +4 H u0 p0 c0 {1,S} +5 X u0 p0 c0 {2,S} + +"""), +) + +species( + label='OCX', + reactive=True, + structure=adjacencyList(""" +1 O u0 p2 c0 {2,D} +2 C u0 p0 c0 {1,D} {3,D} +3 X u0 p0 c0 {2,D} +"""), +) + +species( + label='OX', + reactive=True, + structure=adjacencyList(""" +1 O u0 p2 c0 {2,D} +2 X u0 p0 c0 {1,D} +"""), +) + +species( + label='CH2O2X', + reactive=True, + structure=adjacencyList(""" +1 O u0 p2 c0 {3,S} {5,S} +2 O u0 p2 c0 {3,D} +3 C u0 p0 c0 {1,S} {2,D} {4,S} +4 H u0 p0 c0 {3,S} +5 H u0 p0 c0 {1,S} +6 X u0 p0 c0 +"""), +) + +species( + label='CHOX', + reactive=True, + structure=adjacencyList(""" +1 O u0 p2 c0 {2,D} +2 C u0 p0 c0 {1,D} {3,S} {4,S} +3 H u0 p0 c0 {2,S} +4 X u0 p0 c0 {2,S} +"""), +) + +species( + label='CH2OX', + reactive=True, + structure=adjacencyList(""" +1 O u0 p2 c0 {2,D} +2 C u0 p0 c0 {1,D} {3,S} {4,S} +3 H u0 p0 c0 {2,S} +4 H u0 p0 c0 {2,S} +5 X u0 p0 c0 +"""), +) + + +forbidden( + label='CO2-bidentate', + structure=adjacencyList( + """ + 1 O u0 p2 c0 {2,D} + 2 C u0 p0 c0 {1,D} {3,S} {4,S} + 3 X u0 p0 c0 {2,S} + 4 O u0 p2 c0 {2,S} {5,S} + 5 X u0 p0 c0 {4,S} + """ + ) +) + +liquidSurfaceReactor( + temperature=(300,'K'), + liqPotential=(0,'V'), + surfPotential=(-2.0,'V'), + initialConcentrations={ + "CO2": (1e-3,'mol/cm^3'), + "proton": (1e-4,'mol/m^3'), + }, + initialSurfaceCoverages={ + # "HX": 0.5, + # # "CXO2": 0.0, + "CHO2X": 0.1, + "CO2HX": 0.1, + "vacantX": 0.1, + "CO2X": 0.4, + 'OX': 0.1, + 'OCX': 0.1, + 'CH2O2X': 0.05, + 'CHOX': 0.04, + 'CH2OX': 0.01 + }, + surfaceVolumeRatio=(1.0e5, 'm^-1'), + terminationTime=(1.0e3,'sec'), + # terminationConversion={'CO2': 0.90}, + # constantSpecies=["proton"], + ) + +liquidSurfaceReactor( + temperature=(300,'K'), + liqPotential=(0,'V'), + surfPotential=(-1.5,'V'), + initialConcentrations={ + "CO2": (1e-3,'mol/cm^3'), + "proton": (1e-4,'mol/m^3'), + }, + initialSurfaceCoverages={ + # "HX": 0.5, + # # "CXO2": 0.0, + "CHO2X": 0.1, + "CO2HX": 0.1, + "vacantX": 0.1, + "CO2X": 0.4, + 'OX': 0.1, + 'OCX': 0.1, + 'CH2O2X': 0.05, + 'CHOX': 0.04, + 'CH2OX': 0.01 + }, + surfaceVolumeRatio=(1.0e5, 'm^-1'), + terminationTime=(1.0e3,'sec'), + # terminationConversion={'CO2': 0.90}, + # constantSpecies=["proton"], + ) + +liquidSurfaceReactor( + temperature=(300,'K'), + liqPotential=(0,'V'), + surfPotential=(-1.0,'V'), + initialConcentrations={ + "CO2": (1e-3,'mol/cm^3'), + "proton": (1e-4,'mol/m^3'), + }, + initialSurfaceCoverages={ + # "HX": 0.5, + # # "CXO2": 0.0, + "CHO2X": 0.1, + "CO2HX": 0.1, + "vacantX": 0.1, + "CO2X": 0.4, + 'OX': 0.1, + 'OCX': 0.1, + 'CH2O2X': 0.05, + 'CHOX': 0.04, + 'CH2OX': 0.01 + }, + surfaceVolumeRatio=(1.0e5, 'm^-1'), + terminationTime=(1.0e3,'sec'), + # terminationConversion={'CO2': 0.90}, + # constantSpecies=["proton"], + ) + +# liquidSurfaceReactor( +# temperature=(300,'K'), +# liqPotential=(0,'V'), +# surfPotential=(-0.5,'V'), +# initialConcentrations={ +# "CO2": (1e-3,'mol/cm^3'), +# "proton": (1e-4,'mol/m^3'), +# }, +# initialSurfaceCoverages={ +# # "HX": 0.5, +# # # "CXO2": 0.0, +# "CHO2X": 0.1, +# "CO2HX": 0.1, +# "vacantX": 0.1, +# "CO2X": 0.4, +# 'OX': 0.1, +# 'OCX': 0.1, +# 'CH2O2X': 0.05, +# 'CHOX': 0.04, +# 'CH2OX': 0.01 +# }, +# surfaceVolumeRatio=(1.0e5, 'm^-1'), +# terminationTime=(1.0e3,'sec'), +# # terminationConversion={'CO2': 0.90}, +# # constantSpecies=["proton"], +# ) + +solvation( + solvent='water' +) + +simulator( + atol=1e-16, + rtol=1e-8, +) + +model( + toleranceKeepInEdge=1E-16, + toleranceMoveToCore=1E-3, + toleranceRadMoveToCore=1E-6, + toleranceInterruptSimulation=1E6, + filterReactions=False, + maximumEdgeSpecies=5000, + toleranceBranchReactionToCore=1E-6, + branchingIndex=0.5, + branchingRatioMax=1.0, +) + +options( + units='si', + generateOutputHTML=True, + generatePlots=True, + saveEdgeSpecies=True, + saveSimulationProfiles=False, +) + +generatedSpeciesConstraints( + allowed=['input species','reaction libraries'], + maximumSurfaceSites=2, + maximumCarbonAtoms=3, + maximumOxygenAtoms=2, + maximumRadicalElectrons=1, +) diff --git a/examples/rmg/SEI_pure_ACN/input.py b/examples/rmg/SEI_pure_ACN/input.py new file mode 100644 index 00000000000..2a4136c59c8 --- /dev/null +++ b/examples/rmg/SEI_pure_ACN/input.py @@ -0,0 +1,181 @@ +# Data sources +database( + thermoLibraries=['LithiumSurface','electrocatLiThermo','primaryThermoLibrary', 'LithiumPrimaryThermo', 'LithiumAdditionalThermo', 'thermo_DFT_CCSDTF12_BAC','DFT_QCI_thermo'], # 'surfaceThermoPt' is the default. Thermo data is derived using bindingEnergies for other metals + reactionLibraries = ['LithiumPrimaryKinetics',"LithiumSurface"], # when Ni is used change the library to Surface/Deutschmann_Ni + seedMechanisms = [], + kineticsDepositories = ['training'], + kineticsFamilies = ['surface', + '1+2_Cycloaddition', + 'Surface_Carbonate_Deposition', + 'Surface_Carbonate_F_CO_Decomposition', + 'Surface_Carbonate_2F_Decomposition', + 'Surface_Carbonate_CO_Decomposition', + '1,2_Elimination_LiR', + '1,2_Intra_Elimination_LiR', + 'Li_Addition_MultipleBond', + 'Li_NO_Substitution', + 'Li_NO_Ring_Opening', + 'Li_Abstraction', + 'R_Addition_MultipleBond_Disprop', + 'Cation_R_Recombination', + 'Cation_Addition_MultipleBond', + '1,2-Birad_to_alkene', + '1,2_Insertion_CO', + '1,2_Insertion_carbene', + '1,2_shiftS', + '1,3_Insertion_CO2', + '1,3_Insertion_ROR', + '1,3_Insertion_RSR', + '1,4_Cyclic_birad_scission', + '1,4_Linear_birad_scission', + '2+2_cycloaddition', + 'Birad_recombination', + 'CO_Disproportionation', + 'Birad_R_Recombination', + 'Cyclic_Ether_Formation', + 'Cyclic_Thioether_Formation', + 'Diels_alder_addition', + 'Diels_alder_addition_Aromatic', + #'Disproportionation', + 'HO2_Elimination_from_PeroxyRadical', + 'H_Abstraction', + 'Intra_Retro_Diels_alder_bicyclic', + 'Intra_Disproportionation', + 'Intra_R_Add_Endocyclic', + 'Intra_R_Add_Exocyclic', + 'R_Addition_COm', + 'R_Addition_MultipleBond', + 'R_Recombination', + 'intra_H_migration', + 'intra_NO2_ONO_conversion', + 'intra_OH_migration', + 'intra_substitutionCS_cyclization', + 'intra_substitutionCS_isomerization', + 'intra_substitutionS_cyclization', + 'intra_substitutionS_isomerization', + #'ketoenol', + 'Singlet_Carbene_Intra_Disproportionation', + 'Singlet_Val6_to_triplet', + 'Intra_5_membered_conjugated_C=C_C=C_addition', + 'Intra_Diels_alder_monocyclic', + 'Concerted_Intra_Diels_alder_monocyclic_1,2_shiftH', + 'Intra_2+2_cycloaddition_Cd', + 'Intra_ene_reaction', + 'Cyclopentadiene_scission', + '6_membered_central_C-C_shift', + 'Intra_R_Add_Exo_scission', + '1,2_shiftC', + '1,2_NH3_elimination', + '1,3_NH3_elimination', + 'Retroene',], + kineticsEstimator = 'rate rules', + adsorptionGroups='adsorptionLi', +) + +catalystProperties( + metal = 'Li110', +) + +# List of species +species( + label="Lip", + reactive=True, + structure=SMILES("[Li+]"), +) + +species( + label='ACN', + reactive=True, + structure=SMILES("CC#N"), +) + +species( + label='vacantX', + reactive=True, + structure=adjacencyList("1 X u0"), +) + +liquidSurfaceReactor( + temperature=(298.15,'K'), + distance=(10.0e-10,"m"), + viscosity=(5e7,"Pa*s"), + liqPotential=(0.3,'V'), + surfPotential=(0.0,'V'), + initialConcentrations={ + "ACN": (0.019146,'mol/cm^3'), + "Lip": (15.0,'mol/m^3'), + }, + initialSurfaceCoverages={ + "vacantX": 1.0, + }, + surfaceVolumeRatio=(1.0e-5, 'm^-1'), + terminationTime=(1e3,'sec'), + constantSpecies=["ACN","Lip"], +) + +liquidSurfaceReactor( + temperature=(298.15,'K'), + distance=(0.0,"m"), + liqPotential=(0.0,'V'), + surfPotential=(0.0,'V'), + initialConcentrations={ + "ACN": (0.019146,'mol/cm^3'), + "Lip": (15.0,'mol/m^3'), + }, + initialSurfaceCoverages={ + "vacantX": 1.0, + }, + surfaceVolumeRatio=(1.0e5, 'm^-1'), + terminationTime=(1e3,'sec'), + constantSpecies=["ACN","Lip"], +) + +solvation( + solvent='acetonitrile' +) + +simulator( + atol=1e-16, + rtol=1e-6, +) + +model( + toleranceKeepInEdge=1E-20, + toleranceMoveToCore=0.1, + toleranceRadMoveToCore=0.1, + toleranceInterruptSimulation=1e10, + maximumEdgeSpecies=100000, + filterReactions=False, + maxNumObjsPerIter=1, + terminateAtMaxObjects=True, + toleranceBranchReactionToCore=0.001, + branchingIndex=0.5, + branchingRatioMax=1.0, +) + +options( + units='si', + saveEdgeSpecies=False, +) + +forbidden( + label='vacancies', + structure=adjacencyListGroup(""" +1 Xv u0 p0 c0 +"""), +) + +forbidden( + label='Li2', + structure=adjacencyList(""" +1 Li u0 p0 c0 {2,S} +2 Li u0 p0 c0 {1,S}"""), +) + +generatedSpeciesConstraints( + allowed=['input species','reaction libraries'], + maximumSurfaceSites=1, + maximumCarbonAtoms=7, + maximumOxygenAtoms=4, + maximumRadicalElectrons=1, +) diff --git a/examples/rmg/SEI_pure_EC/input.py b/examples/rmg/SEI_pure_EC/input.py new file mode 100644 index 00000000000..2912c7f2ba6 --- /dev/null +++ b/examples/rmg/SEI_pure_EC/input.py @@ -0,0 +1,291 @@ +# Data sources +database( + thermoLibraries=['electrocatLiThermo','primaryThermoLibrary', 'LithiumPrimaryThermo', 'LithiumAdditionalThermo', 'thermo_DFT_CCSDTF12_BAC','DFT_QCI_thermo'], # 'surfaceThermoPt' is the default. Thermo data is derived using bindingEnergies for other metals + reactionLibraries = ['LithiumPrimaryKinetics','LithiumAnalogyKinetics'], # when Ni is used change the library to Surface/Deutschmann_Ni + seedMechanisms = [], + kineticsDepositories = ['training'], + kineticsFamilies = ['surface','electrochem', + '1+2_Cycloaddition', + '1,2-Birad_to_alkene', + '1,2_Insertion_CO', + '1,2_Insertion_carbene', + '1,2_shiftS', + '1,3_Insertion_CO2', + '1,3_Insertion_ROR', + '1,3_Insertion_RSR', + '1,4_Cyclic_birad_scission', + '1,4_Linear_birad_scission', + '2+2_cycloaddition', + 'Birad_recombination', + 'CO_Disproportionation', + 'Birad_R_Recombination', + 'Cyclic_Ether_Formation', + 'Cyclic_Thioether_Formation', + 'Diels_alder_addition', + 'Diels_alder_addition_Aromatic', + #'Disproportionation', + 'HO2_Elimination_from_PeroxyRadical', + 'H_Abstraction', + 'Intra_Retro_Diels_alder_bicyclic', + 'Intra_Disproportionation', + 'Intra_R_Add_Endocyclic', + 'Intra_R_Add_Exocyclic', + 'R_Addition_COm', + 'R_Addition_MultipleBond', + 'R_Recombination', + 'intra_H_migration', + 'intra_NO2_ONO_conversion', + 'intra_OH_migration', + 'intra_substitutionCS_cyclization', + 'intra_substitutionCS_isomerization', + 'intra_substitutionS_cyclization', + 'intra_substitutionS_isomerization', + #'ketoenol', + 'Singlet_Carbene_Intra_Disproportionation', + 'Singlet_Val6_to_triplet', + 'Intra_5_membered_conjugated_C=C_C=C_addition', + 'Intra_Diels_alder_monocyclic', + 'Concerted_Intra_Diels_alder_monocyclic_1,2_shiftH', + 'Intra_2+2_cycloaddition_Cd', + 'Intra_ene_reaction', + 'Cyclopentadiene_scission', + '6_membered_central_C-C_shift', + 'Intra_R_Add_Exo_scission', + '1,2_shiftC', + '1,2_NH3_elimination', + '1,3_NH3_elimination', + 'Retroene',], + kineticsEstimator = 'rate rules', + adsorptionGroups='adsorptionLi', +) + +catalystProperties( + metal = 'Li110' +) + +# List of species +species( + label="Lip", + reactive=True, + structure=SMILES("[Li+]"), +) + +species( + label='ethylene-carbonate', + reactive=True, + structure=SMILES("C1COC(=O)O1"), +) + +species( + label='vacantX', + reactive=True, + structure=adjacencyList("1 X u0"), +) + +species( + label="Li", + reactive=True, + structure=SMILES("[Li]"), +) + +species( + label='[Li]O[C]1OCCO1', + reactive=True, + structure=SMILES("[Li]O[C]1OCCO1"), +) + +species( + label='[Li]OC(=O)OC[CH2]', + reactive=True, + structure=SMILES("[Li]OC(=O)OC[CH2]"), +) + +#species( +# label='[Li]OC(=O)O[Li]', +# reactive=True, +# structure=SMILES("[Li]OC(=O)O[Li]"), +# ) + +#species( +# label='[Li]OC(=O)OCCOC(=O)OC[CH2]', +# reactive=True, +# structure=SMILES("[Li]OC(=O)OCCOC(=O)OC[CH2]"), +# ) + +#species( +# label='[Li]OC(=O)OCCOC(=O)O[Li]', +# reactive=True, +# structure=SMILES("[Li]OC(=O)OCCOC(=O)O[Li]"), +# ) + +#species( +# label='[Li]OC(=O)OCCCCOC(=O)O[Li]', +# reactive=True, +# structure=SMILES("[Li]OC(=O)OCCCCOC(=O)O[Li]"),) + +#species( +# label='[Li]OCCOC(=O)CCOC(=O)O[Li]', +# reactive=True, +# structure=SMILES("[Li]OCCOC(=O)CCOC(=O)O[Li]"), +# ) + +#species( +# label='[Li]OCCOC(=O)OC(=O)O[Li]', +# reactive=True, +# structure=SMILES("[Li]OCCOC(=O)OC(=O)O[Li]"), +#) + +#species( +# label='C2H4', +# reactive=True, +# structure=SMILES("C=C"), +#) + +#species( +# label='O=[C]OCCO[Li]', +# reactive=True, +# structure=SMILES("O=[C]OCCO[Li]"), +#) + +#species( +# label='CO2', +# reactive=True, +# structure=SMILES("O=C=O"), +#) + +#species( +# label='[Li]OC[CH2]', +# reactive=True, +# structure=SMILES("[Li]OC[CH2]"), +#) + +#species( +# label='O1CCO[C]1OC2(O[Li])OCCO2', +# reactive=True, +# structure=SMILES("O1CCO[C]1OC2(O[Li])OCCO2"), +#) + +#species( +# label='O1CCOC1(O[Li])OC(=O)OC[CH2]', +# reactive=True, +# structure=SMILES("O1CCOC1(O[Li])OC(=O)OC[CH2]"), +#) + +#species( +# label='O1CCOC1(O[Li])OC(=O)OCCOC(=O)O[Li]', +# reactive=True, +# structure=SMILES("O1CCOC1(O[Li])OC(=O)OCCOC(=O)O[Li]"), +#) + +species( + label='CO3X2', + reactive=True, + structure=adjacencyList("""1 O u0 p2 {2,D} +2 C u0 p0 {1,D} {3,S} {4,S} +3 O u0 p2 {2,S} {5,S} +4 O u0 p2 {2,S} {6,S} +5 X u0 p0 c0 {3,S} +6 X u0 p0 c0 {4,S} +"""), +) + + +#species( +# label="CO", +# reactive=True, +# structure=SMILES("[C-]#[O+]"), +#) + +#species( +# label='[Li]OC(=O)OCCX', +# reactive=True, +# structure=adjacencyList("""1 O u0 p2 c0 {2,S} {7,S} +# 2 C u0 p0 c0 {1,S} {3,D} {4,S} +# 3 O u0 p2 c0 {2,D} +# 4 O u0 p2 c0 {2,S} {5,S} +# 5 C u0 p0 c0 {4,S} {6,S} {8,S} {9,S} +# 6 C u0 p0 c0 {5,S} {10,S} {11,S} {12,S} +# 7 Li u0 p0 c0 {1,S} +# 8 H u0 p0 c0 {5,S} +# 9 H u0 p0 c0 {5,S} +# 10 H u0 p0 c0 {6,S} +# 11 H u0 p0 c0 {6,S} +# 12 X u0 p0 c0 {6,S} +# """), +#) +#species( +# label='O=C(X)OCCO[Li]', +# reactive=True, +# structure=adjacencyList("""1 O u0 p2 c0 {2,D} +# 2 C u0 p0 c0 {1,D} {3,S} {12,S} +# 3 O u0 p2 c0 {2,S} {4,S} +# 4 C u0 p0 c0 {3,S} {5,S} {7,S} {8,S} +# 5 C u0 p0 c0 {4,S} {6,S} {9,S} {10,S} +# 6 O u0 p2 c0 {5,S} {11,S} +# 7 H u0 p0 c0 {4,S} +# 8 H u0 p0 c0 {4,S} +# 9 H u0 p0 c0 {5,S} +# 10 H u0 p0 c0 {5,S} +# 11 Li u0 p0 c0 {6,S} +# 12 X u0 p0 c0 {2,S} +# """), +#) + +liquidSurfaceReactor( + temperature=(298.15,'K'), + liqPotential=(-1.0,'V'), + surfPotential=(0.0,'V'), + initialConcentrations={ + "ethylene-carbonate": (7.585e-3*2.0,'mol/cm^3'), + "Lip": (15.0,'mol/m^3'), + }, + initialSurfaceCoverages={ + "vacantX": 1.0, + }, + surfaceVolumeRatio=(1.0e5, 'm^-1'), + terminationTime=(1.0e3,'sec'), + constantSpecies=["ethylene-carbonate","Lip"], +) + +solvation( + solvent='ethylene carbonate' +) + +simulator( + atol=1e-16, + rtol=1e-6, +) + +model( + toleranceKeepInEdge=1E-20, + toleranceMoveToCore=0.000001, + toleranceRadMoveToCore=0.00000000001, + toleranceInterruptSimulation=1e10, + maximumEdgeSpecies=100000, + filterReactions=False, + maxNumObjsPerIter=1, + terminateAtMaxObjects=True, + toleranceBranchReactionToCore=0.000001, + branchingIndex=0.3, + branchingRatioMax=1.0, +) + +options( + units='si', + saveEdgeSpecies=False, +) + +forbidden( + label='vacancies', + structure=adjacencyListGroup(""" +1 Xv u0 p0 c0 +"""), +) + +generatedSpeciesConstraints( + allowed=['input species','reaction libraries'], + maximumSurfaceSites=1, + maximumCarbonAtoms=8, + maximumOxygenAtoms=8, + maximumRadicalElectrons=1, +) diff --git a/examples/rmg/TEOS/RMG.bat b/examples/rmg/TEOS/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/TEOS/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/c3h4/RMG.bat b/examples/rmg/c3h4/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/c3h4/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/catalysis/ch4_o2/simulate_ch4o2cat_RMS.ipynb b/examples/rmg/catalysis/ch4_o2/simulate_ch4o2cat_RMS.ipynb index 700eb3cac31..371bfc2cadf 100644 --- a/examples/rmg/catalysis/ch4_o2/simulate_ch4o2cat_RMS.ipynb +++ b/examples/rmg/catalysis/ch4_o2/simulate_ch4o2cat_RMS.ipynb @@ -49,7 +49,7 @@ "metadata": {}, "outputs": [], "source": [ - "# ! python-jl /rmg/RMG-Py/rmg.py /rmg/RMG-Py/examples/rmg/catalysis/ch4_o2/input.py" + "# ! python /rmg/RMG-Py/rmg.py /rmg/RMG-Py/examples/rmg/catalysis/ch4_o2/input.py" ] }, { diff --git a/examples/rmg/ch3no2/RMG.bat b/examples/rmg/ch3no2/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/ch3no2/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/commented/input.py b/examples/rmg/commented/input.py index 91b01b2b11b..6cc5173c9f3 100644 --- a/examples/rmg/commented/input.py +++ b/examples/rmg/commented/input.py @@ -19,7 +19,7 @@ thermoLibraries=['BurkeH2O2', 'primaryThermoLibrary', 'DFT_QCI_thermo', 'CBS_QB3_1dHR'], # overrides RMG transport calculations with these values. # if species exist in multiple libraries, the earlier libraries overwrite the previous values - transportLibraries=['PrimaryTransportLibrary.py'], + transportLibraries=['PrimaryTransportLibrary'], # overrides RMG kinetics estimation if needed in the core of RMG. # list of libraries found at http://rmg.mit.edu/database/kinetics/libraries/ # libraries can be input as either a string or tuple of form ('library_name',True/False) diff --git a/examples/rmg/diesel/RMG.bat b/examples/rmg/diesel/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/diesel/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/e85/RMG.bat b/examples/rmg/e85/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/e85/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/gri_mech_rxn_lib/RMG.bat b/examples/rmg/gri_mech_rxn_lib/RMG.bat deleted file mode 100644 index ac88ed3cd48..00000000000 --- a/examples/rmg/gri_mech_rxn_lib/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/liquid_cat/input.py b/examples/rmg/liquid_cat/input.py index de70d0f47b8..36ffd619911 100644 --- a/examples/rmg/liquid_cat/input.py +++ b/examples/rmg/liquid_cat/input.py @@ -1,7 +1,7 @@ # Data sources database( thermoLibraries=['surfaceThermoPt111', 'primaryThermoLibrary', 'thermo_DFT_CCSDTF12_BAC','DFT_QCI_thermo'], # 'surfaceThermoPt' is the default. Thermo data is derived using bindingEnergies for other metals - reactionLibraries = [], + reactionLibraries = [('Surface/CPOX_Pt/Deutschmann2006_adjusted', False)], # when Ni is used change the library to Surface/Deutschmann_Ni seedMechanisms = [], kineticsDepositories = ['training'], kineticsFamilies = ['surface','default'], diff --git a/examples/rmg/liquid_phase/RMG.bat b/examples/rmg/liquid_phase/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/liquid_phase/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/liquid_phase_constSPC/RMG.bat b/examples/rmg/liquid_phase_constSPC/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/liquid_phase_constSPC/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/methylformate/RMG.bat b/examples/rmg/methylformate/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/methylformate/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/minimal/RMG.bat b/examples/rmg/minimal/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/minimal/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/minimal_sensitivity/RMG.bat b/examples/rmg/minimal_sensitivity/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/minimal_sensitivity/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/minimal_surface/RMG.bat b/examples/rmg/minimal_surface/RMG.bat deleted file mode 100644 index 61fc6b8960f..00000000000 --- a/examples/rmg/minimal_surface/RMG.bat +++ /dev/null @@ -1,13 +0,0 @@ -@echo off - -REM RMG-Py Windows batch script for RMG execution -REM Put me in the directory containing the input file and double-click to run RMG. -REM This assumes that the condition file is called input.py. -REM Output from RMG will be logged to the file RMG.log. - -echo Running RMG... -python "..\..\..\rmg.py" input.py -echo RMG job completed. - -:end -pause diff --git a/examples/rmg/minimal_surface/input.py b/examples/rmg/minimal_surface/input.py index 5b45e1ee3d7..7ef67e9502f 100644 --- a/examples/rmg/minimal_surface/input.py +++ b/examples/rmg/minimal_surface/input.py @@ -1,67 +1,123 @@ # Data sources database( - thermoLibraries = ['primaryThermoLibrary'], - reactionLibraries = [], + thermoLibraries=['surfaceThermoPt111', 'primaryThermoLibrary', 'thermo_DFT_CCSDTF12_BAC','DFT_QCI_thermo'], # 'surfaceThermoPt' is the default. Thermo data is derived using bindingEnergies for other metals + reactionLibraries = [('Surface/CPOX_Pt/Deutschmann2006_adjusted', False)], # when Ni is used change the library to Surface/Deutschmann_Ni seedMechanisms = [], kineticsDepositories = ['training'], - kineticsFamilies = 'default', + kineticsFamilies = ['surface', 'default'], kineticsEstimator = 'rate rules', ) - -# List of species +catalystProperties( + bindingEnergies = { + 'H': (-2.75368,'eV/molecule'), + 'C': (-7.02516,'eV/molecule'), + 'N': (-4.63225,'eV/molecule'), + 'O': (-3.81153,'eV/molecule'), + }, + surfaceSiteDensity=(2.483e-9, 'mol/cm^2'), + coverageDependence=False +) species( - label='ethane', + label='CH4', reactive=True, - structure=SMILES("CC"), + structure=SMILES("C"), ) - -# Reaction systems -simpleReactor( - temperature=(1350,'K'), - pressure=(1.0,'bar'), - initialMoleFractions={ - "ethane": 1.0, - }, - terminationConversion={ - 'ethane': 0.9, - }, - terminationTime=(1e6,'s'), +species( + label='O2', + reactive=True, + structure=adjacencyList( + """ +1 O u1 p2 c0 {2,S} +2 O u1 p2 c0 {1,S} +"""), ) - -simpleReactor( - temperature=(1000,'K'), - pressure=(1.0,'bar'), - initialMoleFractions={ - "ethane": 1.0, +species( + label='N2', + reactive=False, + structure=SMILES("N#N"), +) +species( + label='X', + reactive=True, + structure=adjacencyList("1 X u0"), +) +# added for training +species( + label='CO2X', + reactive=True, + structure=adjacencyList( + """ + 1 O u0 p2 c0 {3,D} + 2 O u0 p2 c0 {3,D} + 3 C u0 p0 c0 {1,D} {2,D} + 4 X u0 p0 c0 + """), +) +species( + label='COX', + reactive=True, + structure=adjacencyList( + """ + 1 O u0 p2 c0 {2,D} + 2 C u0 p0 c0 {1,D} {3,D} + 3 X u0 p0 c0 {2,D} + """), +) +species( + label='OX', + reactive=True, + structure=adjacencyList( + """ + 1 O u0 p2 c0 {2,D} + 2 X u0 p0 c0 {1,D} + """), +) +# If you would like to forbid the bidentate form of absorbed CO2 from your model, +# use the following `CO2_bidentate` forbidden structure +# forbidden( +# label='CO2_bidentate', +# structure=SMILES("O=C(*)O*"), +# ) +#---------- +# Reaction systems +surfaceReactor( + temperature=(1000, 'K'), + initialPressure=(1.0, 'bar'), + initialGasMoleFractions={ + "CH4": 0.15, + "O2": 0.15, + "N2": 0.7, }, - terminationConversion={ - 'ethane': 0.9, + initialSurfaceCoverages={ + "X": 1.0, }, - terminationTime=(1e6,'s'), + surfaceVolumeRatio=(1.e5, 'm^-1'), + terminationConversion = { "CH4": 0.95,}, + terminationTime=(0.1, 's'), + terminationRateRatio=0.01, ) - - - simulator( - atol=1e-16, - rtol=1e-8, + atol=1e-18, + rtol=1e-12, ) - model( toleranceKeepInEdge=0.0, - toleranceMoveToCore=100.0, - toleranceInterruptSimulation=100.0, + toleranceMoveToCore=1e-1, + toleranceInterruptSimulation=0.1, maximumEdgeSpecies=100000, - toleranceMoveEdgeReactionToSurface=1.0, - toleranceMoveSurfaceReactionToCore=2.0, - toleranceMoveSurfaceSpeciesToCore=.001, - dynamicsTimeScale=(1.0e-10,'sec'), ) - options( units='si', - generateOutputHTML=True, - generatePlots=False, - saveEdgeSpecies=True, - saveSimulationProfiles=True, + generateOutputHTML=False, + generatePlots=False, # Enable to make plots of core and edge size etc. But takes a lot of the total runtime! + saveEdgeSpecies=False, + saveSimulationProfiles=False, +) +generatedSpeciesConstraints( + allowed=['input species','reaction libraries'], + maximumCarbonAtoms=2, + maximumOxygenAtoms=2, + maximumSurfaceSites=2, ) + + diff --git a/examples/rmg/superminimal/sensitivity_analysis_superminimal_RMS.ipynb b/examples/rmg/superminimal/sensitivity_analysis_superminimal_RMS.ipynb index ba6b3b6a98e..44befc780f1 100644 --- a/examples/rmg/superminimal/sensitivity_analysis_superminimal_RMS.ipynb +++ b/examples/rmg/superminimal/sensitivity_analysis_superminimal_RMS.ipynb @@ -40,7 +40,7 @@ "metadata": {}, "outputs": [], "source": [ - "# ! python-jl /rmg/RMG-Py/rmg.py /rmg/RMG-Py/examples/rmg/superminimal/input.py" + "# ! python /rmg/RMG-Py/rmg.py /rmg/RMG-Py/examples/rmg/superminimal/input.py" ] }, { diff --git a/examples/rmg/superminimal/simulation_flux_rop_superminimal_RMS.ipynb b/examples/rmg/superminimal/simulation_flux_rop_superminimal_RMS.ipynb index 7540b21b014..8ca7eb00292 100644 --- a/examples/rmg/superminimal/simulation_flux_rop_superminimal_RMS.ipynb +++ b/examples/rmg/superminimal/simulation_flux_rop_superminimal_RMS.ipynb @@ -40,7 +40,7 @@ "metadata": {}, "outputs": [], "source": [ - "# ! python-jl /rmg/RMG-Py/rmg.py /rmg/RMG-Py/examples/rmg/superminimal/input.py" + "# ! python /rmg/RMG-Py/rmg.py /rmg/RMG-Py/examples/rmg/superminimal/input.py" ] }, { diff --git a/external/README b/external/README deleted file mode 100644 index 00c7aba3fb4..00000000000 --- a/external/README +++ /dev/null @@ -1,48 +0,0 @@ -This folder ('external') is for external programs that RMG depends on but are -not part of the RMG code itself. In most cases you can get them elsewhere. -Nevertheless, they are stored here because - (1) they may be hard to find elsewhere - (2) we know that that these versions work (but ones from elsewhere may not) - -ctml_writer.py -comes from Cantera 1.7 (https://sourceforge.net/projects/cantera/) -which we think uses the New BSD License -http://www.opensource.org/licenses/bsd-license.php - -pydot.py -comes from Pydot (http://www.dkbza.org/pydot.html) -which uses the MIT license -http://opensource.org/licenses/mit-license.html -the version here is based on 1.0.2 but contains a bug fix patch - - -cinfony/webel.py -from http://cinfony.googlecode.com/svn/trunk/cinfony/webel.py - -jquery.min.js -from http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js -Used by the HTML output of RMG. Useful to have it locally if you do not have -internet access when you want to look at your results. - - -symmetry -Brute force symmetry determination program and the associated test set. -(C) 1996, 2003 S. Patchkovskii, Serguei.Patchkovskii@sympatico.ca -Published under GNU General Public License -http://www.cobalt.chem.ucalgary.ca/ps/symmetry/ -(now mirrored at https://github.com/nquesada/symmetry) -This is based on Revision 1.16 2003/04/04 -This program is no longer stored in the external programs folder but is instead found on the anaconda platform. - - -cclib -An open source library, written in Python, for parsing and interpreting -the results of computational chemistry packages. -N. M. O'Boyle, A. L. Tenderholt, K. M. Langner, -"cclib: a library for package-independent computational chemistry algorithms", -J. Comp. Chem. 29 (5), pp. 839-845, 2008 -cclib is licensed under the LGPL -http://cclib.sourceforge.net -This is based on version 1.0 but with some modifications, -probably made in the RMG-Java project. -We should endeavor to get the modifications merged upstream and use the main cclib. \ No newline at end of file diff --git a/external/__init__.py b/external/__init__.py deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/external/jquery.min.js b/external/jquery.min.js deleted file mode 100644 index 0c7294c90a0..00000000000 --- a/external/jquery.min.js +++ /dev/null @@ -1,152 +0,0 @@ -/*! - * jQuery JavaScript Library v1.4.1 - * http://jquery.com/ - * - * Copyright 2010, John Resig - * Dual licensed under the MIT or GPL Version 2 licenses. - * http://jquery.org/license - * - * Includes Sizzle.js - * http://sizzlejs.com/ - * Copyright 2010, The Dojo Foundation - * Released under the MIT, BSD, and GPL Licenses. - * - * Date: Mon Jan 25 19:43:33 2010 -0500 - */ -(function(z,v){function la(){if(!c.isReady){try{r.documentElement.doScroll("left")}catch(a){setTimeout(la,1);return}c.ready()}}function Ma(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,i){var j=a.length;if(typeof b==="object"){for(var n in b)X(a,n,b[n],f,e,d);return a}if(d!==v){f=!i&&f&&c.isFunction(d);for(n=0;n-1){i=j.data;i.beforeFilter&&i.beforeFilter[a.type]&&!i.beforeFilter[a.type](a)||f.push(j.selector)}else delete x[o]}i=c(a.target).closest(f, -a.currentTarget);m=0;for(s=i.length;m)[^>]*$|^#([\w-]+)$/,Qa=/^.[^:#\[\.,]*$/,Ra=/\S/,Sa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Ta=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,O=navigator.userAgent, -va=false,P=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,Q=Array.prototype.slice,wa=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(typeof a==="string")if((d=Pa.exec(a))&&(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:r;if(a=Ta.exec(a))if(c.isPlainObject(b)){a=[r.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=ra([d[1]], -[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}}else{if(b=r.getElementById(d[2])){if(b.id!==d[2])return S.find(a);this.length=1;this[0]=b}this.context=r;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=r;a=r.getElementsByTagName(a)}else return!b||b.jquery?(b||S).find(a):c(b).find(a);else if(c.isFunction(a))return S.ready(a);if(a.selector!==v){this.selector=a.selector;this.context=a.context}return c.isArray(a)?this.setArray(a):c.makeArray(a, -this)},selector:"",jquery:"1.4.1",length:0,size:function(){return this.length},toArray:function(){return Q.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){a=c(a||null);a.prevObject=this;a.context=this.context;if(b==="find")a.selector=this.selector+(this.selector?" ":"")+d;else if(b)a.selector=this.selector+"."+b+"("+d+")";return a},setArray:function(a){this.length=0;ba.apply(this,a);return this},each:function(a,b){return c.each(this, -a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(r,c);else P&&P.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(Q.apply(this,arguments),"slice",Q.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice}; -c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,i,j,n;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;b
a";var e=d.getElementsByTagName("*"),i=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!i)){c.support= -{leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(i.getAttribute("style")),hrefNormalized:i.getAttribute("href")==="/a",opacity:/^0.55$/.test(i.style.opacity),cssFloat:!!i.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:r.createElement("select").appendChild(r.createElement("option")).selected,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null}; -b.type="text/javascript";try{b.appendChild(r.createTextNode("window."+f+"=1;"))}catch(j){}a.insertBefore(b,a.firstChild);if(z[f]){c.support.scriptEval=true;delete z[f]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function n(){c.support.noCloneEvent=false;d.detachEvent("onclick",n)});d.cloneNode(true).fireEvent("onclick")}d=r.createElement("div");d.innerHTML="";a=r.createDocumentFragment();a.appendChild(d.firstChild); -c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var n=r.createElement("div");n.style.width=n.style.paddingLeft="1px";r.body.appendChild(n);c.boxModel=c.support.boxModel=n.offsetWidth===2;r.body.removeChild(n).style.display="none"});a=function(n){var o=r.createElement("div");n="on"+n;var m=n in o;if(!m){o.setAttribute(n,"return;");m=typeof o[n]==="function"}return m};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=i=null}})();c.props= -{"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ua=0,xa={},Va={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var f=a[G],e=c.cache;if(!b&&!f)return null;f||(f=++Ua);if(typeof b==="object"){a[G]=f;e=e[f]=c.extend(true, -{},b)}else e=e[f]?e[f]:typeof d==="undefined"?Va:(e[f]={});if(d!==v){a[G]=f;e[b]=d}return typeof b==="string"?e[b]:e}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==z?xa:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{try{delete a[G]}catch(i){a.removeAttribute&&a.removeAttribute(G)}delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this, -a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===v){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===v&&this.length)f=c.data(this[0],a);return f===v&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d); -return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===v)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]|| -a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var ya=/[\n\t]/g,ca=/\s+/,Wa=/\r/g,Xa=/href|src|style/,Ya=/(button|input)/i,Za=/(button|input|object|select|textarea)/i,$a=/^(a|area)$/i,za=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(o){var m= -c(this);m.addClass(a.call(this,o,m.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===v){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value|| -{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var i=b?d:0;for(d=b?d+1:e.length;i=0;else if(c.nodeName(this,"select")){var x=c.makeArray(s);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),x)>=0});if(!x.length)this.selectedIndex=-1}else this.value=s}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return v;if(f&&b in c.attrFn)return c(a)[b](d); -f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==v;b=f&&c.props[b]||b;if(a.nodeType===1){var i=Xa.test(b);if(b in a&&f&&!i){if(e){b==="type"&&Ya.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:Za.test(a.nodeName)||$a.test(a.nodeName)&&a.href?0:v;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText= -""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&i?a.getAttribute(b,2):a.getAttribute(b);return a===null?v:a}return c.style(a,b,d)}});var ab=function(a){return a.replace(/[^\w\s\.\|`]/g,function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==z&&!a.frameElement)a=z;if(!d.guid)d.guid=c.guid++;if(f!==v){d=c.proxy(d);d.data=f}var e=c.data(a,"events")||c.data(a,"events",{}),i=c.data(a,"handle"),j;if(!i){j= -function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(j.elem,arguments):v};i=c.data(a,"handle",j)}if(i){i.elem=a;b=b.split(/\s+/);for(var n,o=0;n=b[o++];){var m=n.split(".");n=m.shift();if(o>1){d=c.proxy(d);if(f!==v)d.data=f}d.type=m.slice(0).sort().join(".");var s=e[n],x=this.special[n]||{};if(!s){s=e[n]={};if(!x.setup||x.setup.call(a,f,m,d)===false)if(a.addEventListener)a.addEventListener(n,i,false);else a.attachEvent&&a.attachEvent("on"+n,i)}if(x.add)if((m=x.add.call(a, -d,f,m,s))&&c.isFunction(m)){m.guid=m.guid||d.guid;m.data=m.data||d.data;m.type=m.type||d.type;d=m}s[d.guid]=d;this.global[n]=true}a=null}}},global:{},remove:function(a,b,d){if(!(a.nodeType===3||a.nodeType===8)){var f=c.data(a,"events"),e,i,j;if(f){if(b===v||typeof b==="string"&&b.charAt(0)===".")for(i in f)this.remove(a,i+(b||""));else{if(b.type){d=b.handler;b=b.type}b=b.split(/\s+/);for(var n=0;i=b[n++];){var o=i.split(".");i=o.shift();var m=!o.length,s=c.map(o.slice(0).sort(),ab);s=new RegExp("(^|\\.)"+ -s.join("\\.(?:.*\\.)?")+"(\\.|$)");var x=this.special[i]||{};if(f[i]){if(d){j=f[i][d.guid];delete f[i][d.guid]}else for(var A in f[i])if(m||s.test(f[i][A].type))delete f[i][A];x.remove&&x.remove.call(a,o,j);for(e in f[i])break;if(!e){if(!x.teardown||x.teardown.call(a,o)===false)if(a.removeEventListener)a.removeEventListener(i,c.data(a,"handle"),false);else a.detachEvent&&a.detachEvent("on"+i,c.data(a,"handle"));e=null;delete f[i]}}}}for(e in f)break;if(!e){if(A=c.data(a,"handle"))A.elem=null;c.removeData(a, -"events");c.removeData(a,"handle")}}}},trigger:function(a,b,d,f){var e=a.type||a;if(!f){a=typeof a==="object"?a[G]?a:c.extend(c.Event(e),a):c.Event(e);if(e.indexOf("!")>=0){a.type=e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();this.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return v;a.result=v;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d, -b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(i){}if(!a.isPropagationStopped()&&f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){d=a.target;var j;if(!(c.nodeName(d,"a")&&e==="click")&&!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()])){try{if(d[e]){if(j=d["on"+e])d["on"+e]=null;this.triggered=true;d[e]()}}catch(n){}if(j)d["on"+e]=j;this.triggered=false}}},handle:function(a){var b, -d;a=arguments[0]=c.event.fix(a||z.event);a.currentTarget=this;d=a.type.split(".");a.type=d.shift();b=!d.length&&!a.exclusive;var f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)");d=(c.data(this,"events")||{})[a.type];for(var e in d){var i=d[e];if(b||f.test(i.type)){a.handler=i;a.data=i.data;i=i.apply(this,arguments);if(i!==v){a.result=i;if(i===false){a.preventDefault();a.stopPropagation()}}if(a.isImmediatePropagationStopped())break}}return a.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "), -fix:function(a){if(a[G])return a;var b=a;a=c.Event(b);for(var d=this.props.length,f;d;){f=this.props[--d];a[f]=b[f]}if(!a.target)a.target=a.srcElement||r;if(a.target.nodeType===3)a.target=a.target.parentNode;if(!a.relatedTarget&&a.fromElement)a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement;if(a.pageX==null&&a.clientX!=null){b=r.documentElement;d=r.body;a.pageX=a.clientX+(b&&b.scrollLeft||d&&d.scrollLeft||0)-(b&&b.clientLeft||d&&d.clientLeft||0);a.pageY=a.clientY+(b&&b.scrollTop|| -d&&d.scrollTop||0)-(b&&b.clientTop||d&&d.clientTop||0)}if(!a.which&&(a.charCode||a.charCode===0?a.charCode:a.keyCode))a.which=a.charCode||a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==v)a.which=a.button&1?1:a.button&2?3:a.button&4?2:0;return a},guid:1E8,proxy:c.proxy,special:{ready:{setup:c.bindReady,teardown:c.noop},live:{add:function(a,b){c.extend(a,b||{});a.guid+=b.selector+b.live;b.liveProxy=a;c.event.add(this,b.live,na,b)},remove:function(a){if(a.length){var b= -0,d=new RegExp("(^|\\.)"+a[0]+"(\\.|$)");c.each(c.data(this,"events").live||{},function(){d.test(this.type)&&b++});b<1&&c.event.remove(this,a[0],na)}},special:{}},beforeunload:{setup:function(a,b,d){if(this.setInterval)this.onbeforeunload=d;return false},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.Event=function(a){if(!this.preventDefault)return new c.Event(a);if(a&&a.type){this.originalEvent=a;this.type=a.type}else this.type=a;this.timeStamp=J();this[G]=true}; -c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=Z;var a=this.originalEvent;if(a){a.preventDefault&&a.preventDefault();a.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=Z;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=Z;this.stopPropagation()},isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y};var Aa=function(a){for(var b= -a.relatedTarget;b&&b!==this;)try{b=b.parentNode}catch(d){break}if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}},Ba=function(a){a.type=a.data;c.event.handle.apply(this,arguments)};c.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){c.event.special[a]={setup:function(d){c.event.add(this,b,d&&d.selector?Ba:Aa,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?Ba:Aa)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(a,b,d){if(this.nodeName.toLowerCase()!== -"form"){c.event.add(this,"click.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="submit"||i==="image")&&c(e).closest("form").length)return ma("submit",this,arguments)});c.event.add(this,"keypress.specialSubmit."+d.guid,function(f){var e=f.target,i=e.type;if((i==="text"||i==="password")&&c(e).closest("form").length&&f.keyCode===13)return ma("submit",this,arguments)})}else return false},remove:function(a,b){c.event.remove(this,"click.specialSubmit"+(b?"."+b.guid:""));c.event.remove(this, -"keypress.specialSubmit"+(b?"."+b.guid:""))}};if(!c.support.changeBubbles){var da=/textarea|input|select/i;function Ca(a){var b=a.type,d=a.value;if(b==="radio"||b==="checkbox")d=a.checked;else if(b==="select-multiple")d=a.selectedIndex>-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d}function ea(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Ca(d);if(a.type!=="focusout"|| -d.type!=="radio")c.data(d,"_change_data",e);if(!(f===v||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}}c.event.special.change={filters:{focusout:ea,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return ea.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return ea.call(this,a)},beforeactivate:function(a){a= -a.target;a.nodeName.toLowerCase()==="input"&&a.type==="radio"&&c.data(a,"_change_data",Ca(a))}},setup:function(a,b,d){for(var f in T)c.event.add(this,f+".specialChange."+d.guid,T[f]);return da.test(this.nodeName)},remove:function(a,b){for(var d in T)c.event.remove(this,d+".specialChange"+(b?"."+b.guid:""),T[d]);return da.test(this.nodeName)}};var T=c.event.special.change.filters}r.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this, -f)}c.event.special[b]={setup:function(){this.addEventListener(a,d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var i in d)this[b](i,f,d[i],e);return this}if(c.isFunction(f)){e=f;f=v}var j=b==="one"?c.proxy(e,function(n){c(this).unbind(n,j);return e.apply(this,arguments)}):e;return d==="unload"&&b!=="one"?this.one(d,f,e):this.each(function(){c.event.add(this,d,j,f)})}});c.fn.extend({unbind:function(a, -b){if(typeof a==="object"&&!a.preventDefault){for(var d in a)this.unbind(d,a[d]);return this}return this.each(function(){c.event.remove(this,a,b)})},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){a=c.Event(a);a.preventDefault();a.stopPropagation();c.event.trigger(a,b,this[0]);return a.result}},toggle:function(a){for(var b=arguments,d=1;d0){y=t;break}}t=t[g]}l[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,i=Object.prototype.toString,j=false,n=true;[0,0].sort(function(){n=false;return 0});var o=function(g,h,k,l){k=k||[];var q=h=h||r;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g|| -typeof g!=="string")return k;for(var p=[],u,t,y,R,H=true,M=w(h),I=g;(f.exec(""),u=f.exec(I))!==null;){I=u[3];p.push(u[1]);if(u[2]){R=u[3];break}}if(p.length>1&&s.exec(g))if(p.length===2&&m.relative[p[0]])t=fa(p[0]+p[1],h);else for(t=m.relative[p[0]]?[h]:o(p.shift(),h);p.length;){g=p.shift();if(m.relative[g])g+=p.shift();t=fa(g,t)}else{if(!l&&p.length>1&&h.nodeType===9&&!M&&m.match.ID.test(p[0])&&!m.match.ID.test(p[p.length-1])){u=o.find(p.shift(),h,M);h=u.expr?o.filter(u.expr,u.set)[0]:u.set[0]}if(h){u= -l?{expr:p.pop(),set:A(l)}:o.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=u.expr?o.filter(u.expr,u.set):u.set;if(p.length>0)y=A(t);else H=false;for(;p.length;){var D=p.pop();u=D;if(m.relative[D])u=p.pop();else D="";if(u==null)u=h;m.relative[D](y,u,M)}}else y=[]}y||(y=t);y||o.error(D||g);if(i.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))k.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&& -y[g].nodeType===1&&k.push(t[g]);else k.push.apply(k,y);else A(y,k);if(R){o(R,q,k,l);o.uniqueSort(k)}return k};o.uniqueSort=function(g){if(C){j=n;g.sort(C);if(j)for(var h=1;h":function(g,h){var k=typeof h==="string";if(k&&!/\W/.test(h)){h=h.toLowerCase();for(var l=0,q=g.length;l=0))k||l.push(u);else if(k)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&& -"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,k,l,q,p){h=g[1].replace(/\\/g,"");if(!p&&m.attrMap[h])g[1]=m.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,k,l,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=o(g[3],null,null,h);else{g=o.filter(g[3],h,k,true^q);k||l.push.apply(l,g);return false}else if(m.match.POS.test(g[0])||m.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true); -return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,k){return!!o(k[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"=== -g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,h){return h===0},last:function(g,h,k,l){return h===l.length-1},even:function(g,h){return h%2=== -0},odd:function(g,h){return h%2===1},lt:function(g,h,k){return hk[3]-0},nth:function(g,h,k){return k[3]-0===h},eq:function(g,h,k){return k[3]-0===h}},filter:{PSEUDO:function(g,h,k,l){var q=h[1],p=m.filters[q];if(p)return p(g,k,h,l);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=h[3];k=0;for(l=h.length;k= -0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var k=h[1];g=m.attrHandle[k]?m.attrHandle[k](g):g[k]!=null?g[k]:g.getAttribute(k);k=g+"";var l=h[2];h=h[4];return g==null?l==="!=":l==="="?k===h:l==="*="?k.indexOf(h)>=0:l==="~="?(" "+k+" ").indexOf(h)>=0:!h?k&&g!==false:l==="!="?k!==h:l==="^="? -k.indexOf(h)===0:l==="$="?k.substr(k.length-h.length)===h:l==="|="?k===h||k.substr(0,h.length+1)===h+"-":false},POS:function(g,h,k,l){var q=m.setFilters[h[2]];if(q)return q(g,k,h,l)}}},s=m.match.POS;for(var x in m.match){m.match[x]=new RegExp(m.match[x].source+/(?![^\[]*\])(?![^\(]*\))/.source);m.leftMatch[x]=new RegExp(/(^(?:.|\r|\n)*?)/.source+m.match[x].source.replace(/\\(\d+)/g,function(g,h){return"\\"+(h-0+1)}))}var A=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g}; -try{Array.prototype.slice.call(r.documentElement.childNodes,0)}catch(B){A=function(g,h){h=h||[];if(i.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var k=0,l=g.length;k";var k=r.documentElement;k.insertBefore(g,k.firstChild);if(r.getElementById(h)){m.find.ID=function(l,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(l[1]))?q.id===l[1]||typeof q.getAttributeNode!=="undefined"&&q.getAttributeNode("id").nodeValue===l[1]?[q]:v:[]};m.filter.ID=function(l,q){var p=typeof l.getAttributeNode!=="undefined"&&l.getAttributeNode("id"); -return l.nodeType===1&&p&&p.nodeValue===q}}k.removeChild(g);k=g=null})();(function(){var g=r.createElement("div");g.appendChild(r.createComment(""));if(g.getElementsByTagName("*").length>0)m.find.TAG=function(h,k){k=k.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var l=0;k[l];l++)k[l].nodeType===1&&h.push(k[l]);k=h}return k};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")m.attrHandle.href=function(h){return h.getAttribute("href", -2)};g=null})();r.querySelectorAll&&function(){var g=o,h=r.createElement("div");h.innerHTML="

";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){o=function(l,q,p,u){q=q||r;if(!u&&q.nodeType===9&&!w(q))try{return A(q.querySelectorAll(l),p)}catch(t){}return g(l,q,p,u)};for(var k in g)o[k]=g[k];h=null}}();(function(){var g=r.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length=== -0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){m.order.splice(1,0,"CLASS");m.find.CLASS=function(h,k,l){if(typeof k.getElementsByClassName!=="undefined"&&!l)return k.getElementsByClassName(h[1])};g=null}}})();var E=r.compareDocumentPosition?function(g,h){return g.compareDocumentPosition(h)&16}:function(g,h){return g!==h&&(g.contains?g.contains(h):true)},w=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},fa=function(g,h){var k=[], -l="",q;for(h=h.nodeType?[h]:h;q=m.match.PSEUDO.exec(g);){l+=q[0];g=g.replace(m.match.PSEUDO,"")}g=m.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var i=d;i0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,i={},j;if(f&&a.length){e=0;for(var n=a.length;e --1:c(f).is(e)){d.push({selector:j,elem:f});delete i[j]}}f=f.parentNode}}return d}var o=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(m,s){for(;s&&s.ownerDocument&&s!==b;){if(o?o.index(s)>-1:c(s).is(a))return s;s=s.parentNode}return null})},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(), -a);return this.pushStack(pa(a[0])||pa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")}, -nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);bb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e): -e;if((this.length>1||db.test(f))&&cb.test(a))e=e.reverse();return this.pushStack(e,a,Q.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===v||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!== -b&&d.push(a);return d}});var Fa=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ga=/(<([\w:]+)[^>]*?)\/>/g,eb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,Ha=/<([\w:]+)/,fb=/"},F={option:[1,""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"], -col:[2,"","
"],area:[1,"",""],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div
","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==v)return this.empty().append((this[0]&&this[0].ownerDocument||r).createTextNode(a));return c.getText(this)}, -wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length? -d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments, -false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&& -!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Fa,"").replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){qa(this,b);qa(this.find("*"),b.find("*"))}return b},html:function(a){if(a===v)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Fa,""):null;else if(typeof a==="string"&&!/