Octopus
propagator_static.F90
Go to the documentation of this file.
1!! Copyright (C) 2021 M. Oliveira
2!!
3!! This program is free software; you can redistribute it and/or modify
4!! it under the terms of the GNU General Public License as published by
5!! the Free Software Foundation; either version 2, or (at your option)
6!! any later version.
7!!
8!! This program is distributed in the hope that it will be useful,
9!! but WITHOUT ANY WARRANTY; without even the implied warranty of
10!! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11!! GNU General Public License for more details.
12!!
13!! You should have received a copy of the GNU General Public License
14!! along with this program; if not, write to the Free Software
15!! Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
16!! 02110-1301, USA.
17!!
18
19#include "global.h"
20
23 use debug_oct_m
24 use global_oct_m
26
27 implicit none
28
29 private
30 public :: &
32
36 type, extends(propagator_t) :: propagator_static_t
37 private
38 end type propagator_static_t
39
40 interface propagator_static_t
41 procedure propagator_static_constructor
42 end interface propagator_static_t
43
44contains
45
46 ! ---------------------------------------------------------
47 function propagator_static_constructor(dt, nsteps) result(this)
48 real(real64), intent(in) :: dt
49 integer, intent(in) :: nsteps
50 type(propagator_static_t), pointer :: this
51
52 integer :: istep
53
55
56 allocate(this)
57
58 this%start_operation = op_skip
59 this%final_operation = op_skip
60
61 do istep = 1, nsteps
62 call this%add_operation(op_update_couplings)
63 call this%add_operation(op_update_interactions)
64 end do
65 call this%add_operation(op_iteration_done)
66 call this%add_operation(op_rewind_algorithm)
67
68 this%algo_steps = nsteps
69
70 this%dt = dt
71
74
76
77!!o, Local Variables:
78!! mode: f90
79!! coding: utf-8
80!! End:
This module implements the basic elements defining algorithms.
Definition: algorithm.F90:141
type(algorithmic_operation_t), parameter, public op_iteration_done
Definition: algorithm.F90:179
type(algorithmic_operation_t), parameter, public op_rewind_algorithm
Definition: algorithm.F90:179
type(algorithmic_operation_t), parameter, public op_update_couplings
Definition: algorithm.F90:179
type(algorithmic_operation_t), parameter, public op_skip
Definition: algorithm.F90:179
type(algorithmic_operation_t), parameter, public op_update_interactions
Definition: algorithm.F90:179
This module implements the basic propagator framework.
Definition: propagator.F90:117
type(propagator_static_t) function, pointer propagator_static_constructor(dt, nsteps)
Abstract class implementing propagators.
Definition: propagator.F90:138
Implements a propagator that keeps the state of the system constant. Note that a time-step is still r...