78    real(real64), 
allocatable, 
public     :: partner_field(:,:)
 
   79    real(real64), 
allocatable, 
public     :: system_field(:,:)
 
   80    type(grid_t), 
pointer, 
public  :: system_gr  => null() 
 
   81    type(regridding_t), 
pointer, 
public :: regridding => null()
 
   82    type(time_interpolation_t), 
pointer, 
public :: interpolation => null()
 
   83    integer, 
public :: ndim
 
   84    logical, 
public :: interpolation_initialized = .false.
 
   97    procedure :: dfield_transfer_interpolate, zfield_transfer_interpolate
 
   98    generic :: interpolate => dfield_transfer_interpolate, zfield_transfer_interpolate
 
  114    class(field_transfer_t), 
intent(inout) :: this
 
  115    type(grid_t), 
target,    
intent(in)    :: gr
 
  116    integer,                 
intent(in)    :: ndim
 
  122    safe_allocate(this%system_field(1:gr%np, 1:ndim))
 
  123    this%system_field(:,:) = 
m_zero 
  130    class(field_transfer_t), 
intent(inout) :: this
 
  131    type(grid_t),            
intent(in)    :: partner_gr
 
  132    class(space_t),          
intent(in)    :: partner_space
 
  133    type(namespace_t),       
intent(in)    :: partner_namespace
 
  137    safe_allocate(this%partner_field(1:partner_gr%np, 1:this%ndim))
 
  138    this%partner_field(:,:) = 
m_zero 
  139    this%regridding => 
regridding_t(this%system_gr, partner_gr, partner_space, partner_namespace)
 
  148    class(field_transfer_t), 
intent(inout) :: this
 
  149    integer,                 
intent(in)    :: depth
 
  150    character(len=*),        
intent(in)    :: label
 
  151    logical, 
optional,       
intent(in)    :: cmplx
 
  156      optional_default(cmplx, .false.), trim(label) // 
'-' // trim(this%partner%namespace%get()))
 
  157    this%interpolation_initialized = .
true.
 
  163    class(field_transfer_t), 
intent(inout) :: this
 
  168    safe_deallocate_a(this%partner_field)
 
  169    safe_deallocate_a(this%system_field)
 
  170    safe_deallocate_p(this%regridding)
 
  171    safe_deallocate_p(this%interpolation)
 
  203    assert(this%interpolation_initialized)
 
  205    if (
allocated(this%partner_field)) 
then 
  206      call this%regridding%do_transfer(this%system_field, this%partner_field)
 
  209    call this%interpolation%add_time(this%partner%quantities(this%couplings_from_partner(1))%iteration%value(), &
 
  218    real(real64),            
intent(in)  :: time
 
  219    real(real64),            
intent(out) :: field(:, :)
 
  224    call this%interpolation%interpolate(time, field)
 
  232    real(real64),            
intent(in)  :: time
 
  233    complex(real64),         
intent(out) :: field(:, :)
 
  238    call this%interpolation%interpolate(time, field)
 
  257    class(
mesh_t),           
intent(in)    :: mesh
 
  258    class(space_t),          
intent(in)    :: space
 
  260    integer,                 
intent(out)   :: err
 
  264    call this%interpolation%read_restart(mesh, space, restart, err)
 
  271    class(
mesh_t),           
intent(in)    :: mesh
 
  272    class(space_t),          
intent(in)    :: space
 
  274    integer,                 
intent(out)   :: err
 
  278    call this%interpolation%write_restart(mesh, space, restart, err)
 
This module implements the field transfer.
 
subroutine field_transfer_end(this)
 
subroutine field_transfer_read_restart(this, mesh, space, restart, err)
 
subroutine zfield_transfer_interpolate(this, time, field)
return the interpolated field for a given time
 
subroutine field_transfer_write_restart(this, mesh, space, restart, err)
 
subroutine field_transfer_do_mapping(this)
perform the regridding and add the system field to the time interpolator using the time of the quanti...
 
subroutine field_transfer_init_from_partner(this, partner_gr, partner_space, partner_namespace)
the partner field is allocated and initialized to 0; moreover the regridding structure is initialized
 
subroutine field_transfer_init_interpolation(this, depth, label, cmplx)
the time interpolation is initialized; it needs to know the depth which is usually given by the order...
 
subroutine, public field_transfer_init(this, gr, ndim)
the system field is allocated and initialized to 0
 
subroutine dfield_transfer_interpolate(this, time, field)
return the interpolated field for a given time
 
subroutine field_transfer_calculate_energy(this)
 
subroutine field_transfer_calculate(this)
 
real(real64), parameter, public m_zero
 
This module implements the underlying real-space grid.
 
This module defines the abstract interaction_t class, and some auxiliary classes for interactions.
 
subroutine, public interaction_end(this)
 
This module defines classes and functions for interaction partners.
 
This module defines the meshes, which are used in Octopus.
 
This module defines the quantity_t class and the IDs for quantities, which can be exposed by a system...
 
Implementation details for regridding.
 
class defining the field_transfer interaction
 
abstract interaction class
 
Describes mesh distribution to nodes.
 
contains the information of the meshes and provides the transfer functions