This post is the first part in an upcoming series explaining how to perform electronic structure calculations. The focus of this series is how to set-up an electronic structure calculation from scratch. We are not going to use any of the available quantum chemical codes, but write our very own code. This way, we will obtain a better understanding of how quantum chemical calculations are being performed. The way I am going to present the topic is by first providing the underlying theory and then further explaining the theory by giving a set of examples.
The outline of this series is as follows: We start of with explaining some basics such as the (linear) variational principle, the Hartree product and the Slater determinant. From there on, we derive the Hartree-Fock equations and show how to set-up a simple calculation for the H2 molecule. Next, we explain about basis sets, Gaussian integrals and the Hartree-Fock self-consistent field procedure. Finally, we talk about atomic and molecular orbitals, the construction of MO diagrams and the visualization of orbitals.
For this series, I am going to assume that you have a basic understanding of quantum mechanics. You know what a wave function is and its statistical interpretation. Furthermore, I assume that you have passed introductory courses in calculus and linear algebra.
Given a normalized wave function $\lvert\phi\rangle$ that satisfies the appropriate boundary conditions, then the expectation value of the Hamiltonian is an upper bound to the exact ground state energy. In other words, the lowest energy we can find, gives us the best wave function. Thus,
if $ \langle \phi \rvert \phi \rangle=1 $, then $ \langle \phi \lvert \hat{H} \rvert \phi \rangle \geq E_{0} $.
The exact energy for the 1s orbital in hydrogen is -0.5 HT with the corresponding wave function $\lvert \phi \rangle = \frac{1}{\sqrt{\pi}} \exp \left( - r \right)$.
Although the exact answer to the energy of the 1s orbital in hydrogen is known, let us assume that we do not know it and would like to obtain it. One way is to pick various trial wave functions with one independent variable and optimize that variable. The lowest energy we are going to find gives us then the best approximation of the ground state wave function. This approach would be quite tedious (and how would you know what trial wave function to choose in the first place anyway?).
It would be nice if we could have just a single trial wave function that has a lot of 'variational freedom'. Here, I propose to use a trial wave function that is a linear set of fixed wave function like so:
$$ \lvert \phi \rangle = \sum_{i=1}^N c_{i} \lvert \psi_{i} \rangle $$
If we can assume that the wave functions $\lvert \psi_i \rangle$ are orthonormal in the sense that $\langle \psi_i \lvert \psi_j \rangle = \delta_{ij}$, then the energy is
$$E = \sum_{ij} \langle \psi_i \lvert \hat{H} \rvert \psi_j \rangle = \sum_{ij} c_{i}c_{j} H_{ij}$$
and we are tasked with finding the best set of coefficients $c_{i}$ that minimizes $E$. It are exactly these coefficients (and accompanying wave functions) that provide us with the necessary variational freedom. (Note that $H_{ij} = \langle \psi_i \lvert \hat{H} \rvert \psi_j \rangle$)
The procedure to find this set is by using Langrange's method of undetermined multiplies. Herein
$$L \left( c_1, c_2, \cdots, E \right) = \langle \phi \lvert \hat{H} \rvert \phi \rangle - E \left(\langle \phi \lvert \phi \rangle - 1 \right) $$ and we need to find that particular set of $c_k$ where
$$ \frac{\partial L}{\partial c_{k}} = 0 $$
for each $k$.
For each $k$, this gives the following equation
$$ \sum_{j} c_j H_{kj} + \sum_i c_i H_{ik} - 2 E c_{k} = 0 $$.
Since $\langle \psi_a \lvert \hat{H} \rvert \psi_b \rangle = \langle \psi_b \lvert \hat{H} \rvert \psi_a \rangle = H_{ab} = H_{ba}$, we can simplify the above equation to
$$ \sum_{j} H_{ij} c_j - E c_{i} = 0. $$
The above expression is just the matrix expression
$$ H\vec{c} = E\vec{c} .$$
This last equation looks probably very familiar to you and relates to the matrix eigenvalue problem. It is a very typical problem in linear algebra. To solve the matrix eigenvalue problem, one needs to diagonalize the $H$ matrix. This gives a set of eigenvalues and corresponding eigenvalues. The eigenvector corresponding to the lowest eigenvalue is the best set of $c_k$ we are interested in.
In Example 2 it was shown how we can obtain the best energy given a trial wave function which is a linear combination of a set of wave functions. Let us call these wave functions in the linear combination the basis functions. In order for the procedure in example 2 to work, the basis functions need to be orthonormal to each other. Finding a set of orthonormal functions by hand is somewhat tedious (try it for yourself if you do not believe me!). It would therefore be very handy if we could apply the above methodology (albeit somewhat changed) using a set of non-orthonormal basis functions.
I already showed you how you can use Lagrange's method of undetermined multipliers in order to derive the matrix equation $Hc = Ec$. When the basis functions are no longer orthonormal, this matrix equation changes slightly and becomes
$$ H\vec{c} = ES\vec{c}.$$
Herein, $S$ is termed the overlap matrix where each term in the matrix is
$$ S_{ij} = \langle \psi_{i} \lvert \psi_{j} \rangle.$$
The introduction of the overlap matrix $S$ makes the matrix diagonalization a tiny bit more complicated. There are several procedures for obtaining the eigenvalues and -vectors. The procedure we are going to use follows the canonical orthogonalization scheme. It works as follows
The above probably looks a bit complicated, but really, it is not. Let me elaborate by showing you another example.
Although we have now the tools to find the best approximation of the ground state energy and its corresponding wave function using any set of basis functions, the result so far was not very satisfactory. Using only a single trial wave function as for instance given in example 1 gave better results. In order to improve on the previous results, we need to expand our set of basis functions. A larger basis set should in principle give a better result.
In this blogpost I have shown you that in order to find the best approximation to the ground state energy, the variational principle can be employed. By introducing some kind of variety in a trial wave function and then minimizing its corresponding energy, gives the best approximation to the ground state energy can be found.
In the linear variational method, the variational freedom is provided by the specific set of basis functions used. In this method, the best coefficients in the linear combination of said basis functions that minimize the energy can be found. Here, I have shown that a sufficiently large set of basis functions composed of a Gaussian part (the exponent) multiplied with a polynomial of increasing order is able to approach the true ground state energy of the hydrogen atom.
Finally, I would like to acknowledge Bart Zijlstra for thoroughly proofreading this post and pointing out the mistakes.
No post data.
No querystring data.
To view Cookies, add CookieComponent to Controller
Query | Affected | Num. rows | Took (ms) | Actions |
---|---|---|---|---|
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`posts` AS `Post` WHERE `Post`.`id` = 29 | 1 | 1 | 0 | |
SELECT `Post`.`active`, `Post`.`id` FROM `ivofilot_nl`.`posts` AS `Post` WHERE `Post`.`id` = 29 LIMIT 1 | 1 | 1 | 0 | |
SELECT `Comment`.`email`, `Comment`.`comment`, `Comment`.`id`, `Comment`.`post_id`, `Comment`.`created` FROM `ivofilot_nl`.`comments` AS `Comment` WHERE `Comment`.`post_id` = (29) | 0 | 0 | 1 | maybe slow |
SELECT `Tag`.`id`, `Tag`.`name`, `Tag`.`icon`, `Tag`.`color`, `PostsTag`.`post_id`, `PostsTag`.`tag_id` FROM `ivofilot_nl`.`tags` AS `Tag` JOIN `ivofilot_nl`.`posts_tags` AS `PostsTag` ON (`PostsTag`.`post_id` = 29 AND `PostsTag`.`tag_id` = `Tag`.`id`) | 2 | 2 | 1 | maybe slow |
UPDATE `posts` SET `watched`=`watched`+1 WHERE `id`='29' | 1 | 1 | 0 | |
SELECT `Comment`.`id`, `Comment`.`email`, `Comment`.`comment`, `Comment`.`post_id`, `Comment`.`parent_id`, `Comment`.`lft`, `Comment`.`rght`, `Comment`.`active`, `Comment`.`code`, `Comment`.`deleted`, `Comment`.`created`, `Comment`.`modified`, `Post`.`id`, `Post`.`title`, `Post`.`content`, `Post`.`watched`, `Post`.`active`, `Post`.`created`, `Post`.`modified`, `ParentComment`.`id`, `ParentComment`.`email`, `ParentComment`.`comment`, `ParentComment`.`post_id`, `ParentComment`.`parent_id`, `ParentComment`.`lft`, `ParentComment`.`rght`, `ParentComment`.`active`, `ParentComment`.`code`, `ParentComment`.`deleted`, `ParentComment`.`created`, `ParentComment`.`modified` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 29 AND `Comment`.`active` = '1' | 0 | 0 | 1 | maybe slow |
SELECT `Tag`.`id`, `Tag`.`name`, `Tag`.`icon`, `Tag`.`color` FROM `ivofilot_nl`.`tags` AS `Tag` inner JOIN `ivofilot_nl`.`posts_tags` AS `PostsTag` ON (`Tag`.`id` = `PostsTag`.`tag_id`) inner JOIN `ivofilot_nl`.`posts` AS `Post` ON (`PostsTag`.`post_id` = `Post`.`id`) WHERE `Post`.`id` = 29 | 2 | 2 | 1 | maybe slow |
SELECT `Post`.`id`, `Post`.`title`, `Post`.`content`, `Post`.`watched`, `Post`.`active`, `Post`.`created`, `Post`.`modified`, `PostsTag`.`post_id`, `PostsTag`.`tag_id` FROM `ivofilot_nl`.`posts` AS `Post` JOIN `ivofilot_nl`.`posts_tags` AS `PostsTag` ON (`PostsTag`.`tag_id` IN (25, 23) AND `PostsTag`.`post_id` = `Post`.`id`) | 14 | 14 | 2 | maybe slow |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 29 | 1 | 1 | 1 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 36 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 27 | 1 | 1 | 1 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 28 | 1 | 1 | 1 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 21 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 24 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 29 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 31 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 33 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 20 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 36 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 35 | 1 | 1 | 0 | |
SELECT `Post`.`id`, `Post`.`title`, `Post`.`content`, `Post`.`watched`, `Post`.`active`, `Post`.`created`, `Post`.`modified` FROM `ivofilot_nl`.`posts` AS `Post` WHERE `Post`.`id` = 29 LIMIT 1 | 1 | 1 | 0 | |
SELECT COUNT(*) AS `count` FROM `ivofilot_nl`.`comments` AS `Comment` LEFT JOIN `ivofilot_nl`.`posts` AS `Post` ON (`Comment`.`post_id` = `Post`.`id`) LEFT JOIN `ivofilot_nl`.`comments` AS `ParentComment` ON (`Comment`.`parent_id` = `ParentComment`.`id`) WHERE `Comment`.`post_id` = 29 | 1 | 1 | 0 |
Peak Memory Use 5.27 MB
Message | Memory use |
---|---|
Component initialization | 993 KB |
Controller action start | 1.02 MB |
Controller render start | 1.85 MB |
View render complete | 2.31 MB |
Total Request Time: 300 (ms)
Message | Time in ms | Graph |
---|---|---|
Core Processing (Derived from $_SERVER["REQUEST_TIME"]) | 60.21 | |
Event: Controller.initialize | 0.17 | |
Event: Controller.startup | 4.63 | |
Controller action | 111.93 | |
Event: Controller.beforeRender | 26.50 | |
» Processing toolbar data | 26.46 | |
Rendering View | 58.74 | |
» Event: View.beforeRender | 0.01 | |
» Rendering APP/View/Posts/view.ctp | 55.36 | |
» » Rendering APP/View/Elements/code_highlighting.ctp | 3.50 | |
» » Rendering APP/View/Elements/post.commentform.ctp | 20.66 | |
» » » Rendering APP/View/Elements/post.comment.captcha.ctp | 1.98 | |
» » Rendering APP/View/Elements/post.comments.ctp | 16.09 | |
» » Rendering APP/View/Elements/post.relatedpost.ctp | 2.76 | |
» Event: View.afterRender | 0.03 | |
» Event: View.beforeLayout | 0.02 | |
» Rendering APP/View/Layouts/default.ctp | 2.33 | |
» » Rendering APP/View/Elements/navbar.ctp | 0.53 | |
» » Rendering APP/View/Elements/footer.ctp | 0.37 | |
» » » Rendering APP/View/Elements/biography.ctp | 0.11 | |
Event: View.afterLayout | 0.00 |
Constant | Value |
---|---|
CONFIG | /customers/e/2/e/ivofilot.nl/httpd.www/app/Config/ |
Constant | Value |
---|---|
APP | /customers/e/2/e/ivofilot.nl/httpd.www/app/ |
APP_DIR | app |
APPLIBS | /customers/e/2/e/ivofilot.nl/httpd.www/app/Lib/ |
CACHE | /customers/e/2/e/ivofilot.nl/httpd.www/app/tmp/cache/ |
CAKE | /customers/e/2/e/ivofilot.nl/httpd.www/lib/Cake/ |
CAKE_CORE_INCLUDE_PATH | /customers/e/2/e/ivofilot.nl/httpd.www/lib |
CORE_PATH | /customers/e/2/e/ivofilot.nl/httpd.www/lib/ |
CAKE_VERSION | 2.10.13 |
CSS | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/css/ |
CSS_URL | css/ |
DS | / |
FULL_BASE_URL | https://ivofilot.nl |
IMAGES | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/img/ |
IMAGES_URL | img/ |
JS | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/js/ |
JS_URL | js/ |
LOGS | /customers/e/2/e/ivofilot.nl/httpd.www/app/tmp/logs/ |
ROOT | /customers/e/2/e/ivofilot.nl/httpd.www |
TESTS | /customers/e/2/e/ivofilot.nl/httpd.www/app/Test/ |
TMP | /customers/e/2/e/ivofilot.nl/httpd.www/app/tmp/ |
VENDORS | /customers/e/2/e/ivofilot.nl/httpd.www/vendors/ |
WEBROOT_DIR | webroot |
WWW_ROOT | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/ |
Environment Variable | Value |
---|---|
Php Version | 7.4.14 |
Onecom Domain Name | ivofilot.nl |
Onecom Domain Root | /customers/e/2/e/ivofilot.nl/ |
Onecom Memorylimit | 1073741824 |
Onecom Cpu Shares | 1024 |
Onecom Exec | latest |
Onecom Dir Layout Ver | 0 |
Content Length | 0 |
Http Connection | close |
Script Name | /app/webroot/index.php |
Request Uri | /posts/view/29/Introduction+to+Electronic+Structure+Calculations%3A+The+variational+principle |
Query String | |
Request Method | GET |
Server Protocol | HTTP/1.1 |
Gateway Interface | CGI/1.1 |
Redirect Url | /app/webroot/posts/view/29/Introduction+to+Electronic+Structure+Calculations:+The+variational+principle |
Remote Port | 47476 |
Script Filename | /customers/e/2/e/ivofilot.nl/httpd.www/app/webroot/index.php |
Server Admin | support@one.com |
Context Document Root | /var/www |
Context Prefix | |
Request Scheme | https |
Remote Addr | 184.72.102.217 |
Server Port | 80 |
Server Addr | 10.27.35.20 |
Server Name | ivofilot.nl |
Server Software | Apache |
Server Signature | |
Path | /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin |
Http X Varnish | 1003820485 |
Http Accept Encoding | gzip |
Http Host | ivofilot.nl |
Http X Onecom Host | ivofilot.nl |
Http X Forwarded Proto | https |
Http X Onecom Forwarded Proto | https |
Http X Forwarded For | 184.72.102.217 |
Http Accept Language | en-US,en;q=0.5 |
Http Accept | text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 |
Http User Agent | CCBot/2.0 (https://commoncrawl.org/faq/) |
Env Vcv Env Addons Id | one.com |
Env Vcv Token Url | https://wpapi.one.com/api/v1.0/plugins/visualcomposer/activate |
Onecom One Photo Url | https://onephoto.one.com/domain_discover |
Onecom Wp Addons Api | https://wpapi.one.com |
Onecom Webshop Host | webshop2.cst.webpod8-cph3.one.com |
Https | on |
Onecom Tmpdir | /customers/e/2/e/ivofilot.nl//tmp |
Domain Name | ivofilot.nl |
Onecom Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Redirect Status | 200 |
Redirect Env Vcv Env Addons Id | one.com |
Redirect Env Vcv Token Url | https://wpapi.one.com/api/v1.0/plugins/visualcomposer/activate |
Redirect Onecom One Photo Url | https://onephoto.one.com/domain_discover |
Redirect Onecom Wp Addons Api | https://wpapi.one.com |
Redirect Onecom Webshop Host | webshop2.cst.webpod8-cph3.one.com |
Redirect Https | on |
Redirect Onecom Cpu Shares | 1024 |
Redirect Onecom Memorylimit | 1073741824 |
Redirect Onecom Exec | latest |
Redirect Onecom Dir Layout Ver | 0 |
Redirect Onecom Tmpdir | /customers/e/2/e/ivofilot.nl//tmp |
Redirect Onecom Domain Root | /customers/e/2/e/ivofilot.nl/ |
Redirect Onecom Domain Name | ivofilot.nl |
Redirect Domain Name | ivofilot.nl |
Redirect Onecom Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Redirect Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Redirect Redirect Status | 200 |
Redirect Redirect Env Vcv Env Addons Id | one.com |
Redirect Redirect Env Vcv Token Url | https://wpapi.one.com/api/v1.0/plugins/visualcomposer/activate |
Redirect Redirect Onecom One Photo Url | https://onephoto.one.com/domain_discover |
Redirect Redirect Onecom Wp Addons Api | https://wpapi.one.com |
Redirect Redirect Onecom Webshop Host | webshop2.cst.webpod8-cph3.one.com |
Redirect Redirect Https | on |
Redirect Redirect Onecom Cpu Shares | 1024 |
Redirect Redirect Onecom Memorylimit | 1073741824 |
Redirect Redirect Onecom Exec | latest |
Redirect Redirect Onecom Dir Layout Ver | 0 |
Redirect Redirect Onecom Tmpdir | /customers/e/2/e/ivofilot.nl//tmp |
Redirect Redirect Onecom Domain Root | /customers/e/2/e/ivofilot.nl/ |
Redirect Redirect Onecom Domain Name | ivofilot.nl |
Redirect Redirect Domain Name | ivofilot.nl |
Redirect Redirect Onecom Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Redirect Redirect Document Root | /customers/e/2/e/ivofilot.nl/httpd.www |
Fcgi Role | RESPONDER |
Php Self | /app/webroot/index.php |
Request Time Float | 1611323346.0255 |
Request Time | 1611323346 |