Reference Guide
2.5.0
|
Public Member Functions | |
def | __init__ (self, kern) |
def | get_user_type (self, module_name, user_type, name, tag=None) |
def | append_structure_reference (self, module_name, user_type, member_list, name, tag=None, overwrite_datatype=None) |
def | cell_position (self, var_accesses=None) |
def | cell_map (self, var_accesses=None) |
def | mesh_height (self, var_accesses=None) |
def | scalar (self, scalar_arg, var_accesses=None) |
def | cma_operator (self, arg, var_accesses=None) |
def | field_vector (self, argvect, var_accesses=None) |
def | field (self, arg, var_accesses=None) |
def | stencil_unknown_extent (self, arg, var_accesses=None) |
def | stencil_2d_unknown_extent (self, arg, var_accesses=None) |
def | stencil_2d_max_extent (self, arg, var_accesses=None) |
def | stencil_unknown_direction (self, arg, var_accesses=None) |
def | stencil (self, arg, var_accesses=None) |
def | stencil_2d (self, arg, var_accesses=None) |
def | operator (self, arg, var_accesses=None) |
def | fs_common (self, function_space, var_accesses=None) |
def | fs_compulsory_field (self, function_space, var_accesses=None) |
def | fs_intergrid (self, function_space, var_accesses=None) |
def | basis (self, function_space, var_accesses=None) |
def | diff_basis (self, function_space, var_accesses=None) |
def | field_bcs_kernel (self, function_space, var_accesses=None) |
def | operator_bcs_kernel (self, function_space, var_accesses=None) |
def | mesh_properties (self, var_accesses=None) |
def | quad_rule (self, var_accesses=None) |
def | nlayers_positions (self) |
def | nqp_positions (self) |
def | ndf_positions (self) |
def | cell_ref_name (self, var_accesses=None) |
Public Member Functions inherited from psyclone.domain.lfric.arg_ordering.ArgOrdering | |
def | psyir_append (self, node) |
def | append (self, var_name, var_accesses=None, var_access_name=None, mode=AccessType.READ, metadata_posn=None) |
def | extend (self, list_var_name, var_accesses=None, mode=AccessType.READ, list_metadata_posn=None) |
def | append_integer_reference (self, name, tag=None) |
def | get_array_reference (self, array_name, indices, intrinsic_type, tag=None, symbol=None) |
def | append_array_reference (self, array_name, indices, intrinsic_type, tag=None, symbol=None) |
def | num_args (self) |
def | arglist (self) |
def | psyir_arglist (self) |
def | metadata_index_from_actual_index (self, idx) |
def | generate (self, var_accesses=None) |
def | banded_dofmap (self, function_space, var_accesses=None) |
def | indirection_dofmap (self, function_space, operator=None, var_accesses=None) |
def | ref_element_properties (self, var_accesses=None) |
Static Public Attributes | |
NdfInfo = namedtuple("NdfInfo", ["position", "function_space"]) | |
Creates the argument list required to call kernel "kern" from the PSy-layer and captures the positions of the following arguments in the argument list: nlayers, number of quadrature points and number of degrees of freedom. The ordering and type of arguments is captured by the base class. :param kern: The kernel that is being called. :type kern: :py:class:`psyclone.domain.lfric.LFRicKern`
Definition at line 63 of file kern_call_arg_list.py.
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.append_structure_reference | ( | self, | |
module_name, | |||
user_type, | |||
member_list, | |||
name, | |||
tag = None , |
|||
overwrite_datatype = None |
|||
) |
Creates a reference to a variable of a user-defined type. If required, the required import statements will all be generated. :param str module_name: the name of the module from which the user-defined type must be imported. :param str user_type: the name of the user-defined type. :param member_list: the members used hierarchically. :type member_list: List[str] :param str name: the name of the variable to be used in the Reference. :param Optional[str] tag: tag to use for the variable, defaults to the name :param overwrite_datatype: the datatype for the reference, which will overwrite the value determined by analysing the corresponding user defined type. This is useful when e.g. the module that declares the structure cannot be accessed. :type overwrite_datatype: Optional[:py:class:`psyclone.psyir.symbols.DataType`] :return: the symbol that is used in the reference :rtype: :py:class:`psyclone.psyir.symbols.Symbol`
Definition at line 135 of file kern_call_arg_list.py.
References psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.get_user_type(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.psyir_append().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.basis | ( | self, | |
function_space, | |||
var_accesses = None |
|||
) |
Add basis function information for this function space to the argument list and optionally to the variable access information. :param function_space: the function space for which the basis \ function is required. :type function_space: :py:class:`psyclone.domain.lfric.FunctionSpace` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 662 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_map | ( | self, | |
var_accesses = None |
|||
) |
Add cell-map and related cell counts (for inter-grid kernels) to the argument list. If supplied it also stores these accesses to the var_access object. :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 180 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_integer_reference(), and psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_ref_name().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_position | ( | self, | |
var_accesses = None |
|||
) |
Adds a cell argument to the argument list and if supplied stores this access in var_accesses. :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 166 of file kern_call_arg_list.py.
References psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_ref_name(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.psyir_append().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_ref_name | ( | self, | |
var_accesses = None |
|||
) |
Utility routine which determines whether to return the cell value or the colourmap lookup value. If supplied it also stores this access in var_accesses. :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo` :returns: the Fortran code needed to access the current cell index. :rtype: Tuple[str, py:class:`psyclone.psyir.nodes.Reference`]
Definition at line 923 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.get_array_reference().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cma_operator | ( | self, | |
arg, | |||
var_accesses = None |
|||
) |
Add the CMA operator and associated scalars to the argument list and optionally add them to the variable access information. :param arg: the CMA operator argument. :type arg: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 289 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_integer_reference(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.psyir_append().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.diff_basis | ( | self, | |
function_space, | |||
var_accesses = None |
|||
) |
Add differential basis information for the function space to the argument list. If supplied it also stores this access in var_accesses. :param function_space: the function space for which the differential \ basis functions are required. :type function_space: :py:class:`psyclone.domain.lfric.FunctionSpace` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 694 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.field | ( | self, | |
arg, | |||
var_accesses = None |
|||
) |
Add the field array associated with the argument 'arg' to the argument list. If supplied it also stores this access in var_accesses. :param arg: the field to be added. :type arg: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance to store the information about variable accesses. :type var_accesses: :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 366 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.psyir_append().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.field_bcs_kernel | ( | self, | |
function_space, | |||
var_accesses = None |
|||
) |
Implement the boundary_dofs array fix for a field. If supplied it also stores this access in var_accesses. :param function_space: the function space for which boundary dofs \ are required. :type function_space: :py:class:`psyclone.domain.lfric.FunctionSpace` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo` :raises GenerationError: if the bcs kernel does not contain \ a field as argument (but e.g. an operator).
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 731 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.field_vector | ( | self, | |
argvect, | |||
var_accesses = None |
|||
) |
Add the field vector associated with the argument 'argvect' to the argument list. If supplied it also stores these accesses to the var_access object. :param argvect: the field vector to add. :type argvect: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 336 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.psyir_append().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.fs_common | ( | self, | |
function_space, | |||
var_accesses = None |
|||
) |
Add function-space related arguments common to LMA operators and fields. If supplied it also stores this access in var_accesses. :param function_space: the function space for which the related \ arguments common to LMA operators and fields are added. :type function_space: :py:class:`psyclone.domain.lfric.FunctionSpace` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 580 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.domain.lfric.kern_call_arg_list.KernCallArgList._ndf_positions, psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.num_args().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.fs_compulsory_field | ( | self, | |
function_space, | |||
var_accesses = None |
|||
) |
Add compulsory arguments associated with this function space to the list. If supplied it also stores this access in var_accesses. :param function_space: the function space for which the compulsory \ arguments are added. :type function_space: :py:class:`psyclone.domain.lfric.FunctionSpace` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 600 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_integer_reference(), and psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_ref_name().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.fs_intergrid | ( | self, | |
function_space, | |||
var_accesses = None |
|||
) |
Add function-space related arguments for an intergrid kernel. If supplied it also stores this access in var_accesses. :param function_space: the function space for which to add arguments :type function_space: :py:class:`psyclone.domain.lfric.FunctionSpace` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 631 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_integer_reference(), psyclone.domain.lfric.arg_ordering.ArgOrdering.fs_common(), psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.fs_common(), psyclone.domain.lfric.kern_call_invoke_arg_list.KernCallInvokeArgList.fs_common(), psyclone.domain.lfric.kernel_interface.KernelInterface.fs_common(), psyclone.domain.lfric.arg_ordering.ArgOrdering.fs_compulsory_field(), psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.fs_compulsory_field(), psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.fs_compulsory_field(), psyclone.domain.lfric.kern_stub_arg_list.KernStubArgList.fs_compulsory_field(), and psyclone.domain.lfric.kernel_interface.KernelInterface.fs_compulsory_field().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.get_user_type | ( | self, | |
module_name, | |||
user_type, | |||
name, | |||
tag = None |
|||
) |
Returns the symbol for a user-defined type. If required, the required import statements will all be generated. :param str module_name: the name of the module from which the \ user-defined type must be imported. :param str user_type: the name of the user-defined type. :param str name: the name of the variable to be used in the Reference. :param Optional[str] tag: tag to use for the variable, defaults to \ the name :return: the symbol that is used in the reference :rtype: :py:class:`psyclone.psyir.symbols.Symbol`
Definition at line 84 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, and psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.mesh_height | ( | self, | |
var_accesses = None |
|||
) |
Add mesh height (nlayers) to the argument list and if supplied stores this access in var_accesses. :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 217 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.domain.lfric.kern_call_arg_list.KernCallArgList._nlayers_positions, psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_integer_reference(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.num_args().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.mesh_properties | ( | self, | |
var_accesses = None |
|||
) |
Provide the kernel arguments required for the mesh properties specified in the kernel metadata. If supplied it also stores this access in var_accesses. :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 787 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.psyir.nodes.node.ChildrenList.extend(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.extend().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.ndf_positions | ( | self | ) |
:return: the position(s) in the argument list and the function \ space(s) associated with the variable(s) that pass(es) the \ number of degrees of freedom for the function space. The \ generate method must be called first. :rtype: list of namedtuple (position=int, function_space=str). :raises InternalError: if the generate() method has not been \ called.
Definition at line 906 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._generate_called, and psyclone.domain.lfric.kern_call_arg_list.KernCallArgList._ndf_positions.
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.nlayers_positions | ( | self | ) |
:returns: the position(s) in the argument list of the \ variable(s) that passes the number of layers. The generate \ method must be called first. :rtype: list of int. :raises InternalError: if the generate() method has not been called.
Definition at line 868 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._generate_called, and psyclone.domain.lfric.kern_call_arg_list.KernCallArgList._nlayers_positions.
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.nqp_positions | ( | self | ) |
:return: the positions in the argument list of the variables that \ pass the number of quadrature points. The number and type of \ these will change depending on the type of quadrature. A list \ of dictionaries is returned with the quadrature types \ being the keys to the dictionaries and their position in the \ argument list being the values. At the moment only XYoZ is \ supported (which has horizontal and vertical quadrature \ points). The generate method must be called first. :rtype: [{str: int, ...}] :raises InternalError: if the generate() method has not been \ called.
Definition at line 884 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._generate_called, and psyclone.domain.lfric.kern_call_arg_list.KernCallArgList._nqp_positions.
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.operator | ( | self, | |
arg, | |||
var_accesses = None |
|||
) |
Add the operator arguments to the argument list. If supplied it also stores this access in var_accesses. :param arg: the meta-data description of the operator. :type arg: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 543 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.append_structure_reference(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.psyir_append().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.operator_bcs_kernel | ( | self, | |
function_space, | |||
var_accesses = None |
|||
) |
Supply necessary additional arguments for the kernel that applies boundary conditions to a LMA operator. If supplied it also stores this access in var_accesses. :param function_space: unused, only for consistency with base class. :type function_space: :py:class:`psyclone.dynamo3.FunctionSpace` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 766 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.quad_rule | ( | self, | |
var_accesses = None |
|||
) |
Add quadrature-related information to the kernel argument list. Adds the necessary arguments to the argument list, and optionally adds variable access information to the var_accesses object. :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 806 of file kern_call_arg_list.py.
References psyclone.domain.common.psylayer.psyloop.PSyLoop._kern, psyclone.domain.lfric.arg_ordering.ArgOrdering._kern, psyclone.domain.lfric.lfric_loop.LFRicLoop._kern, psyclone.domain.lfric.kern_call_arg_list.KernCallArgList._nqp_positions, psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_integer_reference(), psyclone.psyir.nodes.node.ChildrenList.extend(), psyclone.domain.lfric.arg_ordering.ArgOrdering.extend(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.num_args().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.scalar | ( | self, | |
scalar_arg, | |||
var_accesses = None |
|||
) |
Add the necessary argument for a scalar quantity as well as an appropriate Symbol to the SymbolTable. :param scalar_arg: the scalar kernel argument. :type scalar_arg: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance that \ stores information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 233 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_integer_reference(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.psyir_append().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.stencil | ( | self, | |
arg, | |||
var_accesses = None |
|||
) |
Add general stencil information associated with the argument 'arg' to the argument list. If supplied it also stores this access in var_accesses. :param arg: the meta-data description of the kernel \ argument with which the stencil is associated. :type arg: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 484 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference(), and psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_ref_name().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.stencil_2d | ( | self, | |
arg, | |||
var_accesses = None |
|||
) |
Add general 2D stencil information associated with the argument 'arg' to the argument list. If supplied it also stores this access in var_accesses. :param arg: the meta-data description of the kernel \ argument with which the stencil is associated. :type arg: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 510 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference(), and psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_ref_name().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.stencil_2d_max_extent | ( | self, | |
arg, | |||
var_accesses = None |
|||
) |
Add the maximum branch extent for a 2D stencil associated with the argument 'arg' to the argument list. If supplied it also stores this in var_accesses. :param arg: the kernel argument with which the stencil is associated. :type arg: :py:class:`pclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional SingleVariableAccessInfo instance \ to store the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.SingleVariableAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 438 of file kern_call_arg_list.py.
References psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.append_integer_reference().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.stencil_2d_unknown_extent | ( | self, | |
arg, | |||
var_accesses = None |
|||
) |
Add 2D stencil information to the argument list associated with the argument 'arg' if the extent is unknown. If supplied it also stores this access in var_accesses. :param arg: the kernel argument with which the stencil is associated. :type arg: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 413 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference(), and psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_ref_name().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.stencil_unknown_direction | ( | self, | |
arg, | |||
var_accesses = None |
|||
) |
Add stencil information to the argument list associated with the argument 'arg' if the direction is unknown (i.e. it's being supplied in a variable). If supplied it also stores this access in var_accesses. :param arg: the kernel argument with which the stencil is associated. :type arg: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Definition at line 464 of file kern_call_arg_list.py.
References psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), and psyclone.domain.lfric.arg_ordering.ArgOrdering.append_integer_reference().
def psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.stencil_unknown_extent | ( | self, | |
arg, | |||
var_accesses = None |
|||
) |
Add stencil information to the argument list associated with the argument 'arg' if the extent is unknown. If supplied it also stores this access in var_accesses. :param arg: the kernel argument with which the stencil is associated. :type arg: :py:class:`psyclone.dynamo0p3.DynKernelArgument` :param var_accesses: optional VariablesAccessInfo instance to store \ the information about variable accesses. :type var_accesses: \ :py:class:`psyclone.core.VariablesAccessInfo`
Reimplemented from psyclone.domain.lfric.arg_ordering.ArgOrdering.
Reimplemented in psyclone.domain.lfric.kern_call_acc_arg_list.KernCallAccArgList.
Definition at line 388 of file kern_call_arg_list.py.
References psyclone.domain.lfric.arg_ordering.ArgOrdering._symtab(), psyclone.psyir.nodes.node.ChildrenList.append(), psyclone.gocean1p0.GOKernelArguments.append(), psyclone.psyGen.Arguments.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append(), psyclone.domain.lfric.arg_ordering.ArgOrdering.append_array_reference(), and psyclone.domain.lfric.kern_call_arg_list.KernCallArgList.cell_ref_name().