-
Notifications
You must be signed in to change notification settings - Fork 6
More dimensions #15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
Yes this needs to be fixed in QuasiArrays.jl. Essentially everywhere that specialises on |
If I understand it correctly, the indexing you're referring to is to evaluate the approximated function at various coordinates (which is certainly necessary). However, I have understood the philosophy of basis sets such as Gaussians to mainly be the transformation of a continuous problem to a matrix problem (with emphasis on this); sort of the opposite what I feel we're trying to accomplish with ContinuumArrays.jl. I will try to clarify: with molecules, you have no hope to cover all of Quantum chemists call this "basis set calculations", and you have to derive your equations in terms of these, rather than the actual functions you're approximating, since they do not obey simple things like completeness relations ( I think my crude explanation is neither fully correct, nor very elucidating, apologies for this. |
Is this basically radial basis functions (RBFs)? I think that fit's in naturally. |
Yes it is. |
With a little help of @mortenpi, I managed to solve the Dirac equation for hydrogen:
This is a slightly peculiar equation, since its solutions are vector-valued functions of What is the correct way to represent the components in an array? For testing, I simply store them as This works nicely for B-splines and finite-differences, whose operators are banded, but not for finite-elements, whose operators themselves are Next complication comes when I want multiple functions stored in the same array; for the non-relativistic Schrödinger case, I usually store them as columns:
The first idea is easy to implement (and probably efficient), but works only for banded operators, and does not generalize to more dimensions. The second idea is more general, but how do I store operators? I could simply implement a meta-matrix, struct MetaMatrix{U,UL,LU,L}
A::U
B::UL
C::LU
D::L
end and implement |
In ApproxFun.jl I handled this by interlacing the coefficients by blocks: interlacing rows/columns of banded matrices results in a banded matrix, as does banded-block-banded matrices. I started playing with adding this to LazyArrays.jl as a lazy But in the context of quasi-arrays, some more thought is needed for both concatenation and interlacing. For concatenation, there are multiple options for the
|
PS For completeness, the analogue of |
I see. It seems 1) is basically what I did above, 2) will not work in this case (I think?), and 3) is the most general one, and which is where I want to go. An operator |
I was reading a bit on how to implement the full time-dependent Schrödinger equation for helium, which has two electrons, corresponding to 6-dimensional space. This quickly becomes intractable with growing sizes of the axes, but the nature of the problem is that the electrons are usually never "far away" from the origin simultaneously. It would be cool if we could somehow fit in "Hyberpolic Reduced Tensor-Product Bases", as described by e.g. Lubich (2008): |
This sounds like it’s about tensor Fourier. It wouldn’t be relevant for any basis built from spherical harmonics. In terms of how it fits in, it’s all about different ways of turning a matrix into a vector. In ApproxFun this was achieved by different |
This is for the radial coordinates of the two electrons, i.e. EDIT: I assume you refer to the fact that in e.g. Lubich's book, it's used for tensor products of Hermite functions, which I agree are not suited for spherical bases. My idea was to simply reuse the hyperbolic reduction of the tensor space, but in the radial coordinates. Most publications I've seen go for the full tensor basis, except one, which treats the electrons asymmetrically, i.e. different intervals for |
This is a follow-up to #14, but more speculatory.
At the moment, I'm working with atoms with spherical symmetry, which allows me to reduce my differential equations to one-dimensional radial problems, with the angular coordinates treated exactly using angular momentum algebra. In the future, I will probably want/need to go to molecules which possess less/other symmetries. There are many different ways of treating molecules, but the dominating by far is linear combinations of (multi-centred) 3d Gaussians (actually polynomials multiplied by Gaussians). It would be interesting to see if we could fit these type of basis functions within the ContinuumArrays framework. If we get this to work, a Hartree–Fock code could conceivably be used for both atoms and molecules without modifications (some tensor magic would need to happen).
I am by no means well-versed on the topic, and would need to read up quite a bit (although I have a lot of good references). @jarvist could possibly be interested in this as well.
The text was updated successfully, but these errors were encountered: