Reference Guide  2.5.0
psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusBYKern Class Reference
Inheritance diagram for psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusBYKern:
Collaboration diagram for psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusBYKern:

Public Member Functions

def metadata (cls)
 
def lower_to_language_level (self)
 
- Public Member Functions inherited from psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn
def __init__ (self)
 
def __str__ (self)
 
def reference_accesses (self, var_accesses)
 
def load (self, call, parent=None)
 
def undf_name (self)
 
def qr_required (self)
 
def reference_element (self)
 
def cma_operation (self)
 
def is_intergrid (self)
 
def fs_descriptors (self)
 
def get_dof_loop_index_symbol (self)
 
def get_indexed_field_argument_references (self)
 
def get_scalar_argument_references (self)
 
- Public Member Functions inherited from psyclone.psyGen.BuiltIn
def dag_name (self)
 
def load (self, call, arguments, parent=None)
 
def local_vars (self)
 
- Public Member Functions inherited from psyclone.psyGen.Kern
def __init__ (self, parent, call, name, ArgumentsClass, check=True)
 
def args (self)
 
def node_str (self, colour=True)
 
def is_reduction (self)
 
def reduction_arg (self)
 
def reprod_reduction (self)
 
def local_reduction_name (self)
 
def zero_reduction_variable (self, parent, position=None)
 
def reduction_sum_loop (self, parent)
 
def arg_descriptors (self)
 
def arg_descriptors (self, obj)
 
def arguments (self)
 
def name (self)
 
def name (self, value)
 
def is_coloured (self)
 
def iterates_over (self)
 
def gen_code (self, parent)
 

Additional Inherited Members

- Static Public Member Functions inherited from psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn
def metadata ()
 
- Public Attributes inherited from psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn
 qr_rules
 
 mesh
 
 arg_descriptors
 

Detailed Description

 `X = a*X + b*Y` where `a` and `b` are real scalars and `X` and `Y`
are real-valued fields.

Definition at line 905 of file lfric_builtins.py.

Member Function Documentation

◆ lower_to_language_level()

def psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusBYKern.lower_to_language_level (   self)
Lowers this LFRic-specific built-in kernel to language-level PSyIR.
This BuiltIn node is replaced by an Assignment node.

:returns: the lowered version of this node.
:rtype: :py:class:`psyclone.psyir.node.Node`

Definition at line 928 of file lfric_builtins.py.

928  def lower_to_language_level(self):
929  '''
930  Lowers this LFRic-specific built-in kernel to language-level PSyIR.
931  This BuiltIn node is replaced by an Assignment node.
932 
933  :returns: the lowered version of this node.
934  :rtype: :py:class:`psyclone.psyir.node.Node`
935 
936  '''
937  # Get indexed references for each of the field (proxy) arguments.
938  arg_refs = self.get_indexed_field_argument_references()
939  # Get a reference for the kernel scalar argument.
940  scalar_args = self.get_scalar_argument_references()
941 
942  # Create the PSyIR for the kernel:
943  # proxy0%data(df) = ascalar * proxy0%data(df) +
944  # bscalar * proxy1%data(df)
945  lhs = arg_refs[0]
946  mult_op_a = BinaryOperation.create(BinaryOperation.Operator.MUL,
947  scalar_args[0], lhs.copy())
948  mult_op_b = BinaryOperation.create(BinaryOperation.Operator.MUL,
949  scalar_args[1], arg_refs[1])
950  rhs = BinaryOperation.create(BinaryOperation.Operator.ADD,
951  mult_op_a, mult_op_b)
952 
953  # Create assignment and replace node
954  return self._replace_with_assignment(lhs, rhs)
955 
956 

References psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn._replace_with_assignment(), psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.get_indexed_field_argument_references(), and psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.get_scalar_argument_references().

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

◆ metadata()

def psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusBYKern.metadata (   cls)
Returns the kernel metadata describing this built-in.

:returns: kernel metadata describing this built-in.
:rtype: :py:class:`psyclone.domain.lfric.kernel.LFRicKernelMetadata`

Definition at line 914 of file lfric_builtins.py.

914  def metadata(cls):
915  '''Returns the kernel metadata describing this built-in.
916 
917  :returns: kernel metadata describing this built-in.
918  :rtype: :py:class:`psyclone.domain.lfric.kernel.LFRicKernelMetadata`
919 
920  '''
921  gh_datatype = LFRicConstants().MAPPING_INTRINSIC_TYPES[cls._datatype]
922  return cls._builtin_metadata([
923  ScalarArgMetadata(gh_datatype, "gh_read"),
924  FieldArgMetadata(gh_datatype, "gh_readwrite", "any_space_1"),
925  ScalarArgMetadata(gh_datatype, "gh_read"),
926  FieldArgMetadata(gh_datatype, "gh_read", "any_space_1")])
927 

References psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn._builtin_metadata(), psyclone.domain.gocean.kernel.psyir.GOceanKernelMetadata.ScalarArg._datatype, psyclone.domain.lfric.kernel.common_meta_arg_metadata.CommonMetaArgMetadata._datatype, psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn._datatype, psyclone.domain.lfric.lfric_builtins.LFRicXPlusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXPlusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicAPlusXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncAPlusXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicAXPlusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXPlusBYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicAXPlusBYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncAXPlusBYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicAXPlusAYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicXMinusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXMinusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicAMinusXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncAMinusXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicXMinusAKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXMinusAKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicAXMinusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicXMinusBYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXMinusBYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicAXMinusBYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicXTimesYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXTimesYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncAXTimesYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicATimesXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncATimesXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicXDividebyYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXDividebyYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicXDividebyAKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXDividebyAKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicADividebyXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncADividebyXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXPowrealAKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncXPowintNKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicSetvalCKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicSetvalXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicSetvalRandomKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicXInnerproductYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicXInnerproductXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicSumXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicSignXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicMaxAXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncMaxAXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicMinAXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIncMinAXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicRealToIntXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicRealToRealXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntXPlusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntIncXPlusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntAPlusXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntIncAPlusXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntXMinusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntIncXMinusYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntAMinusXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntIncAMinusXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntXMinusAKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntIncXMinusAKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntXTimesYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntIncXTimesYKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntATimesXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntIncATimesXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntSetvalCKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntSetvalXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntSignXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntMaxAXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntIncMaxAXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntMinAXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntIncMinAXKern._datatype, psyclone.domain.lfric.lfric_builtins.LFRicIntToRealXKern._datatype, psyclone.parse.algorithm.Arg._datatype, psyclone.psyir.nodes.literal.Literal._datatype, psyclone.psyir.symbols.data_type_symbol.DataTypeSymbol._datatype, psyclone.psyir.symbols.datatypes.ArrayType._datatype, psyclone.psyir.symbols.typed_symbol.TypedSymbol._datatype, and psyclone.domain.lfric.lfric_builtins.LFRicBuiltIn.metadata().

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: