![]() |
Massively Parallel Trotter-Suzuki Solver
1.6.2
|
This class defines the evolution tasks. More...
#include <trottersuzuki.h>
Public Member Functions | |
| Solver (Lattice *grid, State *state, Hamiltonian *hamiltonian, double delta_t, string kernel_type="cpu") | |
| Solver (Lattice *grid, State *state1, State *state2, Hamiltonian2Component *hamiltonian, double delta_t, string kernel_type="cpu") | |
| void | evolve (int iterations, bool imag_time=false) |
| Evolve the state of the system. | |
| void | update_parameters () |
| Notify the solver if any parameter changed in the Hamiltonian. | |
| double | get_total_energy (void) |
| Get the total energy of the system. | |
| double | get_squared_norm (size_t which=3) |
| Get the squared norm of the state (default: total wave-function). More... | |
| double | get_kinetic_energy (size_t which=3) |
| Get the kinetic energy of the system. More... | |
| double | get_potential_energy (size_t which=3) |
| Get the potential energy of the system. More... | |
| double | get_rotational_energy (size_t which=3) |
| Get the rotational energy of the system. More... | |
| double | get_intra_species_energy (size_t which=3) |
| Get the intra-particles interaction energy of the system. More... | |
| double | get_LeeHuangYang_energy (void) |
| Get the LeeHuangYang energy (only first component);. | |
| double | get_inter_species_energy (void) |
| Get the inter-particles interaction energy of the system. | |
| double | get_rabi_energy (void) |
| Get the Rabi energy of the system. | |
| void | set_exp_potential (double *real, int real_length, double *imag, int imag_length, int which) |
| Set exponential potential directly from Python. | |
Public Attributes | |
| Lattice * | grid |
| Lattice object. | |
| State * | state |
| State of the first component. | |
| State * | state_b |
| State of the second component. | |
| Hamiltonian * | hamiltonian |
| Hamiltonian of the system; either single component or two components. | |
| double | current_evolution_time |
| Amount of time evolved since the beginning of the evolution. | |
Private Member Functions | |
| void | initialize_exp_potential (double time_single_it, int which) |
| Initialize the evolution operator regarding the external potential. | |
| void | init_kernel () |
| Initialize the kernel (cpu or gpu). | |
| void | calculate_energy_expected_values (void) |
| Calculate all the expectation values and the state's norm. | |
Private Attributes | |
| bool | imag_time |
| Whether the time of evolution is imaginary(true) or real(false). | |
| double ** | external_pot_real |
| Real part of the evolution operator regarding the external potential. | |
| double ** | external_pot_imag |
| Imaginary part of the evolution operator regarding the external potential. | |
| double | delta_t |
| A single evolution iteration, evolves the state for this time. | |
| double | norm2 [2] |
| Squared norms of the two wave function. | |
| bool | single_component |
| Whether the system is single-component(true) or two-components(false). | |
| string | kernel_type |
| Which kernel are being used (cpu or gpu). | |
| ITrotterKernel * | kernel |
| Pointer to the kernel object. | |
| double | total_energy |
| Total energy of the system. | |
| double | kinetic_energy [2] |
| Kinetic energy for the single components. | |
| double | tot_kinetic_energy |
| Total kinetic energy of the system. | |
| double | potential_energy [2] |
| Potential energy for the single components. | |
| double | tot_potential_energy |
| Total potential energy of the system. | |
| double | rotational_energy [2] |
| Rotational energy for the single components. | |
| double | tot_rotational_energy |
| Total Rotational energy of the system. | |
| double | intra_species_energy [2] |
| Intra-particles interaction energy for the single components. | |
| double | tot_intra_species_energy |
| Total intra-particles interaction energy of the system. | |
| double | LeeHuangYang_energy |
| LeeHuangYang energy term. | |
| double | inter_species_energy |
| Inter-particles interaction energy of the system. | |
| double | rabi_energy |
| Rabi energy of the system. | |
| bool | has_parameters_changed |
| Keeps track whether the Hamiltonian parameters were changed. | |
| bool | energy_expected_values_updated |
| Whether the expectation values are updated or not. | |
| bool | is_python |
This class defines the evolution tasks.
| Solver::Solver | ( | Lattice * | _grid, |
| State * | _state, | ||
| Hamiltonian * | _hamiltonian, | ||
| double | _delta_t, | ||
| string | _kernel_type = "cpu" |
||
| ) |
Construct the Solver object for a single-component system.
| [in] | grid | Lattice object. |
| [in] | state | State of the system. |
| [in] | hamiltonian | Hamiltonian of the system. |
| [in] | delta_t | A single evolution iteration, evolves the state for this time. |
| [in] | kernel_type | Which kernel to use (either cpu or gpu). |
Massively Parallel Trotter-Suzuki Solver
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.
| Solver::Solver | ( | Lattice * | grid, |
| State * | state1, | ||
| State * | state2, | ||
| Hamiltonian2Component * | hamiltonian, | ||
| double | delta_t, | ||
| string | kernel_type = "cpu" |
||
| ) |
Construct the Solver object for a two-component system.
| [in] | grid | Lattice object. |
| [in] | state1 | First component's state of the system. |
| [in] | state2 | Second component's state of the system. |
| [in] | hamiltonian | Hamiltonian of the two-component system. |
| [in] | delta_t | A single evolution iteration, evolves the state for this time. |
| [in] | kernel_type | Which kernel to use (either cpu or gpu). |
| double Solver::get_intra_species_energy | ( | size_t | which = 3 | ) |
Get the intra-particles interaction energy of the system.
| [in] | which | Which = 1(first component); 2 (second component); 3(total state) |
| double Solver::get_kinetic_energy | ( | size_t | which = 3 | ) |
Get the kinetic energy of the system.
| [in] | which | Which = 1(first component); 2 (second component); 3(total state) |
| double Solver::get_potential_energy | ( | size_t | which = 3 | ) |
Get the potential energy of the system.
| [in] | which | Which = 1(first component); 2 (second component); 3(total state) |
| double Solver::get_rotational_energy | ( | size_t | which = 3 | ) |
Get the rotational energy of the system.
| [in] | which | Which = 1(first component); 2 (second component); 3(total state) |
| double Solver::get_squared_norm | ( | size_t | which = 3 | ) |
Get the squared norm of the state (default: total wave-function).
| [in] | which | Which = 1(first component); 2 (second component); 3(total state) |
1.8.11