Magnus Picard sweeper type, extends abstract sweeper
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | public | :: | npieces | ||||
logical, | public | :: | use_LUq | ||||
real(kind=pfdp), | public, | allocatable | :: | dtsdc(:) | |||
integer, | public | :: | magnus_order | ||||
integer, | public | :: | qtype | ||||
real(kind=pfdp), | public | :: | dt | ||||
real(kind=pfdp), | public | :: | commutator_coefs(9,3,4) | ||||
complex(kind=pfdp), | public, | allocatable | :: | commutators(:,:,:) | |||
class(pf_encap_t), | public, | allocatable | :: | omega(:) | |||
class(pf_encap_t), | public, | allocatable | :: | time_ev_op(:) |
this loop not OMP'd because the deferred procs are OMP'd
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
type(pf_pfasst_t), | intent(inout), | target | :: | pf | ||
integer, | intent(in) | :: | level_index | |||
real(kind=pfdp), | intent(in) | :: | t0 | |||
real(kind=pfdp), | intent(in) | :: | dt | |||
integer, | intent(in) | :: | nsweeps | |||
integer, | intent(in), | optional | :: | flags |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | lev |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | lev | |||
real(kind=pfdp), | intent(in) | :: | t | |||
integer, | intent(in) | :: | m | |||
integer, | intent(in), | optional | :: | flags | ||
integer, | intent(in), | optional | :: | step |
Compute SDC integral fintSDC = \int_{t_n}^{t_m} fSDC dt
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(in) | :: | lev | |||
class(pf_encap_t), | intent(in) | :: | qSDC(:) | |||
class(pf_encap_t), | intent(in) | :: | fSDC(:,:) | |||
real(kind=pfdp), | intent(in) | :: | dt | |||
class(pf_encap_t), | intent(inout) | :: | fintSDC(:) | |||
integer, | intent(in), | optional | :: | flags |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | lev | |||
real(kind=pfdp), | intent(in) | :: | dt | |||
integer, | intent(in), | optional | :: | flags |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | lev | |||
real(kind=pfdp), | intent(in) | :: | t0 | |||
integer, | intent(in), | optional | :: | flags | ||
integer, | intent(in), | optional | :: | step |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | lev | |||
real(kind=pfdp), | intent(in) | :: | t(:) | |||
integer, | intent(in), | optional | :: | flags | ||
integer, | intent(in), | optional | :: | step |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_encap_t), | intent(inout) | :: | y | |||
real(kind=pfdp), | intent(in) | :: | t | |||
integer, | intent(in) | :: | level | |||
class(pf_encap_t), | intent(inout) | :: | f |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_encap_t), | intent(inout) | :: | f(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_encap_t), | intent(inout) | :: | omega | |||
class(pf_encap_t), | intent(inout) | :: | integrals(:) | |||
class(pf_encap_t), | intent(inout) | :: | f(:,:) | |||
real(kind=pfdp), | intent(in) | :: | nodes(:) | |||
real(kind=pfdp), | intent(in) | :: | qmat(:,:) | |||
real(kind=pfdp), | intent(in) | :: | dt | |||
integer, | intent(in) | :: | this_node | |||
real(kind=pfdp), | intent(in) | :: | coefs(:,:) |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_encap_t), | intent(inout) | :: | sol_t0 | |||
class(pf_encap_t), | intent(inout) | :: | sol_tn | |||
class(pf_encap_t), | intent(inout) | :: | omega | |||
integer, | intent(in) | :: | level |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | Lev |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
class(pf_magpicard_t), | intent(inout) | :: | this | |||
class(pf_level_t), | intent(inout) | :: | lev |
type, extends(pf_sweeper_t), abstract :: pf_magpicard_t
real(pfdp), allocatable :: dtsdc(:)
integer :: magnus_order, qtype
real(pfdp) :: dt, commutator_coefs(9,3,4)
complex(pfdp), allocatable :: commutators(:,:,:)
class(pf_encap_t), allocatable :: omega(:), time_ev_op(:)
contains
procedure :: sweep => magpicard_sweep
procedure :: initialize => magpicard_initialize
procedure :: evaluate => magpicard_evaluate
procedure :: integrate => magpicard_integrate
procedure :: residual => magpicard_residual
procedure :: spreadq0 => magpicard_spreadq0
procedure :: evaluate_all => magpicard_evaluate_all
procedure(pf_f_eval_p), deferred :: f_eval
procedure(pf_compute_single_commutators_p), deferred :: compute_single_commutators
procedure(pf_compute_omega_p), deferred :: compute_omega
procedure(pf_propagate_solution_p), deferred :: propagate_solution
procedure(pf_destroy_magpicard_p), deferred :: destroy
procedure :: magpicard_destroy
end type pf_magpicard_t