Reference Guide  2.5.0
psyclone.dynamo0p3.LFRicHaloExchangeStart Class Reference
Inheritance diagram for psyclone.dynamo0p3.LFRicHaloExchangeStart:
Collaboration diagram for psyclone.dynamo0p3.LFRicHaloExchangeStart:

Public Member Functions

def __init__ (self, field, check_dirty=True, vector_index=None, parent=None)
 
def required (self)
 
- Public Member Functions inherited from psyclone.dynamo0p3.LFRicHaloExchange
def required (self, ignore_hex_dep=False)
 
def node_str (self, colour=True)
 
def gen_code (self, parent)
 
def lower_to_language_level (self)
 
- Public Member Functions inherited from psyclone.psyGen.HaloExchange
def vector_index (self)
 
def halo_depth (self)
 
def halo_depth (self, value)
 
def field (self)
 
def dag_name (self)
 
def args (self)
 
def check_vector_halos_differ (self, node)
 

Additional Inherited Members

- Public Attributes inherited from psyclone.psyGen.HaloExchange
 vector_index
 

Detailed Description

The start of an asynchronous halo exchange. This is similar to a
regular halo exchange except that the Fortran name of the call is
different and the routine only reads the data being transferred
(the associated field is specified as having a read access). As a
result this class is not able to determine some important
properties (such as whether the halo exchange is known to be
required or not). This is solved by finding the corresponding
asynchronous halo exchange end (a halo exchange start always has a
corresponding halo exchange end and vice versa) and calling its
methods (a halo exchange end is specified as having readwrite
access to its associated field and therefore is able to determine
the required properties).

:param field: the field that this halo exchange will act on
:type field: :py:class:`psyclone.dynamo0p3.DynKernelArgument`
:param check_dirty: optional argument (default True) indicating \
whether this halo exchange should be subject to a run-time check \
for clean/dirty halos.
:type check_dirty: bool
:param vector_index: optional vector index (default None) to \
identify which component of a vector field this halo exchange is \
responsible for
:type vector_index: int
:param parent: optional PSyIRe parent node (default None) of this \
object
:type parent: :py:class:`psyclone.psyir.nodes.Node`

Definition at line 4245 of file dynamo0p3.py.

Member Function Documentation

◆ required()

def psyclone.dynamo0p3.LFRicHaloExchangeStart.required (   self)
Call the required method in the corresponding halo exchange end
object. This is done as the field in halo exchange start is
only read and the dependence analysis beneath this call
requires the field to be modified.

:returns: (x, y) where x specifies whether this halo exchange \
          is (or might be) required - True, or is not required \
          - False. If the first tuple item is True then the second \
          argument specifies whether we definitely know that we need \
          the HaloExchange - True, or are not sure - False.
:rtype: (bool, bool)

Definition at line 4328 of file dynamo0p3.py.

4328  def required(self):
4329  '''Call the required method in the corresponding halo exchange end
4330  object. This is done as the field in halo exchange start is
4331  only read and the dependence analysis beneath this call
4332  requires the field to be modified.
4333 
4334  :returns: (x, y) where x specifies whether this halo exchange \
4335  is (or might be) required - True, or is not required \
4336  - False. If the first tuple item is True then the second \
4337  argument specifies whether we definitely know that we need \
4338  the HaloExchange - True, or are not sure - False.
4339  :rtype: (bool, bool)
4340 
4341  '''
4342  return self._get_hex_end().required()
4343 

References psyclone.dynamo0p3.LFRicHaloExchangeStart._get_hex_end(), psyclone.domain.common.psylayer.psyloop.PSyLoop.field, psyclone.psyGen.HaloExchange.field(), psyclone.domain.lfric.arg_ordering.ArgOrdering.field(), psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.field(), psyclone.domain.lfric.kern_call_invoke_arg_list.KernCallInvokeArgList.field(), psyclone.domain.lfric.kern_stub_arg_list.KernStubArgList.field(), psyclone.domain.lfric.kernel_interface.KernelInterface.field(), psyclone.psyir.nodes.node.Node.following(), and psyclone.psyir.nodes.node.Node.sameParent().

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this class was generated from the following file: