Skip to content

Commit

Permalink
Merge pull request MRChemSoft#232 from edinvay/one-corner
Browse files Browse the repository at this point in the history
Updated banded calculations and added an adaptive time evolution operator construction
  • Loading branch information
stigrj authored Jun 18, 2024
2 parents 8349f34 + a235037 commit db4de8b
Show file tree
Hide file tree
Showing 21 changed files with 455 additions and 108 deletions.
8 changes: 5 additions & 3 deletions .github/workflows/build-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
# setup-miniconda not compatible with macos-latest presently.
# https://github.com/conda-incubator/setup-miniconda/issues/344
os: [ubuntu-latest, macos-12]

steps:
- uses: actions/checkout@v2
Expand All @@ -35,7 +37,7 @@ jobs:
key:
${{ matrix.os }}-conda-${{ env.CACHE_NUMBER }}-${{ hashFiles('.github/mrcpp-gha.yml') }}

- uses: conda-incubator/setup-miniconda@v2
- uses: conda-incubator/setup-miniconda@v3
with:
auto-update-conda: true
auto-activate-base: false
Expand All @@ -53,7 +55,7 @@ jobs:
shell: bash -l {0}
run: |
cmake --build build --config $BUILD_TYPE --target install -- -v -d stats
- name: Test
shell: bash -l {0}
run: |
Expand Down
12 changes: 12 additions & 0 deletions docs/programmers_manual/ConvolutionCalculator.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---------------------
ConvolutionCalculator
---------------------

This is an introduction to the ConvolutionCalculator class. We write a small overarching summary of the class where we define the
algorithm/equation/structure reasoning for having this class or where it fits with the rest of the code.

.. doxygenclass:: mrcpp::ConvolutionCalculator
:members:
:protected-members:
:private-members:

19 changes: 19 additions & 0 deletions docs/programmers_manual/CornerOperatorTree.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
------------------
CornerOperatorTree
------------------

This is an introduction to the CornerOperatorTree class. We write a small overarching summary of the class where we define the
algorithm/equation/structure reasoning for having this class or where it fits with the rest of the code.

This class inherits from OperatorTree and represents the non-standard form with
matrices :math:`A, B, C` having negligible matrix elements around their diagonals.
Note that only these three matrices can be considered narrow banded at the corners,
and so only for them we redefine the notion of a band width.
A band of one of them is the distance between the first non-negligible diagonal and the main diagonal.


.. doxygenclass:: mrcpp::CornerOperatorTree
:members:
:protected-members:
:private-members:

2 changes: 2 additions & 0 deletions docs/programmers_manual/overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ TODO: maybe add some low level theory/figures/algorithms before showing classes,
CrossCorrelationCache
LegendreBasis
InterpolatingBasis
ConvolutionCalculator
CornerOperatorTree
TimeEvolutionOperator
JpowerIntegrals
special_functions
Expand Down
16 changes: 1 addition & 15 deletions src/functions/JpowerIntegrals.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,23 +39,10 @@ JpowerIntegrals::JpowerIntegrals(double a, int scaling, int M, double threshold)
for(int l = 1 - N; l < 0; l++ )
integrals.push_back( calculate_J_power_integrals(l, a, M, threshold) );
}
/*
JpowerIntegrals::JpowerIntegrals(const JpowerIntegrals &other)
{
scaling = other.scaling;

// Copy integrals (deep copy)
integrals.clear();
for (const auto& row : other.integrals)
{
std::vector<std::complex<double>> newRow(row);
integrals.push_back(newRow);
}
}
*/

/// @brief in progress
/// @param index - in progress
/// @param index - interger lying in the interval \f$ [ -2^n + 1, \ldots, 2^n - 1 ] \f$.
/// @return in progress
std::vector<std::complex<double>> & JpowerIntegrals::operator[](int index)
{
Expand Down Expand Up @@ -83,7 +70,6 @@ std::vector<std::complex<double>> JpowerIntegrals::calculate_J_power_integrals(i
}

J.erase(J.begin());
crop(J, threshold);
return J;
}

Expand Down
2 changes: 1 addition & 1 deletion src/operators/HeatKernel.h
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ namespace mrcpp {
*
* @brief Heat kernel in \f$ \mathbb R^D \f$.
*
* @details In $\mathbb R^D$ the heat kernel has the form
* @details In \f$ \mathbb R^D \f$ the heat kernel has the form
* \f[
* K_t(x)
* =
Expand Down
8 changes: 4 additions & 4 deletions src/operators/HeatOperator.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,14 @@ namespace mrcpp {
* \f$
* \exp \left( t \partial_x^2 \right)
* \f$
* can be regarded as a convolution operator in $L^2(\mathbb R)$
* can be regarded as a convolution operator in \f$ L^2(\mathbb R) \f$
* of the form
* \[
* \f[
* \exp \left( t \partial_x^2 \right)
* f(x)
* =
* \frac 1{ \sqrt{4 \pi t} }
* \int_\R
* \int_{ \mathbb R }
* \exp
* \left(
* - \frac{ (x - y)^2 }{4t}
Expand All @@ -53,7 +53,7 @@ namespace mrcpp {
* , \quad
* t > 0
* .
* \]
* \f]
*
*/
template <int D> class HeatOperator final : public ConvolutionOperator<D> {
Expand Down
Loading

0 comments on commit db4de8b

Please sign in to comment.