This module implements fully implicit Magnus method using explicit Picard sweeping
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 |
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(:) |
procedure, public :: sweep => magpicard_sweep | |
procedure, public :: initialize => magpicard_initialize | |
procedure, public :: evaluate => magpicard_evaluate | |
procedure, public :: integrate => magpicard_integrate | |
procedure, public :: residual => magpicard_residual | |
procedure, public :: spreadq0 => magpicard_spreadq0 | |
procedure, public :: evaluate_all => magpicard_evaluate_all | |
procedure(pf_f_eval_p), public :: f_eval | |
procedure(pf_compute_single_commutators_p), public :: compute_single_commutators | |
procedure(pf_compute_omega_p), public :: compute_omega | |
procedure(pf_propagate_solution_p), public :: propagate_solution | |
procedure(pf_destroy_magpicard_p), public :: destroy | |
procedure, public :: magpicard_destroy |
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 |
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) | :: | t | |||
integer, | intent(in) | :: | m | |||
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_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 |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer, | intent(in) | :: | qtype | |||
integer, | intent(in) | :: | nnodes | |||
real(kind=pfdp), | intent(in) | :: | dt | |||
real(kind=pfdp), | intent(inout) | :: | coefs(:,:,:) |