mod_iterative_charge_equilibration_cg¶
Conjugate Gradient methods for the iterative QeQ solver. author: Jonas A. Finkler, Moritz Gubler.
Dependencies¶
Derived Types Summary¶
| Name | Description |
|---|---|
IterativeCgChargeEquilibrator |
Procedures Summary¶
| Name | Type | Description |
|---|---|---|
cg_initial_iteration |
Subroutine | |
cg_iteration |
Subroutine | @todo Remove commented lines of code. |
Derived Types Details¶
type IterativeCgChargeEquilibrator¶
Components
-
nat: integer– Inherited from AbstractChargeEquilibrator -
hardness: real(DP) (dim: (:))– Inherited from AbstractChargeEquilibrator -
elec_calc: class(AbstractElectrostaticsCalculator)– Inherited from AbstractChargeEquilibrator -
iter_tol: real(DP)– Inherited from AbstractChargeEquilibrator -
electro_precision: real(DP)– Inherited from AbstractChargeEquilibrator -
pos: real(DP) (dim: (:,:))– Inherited from AbstractChargeEquilibrator -
lat: real(DP) (dim: (3,3))– Inherited from AbstractChargeEquilibrator -
energy: real(DP)– Inherited from AbstractChargeEquilibrator -
charges: real(DP) (dim: (:))– Inherited from AbstractChargeEquilibrator -
electronegativities: real(DP) (dim: (:))– Inherited from AbstractChargeEquilibrator -
lagrange_charges: real(DP) (dim: (:))– Inherited from AbstractChargeEquilibrator -
dq_dchi: real(DP) (dim: (:,:))– Inherited from AbstractChargeEquilibrator -
dq_dhardness: real(DP) (dim: (:,:))– Inherited from AbstractChargeEquilibrator -
forces: real(DP) (dim: (:,:))– Inherited from AbstractChargeEquilibrator -
stress: real(DP) (dim: (3,3))– Inherited from AbstractChargeEquilibrator -
calc_a_matrix: logical– Inherited from AbstractChargeEquilibrator -
lperiodic: logical– Inherited from AbstractChargeEquilibrator -
p_inverse: real(DP) (dim: (:))– Inherited from AbstractIterativeChargeEquilibrator -
g: real(DP) (dim: (:)) -
z: real(DP) (dim: (:)) -
d: real(DP) (dim: (:))
Type-Bound Procedures
| Name | Attributes | Binding |
|---|---|---|
| initialize_private | public | ⇒ initialize_private |
| compute_charges | public | ⇒ compute_charges |
| compute_dcharge_delectronegativity | public | ⇒ compute_dcharge_delectronegativity |
| compute_dcharge_dhardness | public | ⇒ compute_dcharge_dhardness |
| set_hardness | public | ⇒ set_hardness |
| set_charges | public | ⇒ set_charges |
| get_lagrange_charges | public | ⇒ get_lagrange_charges |
| update_structure | public | ⇒ update_structure |
| initialize | public | ⇒ initialize_iterative |
| solve_linear_system | public | ⇒ solve_linear_system_iterative |
| make_initial_charge_guess | public | ⇒ make_initial_charge_guess_iterative_solver |
| make_initial_guess | public | ⇒ make_initial_guess |
| calc_f_and_df_dx | public | ⇒ calc_f_and_df_dx |
| calc_a_times_vector | public | ⇒ calc_a_times_vector |
| constrain_x | public | ⇒ constrain_x |
| constrain_df_dx | public | ⇒ constrain_df_dx |
| initial_iteration | public | ⇒ cg_initial_iteration |
| iteration | public | ⇒ cg_iteration |
Inherits
Procedure Details¶
subroutine cg_initial_iteration¶
subroutine cg_initial_iteration( &
self, &
rhs, &
sum_x, &
x, &
df_dx &
)
Arguments
-
self: class(IterativeCgChargeEquilibrator) [inout] -
rhs: real(DP) (dim: (self%nat)) [in]– Right hand side of the equation -
sum_x: real(DP) [in]– This is the constraint (total charge) -
x: real(DP) (dim: (self%nat)) [inout]– solution (and initial guess for iterative methods) -
df_dx: real(DP) (dim: (self%nat)) [out]– This is used to check convergence
subroutine cg_iteration¶
subroutine cg_iteration( &
self, &
rhs, &
sum_x, &
x, &
df_dx &
)
@todo Remove commented lines of code.
Arguments
-
self: class(IterativeCgChargeEquilibrator) [inout] -
rhs: real(DP) (dim: (self%nat)) [in]– Right hand side of the equation -
sum_x: real(DP) [in]– This is the constraint (total charge) -
x: real(DP) (dim: (self%nat)) [inout]– solution (and initial guess for iterative methods) -
df_dx: real(DP) (dim: (self%nat)) [out]– This is used to check convergence