diff --git a/src/psyclone/domain/lfric/arg_ordering.py b/src/psyclone/domain/lfric/arg_ordering.py index 689cb17e6e..ac35479dd8 100644 --- a/src/psyclone/domain/lfric/arg_ordering.py +++ b/src/psyclone/domain/lfric/arg_ordering.py @@ -249,8 +249,8 @@ def get_array_reference(self, array_name, indices, intrinsic_type=None, intrinsic_type = LFRicTypes("LFRicIntegerScalarDataType")() if not symbol: - symbol = self._symtab.find_or_create( - array_name, tag=tag, symbol_type=DataSymbol, + symbol = self._symtab.find_or_create_tag( + tag=tag, root_name=array_name, symbol_type=DataSymbol, datatype=ArrayType( intrinsic_type, [ArrayType.Extent.DEFERRED for _ in indices])) diff --git a/src/psyclone/domain/lfric/function_space.py b/src/psyclone/domain/lfric/function_space.py index 036e6a3626..94e6709c31 100644 --- a/src/psyclone/domain/lfric/function_space.py +++ b/src/psyclone/domain/lfric/function_space.py @@ -127,7 +127,7 @@ def mangled_name(self): self._mangled_name = self._mangle_fs_name() return self._mangled_name - def _mangle_fs_name(self): + def _mangle_fs_name(self) -> str: ''' Constructs the mangled version of a function-space name given a list of kernel arguments if the argument's function space is any_*_space @@ -137,12 +137,11 @@ def _mangle_fs_name(self): space combined with the argument's name. :returns: mangled name of this function space. - :rtype: str - :raises InternalError: if a function space to create the mangled \ - name for is not one of 'any_space' or \ + :raises InternalError: if a function space to create the mangled + name for is not one of 'any_space' or 'any_discontinuous_space' spaces. - :raises FieldNotFoundError: if no kernel argument was found on \ + :raises FieldNotFoundError: if no kernel argument was found on the specified function space. ''' @@ -159,17 +158,37 @@ def _mangle_fs_name(self): # List kernel arguments args = self._kernel_args.args # Mangle the function space name for any_*_space + lorig_name = self._orig_name.lower() for arg in args: for fspace in arg.function_spaces: - if (fspace and fspace.orig_name.lower() == - self._orig_name.lower()): - mngl_name = self._short_name + "_" + arg.name - return mngl_name + if (fspace and fspace.orig_name.lower() == lorig_name): + return (f"{self._short_name}_" + f"{self._shorten_arg_name(arg.name)}") # Raise an error if there are no kernel arguments on this # function space raise FieldNotFoundError(f"No kernel argument found for function " f"space '{self._orig_name}'") + @staticmethod + def _shorten_arg_name(name: str) -> str: + ''' + Shortens the provided name by splitting on any underscore characters + and reconstructing the name using the beginning and + ending chars from each token. + + :param name: the name to shorten. + + :returns: a shortened form of the name. + + ''' + new_parts = [] + for part in name.split("_"): + new_name = part[0] + if len(part) > 1: + new_name += part[-1] + new_parts.append(new_name) + return "_".join(new_parts) + def _shorten_fs_name(self): ''' Creates short names for any_*_spaces to be used for mangled names @@ -197,9 +216,9 @@ def _shorten_fs_name(self): f"{const.VALID_ANY_DISCONTINUOUS_SPACE_NAMES} spaces.") # Split name string to find any_*_space ID and create a short name as - # "" + "spc" + "ID" + # "" + "s" + "ID" fslist = self._orig_name.split("_") - self._short_name = start + "spc" + fslist[-1] + self._short_name = start + "s" + fslist[-1] return self._short_name @property diff --git a/src/psyclone/domain/lfric/kern_call_arg_list.py b/src/psyclone/domain/lfric/kern_call_arg_list.py index 1e55430d91..82148baf42 100644 --- a/src/psyclone/domain/lfric/kern_call_arg_list.py +++ b/src/psyclone/domain/lfric/kern_call_arg_list.py @@ -983,24 +983,19 @@ def cell_ref_name( if loop_type == "cells_in_tile": tile_sym = self._symtab.find_or_create_integer_symbol( "tile", tag="tile_loop_idx") - array_ref = self.get_array_reference( - self._kern.tilecolourmap, - [Reference(colour_sym), Reference(tile_sym), - Reference(cell_sym)], - tag="tmap" if self._kern.is_intergrid else None) - if var_accesses is not None: - var_accesses.add_access(Signature(array_ref.name), - AccessType.READ, - self._kern) + map_sym = self._symtab.lookup(self._kern.tilecolourmap) + array_ref = ArrayReference.create( + map_sym, [Reference(colour_sym), Reference(tile_sym), + Reference(cell_sym)]) else: symbol = self._kern.colourmap array_ref = ArrayReference.create( - symbol, - [Reference(colour_sym), Reference(cell_sym)]) - if var_accesses is not None: - var_accesses.add_access(Signature(array_ref.name), - AccessType.READ, - self._kern) + symbol, [Reference(colour_sym), Reference(cell_sym)]) + + if var_accesses is not None: + var_accesses.add_access(Signature(array_ref.name), + AccessType.READ, + self._kern) return (array_ref.debug_string(), array_ref) diff --git a/src/psyclone/domain/lfric/lfric_dofmaps.py b/src/psyclone/domain/lfric/lfric_dofmaps.py index 6c02ff352d..f00dce04bf 100644 --- a/src/psyclone/domain/lfric/lfric_dofmaps.py +++ b/src/psyclone/domain/lfric/lfric_dofmaps.py @@ -63,7 +63,7 @@ class LFRicDofmaps(LFRicCollection): indirection) required by an invoke. :param node: Kernel or Invoke for which to manage dofmaps. - :type node: :py:class:`psyclone.domain.lfric.LFRicKern` or \ + :type node: :py:class:`psyclone.domain.lfric.LFRicKern` or :py:class:`psyclone.domain.lfric.LFRicInvoke` ''' @@ -297,7 +297,7 @@ def stub_declarations(self): self.symtab.append_argument(nlayers) dmap_symbol = self.symtab.find_or_create( - dmap, symbol_type=DataSymbol, + dmap, tag=dmap, symbol_type=DataSymbol, datatype=ArrayType(LFRicTypes("LFRicIntegerScalarDataType")(), [Reference(symbol), Reference(nlayers)])) dmap_symbol.interface = ArgumentInterface( diff --git a/src/psyclone/domain/lfric/lfric_kern.py b/src/psyclone/domain/lfric/lfric_kern.py index 81e7570607..1d67939138 100644 --- a/src/psyclone/domain/lfric/lfric_kern.py +++ b/src/psyclone/domain/lfric/lfric_kern.py @@ -535,10 +535,11 @@ def tilecolourmap(self) -> DataSymbol: # Declare array holding map from a given tile-colour-cell to # the index of the cell (this is not initialised until code # lowering) + new_name = sched.symbol_table.next_available_name("tmap") + decl = f"integer(kind=i_def), pointer :: {new_name}(:,:,:)" tmap = sched.symbol_table.find_or_create_tag( "tilecolourmap", root_name="tmap", symbol_type=DataSymbol, - datatype=UnsupportedFortranType( - "integer(kind=i_def), pointer :: tmap(:,:,:)")).name + datatype=UnsupportedFortranType(decl)).name return tmap @@ -793,7 +794,8 @@ def gen_stub(self) -> Container: create_arg_list.generate() arg_list = [] for argument_name in create_arg_list.arglist: - arg_list.append(stub_routine.symbol_table.lookup(argument_name)) + sym = stub_routine.symbol_table.lookup(argument_name) + arg_list.append(sym) stub_routine.symbol_table.specify_argument_list(arg_list) return stub_module diff --git a/src/psyclone/lfric.py b/src/psyclone/lfric.py index 711d8390ba..b95085a614 100644 --- a/src/psyclone/lfric.py +++ b/src/psyclone/lfric.py @@ -2626,6 +2626,7 @@ def __init__(self, fine_arg, coarse_arg): [ArrayType.Extent.DEFERRED]*2) sym = symtab.find_or_create( base_name, + tag=base_name, symbol_type=DataSymbol, datatype=UnsupportedFortranType( f"integer(kind=i_def), pointer :: {base_name}" @@ -3016,7 +3017,7 @@ def stub_declarations(self): dims.append(Literal(value, INTEGER_TYPE)) except ValueError: dims.append(Reference(self.symtab.find_or_create(value))) - arg = self.symtab.find_or_create( + arg = self.symtab.find_or_create_tag( basis, symbol_type=DataSymbol, datatype=ArrayType(LFRicTypes("LFRicRealScalarDataType")(), dims)) @@ -3257,8 +3258,9 @@ def initialise(self, cursor: int) -> int: # Allocate basis arrays for basis in basis_arrays: dims = "("+",".join([":"]*len(basis_arrays[basis]))+")" - symbol = self.symtab.find_or_create( - basis, symbol_type=DataSymbol, datatype=UnsupportedFortranType( + symbol = self.symtab.find_or_create_tag( + basis, + symbol_type=DataSymbol, datatype=UnsupportedFortranType( f"real(kind=r_def), allocatable :: {basis}{dims}" )) alloc = IntrinsicCall.create( @@ -3436,7 +3438,7 @@ def _initialise_xyoz_qr(self, cursor): const.QUADRATURE_TYPE_MAP["gh_quadrature_xyoz"]["intrinsic"] kind = const.QUADRATURE_TYPE_MAP["gh_quadrature_xyoz"]["kind"] for name in self.qr_weight_vars["xyoz"]: - self.symtab.find_or_create( + self.symtab.find_or_create_tag( name+"_"+qr_arg_name, symbol_type=DataSymbol, datatype=UnsupportedFortranType( f"{dtype}(kind={kind}), pointer :: " @@ -3644,7 +3646,7 @@ def _compute_basis_fns(self, cursor): Reference(self.symtab.lookup(first_dim)), Reference(self.symtab.lookup( basis_fn["fspace"].ndf_name)), - Reference(self.symtab.lookup(op_name))] + Reference(self.symtab.lookup_with_tag(op_name))] # insert the basis array call call = Call.create( @@ -3701,7 +3703,7 @@ def _compute_basis_fns(self, cursor): Literal('1', INTEGER_TYPE), []) loop.loop_body.addchild(inner_loop) - symbol = self.symtab.lookup(op_name) + symbol = self.symtab.lookup_with_tag(op_name) rhs = basis_fn['arg'].generate_method_call( "call_function", function_space=basis_fn['fspace']) rhs.addchild(Reference(self.symtab.lookup(basis_type))) @@ -3759,7 +3761,7 @@ def deallocate(self): # add the required deallocate call dealloc = IntrinsicCall.create( IntrinsicCall.Intrinsic.DEALLOCATE, - [Reference(self.symtab.lookup(name)) for name in + [Reference(self.symtab.lookup_with_tag(name)) for name in sorted(func_space_var_names)] ) if first: @@ -3820,7 +3822,7 @@ def __init__(self, node): bc_fs = op_arg.function_space_to self._boundary_dofs.append(self.BoundaryDofs(op_arg, bc_fs)) - def invoke_declarations(self): + def invoke_declarations(self) -> None: ''' Add declarations for any boundary-dofs arrays required by an Invoke. @@ -3838,10 +3840,8 @@ def invoke_declarations(self): LFRicTypes("LFRicIntegerScalarDataType")(), [ArrayType.Extent.DEFERRED]*2) ) - self.symtab.new_symbol( - name, - symbol_type=DataSymbol, - datatype=dtype) + self.symtab.find_or_create_tag( + name, symbol_type=DataSymbol, datatype=dtype) def stub_declarations(self): ''' diff --git a/src/psyclone/tests/dependency_test.py b/src/psyclone/tests/dependency_test.py index 295da97748..2a85c7ba13 100644 --- a/src/psyclone/tests/dependency_test.py +++ b/src/psyclone/tests/dependency_test.py @@ -372,8 +372,8 @@ def test_lfric_cma(fortran_writer): assert "cma_op1_cma_matrix: WRITE," in var_info assert "cma_op1_ncol: WRITE+READ," in var_info assert "cma_op1_nrow: WRITE+READ," in var_info - assert "cbanded_map_adspc1_lma_op1: WRITE+READ," in var_info - assert "cbanded_map_adspc2_lma_op1: WRITE+READ," in var_info + assert "cbanded_map_ads1_la_o1: WRITE+READ," in var_info + assert "cbanded_map_ads2_la_o1: WRITE+READ," in var_info assert "lma_op1_local_stencil: WRITE+READ," in var_info assert "lma_op1_proxy%ncell_3d: READ," in var_info @@ -385,8 +385,8 @@ def test_lfric_cma2(): ''' psy, invoke_info = get_invoke("20.1_cma_apply.f90", "lfric", idx=0) var_info = str(invoke_info.schedule.reference_accesses()) - assert "cma_indirection_map_aspc1_field_a: READ," in var_info - assert "cma_indirection_map_aspc2_field_b: READ," in var_info + assert "cma_indirection_map_as1_fd_a: READ," in var_info + assert "cma_indirection_map_as2_fd_b: READ," in var_info def test_lfric_stencils(): @@ -617,8 +617,8 @@ def test_lfric_stub_banded_dofmap(): create_arg_list = KernStubArgList(kernel) create_arg_list.generate(var_accesses=var_accesses) var_info = str(var_accesses) - assert "cbanded_map_adspc1_op_1: READ," in var_info - assert "cbanded_map_adspc2_op_1: READ" in var_info + assert "cbanded_map_ads1_op_1: READ," in var_info + assert "cbanded_map_ads2_op_1: READ" in var_info def test_lfric_stub_indirection_dofmap(): @@ -632,8 +632,8 @@ def test_lfric_stub_indirection_dofmap(): create_arg_list = KernStubArgList(kernel) create_arg_list.generate(var_accesses=var_accesses) var_info = str(var_accesses) - assert "cma_indirection_map_aspc1_field_1: READ," in var_info - assert "cma_indirection_map_aspc2_field_2: READ" in var_info + assert "cma_indirection_map_as1_fd_1: READ," in var_info + assert "cma_indirection_map_as2_fd_2: READ" in var_info def test_lfric_stub_boundary_dofmap(): diff --git a/src/psyclone/tests/domain/lfric/arg_ordering_test.py b/src/psyclone/tests/domain/lfric/arg_ordering_test.py index acf1e4b24e..e8b4a9f518 100644 --- a/src/psyclone/tests/domain/lfric/arg_ordering_test.py +++ b/src/psyclone/tests/domain/lfric/arg_ordering_test.py @@ -267,9 +267,9 @@ def test_arg_ordering_generate_cma_kernel(dist_mem, fortran_writer): 'cell', 'nlayers_lma_op1', 'ncell_2d', 'lma_op1_proxy%ncell_3d', 'lma_op1_local_stencil', 'cma_op1_cma_matrix', 'cma_op1_nrow', 'cma_op1_ncol', 'cma_op1_bandwidth', 'cma_op1_alpha', 'cma_op1_beta', - 'cma_op1_gamma_m', 'cma_op1_gamma_p', 'ndf_adspc1_lma_op1', - 'cbanded_map_adspc1_lma_op1', 'ndf_adspc2_lma_op1', - 'cbanded_map_adspc2_lma_op1'] + 'cma_op1_gamma_m', 'cma_op1_gamma_p', 'ndf_ads1_la_o1', + 'cbanded_map_ads1_la_o1', 'ndf_ads2_la_o1', + 'cbanded_map_ads2_la_o1'] check_psyir_results(create_arg_list, fortran_writer) psyir_arglist = create_arg_list.psyir_arglist diff --git a/src/psyclone/tests/domain/lfric/kern_call_acc_arg_list_test.py b/src/psyclone/tests/domain/lfric/kern_call_acc_arg_list_test.py index 1a02fdc16f..3d294458ea 100644 --- a/src/psyclone/tests/domain/lfric/kern_call_acc_arg_list_test.py +++ b/src/psyclone/tests/domain/lfric/kern_call_acc_arg_list_test.py @@ -123,7 +123,7 @@ def test_fs_intergrid(): arg_list = KernCallAccArgList(restrict_kern) arg_list.fs_intergrid(fspace) # For the coarse mesh we need undf and the dofmap for the column. - assert arg_list._arglist == ['undf_aspc1_fld_m', 'map_aspc1_fld_m'] + assert arg_list._arglist == ['undf_as1_fd_m', 'map_as1_fd_m'] fspace = FunctionSpace("w1", prolong_kern.arguments) arg_list = KernCallAccArgList(prolong_kern) arg_list.fs_intergrid(fspace) diff --git a/src/psyclone/tests/domain/lfric/kern_call_arg_list_test.py b/src/psyclone/tests/domain/lfric/kern_call_arg_list_test.py index 0b3940544c..a51abefc1e 100644 --- a/src/psyclone/tests/domain/lfric/kern_call_arg_list_test.py +++ b/src/psyclone/tests/domain/lfric/kern_call_arg_list_test.py @@ -138,10 +138,10 @@ def test_kerncallarglist_face_xyoz(dist_mem, fortran_writer): 'f2_3_data', 'f3_data', 'istp', 'ndf_w2', 'undf_w2', 'map_w2(:,cell)', 'basis_w2_qr_xyoz', 'basis_w2_qr_face', 'ndf_wchi', 'undf_wchi', 'map_wchi(:,cell)', 'diff_basis_wchi_qr_xyoz', - 'diff_basis_wchi_qr_face', 'ndf_adspc1_f3', 'undf_adspc1_f3', - 'map_adspc1_f3(:,cell)', 'basis_adspc1_f3_qr_xyoz', - 'basis_adspc1_f3_qr_face', 'diff_basis_adspc1_f3_qr_xyoz', - 'diff_basis_adspc1_f3_qr_face', 'np_xy_qr_xyoz', 'np_z_qr_xyoz', + 'diff_basis_wchi_qr_face', 'ndf_ads1_f3', 'undf_ads1_f3', + 'map_ads1_f3(:,cell)', 'basis_ads1_f3_qr_xyoz', + 'basis_ads1_f3_qr_face', 'diff_basis_ads1_f3_qr_xyoz', + 'diff_basis_ads1_f3_qr_face', 'np_xy_qr_xyoz', 'np_z_qr_xyoz', 'weights_xy_qr_xyoz', 'weights_z_qr_xyoz', 'nfaces_qr_face', 'np_xyz_qr_face', 'weights_xyz_qr_face'] @@ -355,8 +355,8 @@ def test_kerncallarglist_bcs(fortran_writer, monkeypatch): create_arg_list = KernCallArgList(schedule.kernels()[0]) create_arg_list.generate() assert create_arg_list._arglist == [ - 'nlayers_a', 'a_data', 'ndf_aspc1_a', 'undf_aspc1_a', - 'map_aspc1_a(:,cell)', 'boundary_dofs_a'] + 'nlayers_a', 'a_data', 'ndf_as1_a', 'undf_as1_a', + 'map_as1_a(:,cell)', 'boundary_dofs_a'] check_psyir_results(create_arg_list, fortran_writer) @@ -390,7 +390,7 @@ def test_kerncallarglist_bcs_operator(fortran_writer): create_arg_list.generate(access_info) assert create_arg_list._arglist == [ 'cell', 'nlayers_op_a', 'op_a_proxy%ncell_3d', 'op_a_local_stencil', - 'ndf_aspc1_op_a', 'ndf_aspc2_op_a', 'boundary_dofs_op_a'] + 'ndf_as1_op_a', 'ndf_as2_op_a', 'boundary_dofs_op_a'] check_psyir_results(create_arg_list, fortran_writer) assert (create_arg_list.psyir_arglist[2].datatype == @@ -557,10 +557,10 @@ def test_indirect_dofmap(fortran_writer): 'cma_op1_cma_matrix', 'cma_op1_nrow', 'cma_op1_ncol', 'cma_op1_bandwidth', 'cma_op1_alpha', 'cma_op1_beta', 'cma_op1_gamma_m', 'cma_op1_gamma_p', - 'ndf_adspc1_field_a', 'undf_adspc1_field_a', - 'map_adspc1_field_a(:,cell)', 'cma_indirection_map_adspc1_field_a', - 'ndf_aspc1_field_b', 'undf_aspc1_field_b', 'map_aspc1_field_b(:,cell)', - 'cma_indirection_map_aspc1_field_b']) + 'ndf_ads1_fd_a', 'undf_ads1_fd_a', + 'map_ads1_fd_a(:,cell)', 'cma_indirection_map_ads1_fd_a', + 'ndf_as1_fd_b', 'undf_as1_fd_b', 'map_as1_fd_b(:,cell)', + 'cma_indirection_map_as1_fd_b']) check_psyir_results(create_arg_list, fortran_writer) diff --git a/src/psyclone/tests/domain/lfric/lfric_dofmaps_test.py b/src/psyclone/tests/domain/lfric/lfric_dofmaps_test.py index efd5a04b11..71a566b098 100644 --- a/src/psyclone/tests/domain/lfric/lfric_dofmaps_test.py +++ b/src/psyclone/tests/domain/lfric/lfric_dofmaps_test.py @@ -213,12 +213,12 @@ def test_lfricdofmaps_stub_gen(): expected = ( " subroutine columnwise_op_app_kernel_code(cell, ncell_2d, " - "field_1_aspc1_field_1, field_2_aspc2_field_2, cma_op_3, " + "field_1_as1_fd_1, field_2_as2_fd_2, cma_op_3, " "cma_op_3_nrow, cma_op_3_ncol, cma_op_3_bandwidth, cma_op_3_alpha, " "cma_op_3_beta, cma_op_3_gamma_m, cma_op_3_gamma_p, " - "ndf_aspc1_field_1, undf_aspc1_field_1, map_aspc1_field_1, " - "cma_indirection_map_aspc1_field_1, ndf_aspc2_field_2, " - "undf_aspc2_field_2, map_aspc2_field_2, " - "cma_indirection_map_aspc2_field_2)\n" + "ndf_as1_fd_1, undf_as1_fd_1, map_as1_fd_1, " + "cma_indirection_map_as1_fd_1, ndf_as2_fd_2, " + "undf_as2_fd_2, map_as2_fd_2, " + "cma_indirection_map_as2_fd_2)\n" ) assert expected in stub_text diff --git a/src/psyclone/tests/domain/lfric/lfric_field_codegen_test.py b/src/psyclone/tests/domain/lfric/lfric_field_codegen_test.py index 96ad643946..4db530ca7a 100644 --- a/src/psyclone/tests/domain/lfric/lfric_field_codegen_test.py +++ b/src/psyclone/tests/domain/lfric/lfric_field_codegen_test.py @@ -712,13 +712,13 @@ def test_int_field_fs(tmpdir): integer(kind=i_def) :: undf_wchi integer(kind=i_def) :: ndf_any_w2 integer(kind=i_def) :: undf_any_w2 - integer(kind=i_def) :: ndf_aspc1_f8 - integer(kind=i_def) :: undf_aspc1_f8 - integer(kind=i_def) :: ndf_adspc1_m7 - integer(kind=i_def) :: undf_adspc1_m7 - integer(kind=i_def), pointer :: map_adspc1_m7(:,:) => null() + integer(kind=i_def) :: ndf_as1_f8 + integer(kind=i_def) :: undf_as1_f8 + integer(kind=i_def) :: ndf_ads1_m7 + integer(kind=i_def) :: undf_ads1_m7 + integer(kind=i_def), pointer :: map_ads1_m7(:,:) => null() integer(kind=i_def), pointer :: map_any_w2(:,:) => null() - integer(kind=i_def), pointer :: map_aspc1_f8(:,:) => null() + integer(kind=i_def), pointer :: map_as1_f8(:,:) => null() integer(kind=i_def), pointer :: map_w0(:,:) => null() integer(kind=i_def), pointer :: map_w1(:,:) => null() integer(kind=i_def), pointer :: map_w2(:,:) => null() @@ -803,8 +803,8 @@ def test_int_field_fs(tmpdir): " map_w2vtrace => m5_proxy%vspace%get_whole_dofmap()\n" " map_wchi => m6_proxy%vspace%get_whole_dofmap()\n" " map_any_w2 => f7_proxy%vspace%get_whole_dofmap()\n" - " map_aspc1_f8 => f8_proxy%vspace%get_whole_dofmap()\n" - " map_adspc1_m7 => m7_proxy%vspace%get_whole_dofmap()\n" + " map_as1_f8 => f8_proxy%vspace%get_whole_dofmap()\n" + " map_ads1_m7 => m7_proxy%vspace%get_whole_dofmap()\n" "\n" " ! Initialise number of DoFs for w1\n" " ndf_w1 = f1_proxy%vspace%get_ndf()\n" @@ -858,13 +858,13 @@ def test_int_field_fs(tmpdir): " ndf_any_w2 = f7_proxy%vspace%get_ndf()\n" " undf_any_w2 = f7_proxy%vspace%get_undf()\n" "\n" - " ! Initialise number of DoFs for aspc1_f8\n" - " ndf_aspc1_f8 = f8_proxy%vspace%get_ndf()\n" - " undf_aspc1_f8 = f8_proxy%vspace%get_undf()\n" + " ! Initialise number of DoFs for as1_f8\n" + " ndf_as1_f8 = f8_proxy%vspace%get_ndf()\n" + " undf_as1_f8 = f8_proxy%vspace%get_undf()\n" "\n" - " ! Initialise number of DoFs for adspc1_m7\n" - " ndf_adspc1_m7 = m7_proxy%vspace%get_ndf()\n" - " undf_adspc1_m7 = m7_proxy%vspace%get_undf()\n" + " ! Initialise number of DoFs for ads1_m7\n" + " ndf_ads1_m7 = m7_proxy%vspace%get_ndf()\n" + " undf_ads1_m7 = m7_proxy%vspace%get_undf()\n" "\n" " ! Set-up all of the loop bounds\n" " loop0_start = 1\n" @@ -927,9 +927,9 @@ def test_int_field_fs(tmpdir): "map_w2trace(:,cell), ndf_w2htrace, undf_w2htrace, " "map_w2htrace(:,cell), ndf_w2vtrace, undf_w2vtrace, " "map_w2vtrace(:,cell), ndf_wchi, undf_wchi, map_wchi(:,cell), " - "ndf_any_w2, undf_any_w2, map_any_w2(:,cell), ndf_aspc1_f8, " - "undf_aspc1_f8, map_aspc1_f8(:,cell), ndf_adspc1_m7, " - "undf_adspc1_m7, map_adspc1_m7(:,cell))\n" + "ndf_any_w2, undf_any_w2, map_any_w2(:,cell), ndf_as1_f8, " + "undf_as1_f8, map_as1_f8(:,cell), ndf_ads1_m7, " + "undf_ads1_m7, map_ads1_m7(:,cell))\n" " enddo\n" "\n" " ! Set halos dirty/clean for fields modified in the above " @@ -944,7 +944,9 @@ def test_int_field_fs(tmpdir): " end subroutine invoke_0_testkern_fs_int_field_type\n" "\n" "end module single_invoke_fs_int_field_psy\n") - assert output in generated_code + for line in output.split("\n"): + if line: + assert line in generated_code, line assert LFRicBuild(tmpdir).code_compiles(psy) @@ -965,16 +967,18 @@ def test_int_field_2qr_shapes(dist_mem, tmpdir): assert (" type(quadrature_xyoz_type), intent(in) :: qr_xyoz\n" " type(quadrature_face_type), intent(in) :: qr_face\n" in code) - assert """ + expected = """ real(kind=r_def), allocatable :: basis_w2_qr_xyoz(:,:,:,:) real(kind=r_def), allocatable :: basis_w2_qr_face(:,:,:,:) real(kind=r_def), allocatable :: diff_basis_wchi_qr_xyoz(:,:,:,:) real(kind=r_def), allocatable :: diff_basis_wchi_qr_face(:,:,:,:) - real(kind=r_def), allocatable :: basis_adspc1_f3_qr_xyoz(:,:,:,:) - real(kind=r_def), allocatable :: diff_basis_adspc1_f3_qr_xyoz(:,:,:,:) - real(kind=r_def), allocatable :: basis_adspc1_f3_qr_face(:,:,:,:) - real(kind=r_def), allocatable :: diff_basis_adspc1_f3_qr_face(:,:,:,:) -""" in code + real(kind=r_def), allocatable :: basis_ads1_f3_qr_xyoz(:,:,:,:) + real(kind=r_def), allocatable :: diff_basis_ads1_f3_qr_xyoz(:,:,:,:) + real(kind=r_def), allocatable :: basis_ads1_f3_qr_face(:,:,:,:) + real(kind=r_def), allocatable :: diff_basis_ads1_f3_qr_face(:,:,:,:) +""" + for line in expected.split("\n"): + assert line in code, line assert (" real(kind=r_def), pointer, dimension(:,:) :: " "weights_xyz_qr_face => null()\n" in code) assert " integer(kind=i_def) :: np_xyz_qr_face\n" in code @@ -991,35 +995,35 @@ def test_int_field_2qr_shapes(dist_mem, tmpdir): assert "type(quadrature_xyoz_proxy_type) :: qr_xyoz_proxy\n" in code # Allocation and computation of (some of) the basis/differential # basis functions - assert (" ALLOCATE(basis_adspc1_f3_qr_xyoz(dim_adspc1_f3," - "ndf_adspc1_f3,np_xy_qr_xyoz,np_z_qr_xyoz))\n" - " ALLOCATE(diff_basis_adspc1_f3_qr_xyoz(diff_dim_adspc1_f3," - "ndf_adspc1_f3,np_xy_qr_xyoz,np_z_qr_xyoz))\n" - " ALLOCATE(basis_adspc1_f3_qr_face(dim_adspc1_f3," - "ndf_adspc1_f3,np_xyz_qr_face,nfaces_qr_face))\n" - " ALLOCATE(diff_basis_adspc1_f3_qr_face(diff_dim_adspc1_f3," - "ndf_adspc1_f3,np_xyz_qr_face,nfaces_qr_face))\n" + assert (" ALLOCATE(basis_ads1_f3_qr_xyoz(dim_ads1_f3," + "ndf_ads1_f3,np_xy_qr_xyoz,np_z_qr_xyoz))\n" + " ALLOCATE(diff_basis_ads1_f3_qr_xyoz(diff_dim_ads1_f3," + "ndf_ads1_f3,np_xy_qr_xyoz,np_z_qr_xyoz))\n" + " ALLOCATE(basis_ads1_f3_qr_face(dim_ads1_f3," + "ndf_ads1_f3,np_xyz_qr_face,nfaces_qr_face))\n" + " ALLOCATE(diff_basis_ads1_f3_qr_face(diff_dim_ads1_f3," + "ndf_ads1_f3,np_xyz_qr_face,nfaces_qr_face))\n" in code) assert (" call qr_xyoz%compute_function(BASIS, f3_proxy%vspace, " - "dim_adspc1_f3, ndf_adspc1_f3, basis_adspc1_f3_qr_xyoz)\n" + "dim_ads1_f3, ndf_ads1_f3, basis_ads1_f3_qr_xyoz)\n" " call qr_xyoz%compute_function(DIFF_BASIS, " - "f3_proxy%vspace, diff_dim_adspc1_f3, ndf_adspc1_f3, " - "diff_basis_adspc1_f3_qr_xyoz)\n" + "f3_proxy%vspace, diff_dim_ads1_f3, ndf_ads1_f3, " + "diff_basis_ads1_f3_qr_xyoz)\n" " call qr_face%compute_function(BASIS, f3_proxy%vspace, " - "dim_adspc1_f3, ndf_adspc1_f3, basis_adspc1_f3_qr_face)\n" + "dim_ads1_f3, ndf_ads1_f3, basis_ads1_f3_qr_face)\n" " call qr_face%compute_function(DIFF_BASIS, " - "f3_proxy%vspace, diff_dim_adspc1_f3, ndf_adspc1_f3, " - "diff_basis_adspc1_f3_qr_face)\n" in code) + "f3_proxy%vspace, diff_dim_ads1_f3, ndf_ads1_f3, " + "diff_basis_ads1_f3_qr_face)\n" in code) # Check that the kernel call itself is correct assert ( "testkern_2qr_int_field_code(nlayers_f1, f1_data, " "f2_1_data, f2_2_data, f2_3_data, f3_data, " "istp, ndf_w2, undf_w2, map_w2(:,cell), basis_w2_qr_xyoz, " "basis_w2_qr_face, ndf_wchi, undf_wchi, map_wchi(:,cell), " - "diff_basis_wchi_qr_xyoz, diff_basis_wchi_qr_face, ndf_adspc1_f3, " - "undf_adspc1_f3, map_adspc1_f3(:,cell), basis_adspc1_f3_qr_xyoz, " - "basis_adspc1_f3_qr_face, diff_basis_adspc1_f3_qr_xyoz, " - "diff_basis_adspc1_f3_qr_face, np_xy_qr_xyoz, np_z_qr_xyoz, " + "diff_basis_wchi_qr_xyoz, diff_basis_wchi_qr_face, ndf_ads1_f3, " + "undf_ads1_f3, map_ads1_f3(:,cell), basis_ads1_f3_qr_xyoz, " + "basis_ads1_f3_qr_face, diff_basis_ads1_f3_qr_xyoz, " + "diff_basis_ads1_f3_qr_face, np_xy_qr_xyoz, np_z_qr_xyoz, " "weights_xy_qr_xyoz, weights_z_qr_xyoz, nfaces_qr_face, " "np_xyz_qr_face, weights_xyz_qr_face)\n" in code) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -1145,8 +1149,8 @@ def test_int_real_field_fs(dist_mem, tmpdir): " map_w2vtrace => n5_proxy%vspace%get_whole_dofmap()\n" " map_wchi => n6_proxy%vspace%get_whole_dofmap()\n" " map_any_w2 => i7_proxy%vspace%get_whole_dofmap()\n" - " map_aspc1_i8 => i8_proxy%vspace%get_whole_dofmap()\n" - " map_adspc1_n7 => n7_proxy%vspace%get_whole_dofmap()\n") + " map_as1_i8 => i8_proxy%vspace%get_whole_dofmap()\n" + " map_ads1_n7 => n7_proxy%vspace%get_whole_dofmap()\n") assert output in generated_code # Kernel calls are the same regardless of distributed memory kern1_call = ( @@ -1163,9 +1167,9 @@ def test_int_real_field_fs(dist_mem, tmpdir): "undf_w2trace, map_w2trace(:,cell), ndf_w2htrace, undf_w2htrace, " "map_w2htrace(:,cell), ndf_w2vtrace, undf_w2vtrace, " "map_w2vtrace(:,cell), ndf_wchi, undf_wchi, map_wchi(:,cell), " - "ndf_any_w2, undf_any_w2, map_any_w2(:,cell), ndf_aspc1_i8, " - "undf_aspc1_i8, map_aspc1_i8(:,cell), ndf_adspc1_n7, " - "undf_adspc1_n7, map_adspc1_n7(:,cell))\n") + "ndf_any_w2, undf_any_w2, map_any_w2(:,cell), ndf_as1_i8, " + "undf_as1_i8, map_as1_i8(:,cell), ndf_ads1_n7, " + "undf_ads1_n7, map_ads1_n7(:,cell))\n") assert kern1_call in generated_code kern2_call = ( " call testkern_fs_code(nlayers_f1, f1_data, f2_data, " diff --git a/src/psyclone/tests/domain/lfric/lfric_stencil_test.py b/src/psyclone/tests/domain/lfric/lfric_stencil_test.py index 5b144e2c5b..adfaf22d56 100644 --- a/src/psyclone/tests/domain/lfric/lfric_stencil_test.py +++ b/src/psyclone/tests/domain/lfric/lfric_stencil_test.py @@ -228,8 +228,7 @@ def test_single_kernel_any_dscnt_space_stencil(dist_mem, tmpdir): "nlayers_f0, f0_data, f1_data, f1_stencil_size(cell), " "f1_stencil_dofmap(:,:,cell), f2_data, f1_stencil_size(cell), " "f1_stencil_dofmap(:,:,cell), ndf_wtheta, undf_wtheta, " - "map_wtheta(:,cell), ndf_adspc1_f1, undf_adspc1_f1, " - "map_adspc1_f1(:,cell))") + "map_wtheta(:,cell), ndf_ads1_f1, undf_ads1_f1, map_ads1_f1(:,cell))") assert output1 in result # Use a different stencil dofmap output2 = ( @@ -237,9 +236,8 @@ def test_single_kernel_any_dscnt_space_stencil(dist_mem, tmpdir): "nlayers_f3, f3_data, f4_data, f4_stencil_size(cell), " "f4_stencil_dofmap(:,:,cell), f5_data, f5_stencil_size(cell), " "f5_stencil_dofmap(:,:,cell), ndf_wtheta, undf_wtheta, " - "map_wtheta(:,cell), ndf_adspc1_f4, " - "undf_adspc1_f4, map_adspc1_f4(:,cell), " - "ndf_adspc2_f5, undf_adspc2_f5, map_adspc2_f5(:,cell))") + "map_wtheta(:,cell), ndf_ads1_f4, undf_ads1_f4, map_ads1_f4(:,cell), " + "ndf_ads2_f5, undf_ads2_f5, map_ads2_f5(:,cell))") assert output2 in result # Check for halo exchanges and correct loop bounds if dist_mem: @@ -1273,8 +1271,8 @@ def test_multi_stencil_same_name_direction(dist_mem, tmpdir): "f4_data, f4_stencil_size(cell), direction, " "f4_stencil_dofmap(:,:,cell), " "ndf_w1, undf_w1, map_w1(:,cell), ndf_w2, undf_w2, " - "map_w2(:,cell), ndf_adspc1_f4, undf_adspc1_f4, " - "map_adspc1_f4(:,cell))") + "map_w2(:,cell), ndf_ads1_f4, undf_ads1_f4, " + "map_ads1_f4(:,cell))") assert output5 in result # Check compilation @@ -1754,15 +1752,15 @@ def test_single_kernel_any_space_stencil(dist_mem, tmpdir): "f0_data, f1_data, f1_stencil_size(cell), " "f1_stencil_dofmap(:,:,cell), f2_data, f1_stencil_size(cell), " "f1_stencil_dofmap(:,:,cell), ndf_w1, undf_w1, map_w1(:,cell), " - "ndf_aspc1_f1, undf_aspc1_f1, map_aspc1_f1(:,cell))") + "ndf_as1_f1, undf_as1_f1, map_as1_f1(:,cell))") assert output2 in result output3 = ( " call testkern_different_anyspace_stencil_code(nlayers_f3, " "f3_data, f4_data, f4_stencil_size(cell), " "f4_stencil_dofmap(:,:,cell), f5_data, f5_stencil_size(cell), " "f5_stencil_dofmap(:,:,cell), ndf_w1, undf_w1, map_w1(:,cell), " - "ndf_aspc1_f4, undf_aspc1_f4, map_aspc1_f4(:,cell), ndf_aspc2_f5, " - "undf_aspc2_f5, map_aspc2_f5(:,cell))") + "ndf_as1_f4, undf_as1_f4, map_as1_f4(:,cell), ndf_as2_f5, " + "undf_as2_f5, map_as2_f5(:,cell))") # Use a different stencil dofmap assert output3 in result @@ -1799,15 +1797,15 @@ def test_multi_kernel_any_space_stencil_1(dist_mem): "f0_data, f1_data, f1_stencil_size(cell), " "f1_stencil_dofmap(:,:,cell), f2_data, f1_stencil_size(cell), " "f1_stencil_dofmap(:,:,cell), ndf_w1, undf_w1, map_w1(:,cell), " - "ndf_aspc1_f1, undf_aspc1_f1, map_aspc1_f1)") + "ndf_as1_f1, undf_as1_f1, map_as1_f1)") assert output2 in result output3 = ( " call testkern_different_anyspace_stencil_code(nlayers, " "f3_data, f1_data, f1_stencil_size(cell), " "f1_stencil_dofmap(:,:,cell), f2_data, f1_stencil_size(cell), " "f1_stencil_dofmap(:,:,cell), ndf_w1, undf_w1, map_w1(:,cell), " - "ndf_aspc1_f1, undf_aspc1_f1, map_aspc1_f1, " - "ndf_aspc2_f2, undf_aspc2_f2, map_aspc2_f2)") + "ndf_as1_f1, undf_as1_f1, map_as1_f1, " + "ndf_as2_f2, undf_as2_f2, map_as2_f2)") assert output3 in result diff --git a/src/psyclone/tests/domain/lfric/transformations/lfric_transformations_test.py b/src/psyclone/tests/domain/lfric/transformations/lfric_transformations_test.py index d0bf730203..184d8975ed 100644 --- a/src/psyclone/tests/domain/lfric/transformations/lfric_transformations_test.py +++ b/src/psyclone/tests/domain/lfric/transformations/lfric_transformations_test.py @@ -319,9 +319,9 @@ def test_colour_trans_cma_operator(tmpdir, dist_mem): "cma_op1_cma_matrix(:,:,:), cma_op1_nrow, " "cma_op1_ncol, cma_op1_bandwidth, " "cma_op1_alpha, cma_op1_beta, cma_op1_gamma_m, cma_op1_gamma_p, " - "ndf_aspc1_afield, undf_aspc1_afield, " - "map_aspc1_afield(:,cmap(colour,cell)), cbanded_map_aspc1_afield, " - "ndf_aspc2_lma_op1, cbanded_map_aspc2_lma_op1)\n" + "ndf_as1_ad, undf_as1_ad, " + "map_as1_ad(:,cmap(colour,cell)), cbanded_map_as1_ad, " + "ndf_as2_la_o1, cbanded_map_as2_la_o1)\n" " enddo\n" " enddo\n") in gen @@ -1361,9 +1361,9 @@ def test_loop_fuse_cma(tmpdir, dist_mem): assert ( " ! Look-up required column-banded dofmaps\n" - " cbanded_map_aspc1_afield => " + " cbanded_map_as1_ad => " "cma_op1_proxy%column_banded_dofmap_to\n" - " cbanded_map_aspc2_lma_op1 => " + " cbanded_map_as2_la_o1 => " "cma_op1_proxy%column_banded_dofmap_from\n") in code assert ( " ! Look-up information for each CMA operator\n" @@ -1381,10 +1381,9 @@ def test_loop_fuse_cma(tmpdir, dist_mem): "ncell_2d, afield_data, lma_op1_proxy%ncell_3d, " "lma_op1_local_stencil, cma_op1_cma_matrix(:,:,:), cma_op1_nrow, " "cma_op1_ncol, cma_op1_bandwidth, cma_op1_alpha, cma_op1_beta, " - "cma_op1_gamma_m, cma_op1_gamma_p, ndf_aspc1_afield, " - "undf_aspc1_afield, map_aspc1_afield(:,cell), " - "cbanded_map_aspc1_afield, ndf_aspc2_lma_op1, " - "cbanded_map_aspc2_lma_op1)\n" + "cma_op1_gamma_m, cma_op1_gamma_p, ndf_as1_ad, " + "undf_as1_ad, map_as1_ad(:,cell), " + "cbanded_map_as1_ad, ndf_as2_la_o1, cbanded_map_as2_la_o1)\n" " call testkern_two_real_scalars_code(nlayers_afield, scalar1, " "afield_data, bfield_data, cfield_data, " "dfield_data, scalar2, ndf_w1, undf_w1, map_w1(:,cell), " @@ -1460,7 +1459,7 @@ def test_builtin_single_omp_pdo(tmpdir, monkeypatch, annexed, dist_mem): " call f2_proxy%set_dirty()") assert code in result else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f2" in result + assert "loop0_stop = undf_as1_f2" in result assert ( " !$omp parallel do default(shared) private(df) " "schedule(static)\n" @@ -1538,7 +1537,7 @@ def test_builtin_multiple_omp_pdo(tmpdir, monkeypatch, annexed, dist_mem): assert code in result else: # not distmem. annexed can be True or False for idx in range(1, 4): - assert f"loop{idx-1}_stop = undf_aspc1_f{idx}" in result + assert f"loop{idx-1}_stop = undf_as1_f{idx}" in result assert ( " !$omp parallel do default(shared) private(df) " "schedule(static)\n" @@ -1621,7 +1620,7 @@ def test_builtin_loop_fuse_pdo(tmpdir, monkeypatch, annexed, dist_mem): " call f3_proxy%set_dirty()") assert code in result else: # distmem is False. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result assert ( " !$omp parallel do default(shared) private(df) " "schedule(static)\n" @@ -1689,7 +1688,7 @@ def test_builtin_single_omp_do(tmpdir, monkeypatch, annexed, dist_mem): "above loop(s)\n" " call f2_proxy%set_dirty()\n") in result else: # distmem is False. annexed can be True or False - assert "loop0_stop = undf_aspc1_f2" in result + assert "loop0_stop = undf_as1_f2" in result assert ( " !$omp parallel default(shared) private(df)\n" " !$omp do schedule(static)\n" @@ -1775,9 +1774,9 @@ def test_builtin_multiple_omp_do(tmpdir, monkeypatch, annexed, dist_mem): ) assert code in result else: # distmem is False. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result - assert "loop1_stop = undf_aspc1_f2" in result - assert "loop2_stop = undf_aspc1_f3" in result + assert "loop0_stop = undf_as1_f1" in result + assert "loop1_stop = undf_as1_f2" in result + assert "loop2_stop = undf_as1_f3" in result assert ( " !$omp parallel default(shared) private(df)\n" " !$omp do schedule(static)\n" @@ -1865,7 +1864,7 @@ def test_builtin_loop_fuse_do(tmpdir, monkeypatch, annexed, dist_mem): " call f3_proxy%set_dirty()\n") assert code in result else: # distmem is False. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result assert ( " !$omp parallel default(shared) private(df)\n" " !$omp do schedule(static)\n" @@ -1917,7 +1916,7 @@ def test_reduction_real_pdo(tmpdir, dist_mem): " asum = global_sum%get_sum()\n") in code else: - assert "loop0_stop = undf_aspc1_f1" in code + assert "loop0_stop = undf_as1_f1" in code assert ( " !$omp parallel do default(shared) " "private(df) schedule(static) reduction(+: asum)\n" @@ -1962,7 +1961,7 @@ def test_reduction_real_do(tmpdir, dist_mem): " global_sum%value = asum\n" " asum = global_sum%get_sum()\n") in code else: - assert "loop0_stop = undf_aspc1_f1\n" in code + assert "loop0_stop = undf_as1_f1\n" in code assert ( " !$omp parallel default(shared) private(df)\n" " !$omp do schedule(static) reduction(+: asum)\n" @@ -2025,8 +2024,8 @@ def test_multi_reduction_real_pdo(tmpdir, dist_mem): " global_sum%value = asum\n" " asum = global_sum%get_sum()\n") in code else: - assert "loop0_stop = undf_aspc1_f1\n" in code - assert "loop1_stop = undf_aspc1_f1\n" in code + assert "loop0_stop = undf_as1_f1\n" in code + assert "loop1_stop = undf_as1_f1\n" in code assert ( " asum = 0.0_r_def\n" "\n" @@ -2116,8 +2115,8 @@ def test_reduction_after_normal_real_do(tmpdir, monkeypatch, annexed, " asum = global_sum%get_sum()") assert expected_output in result else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result - assert "loop1_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result + assert "loop1_stop = undf_as1_f1" in result expected_output = ( " ! Initialise reduction variable\n" " asum = 0.0_r_def\n" @@ -2213,8 +2212,8 @@ def test_reprod_red_after_normal_real_do(tmpdir, monkeypatch, annexed, " asum = global_sum%get_sum()") assert expected_output in result else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result - assert "loop1_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result + assert "loop1_stop = undf_as1_f1" in result expected_output = ( " ALLOCATE(local_asum(8,nthreads))\n\n" " ! Initialise reduction variable\n" @@ -2315,8 +2314,8 @@ def test_two_reductions_real_do(tmpdir, dist_mem, fuse): " global_sum%value = bsum\n" " bsum = global_sum%get_sum()") else: - assert "loop0_stop = undf_aspc1_f1" in result - assert "loop1_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result + assert "loop1_stop = undf_as1_f1" in result expected_output = ( " ! Initialise reduction variable\n" " asum = 0.0_r_def\n" @@ -2422,8 +2421,8 @@ def test_two_reprod_reductions_real_do(tmpdir, dist_mem): " global_sum%value = bsum\n" " bsum = global_sum%get_sum()") else: - assert "loop0_stop = undf_aspc1_f1" in result - assert "loop1_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result + assert "loop1_stop = undf_as1_f1" in result expected_output = ( " ALLOCATE(local_asum(8,nthreads))\n" "\n" @@ -2575,8 +2574,8 @@ def test_multi_different_reduction_real_pdo(tmpdir, dist_mem): " global_sum%value = bsum\n" " bsum = global_sum%get_sum()\n") in code else: - assert "loop0_stop = undf_aspc1_f1" in code - assert "loop1_stop = undf_aspc1_f1" in code + assert "loop0_stop = undf_as1_f1" in code + assert "loop1_stop = undf_as1_f1" in code assert ( " ! Initialise reduction variable\n" " asum = 0.0_r_def\n" @@ -2659,8 +2658,8 @@ def test_multi_builtins_red_then_pdo(tmpdir, monkeypatch, annexed, dist_mem): " call f1_proxy%set_dirty()\n") assert code in result else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result - assert "loop1_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result + assert "loop1_stop = undf_as1_f1" in result assert ( " ! Initialise reduction variable\n" " asum = 0.0_r_def\n" @@ -2748,8 +2747,8 @@ def test_multi_builtins_red_then_do(tmpdir, monkeypatch, annexed, dist_mem): code = code.replace("dof_annexed", "dof_owned") assert code in result else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result - assert "loop1_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result + assert "loop1_stop = undf_as1_f1" in result assert ( " ! Initialise reduction variable\n" " asum = 0.0_r_def\n" @@ -2834,7 +2833,7 @@ def test_multi_builtins_red_then_fuse_pdo(tmpdir, monkeypatch, annexed, " global_sum%value = asum\n" " asum = global_sum%get_sum()\n") else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result code = ( " ! Initialise reduction variable\n" " asum = 0.0_r_def\n" @@ -2920,7 +2919,7 @@ def test_multi_builtins_red_then_fuse_do(tmpdir, monkeypatch, annexed, " global_sum%value = asum\n" " asum = global_sum%get_sum()\n") else: # not distmem, annexed is True or False - assert "loop0_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result code = ( " asum = 0.0_r_def\n" "\n" @@ -3000,8 +2999,8 @@ def test_multi_builtins_usual_then_red_pdo(tmpdir, monkeypatch, annexed, " asum = global_sum%get_sum()\n") assert code in result else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result - assert "loop1_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result + assert "loop1_stop = undf_as1_f1" in result assert ( " !$omp parallel do default(shared) private(df) " "schedule(static)\n" @@ -3078,7 +3077,7 @@ def test_builtins_usual_then_red_fuse_pdo(tmpdir, monkeypatch, annexed, " global_sum%value = asum\n" " asum = global_sum%get_sum()\n") else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result code = ( " ! Initialise reduction variable\n" " asum = 0.0_r_def\n" @@ -3157,7 +3156,7 @@ def test_builtins_usual_then_red_fuse_do(tmpdir, monkeypatch, annexed, " global_sum%value = asum\n" " asum = global_sum%get_sum()\n") else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result code = ( " asum = 0.0_r_def\n" "\n" @@ -3280,7 +3279,7 @@ def test_reprod_reduction_real_do(tmpdir, dist_mem): " global_sum%value = asum\n" " asum = global_sum%get_sum()") in code else: - assert "loop0_stop = undf_aspc1_f1" in code + assert "loop0_stop = undf_as1_f1" in code assert ( " ALLOCATE(local_asum(8,nthreads))\n" "\n" @@ -3415,8 +3414,8 @@ def test_reprod_builtins_red_then_usual_do(tmpdir, monkeypatch, annexed, " asum = global_sum%get_sum()\n") assert code in result else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result - assert "loop1_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result + assert "loop1_stop = undf_as1_f1" in result assert ( " ALLOCATE(local_asum(8,nthreads))\n" "\n" @@ -3534,7 +3533,7 @@ def test_repr_bltins_red_then_usual_fuse_do(tmpdir, monkeypatch, annexed, " global_sum%value = asum\n" " asum = global_sum%get_sum()\n") in result else: # not distmem. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result assert ( " ALLOCATE(local_asum(8,nthreads))\n" "\n" @@ -3636,7 +3635,7 @@ def test_repr_bltins_usual_then_red_fuse_do(tmpdir, monkeypatch, annexed, " global_sum%value = asum\n" " asum = global_sum%get_sum()\n") in result else: # distmem is False. annexed can be True or False - assert "loop0_stop = undf_aspc1_f1" in result + assert "loop0_stop = undf_as1_f1" in result assert ( " ALLOCATE(local_asum(8,nthreads))\n" "\n" @@ -3732,9 +3731,9 @@ def test_repr_3_builtins_2_reductions_do(tmpdir, dist_mem): " " + names["var"] + " = " "global_sum%get_sum()\n") in code else: - assert "loop0_stop = undf_aspc1_f1" in code - assert "loop1_stop = undf_aspc1_f1" in code - assert "loop2_stop = undf_aspc1_f2" in code + assert "loop0_stop = undf_as1_f1" in code + assert "loop1_stop = undf_as1_f1" in code + assert "loop2_stop = undf_as1_f2" in code for names in [ {"var": "asum", "lvar": "local_asum", "loop_idx": "0", @@ -6582,7 +6581,7 @@ def test_accenterdata_builtin(tmpdir): assert ("!$acc enter data copyin(f1_data,f2_data,m1_data,m2_data," "map_w1,map_w2,map_w3,ndf_w1,ndf_w2,ndf_w3,nlayers_f1," "undf_w1,undf_w2,undf_w3)" in output) - assert "loop2_stop = undf_aspc1_f1" in output + assert "loop2_stop = undf_as1_f1" in output assert (" !$acc loop independent\n" " do df = loop2_start, loop2_stop, 1\n" " ! built-in: setval_c (set a real-valued field to " @@ -6930,8 +6929,8 @@ def test_async_hex_move_2(tmpdir, monkeypatch): " call f2_proxy%halo_exchange_start(depth=1)\n" " do cell = loop3_start, loop3_stop, 1\n" " call testkern_any_space_3_code(cell, nlayers_op, " - "op_proxy%ncell_3d, op_local_stencil, ndf_aspc1_op, " - "ndf_aspc2_op)\n" + "op_proxy%ncell_3d, op_local_stencil, ndf_as1_op, " + "ndf_as2_op)\n" " enddo\n" " call f2_proxy%halo_exchange_finish(depth=1)\n") in result diff --git a/src/psyclone/tests/lfric_basis_test.py b/src/psyclone/tests/lfric_basis_test.py index 34ecb9bc29..a84c24969a 100644 --- a/src/psyclone/tests/lfric_basis_test.py +++ b/src/psyclone/tests/lfric_basis_test.py @@ -1022,24 +1022,24 @@ def test_two_eval_same_var_same_space(tmpdir): # We should only get one set of basis and diff-basis functions in the # generated code assert code.count( - "ndf_adspc1_f0 = f0_proxy%vspace%get_ndf()") == 1 + "ndf_ads1_f0 = f0_proxy%vspace%get_ndf()") == 1 assert code.count( - " do df_nodal = 1, ndf_adspc1_f0, 1\n" + " do df_nodal = 1, ndf_ads1_f0, 1\n" " do df_w0 = 1, ndf_w0, 1\n" - " basis_w0_on_adspc1_f0(:,df_w0,df_nodal) = f1_proxy%vspace" - "%call_function(BASIS, df_w0, nodes_adspc1_f0(:,df_nodal))\n" + " basis_w0_on_ads1_f0(:,df_w0,df_nodal) = f1_proxy%vspace" + "%call_function(BASIS, df_w0, nodes_ads1_f0(:,df_nodal))\n" " enddo\n" " enddo\n") == 1 assert code.count( - " do df_nodal = 1, ndf_adspc1_f0, 1\n" + " do df_nodal = 1, ndf_ads1_f0, 1\n" " do df_w1 = 1, ndf_w1, 1\n" - " diff_basis_w1_on_adspc1_f0(:,df_w1,df_nodal) = f2_proxy" - "%vspace%call_function(DIFF_BASIS, df_w1, nodes_adspc1_f0(:," + " diff_basis_w1_on_ads1_f0(:,df_w1,df_nodal) = f2_proxy" + "%vspace%call_function(DIFF_BASIS, df_w1, nodes_ads1_f0(:," "df_nodal))\n" " enddo\n" " enddo\n") == 1 assert code.count( - "DEALLOCATE(basis_w0_on_adspc1_f0, diff_basis_w1_on_adspc1_f0)") == 1 + "DEALLOCATE(basis_w0_on_ads1_f0, diff_basis_w1_on_ads1_f0)") == 1 assert LFRicBuild(tmpdir).code_compiles(psy) diff --git a/src/psyclone/tests/lfric_cma_test.py b/src/psyclone/tests/lfric_cma_test.py index 7d203a5473..3a3e98777f 100644 --- a/src/psyclone/tests/lfric_cma_test.py +++ b/src/psyclone/tests/lfric_cma_test.py @@ -834,9 +834,9 @@ def test_cma_asm(tmpdir, dist_mem): "cma_op1_cma_matrix => null()" in code) assert "type(mesh_type), pointer :: mesh => null()" in code assert "integer(kind=i_def) :: ncell_2d" in code - assert ("integer(kind=i_def), pointer :: cbanded_map_adspc1_lma_op1(:,:) " + assert ("integer(kind=i_def), pointer :: cbanded_map_ads1_la_o1(:,:) " "=> null()") in code - assert ("integer(kind=i_def), pointer :: cbanded_map_adspc2_lma_op1(:,:) " + assert ("integer(kind=i_def), pointer :: cbanded_map_ads2_la_o1(:,:) " "=> null()") in code assert "ncell_2d = mesh%get_ncells_2d" in code assert "cma_op1_proxy = cma_op1%get_proxy()" in code @@ -844,8 +844,8 @@ def test_cma_asm(tmpdir, dist_mem): "ncell_2d, lma_op1_proxy%ncell_3d, lma_op1_local_stencil, " "cma_op1_cma_matrix(:,:,:), cma_op1_nrow, cma_op1_ncol, " "cma_op1_bandwidth, cma_op1_alpha, cma_op1_beta, cma_op1_gamma_m, " - "cma_op1_gamma_p, ndf_adspc1_lma_op1, cbanded_map_adspc1_lma_op1, " - "ndf_adspc2_lma_op1, cbanded_map_adspc2_lma_op1)") in code + "cma_op1_gamma_p, ndf_ads1_la_o1, cbanded_map_ads1_la_o1, " + "ndf_ads2_la_o1, cbanded_map_ads2_la_o1)") in code assert LFRicBuild(tmpdir).code_compiles(psy) @@ -871,9 +871,9 @@ def test_cma_asm_field(tmpdir, dist_mem): assert "type(columnwise_operator_type), intent(inout) :: cma_op1\n" in code assert "type(columnwise_operator_proxy_type) :: cma_op1_proxy\n" in code assert ("integer(kind=i_def), pointer :: " - "cbanded_map_aspc1_afield(:,:) => null()\n" in code) + "cbanded_map_as1_ad(:,:) => null()\n" in code) assert ("integer(kind=i_def), pointer :: " - "cbanded_map_aspc2_lma_op1(:,:) => null()\n" in code) + "cbanded_map_as2_la_o1(:,:) => null()\n" in code) assert "integer(kind=i_def) :: ncell_2d" in code assert "mesh => afield_proxy%vspace%get_mesh()\n" in code assert "ncell_2d = mesh%get_ncells_2d()" in code @@ -883,10 +883,10 @@ def test_cma_asm_field(tmpdir, dist_mem): "ncell_2d, afield_data, lma_op1_proxy%ncell_3d, " "lma_op1_local_stencil, cma_op1_cma_matrix(:,:,:), cma_op1_nrow, " "cma_op1_ncol, cma_op1_bandwidth, cma_op1_alpha, cma_op1_beta, " - "cma_op1_gamma_m, cma_op1_gamma_p, ndf_aspc1_afield, " - "undf_aspc1_afield, map_aspc1_afield(:,cell), " - "cbanded_map_aspc1_afield, ndf_aspc2_lma_op1, " - "cbanded_map_aspc2_lma_op1)") + "cma_op1_gamma_m, cma_op1_gamma_p, ndf_as1_ad, " + "undf_as1_ad, map_as1_ad(:,cell), " + "cbanded_map_as1_ad, ndf_as2_la_o1, " + "cbanded_map_as2_la_o1)") assert expected in code assert LFRicBuild(tmpdir).code_compiles(psy) @@ -915,9 +915,9 @@ def test_cma_asm_scalar(dist_mem, tmpdir): assert "type(columnwise_operator_type), intent(inout) :: cma_op1" in code assert "type(columnwise_operator_proxy_type) :: cma_op1_proxy" in code assert ("integer(kind=i_def), pointer :: " - "cbanded_map_aspc1_lma_op1(:,:) => null()" in code) + "cbanded_map_as1_la_o1(:,:) => null()" in code) assert ("integer(kind=i_def), pointer :: " - "cbanded_map_aspc2_lma_op1(:,:) => null()" in code) + "cbanded_map_as2_la_o1(:,:) => null()" in code) assert "integer(kind=i_def) :: ncell_2d" in code assert "ncell_2d = mesh%get_ncells_2d()" in code assert "cma_op1_proxy = cma_op1%get_proxy()" in code @@ -926,9 +926,9 @@ def test_cma_asm_scalar(dist_mem, tmpdir): "lma_op1_local_stencil, cma_op1_cma_matrix(:,:,:), " "cma_op1_nrow, cma_op1_ncol, cma_op1_bandwidth, " "cma_op1_alpha_1, cma_op1_beta, cma_op1_gamma_m, " - "cma_op1_gamma_p, cma_op1_alpha, ndf_aspc1_lma_op1, " - "cbanded_map_aspc1_lma_op1, ndf_aspc2_lma_op1, " - "cbanded_map_aspc2_lma_op1)") + "cma_op1_gamma_p, cma_op1_alpha, ndf_as1_la_o1, " + "cbanded_map_as1_la_o1, ndf_as2_la_o1, " + "cbanded_map_as2_la_o1)") assert expected in code @@ -959,7 +959,7 @@ def test_cma_asm_field_same_fs(dist_mem, tmpdir): in code) assert "type(columnwise_operator_proxy_type) :: cma_op1_proxy" in code assert ("integer(kind=i_def), pointer :: " - "cbanded_map_aspc2_lma_op1(:,:) => null()\n" in code) + "cbanded_map_as2_la_o1(:,:) => null()\n" in code) assert "integer(kind=i_def) :: ncell_2d" in code assert "mesh => lma_op1_proxy%fs_from%get_mesh()" in code assert "ncell_2d = mesh%get_ncells_2d()" in code @@ -976,9 +976,9 @@ def test_cma_asm_field_same_fs(dist_mem, tmpdir): "lma_op1_local_stencil, afield_data, " "cma_op1_cma_matrix(:,:,:), cma_op1_nrow, cma_op1_bandwidth, " "cma_op1_alpha, cma_op1_beta, cma_op1_gamma_m, " - "cma_op1_gamma_p, ndf_aspc1_lma_op1, undf_aspc1_lma_op1, " - "map_aspc1_lma_op1(:,cell), ndf_aspc2_lma_op1, " - "cbanded_map_aspc2_lma_op1)") + "cma_op1_gamma_p, ndf_as1_la_o1, undf_as1_la_o1, " + "map_as1_la_o1(:,cell), ndf_as2_la_o1, " + "cbanded_map_as2_la_o1)") assert expected in code # We do not perform halo swaps for operators assert "lma_op1_proxy%is_dirty(" not in code @@ -1002,25 +1002,25 @@ def test_cma_apply(tmpdir, dist_mem): assert "type(columnwise_operator_proxy_type) :: cma_op1_proxy" in code assert "mesh => field_a_proxy%vspace%get_mesh()" in code assert "ncell_2d = mesh%get_ncells_2d()" in code - assert ("integer(kind=i_def), pointer :: cma_indirection_map_aspc1_" - "field_a(:) => null()" in code) + assert ("integer(kind=i_def), pointer :: cma_indirection_map_as1_" + "fd_a(:) => null()" in code) assert ("integer(kind=i_def), pointer :: " - "cma_indirection_map_aspc2_field_b(:) => null()\n") in code - assert ("ndf_aspc1_field_a = field_a_proxy%vspace%get_ndf()\n" - " undf_aspc1_field_a = field_a_proxy%vspace%" + "cma_indirection_map_as2_fd_b(:) => null()\n") in code + assert ("ndf_as1_fd_a = field_a_proxy%vspace%get_ndf()\n" + " undf_as1_fd_a = field_a_proxy%vspace%" "get_undf()") in code - assert ("cma_indirection_map_aspc1_field_a => " + assert ("cma_indirection_map_as1_fd_a => " "cma_op1_proxy%indirection_dofmap_to") in code - assert ("cma_indirection_map_aspc2_field_b => " + assert ("cma_indirection_map_as2_fd_b => " "cma_op1_proxy%indirection_dofmap_from") in code assert ("call columnwise_op_app_kernel_code(cell, ncell_2d, " "field_a_data, field_b_data, cma_op1_cma_matrix(:,:,:), " "cma_op1_nrow, cma_op1_ncol, cma_op1_bandwidth, cma_op1_alpha, " "cma_op1_beta, cma_op1_gamma_m, cma_op1_gamma_p, " - "ndf_aspc1_field_a, undf_aspc1_field_a, " - "map_aspc1_field_a(:,cell), cma_indirection_map_aspc1_field_a, " - "ndf_aspc2_field_b, undf_aspc2_field_b, map_aspc2_field_b(:,cell)," - " cma_indirection_map_aspc2_field_b)") in code + "ndf_as1_fd_a, undf_as1_fd_a, " + "map_as1_fd_a(:,cell), cma_indirection_map_as1_fd_a, " + "ndf_as2_fd_b, undf_as2_fd_b, map_as2_fd_b(:,cell)," + " cma_indirection_map_as2_fd_b)") in code # We do not perform halo swaps for operators assert "cma_op1_proxy%is_dirty(" not in code @@ -1045,13 +1045,13 @@ def test_cma_apply_discontinuous_spaces(tmpdir, dist_mem): assert "integer(kind=i_def) :: ncell_2d" in code assert "type(columnwise_operator_proxy_type) :: cma_op1_proxy" in code assert ("integer(kind=i_def), pointer :: " - "cma_indirection_map_adspc1_field_a(:) => null()") in code + "cma_indirection_map_ads1_fd_a(:) => null()") in code assert ("integer(kind=i_def), pointer :: " - "cma_indirection_map_aspc1_field_b(:) => null()\n") in code - assert ("ndf_adspc1_field_a = field_a_proxy%vspace%get_ndf()\n" - " undf_adspc1_field_a = " + "cma_indirection_map_as1_fd_b(:) => null()\n") in code + assert ("ndf_ads1_fd_a = field_a_proxy%vspace%get_ndf()\n" + " undf_ads1_fd_a = " "field_a_proxy%vspace%get_undf()") in code - assert ("cma_indirection_map_adspc1_field_a => " + assert ("cma_indirection_map_ads1_fd_a => " "cma_op1_proxy%indirection_dofmap_to") in code # Check w2v assert "type(columnwise_operator_proxy_type) :: cma_op2_proxy" in code @@ -1060,7 +1060,7 @@ def test_cma_apply_discontinuous_spaces(tmpdir, dist_mem): assert ("integer(kind=i_def), pointer :: " "cma_indirection_map_w2v(:) => null()") in code assert ("integer(kind=i_def), pointer :: " - "cma_indirection_map_aspc2_field_d(:) => null()\n") in code + "cma_indirection_map_as2_fd_d(:) => null()\n") in code assert ("ndf_w2v = field_c_proxy%vspace%get_ndf()\n" " undf_w2v = field_c_proxy%vspace%get_undf()") in code assert ("cma_indirection_map_w2v => " @@ -1079,19 +1079,19 @@ def test_cma_apply_discontinuous_spaces(tmpdir, dist_mem): "ncell_2d, field_a_data, field_b_data, " "cma_op1_cma_matrix(:,:,:), cma_op1_nrow, cma_op1_ncol, " "cma_op1_bandwidth, cma_op1_alpha, cma_op1_beta, " - "cma_op1_gamma_m, cma_op1_gamma_p, ndf_adspc1_field_a, " - "undf_adspc1_field_a, map_adspc1_field_a(:,cell), " - "cma_indirection_map_adspc1_field_a, ndf_aspc1_field_b, " - "undf_aspc1_field_b, map_aspc1_field_b(:,cell), " - "cma_indirection_map_aspc1_field_b") in code + "cma_op1_gamma_m, cma_op1_gamma_p, ndf_ads1_fd_a, " + "undf_ads1_fd_a, map_ads1_fd_a(:,cell), " + "cma_indirection_map_ads1_fd_a, ndf_as1_fd_b, " + "undf_as1_fd_b, map_as1_fd_b(:,cell), " + "cma_indirection_map_as1_fd_b") in code # Check w2v assert ("call columnwise_op_app_w2v_kernel_code(cell, ncell_2d, " "field_c_data, field_d_data, cma_op2_cma_matrix(:,:,:), " "cma_op2_nrow, cma_op2_ncol, cma_op2_bandwidth, cma_op2_alpha, " "cma_op2_beta, cma_op2_gamma_m, cma_op2_gamma_p, ndf_w2v, " "undf_w2v, map_w2v(:,cell), cma_indirection_map_w2v, " - "ndf_aspc2_field_d, undf_aspc2_field_d, map_aspc2_field_d" - "(:,cell), cma_indirection_map_aspc2_field_d)") in code + "ndf_as2_fd_d, undf_as2_fd_d, map_as2_fd_d" + "(:,cell), cma_indirection_map_as2_fd_d)") in code if dist_mem: # Check any_discontinuous_space_1 @@ -1122,21 +1122,21 @@ def test_cma_apply_same_space(dist_mem, tmpdir): assert "type(columnwise_operator_proxy_type) :: cma_op1_proxy" in code assert "mesh => field_a_proxy%vspace%get_mesh()" in code assert "ncell_2d = mesh%get_ncells_2d()" in code - assert ("integer(kind=i_def), pointer :: cma_indirection_map_aspc2_" - "field_a(:) => null()\n") in code - assert ("ndf_aspc2_field_a = field_a_proxy%vspace%get_ndf()\n" - " undf_aspc2_field_a = field_a_proxy%vspace%" + assert ("integer(kind=i_def), pointer :: cma_indirection_map_as2_" + "fd_a(:) => null()\n") in code + assert ("ndf_as2_fd_a = field_a_proxy%vspace%get_ndf()\n" + " undf_as2_fd_a = field_a_proxy%vspace%" "get_undf()") in code - assert ("cma_indirection_map_aspc2_field_a => " + assert ("cma_indirection_map_as2_fd_a => " "cma_op1_proxy%indirection_dofmap_to") in code assert ("call columnwise_op_app_same_fs_kernel_code(cell, ncell_2d, " "field_a_data, field_b_data, " "cma_op1_cma_matrix(:,:,:), cma_op1_nrow, " "cma_op1_bandwidth, cma_op1_alpha, " "cma_op1_beta, cma_op1_gamma_m, cma_op1_gamma_p, " - "ndf_aspc2_field_a, undf_aspc2_field_a, " - "map_aspc2_field_a(:,cell), " - "cma_indirection_map_aspc2_field_a)") in code + "ndf_as2_fd_a, undf_as2_fd_a, " + "map_as2_fd_a(:,cell), " + "cma_indirection_map_as2_fd_a)") in code if dist_mem: assert "call field_a_proxy%set_dirty()" in code assert "cma_op1_proxy%is_dirty(" not in code @@ -1255,13 +1255,13 @@ def test_cma_multi_kernel(tmpdir, dist_mem): assert "cma_op1_alpha = cma_op1_proxy%alpha\n" in code assert "cma_op1_beta = cma_op1_proxy%beta\n" in code - assert (" cbanded_map_aspc1_afield => " + assert (" cbanded_map_as1_ad => " "cma_op1_proxy%column_banded_dofmap_to\n" - " cbanded_map_aspc2_lma_op1 => " + " cbanded_map_as2_la_o1 => " "cma_op1_proxy%column_banded_dofmap_from\n") in code - assert ("cma_indirection_map_aspc1_field_a => " + assert ("cma_indirection_map_as1_fd_a => " "cma_op1_proxy%indirection_dofmap_to\n" - " cma_indirection_map_aspc2_field_b => " + " cma_indirection_map_as2_fd_b => " "cma_op1_proxy%indirection_dofmap_from\n") in code if dist_mem: @@ -1282,19 +1282,19 @@ def test_cma_multi_kernel(tmpdir, dist_mem): "ncell_2d, afield_data, lma_op1_proxy%ncell_3d, " "lma_op1_local_stencil, cma_op1_cma_matrix(:,:,:), cma_op1_nrow, " "cma_op1_ncol, cma_op1_bandwidth, cma_op1_alpha, cma_op1_beta, " - "cma_op1_gamma_m, cma_op1_gamma_p, ndf_aspc1_afield, " - "undf_aspc1_afield, map_aspc1_afield(:,cell), " - "cbanded_map_aspc1_afield, ndf_aspc2_lma_op1, " - "cbanded_map_aspc2_lma_op1)") in code + "cma_op1_gamma_m, cma_op1_gamma_p, ndf_as1_ad, " + "undf_as1_ad, map_as1_ad(:,cell), " + "cbanded_map_as1_ad, ndf_as2_la_o1, " + "cbanded_map_as2_la_o1)") in code assert ("call columnwise_op_app_kernel_code(cell, ncell_2d, " "field_a_data, field_b_data, cma_op1_cma_matrix(:,:,:), " "cma_op1_nrow, cma_op1_ncol, cma_op1_bandwidth, cma_op1_alpha, " "cma_op1_beta, cma_op1_gamma_m, cma_op1_gamma_p, " - "ndf_aspc1_field_a, undf_aspc1_field_a, " - "map_aspc1_field_a(:,cell), cma_indirection_map_aspc1_field_a, " - "ndf_aspc2_field_b, undf_aspc2_field_b, " - "map_aspc2_field_b(:,cell), " - "cma_indirection_map_aspc2_field_b)\n") in code + "ndf_as1_fd_a, undf_as1_fd_a, " + "map_as1_fd_a(:,cell), cma_indirection_map_as1_fd_a, " + "ndf_as2_fd_b, undf_as2_fd_b, " + "map_as2_fd_b(:,cell), " + "cma_indirection_map_as2_fd_b)\n") in code assert ("call columnwise_op_mul_kernel_code(cell, ncell_2d, " "cma_op1_cma_matrix(:,:,:), cma_op1_nrow, cma_op1_ncol, " "cma_op1_bandwidth, cma_op1_alpha, cma_op1_beta, cma_op1_gamma_m, " @@ -1314,7 +1314,6 @@ def test_cma_asm_stub_gen(): ''' Test the kernel-stub generator for CMA operator assembly. ''' - path = os.path.join(BASE_PATH, "columnwise_op_asm_kernel_mod.F90") result = generate(path, api=TEST_API) @@ -1327,16 +1326,16 @@ def test_cma_asm_stub_gen(): subroutine columnwise_op_asm_kernel_code(cell, nlayers, ncell_2d, \ op_1_ncell_3d, op_1, cma_op_2, cma_op_2_nrow, cma_op_2_ncol, \ cma_op_2_bandwidth, cma_op_2_alpha, cma_op_2_beta, cma_op_2_gamma_m, \ -cma_op_2_gamma_p, ndf_adspc1_op_1, cbanded_map_adspc1_op_1, ndf_adspc2_op_1, \ -cbanded_map_adspc2_op_1) +cma_op_2_gamma_p, ndf_ads1_op_1, cbanded_map_ads1_op_1, ndf_ads2_op_1, \ +cbanded_map_ads2_op_1) use constants_mod integer(kind=i_def), intent(in) :: nlayers - integer(kind=i_def), intent(in) :: ndf_adspc1_op_1 - integer(kind=i_def), dimension(ndf_adspc1_op_1,nlayers), intent(in) :: \ -cbanded_map_adspc1_op_1 - integer(kind=i_def), intent(in) :: ndf_adspc2_op_1 - integer(kind=i_def), dimension(ndf_adspc2_op_1,nlayers), intent(in) :: \ -cbanded_map_adspc2_op_1 + integer(kind=i_def), intent(in) :: ndf_ads1_op_1 + integer(kind=i_def), dimension(ndf_ads1_op_1,nlayers), intent(in) :: \ +cbanded_map_ads1_op_1 + integer(kind=i_def), intent(in) :: ndf_ads2_op_1 + integer(kind=i_def), dimension(ndf_ads2_op_1,nlayers), intent(in) :: \ +cbanded_map_ads2_op_1 integer(kind=i_def), intent(in) :: cell integer(kind=i_def), intent(in) :: ncell_2d integer(kind=i_def), intent(in) :: cma_op_2_nrow @@ -1349,7 +1348,7 @@ def test_cma_asm_stub_gen(): real(kind=r_def), dimension(cma_op_2_bandwidth,cma_op_2_nrow,ncell_2d)\ , intent(inout) :: cma_op_2 integer(kind=i_def), intent(in) :: op_1_ncell_3d - real(kind=r_def), dimension(op_1_ncell_3d,ndf_adspc1_op_1,ndf_adspc2_op_1)\ + real(kind=r_def), dimension(op_1_ncell_3d,ndf_ads1_op_1,ndf_ads2_op_1)\ , intent(in) :: op_1 @@ -1357,7 +1356,8 @@ def test_cma_asm_stub_gen(): end module columnwise_op_asm_kernel_mod """ - assert expected == result + for line in expected.split("\n"): + assert line in result, line def test_cma_asm_with_field_stub_gen(): @@ -1376,22 +1376,21 @@ def test_cma_asm_with_field_stub_gen(): contains subroutine columnwise_op_asm_field_kernel_code(cell, nlayers, ncell_2d, \ -field_1_aspc1_field_1, op_2_ncell_3d, op_2, cma_op_3, cma_op_3_nrow, \ +field_1_as1_fd_1, op_2_ncell_3d, op_2, cma_op_3, cma_op_3_nrow, \ cma_op_3_ncol, cma_op_3_bandwidth, cma_op_3_alpha, cma_op_3_beta, \ -cma_op_3_gamma_m, cma_op_3_gamma_p, ndf_aspc1_field_1, undf_aspc1_field_1, \ -map_aspc1_field_1, cbanded_map_aspc1_field_1, ndf_aspc2_op_2, \ -cbanded_map_aspc2_op_2) +cma_op_3_gamma_m, cma_op_3_gamma_p, ndf_as1_fd_1, undf_as1_fd_1, \ +map_as1_fd_1, cbanded_map_as1_fd_1, ndf_as2_op_2, cbanded_map_as2_op_2) use constants_mod integer(kind=i_def), intent(in) :: nlayers - integer(kind=i_def), intent(in) :: ndf_aspc1_field_1 - integer(kind=i_def), dimension(ndf_aspc1_field_1), intent(in) :: \ -map_aspc1_field_1 - integer(kind=i_def), dimension(ndf_aspc1_field_1,nlayers), intent(in) :: \ -cbanded_map_aspc1_field_1 - integer(kind=i_def), intent(in) :: ndf_aspc2_op_2 - integer(kind=i_def), dimension(ndf_aspc2_op_2,nlayers), intent(in) :: \ -cbanded_map_aspc2_op_2 - integer(kind=i_def), intent(in) :: undf_aspc1_field_1 + integer(kind=i_def), intent(in) :: ndf_as1_fd_1 + integer(kind=i_def), dimension(ndf_as1_fd_1), intent(in) :: \ +map_as1_fd_1 + integer(kind=i_def), dimension(ndf_as1_fd_1,nlayers), intent(in) :: \ +cbanded_map_as1_fd_1 + integer(kind=i_def), intent(in) :: ndf_as2_op_2 + integer(kind=i_def), dimension(ndf_as2_op_2,nlayers), intent(in) :: \ +cbanded_map_as2_op_2 + integer(kind=i_def), intent(in) :: undf_as1_fd_1 integer(kind=i_def), intent(in) :: cell integer(kind=i_def), intent(in) :: ncell_2d integer(kind=i_def), intent(in) :: cma_op_3_nrow @@ -1403,18 +1402,19 @@ def test_cma_asm_with_field_stub_gen(): integer(kind=i_def), intent(in) :: cma_op_3_gamma_p real(kind=r_def), dimension(cma_op_3_bandwidth,cma_op_3_nrow,ncell_2d)\ , intent(inout) :: cma_op_3 - real(kind=r_def), dimension(undf_aspc1_field_1), intent(in) :: \ -field_1_aspc1_field_1 + real(kind=r_def), dimension(undf_as1_fd_1), intent(in) :: \ +field_1_as1_fd_1 integer(kind=i_def), intent(in) :: op_2_ncell_3d - real(kind=r_def), dimension(op_2_ncell_3d,ndf_aspc1_field_1,\ -ndf_aspc2_op_2), intent(in) :: op_2 + real(kind=r_def), dimension(op_2_ncell_3d,ndf_as1_fd_1,\ +ndf_as2_op_2), intent(in) :: op_2 end subroutine columnwise_op_asm_field_kernel_code end module columnwise_op_asm_field_kernel_mod """ - assert expected == result + for line in expected.split("\n"): + assert line in result, line def test_cma_asm_same_fs_stub_gen(): @@ -1433,19 +1433,19 @@ def test_cma_asm_same_fs_stub_gen(): contains subroutine columnwise_op_asm_same_fs_kernel_code(cell, nlayers, ncell_2d, \ -op_1_ncell_3d, op_1, field_2_aspc1_op_1, cma_op_3, cma_op_3_nrow, \ +op_1_ncell_3d, op_1, field_2_as1_op_1, cma_op_3, cma_op_3_nrow, \ cma_op_3_bandwidth, cma_op_3_alpha, cma_op_3_beta, cma_op_3_gamma_m, \ -cma_op_3_gamma_p, ndf_aspc1_op_1, undf_aspc1_op_1, map_aspc1_op_1, \ -ndf_aspc2_op_1, cbanded_map_aspc2_op_1) +cma_op_3_gamma_p, ndf_as1_op_1, undf_as1_op_1, map_as1_op_1, \ +ndf_as2_op_1, cbanded_map_as2_op_1) use constants_mod integer(kind=i_def), intent(in) :: nlayers - integer(kind=i_def), intent(in) :: ndf_aspc1_op_1 - integer(kind=i_def), dimension(ndf_aspc1_op_1), intent(in) :: \ -map_aspc1_op_1 - integer(kind=i_def), intent(in) :: ndf_aspc2_op_1 - integer(kind=i_def), dimension(ndf_aspc2_op_1,nlayers), intent(in) :: \ -cbanded_map_aspc2_op_1 - integer(kind=i_def), intent(in) :: undf_aspc1_op_1 + integer(kind=i_def), intent(in) :: ndf_as1_op_1 + integer(kind=i_def), dimension(ndf_as1_op_1), intent(in) :: \ +map_as1_op_1 + integer(kind=i_def), intent(in) :: ndf_as2_op_1 + integer(kind=i_def), dimension(ndf_as2_op_1,nlayers), intent(in) :: \ +cbanded_map_as2_op_1 + integer(kind=i_def), intent(in) :: undf_as1_op_1 integer(kind=i_def), intent(in) :: cell integer(kind=i_def), intent(in) :: ncell_2d integer(kind=i_def), intent(in) :: cma_op_3_nrow @@ -1456,10 +1456,10 @@ def test_cma_asm_same_fs_stub_gen(): integer(kind=i_def), intent(in) :: cma_op_3_gamma_p real(kind=r_def), dimension(cma_op_3_bandwidth,cma_op_3_nrow,ncell_2d)\ , intent(inout) :: cma_op_3 - real(kind=r_def), dimension(undf_aspc1_op_1), intent(in) :: \ -field_2_aspc1_op_1 + real(kind=r_def), dimension(undf_as1_op_1), intent(in) :: \ +field_2_as1_op_1 integer(kind=i_def), intent(in) :: op_1_ncell_3d - real(kind=r_def), dimension(op_1_ncell_3d,ndf_aspc1_op_1,ndf_aspc2_op_1)\ + real(kind=r_def), dimension(op_1_ncell_3d,ndf_as1_op_1,ndf_as2_op_1)\ , intent(in) :: op_1 @@ -1467,7 +1467,8 @@ def test_cma_asm_same_fs_stub_gen(): end module columnwise_op_asm_same_fs_kernel_mod """ - assert expected == result + for line in expected.split("\n"): + assert line in result, line def test_cma_app_stub_gen(): @@ -1486,26 +1487,26 @@ def test_cma_app_stub_gen(): contains subroutine columnwise_op_app_kernel_code(cell, ncell_2d, \ -field_1_aspc1_field_1, field_2_aspc2_field_2, cma_op_3, cma_op_3_nrow, \ +field_1_as1_fd_1, field_2_as2_fd_2, cma_op_3, cma_op_3_nrow, \ cma_op_3_ncol, cma_op_3_bandwidth, cma_op_3_alpha, cma_op_3_beta, \ -cma_op_3_gamma_m, cma_op_3_gamma_p, ndf_aspc1_field_1, undf_aspc1_field_1, \ -map_aspc1_field_1, cma_indirection_map_aspc1_field_1, ndf_aspc2_field_2, \ -undf_aspc2_field_2, map_aspc2_field_2, cma_indirection_map_aspc2_field_2) +cma_op_3_gamma_m, cma_op_3_gamma_p, ndf_as1_fd_1, undf_as1_fd_1, \ +map_as1_fd_1, cma_indirection_map_as1_fd_1, ndf_as2_fd_2, \ +undf_as2_fd_2, map_as2_fd_2, cma_indirection_map_as2_fd_2) use constants_mod - integer(kind=i_def), intent(in) :: ndf_aspc1_field_1 - integer(kind=i_def), dimension(ndf_aspc1_field_1), intent(in) :: \ -map_aspc1_field_1 - integer(kind=i_def), intent(in) :: ndf_aspc2_field_2 - integer(kind=i_def), dimension(ndf_aspc2_field_2), intent(in) :: \ -map_aspc2_field_2 + integer(kind=i_def), intent(in) :: ndf_as1_fd_1 + integer(kind=i_def), dimension(ndf_as1_fd_1), intent(in) :: \ +map_as1_fd_1 + integer(kind=i_def), intent(in) :: ndf_as2_fd_2 + integer(kind=i_def), dimension(ndf_as2_fd_2), intent(in) :: \ +map_as2_fd_2 integer(kind=i_def), intent(in) :: cma_op_3_nrow integer(kind=i_def), dimension(cma_op_3_nrow), intent(in) :: \ -cma_indirection_map_aspc1_field_1 +cma_indirection_map_as1_fd_1 integer(kind=i_def), intent(in) :: cma_op_3_ncol integer(kind=i_def), dimension(cma_op_3_ncol), intent(in) :: \ -cma_indirection_map_aspc2_field_2 - integer(kind=i_def), intent(in) :: undf_aspc1_field_1 - integer(kind=i_def), intent(in) :: undf_aspc2_field_2 +cma_indirection_map_as2_fd_2 + integer(kind=i_def), intent(in) :: undf_as1_fd_1 + integer(kind=i_def), intent(in) :: undf_as2_fd_2 integer(kind=i_def), intent(in) :: cell integer(kind=i_def), intent(in) :: ncell_2d integer(kind=i_def), intent(in) :: cma_op_3_bandwidth @@ -1515,17 +1516,18 @@ def test_cma_app_stub_gen(): integer(kind=i_def), intent(in) :: cma_op_3_gamma_p real(kind=r_def), dimension(cma_op_3_bandwidth,cma_op_3_nrow,\ ncell_2d), intent(in) :: cma_op_3 - real(kind=r_def), dimension(undf_aspc1_field_1), intent(inout) :: \ -field_1_aspc1_field_1 - real(kind=r_def), dimension(undf_aspc2_field_2), intent(in) :: \ -field_2_aspc2_field_2 + real(kind=r_def), dimension(undf_as1_fd_1), intent(inout) :: \ +field_1_as1_fd_1 + real(kind=r_def), dimension(undf_as2_fd_2), intent(in) :: \ +field_2_as2_fd_2 end subroutine columnwise_op_app_kernel_code end module columnwise_op_app_kernel_mod """ - assert expected == result + for line in expected.split("\n"): + assert line in result, line def test_cma_app_same_space_stub_gen(): @@ -1545,18 +1547,18 @@ def test_cma_app_same_space_stub_gen(): contains subroutine columnwise_op_app_same_fs_kernel_code(cell, ncell_2d, \ -field_1_aspc2_field_1, field_2_aspc2_field_1, cma_op_3, cma_op_3_nrow, \ +field_1_as2_fd_1, field_2_as2_fd_1, cma_op_3, cma_op_3_nrow, \ cma_op_3_bandwidth, cma_op_3_alpha, cma_op_3_beta, cma_op_3_gamma_m, \ -cma_op_3_gamma_p, ndf_aspc2_field_1, undf_aspc2_field_1, map_aspc2_field_1, \ -cma_indirection_map_aspc2_field_1) +cma_op_3_gamma_p, ndf_as2_fd_1, undf_as2_fd_1, map_as2_fd_1, \ +cma_indirection_map_as2_fd_1) use constants_mod - integer(kind=i_def), intent(in) :: ndf_aspc2_field_1 - integer(kind=i_def), dimension(ndf_aspc2_field_1), intent(in) :: \ -map_aspc2_field_1 + integer(kind=i_def), intent(in) :: ndf_as2_fd_1 + integer(kind=i_def), dimension(ndf_as2_fd_1), intent(in) :: \ +map_as2_fd_1 integer(kind=i_def), intent(in) :: cma_op_3_nrow integer(kind=i_def), dimension(cma_op_3_nrow), intent(in) :: \ -cma_indirection_map_aspc2_field_1 - integer(kind=i_def), intent(in) :: undf_aspc2_field_1 +cma_indirection_map_as2_fd_1 + integer(kind=i_def), intent(in) :: undf_as2_fd_1 integer(kind=i_def), intent(in) :: cell integer(kind=i_def), intent(in) :: ncell_2d integer(kind=i_def), intent(in) :: cma_op_3_bandwidth @@ -1566,17 +1568,18 @@ def test_cma_app_same_space_stub_gen(): integer(kind=i_def), intent(in) :: cma_op_3_gamma_p real(kind=r_def), dimension(cma_op_3_bandwidth,cma_op_3_nrow,\ ncell_2d), intent(in) :: cma_op_3 - real(kind=r_def), dimension(undf_aspc2_field_1), intent(inout) :: \ -field_1_aspc2_field_1 - real(kind=r_def), dimension(undf_aspc2_field_1), intent(in) :: \ -field_2_aspc2_field_1 + real(kind=r_def), dimension(undf_as2_fd_1), intent(inout) :: \ +field_1_as2_fd_1 + real(kind=r_def), dimension(undf_as2_fd_1), intent(in) :: \ +field_2_as2_fd_1 end subroutine columnwise_op_app_same_fs_kernel_code end module columnwise_op_app_same_fs_kernel_mod """ - assert expected == result + for line in expected.split("\n"): + assert line in result, line def test_cma_mul_stub_gen(): diff --git a/src/psyclone/tests/lfric_lma_test.py b/src/psyclone/tests/lfric_lma_test.py index b843dfa50a..620958721b 100644 --- a/src/psyclone/tests/lfric_lma_test.py +++ b/src/psyclone/tests/lfric_lma_test.py @@ -768,8 +768,8 @@ def test_operator_bc_kernel(tmpdir): assert output2 in generated_code output3 = ( "call enforce_operator_bc_code(cell, nlayers_op_a, " - "op_a_proxy%ncell_3d, op_a_local_stencil, ndf_aspc1_op_a, " - "ndf_aspc2_op_a, boundary_dofs_op_a)") + "op_a_proxy%ncell_3d, op_a_local_stencil, ndf_as1_op_a, " + "ndf_as2_op_a, boundary_dofs_op_a)") assert output3 in generated_code assert LFRicBuild(tmpdir).code_compiles(psy) @@ -792,7 +792,7 @@ def test_operator_bc_kernel_fld_err(monkeypatch, dist_mem): monkeypatch.setattr(arg, "_argument_type", value="gh_field") # We have to populate the Symbol table to get to the desired error. schedule.symbol_table.find_or_create_tag("op_a:data") - schedule.symbol_table.find_or_create("undf_aspc1_op_a", + schedule.symbol_table.find_or_create("undf_as1_op_a", symbol_type=symbols.DataSymbol, datatype=symbols.UnresolvedType()) with pytest.raises(VisitorError) as excinfo: @@ -816,7 +816,7 @@ def test_operator_bc_kernel_multi_args_err(dist_mem): arg = call.arguments.args[0] # We have to populate the Symbol table to get to the desired error. schedule.symbol_table.find_or_create_tag("op_a:data") - schedule.symbol_table.find_or_create("undf_aspc1_op_a", + schedule.symbol_table.find_or_create("undf_as1_op_a", symbol_type=symbols.DataSymbol, datatype=symbols.UnresolvedType()) # Make the list of arguments invalid by duplicating (a copy of) @@ -919,7 +919,7 @@ def test_operators(fortran_writer): op_9, op_10_ncell_3d, op_10, op_11_ncell_3d, op_11, op_12_ncell_3d, op_12, \ op_13_ncell_3d, op_13, ndf_w0, ndf_w1, ndf_w2, ndf_w2h, ndf_w2v, \ ndf_w2broken, ndf_w2trace, ndf_w2htrace, ndf_w2vtrace, ndf_w3, ndf_wtheta, \ -ndf_aspc1_op_12, ndf_adspc1_op_13) +ndf_as1_op_12, ndf_ads1_op_13) use constants_mod integer(kind=i_def), intent(in) :: nlayers integer(kind=i_def), intent(in) :: ndf_w0 @@ -933,8 +933,8 @@ def test_operators(fortran_writer): integer(kind=i_def), intent(in) :: ndf_w2vtrace integer(kind=i_def), intent(in) :: ndf_w3 integer(kind=i_def), intent(in) :: ndf_wtheta - integer(kind=i_def), intent(in) :: ndf_aspc1_op_12 - integer(kind=i_def), intent(in) :: ndf_adspc1_op_13 + integer(kind=i_def), intent(in) :: ndf_as1_op_12 + integer(kind=i_def), intent(in) :: ndf_ads1_op_13 integer(kind=i_def), intent(in) :: cell integer(kind=i_def), intent(in) :: op_1_ncell_3d real(kind=r_def), dimension(op_1_ncell_3d,ndf_w0,ndf_w0), intent(inout) \ @@ -970,11 +970,11 @@ def test_operators(fortran_writer): real(kind=r_def), dimension(op_11_ncell_3d,ndf_wtheta,ndf_wtheta\ ), intent(inout) :: op_11 integer(kind=i_def), intent(in) :: op_12_ncell_3d - real(kind=r_def), dimension(op_12_ncell_3d,ndf_aspc1_op_12,\ -ndf_aspc1_op_12), intent(in) :: op_12 + real(kind=r_def), dimension(op_12_ncell_3d,ndf_as1_op_12,\ +ndf_as1_op_12), intent(in) :: op_12 integer(kind=i_def), intent(in) :: op_13_ncell_3d - real(kind=r_def), dimension(op_13_ncell_3d,ndf_adspc1_op_13,\ -ndf_adspc1_op_13), intent(in) :: op_13 + real(kind=r_def), dimension(op_13_ncell_3d,ndf_ads1_op_13,\ +ndf_ads1_op_13), intent(in) :: op_13 end subroutine dummy_code @@ -1031,9 +1031,9 @@ def test_stub_operator_different_spaces(fortran_writer): kernel = LFRicKern() kernel.load_meta(metadata) result = fortran_writer(kernel.gen_stub) - assert ("(cell, nlayers, op_1_ncell_3d, op_1, ndf_w3, ndf_adspc2_op_1)" + assert ("(cell, nlayers, op_1_ncell_3d, op_1, ndf_w3, ndf_ads2_op_1)" in result) - assert "dimension(op_1_ncell_3d,ndf_w3,ndf_adspc2_op_1)" in result + assert "dimension(op_1_ncell_3d,ndf_w3,ndf_ads2_op_1)" in result field_descriptor = metadata.arg_descriptors[0] result = str(field_descriptor) assert "function_space_to[3]='w3'" in result diff --git a/src/psyclone/tests/lfric_multigrid_test.py b/src/psyclone/tests/lfric_multigrid_test.py index e344fa14b0..b2fee15fab 100644 --- a/src/psyclone/tests/lfric_multigrid_test.py +++ b/src/psyclone/tests/lfric_multigrid_test.py @@ -402,14 +402,14 @@ def test_field_restrict(tmpdir, dist_mem, monkeypatch, annexed): "null()\n" in output) assert "type(field_proxy_type) :: field1_proxy\n" in output assert "type(field_proxy_type) :: field2_proxy\n" in output - assert ("integer(kind=i_def), pointer :: map_aspc1_field1(:,:) => " + assert ("integer(kind=i_def), pointer :: map_as1_f1(:,:) => " "null()" in output) - assert ("integer(kind=i_def), pointer :: map_aspc2_field2(:,:) => " + assert ("integer(kind=i_def), pointer :: map_as2_f2(:,:) => " "null()" in output) - assert "integer(kind=i_def) :: ndf_aspc1_field1\n" in output - assert "integer(kind=i_def) :: undf_aspc1_field1\n" in output - assert "integer(kind=i_def) :: ndf_aspc2_field2\n" in output - assert "integer(kind=i_def) :: undf_aspc2_field2\n" in output + assert "integer(kind=i_def) :: ndf_as1_f1\n" in output + assert "integer(kind=i_def) :: undf_as1_f1\n" in output + assert "integer(kind=i_def) :: ndf_as2_f2\n" in output + assert "integer(kind=i_def) :: undf_as2_f2\n" in output assert "integer(kind=i_def) :: ncell_field2\n" in output assert "integer(kind=i_def) :: ncpc_field2_field1_x\n" in output assert "integer(kind=i_def) :: ncpc_field2_field1_y\n" in output @@ -449,8 +449,8 @@ def test_field_restrict(tmpdir, dist_mem, monkeypatch, annexed): "get_ntarget_cells_per_source_y()\n" "\n" " ! Look-up dofmaps for each function space\n" - " map_aspc1_field1 => field1_proxy%vspace%get_whole_dofmap()\n" - " map_aspc2_field2 => field2_proxy%vspace%get_whole_dofmap()\n") + " map_as1_f1 => field1_proxy%vspace%get_whole_dofmap()\n" + " map_as2_f2 => field2_proxy%vspace%get_whole_dofmap()\n") assert inits in output if dist_mem: @@ -483,9 +483,8 @@ def test_field_restrict(tmpdir, dist_mem, monkeypatch, annexed): " call restrict_test_kernel_code(nlayers_field1, " "cell_map_field1(:,:,cell), ncpc_field2_field1_x, " "ncpc_field2_field1_y, ncell_field2, " - "field1_data, field2_data, undf_aspc1_field1, " - "map_aspc1_field1(:,cell), ndf_aspc2_field2, undf_aspc2_field2, " - "map_aspc2_field2)\n" + "field1_data, field2_data, undf_as1_f1, " + "map_as1_f1(:,cell), ndf_as2_f2, undf_as2_f2, map_as2_f2)\n" " enddo\n") assert kern_call in output @@ -665,16 +664,16 @@ def test_restrict_prolong_chain(tmpdir, dist_mem): " do cell = loop2_start, loop2_stop, 1\n" " call restrict_test_kernel_code(nlayers_fld_m, " "cell_map_fld_m(:,:,cell), ncpc_fld_f_fld_m_x, ncpc_fld_f_fld_m_y," - " ncell_fld_f, fld_m_data, fld_f_data, undf_aspc1_fld_m, " - "map_aspc1_fld_m(:,cell), ndf_aspc2_fld_f, undf_aspc2_fld_f, " - "map_aspc2_fld_f)\n" + " ncell_fld_f, fld_m_data, fld_f_data, undf_as1_fd_m, " + "map_as1_fd_m(:,cell), ndf_as2_fd_f, undf_as2_fd_f, " + "map_as2_fd_f)\n" " enddo\n" " do cell = loop3_start, loop3_stop, 1\n" " call restrict_test_kernel_code(nlayers_cmap_fld_c, " "cell_map_cmap_fld_c(:,:,cell), ncpc_fld_m_cmap_fld_c_x, " "ncpc_fld_m_cmap_fld_c_y, ncell_fld_m, cmap_fld_c_data, " - "fld_m_data, undf_aspc1_cmap_fld_c, map_aspc1_cmap_fld_c" - "(:,cell), ndf_aspc2_fld_m, undf_aspc2_fld_m, map_aspc2_fld_m)\n") + "fld_m_data, undf_as1_cp_fd_c, map_as1_cp_fd_c" + "(:,cell), ndf_as2_fd_m, undf_as2_fd_m, map_as2_fd_m)\n") assert expected in output @@ -760,21 +759,21 @@ def test_restrict_prolong_chain_anyd(tmpdir): output = str(psy.gen) # Check maps for any_discontinuous_space expected = ( - " map_adspc1_fld_m => fld_m_proxy%vspace%get_whole_dofmap()\n" - " map_adspc2_fld_f => fld_f_proxy%vspace%get_whole_dofmap()\n" - " map_adspc1_fld_c => fld_c_proxy%vspace%get_whole_dofmap()\n" - " map_adspc2_fld_m => fld_m_proxy%vspace%get_whole_dofmap()\n") + " map_ads1_fd_m => fld_m_proxy%vspace%get_whole_dofmap()\n" + " map_ads2_fd_f => fld_f_proxy%vspace%get_whole_dofmap()\n" + " map_ads1_fd_c => fld_c_proxy%vspace%get_whole_dofmap()\n" + " map_ads2_fd_m => fld_m_proxy%vspace%get_whole_dofmap()\n") assert expected in output # Check ndf and undf initialisations the second restrict kernel # (fld_m to fld_c) expected = ( - " ! Initialise number of DoFs for adspc1_fld_c\n" - " ndf_adspc1_fld_c = fld_c_proxy%vspace%get_ndf()\n" - " undf_adspc1_fld_c = fld_c_proxy%vspace%get_undf()\n" + " ! Initialise number of DoFs for ads1_fd_c\n" + " ndf_ads1_fd_c = fld_c_proxy%vspace%get_ndf()\n" + " undf_ads1_fd_c = fld_c_proxy%vspace%get_undf()\n" "\n" - " ! Initialise number of DoFs for adspc2_fld_m\n" - " ndf_adspc2_fld_m = fld_m_proxy%vspace%get_ndf()\n" - " undf_adspc2_fld_m = fld_m_proxy%vspace%get_undf()\n") + " ! Initialise number of DoFs for ads2_fd_m\n" + " ndf_ads2_fd_m = fld_m_proxy%vspace%get_ndf()\n" + " undf_ads2_fd_m = fld_m_proxy%vspace%get_undf()\n") assert expected in output # Check an example of restrict loop and all upper loop bounds expected = ( @@ -782,9 +781,9 @@ def test_restrict_prolong_chain_anyd(tmpdir): " do cell = loop0_start, loop0_stop, 1\n" " call restrict_kernel_code(nlayers_fld_m, " "cell_map_fld_m(:,:,cell), ncpc_fld_f_fld_m_x, ncpc_fld_f_fld_m_y, " - "ncell_fld_f, fld_m_data, fld_f_data, undf_adspc1_fld_m, " - "map_adspc1_fld_m(:,cell), ndf_adspc2_fld_f, " - "undf_adspc2_fld_f, map_adspc2_fld_f)\n" + "ncell_fld_f, fld_m_data, fld_f_data, undf_ads1_fd_m, " + "map_ads1_fd_m(:,cell), ndf_ads2_fd_f, " + "undf_ads2_fd_f, map_ads2_fd_f)\n" " enddo\n") assert expected in output assert "loop0_stop = mesh_fld_m%get_last_edge_cell()\n" in output diff --git a/src/psyclone/tests/lfric_stubgen_test.py b/src/psyclone/tests/lfric_stubgen_test.py index bb0fde7ca5..1374d8767c 100644 --- a/src/psyclone/tests/lfric_stubgen_test.py +++ b/src/psyclone/tests/lfric_stubgen_test.py @@ -373,37 +373,36 @@ def test_any_spaces(fortran_writer): " public\n" "\n" " contains\n" - " subroutine dummy_code(nlayers, field_1_adspc1_field_1, " - "field_2_aspc7_field_2, field_3_adspc4_field_3, " - "ndf_adspc1_field_1, undf_adspc1_field_1, map_adspc1_field_1, " - "ndf_aspc7_field_2, undf_aspc7_field_2, map_aspc7_field_2, " - "ndf_adspc4_field_3, undf_adspc4_field_3, map_adspc4_field_3)\n" + " subroutine dummy_code(nlayers, field_1_ads1_fd_1, " + "field_2_as7_fd_2, field_3_ads4_fd_3, " + "ndf_ads1_fd_1, undf_ads1_fd_1, map_ads1_fd_1, " + "ndf_as7_fd_2, undf_as7_fd_2, map_as7_fd_2, " + "ndf_ads4_fd_3, undf_ads4_fd_3, map_ads4_fd_3)\n" " use constants_mod\n" " integer(kind=i_def), intent(in) :: nlayers\n" - " integer(kind=i_def), intent(in) :: ndf_adspc1_field_1\n" + " integer(kind=i_def), intent(in) :: ndf_ads1_fd_1\n" " integer(kind=i_def), dimension(" - "ndf_adspc1_field_1), intent(in) :: map_adspc1_field_1\n" - " integer(kind=i_def), intent(in) :: ndf_adspc4_field_3\n" + "ndf_ads1_fd_1), intent(in) :: map_ads1_fd_1\n" + " integer(kind=i_def), intent(in) :: ndf_ads4_fd_3\n" " integer(kind=i_def), dimension(" - "ndf_adspc4_field_3), intent(in) :: map_adspc4_field_3\n" - " integer(kind=i_def), intent(in) :: ndf_aspc7_field_2\n" + "ndf_ads4_fd_3), intent(in) :: map_ads4_fd_3\n" + " integer(kind=i_def), intent(in) :: ndf_as7_fd_2\n" " integer(kind=i_def), " - "dimension(ndf_aspc7_field_2), intent(in) :: map_aspc7_field_2\n" - " integer(kind=i_def), intent(in) :: undf_adspc1_field_1\n" - " integer(kind=i_def), intent(in) :: undf_aspc7_field_2\n" - " integer(kind=i_def), intent(in) :: undf_adspc4_field_3\n" + "dimension(ndf_as7_fd_2), intent(in) :: map_as7_fd_2\n" + " integer(kind=i_def), intent(in) :: undf_ads1_fd_1\n" + " integer(kind=i_def), intent(in) :: undf_as7_fd_2\n" + " integer(kind=i_def), intent(in) :: undf_ads4_fd_3\n" " real(kind=r_def), dimension" - "(undf_adspc1_field_1), intent(in) :: field_1_adspc1_field_1\n" + "(undf_ads1_fd_1), intent(in) :: field_1_ads1_fd_1\n" " real(kind=r_def), dimension" - "(undf_aspc7_field_2), intent(inout) :: field_2_aspc7_field_2\n" + "(undf_as7_fd_2), intent(inout) :: field_2_as7_fd_2\n" " real(kind=r_def), dimension" - "(undf_adspc4_field_3), intent(inout) :: field_3_adspc4_field_3\n" - "\n" - "\n" + "(undf_ads4_fd_3), intent(inout) :: field_3_ads4_fd_3\n" " end subroutine dummy_code\n" - "\n" "end module dummy_mod\n") - assert output == generated_code + for line in output.split("\n"): + if line: + assert line in generated_code, line # Fields : vectors @@ -492,26 +491,28 @@ def test_enforce_bc_kernel_stub_gen(fortran_writer): " public\n" "\n" " contains\n" - " subroutine enforce_bc_code(nlayers, field_1_aspc1_field_1, " - "ndf_aspc1_field_1, undf_aspc1_field_1, map_aspc1_field_1, " + " subroutine enforce_bc_code(nlayers, field_1_as1_fd_1, " + "ndf_as1_fd_1, undf_as1_fd_1, map_as1_fd_1, " "boundary_dofs_field_1)\n" " use constants_mod\n" " integer(kind=i_def), intent(in) :: nlayers\n" - " integer(kind=i_def), intent(in) :: ndf_aspc1_field_1\n" + " integer(kind=i_def), intent(in) :: ndf_as1_fd_1\n" " integer(kind=i_def), " - "dimension(ndf_aspc1_field_1), intent(in) :: map_aspc1_field_1\n" - " integer(kind=i_def), intent(in) :: undf_aspc1_field_1\n" + "dimension(ndf_as1_fd_1), intent(in) :: map_as1_fd_1\n" + " integer(kind=i_def), intent(in) :: undf_as1_fd_1\n" " real(kind=r_def), " - "dimension(undf_aspc1_field_1), intent(inout) :: field_1_aspc1_field_1" + "dimension(undf_as1_fd_1), intent(inout) :: field_1_as1_fd_1" "\n" " integer(kind=i_def), " - "dimension(ndf_aspc1_field_1,2), intent(in) :: boundary_dofs_field_1\n" + "dimension(ndf_as1_fd_1,2), intent(in) :: boundary_dofs_field_1\n" "\n" "\n" " end subroutine enforce_bc_code\n" "\n" "end module enforce_bc_mod\n") - assert output == generated_code + for line in output.split("\n"): + if line: + assert line in generated_code, line def test_enforce_op_bc_kernel_stub_gen(fortran_writer): @@ -533,18 +534,18 @@ def test_enforce_op_bc_kernel_stub_gen(fortran_writer): "\n" " contains\n" " subroutine enforce_operator_bc_code(cell, nlayers, " - "op_1_ncell_3d, op_1, ndf_aspc1_op_1, ndf_aspc2_op_1, " + "op_1_ncell_3d, op_1, ndf_as1_op_1, ndf_as2_op_1, " "boundary_dofs_op_1)\n" " use constants_mod\n" " integer(kind=i_def), intent(in) :: nlayers\n" - " integer(kind=i_def), intent(in) :: ndf_aspc1_op_1\n" - " integer(kind=i_def), intent(in) :: ndf_aspc2_op_1\n" + " integer(kind=i_def), intent(in) :: ndf_as1_op_1\n" + " integer(kind=i_def), intent(in) :: ndf_as2_op_1\n" " integer(kind=i_def), intent(in) :: cell\n" " integer(kind=i_def), intent(in) :: op_1_ncell_3d\n" " real(kind=r_def), dimension(" - "op_1_ncell_3d,ndf_aspc1_op_1,ndf_aspc2_op_1), intent(inout) :: op_1\n" + "op_1_ncell_3d,ndf_as1_op_1,ndf_as2_op_1), intent(inout) :: op_1\n" " integer(kind=i_def), " - "dimension(ndf_aspc1_op_1,2), intent(in) :: boundary_dofs_op_1\n" + "dimension(ndf_as1_op_1,2), intent(in) :: boundary_dofs_op_1\n" "\n" "\n" " end subroutine enforce_operator_bc_code\n" diff --git a/src/psyclone/tests/lfric_test.py b/src/psyclone/tests/lfric_test.py index 5562a03094..713af740d2 100644 --- a/src/psyclone/tests/lfric_test.py +++ b/src/psyclone/tests/lfric_test.py @@ -340,26 +340,26 @@ def test_any_space_1(tmpdir): assert LFRicBuild(tmpdir).code_compiles(psy) - assert "integer(kind=i_def), pointer :: map_aspc1_a(:,:) => null()" in code - assert "integer(kind=i_def), pointer :: map_aspc2_b(:,:) => null()" in code + assert "integer(kind=i_def), pointer :: map_as1_a(:,:) => null()" in code + assert "integer(kind=i_def), pointer :: map_as2_b(:,:) => null()" in code assert "integer(kind=i_def), pointer :: map_w0(:,:) => null()" in code - assert "real(kind=r_def), allocatable :: basis_aspc1_a_qr(:,:,:,:)" in code - assert "real(kind=r_def), allocatable :: basis_aspc2_b_qr(:,:,:,:)" in code - assert ("ALLOCATE(basis_aspc1_a_qr(dim_aspc1_a,ndf_aspc1_a," - "np_xy_qr,np_z_qr))" in code) - assert ("ALLOCATE(basis_aspc2_b_qr(dim_aspc2_b,ndf_aspc2_b," - "np_xy_qr,np_z_qr))" in code) - assert "map_aspc1_a => a_proxy%vspace%get_whole_dofmap()" in code - assert "map_aspc2_b => b_proxy%vspace%get_whole_dofmap()" in code + assert "real(kind=r_def), allocatable :: basis_as1_a_qr(:,:,:,:)" in code + assert "real(kind=r_def), allocatable :: basis_as2_b_qr(:,:,:,:)" in code + assert ("ALLOCATE(basis_as1_a_qr(dim_as1_a,ndf_as1_a," + "np_xy_qr,np_z_qr))" in code), code + assert ("ALLOCATE(basis_as2_b_qr(dim_as2_b,ndf_as2_b," + "np_xy_qr,np_z_qr))" in code), code + assert "map_as1_a => a_proxy%vspace%get_whole_dofmap()" in code, code + assert "map_as2_b => b_proxy%vspace%get_whole_dofmap()" in code, code assert ("call testkern_any_space_1_code(nlayers_a, a_data, rdt, " "b_data, c_1_data, c_2_data, c_3_data, " - "ndf_aspc1_a, undf_aspc1_a, map_aspc1_a(:,cell), " - "basis_aspc1_a_qr, ndf_aspc2_b, undf_aspc2_b, " - "map_aspc2_b(:,cell), basis_aspc2_b_qr, ndf_w0, undf_w0, " + "ndf_as1_a, undf_as1_a, map_as1_a(:,cell), " + "basis_as1_a_qr, ndf_as2_b, undf_as2_b, " + "map_as2_b(:,cell), basis_as2_b_qr, ndf_w0, undf_w0, " "map_w0(:,cell), diff_basis_w0_qr, np_xy_qr, np_z_qr, " - "weights_xy_qr, weights_z_qr)" in code) - assert ("DEALLOCATE(basis_aspc1_a_qr, basis_aspc2_b_qr, diff_basis_w0_qr)" - in code) + "weights_xy_qr, weights_z_qr)" in code), code + assert ("DEALLOCATE(basis_as1_a_qr, basis_as2_b_qr, diff_basis_w0_qr)" + in code), code def test_any_space_2(tmpdir): @@ -376,17 +376,17 @@ def test_any_space_2(tmpdir): assert LFRicBuild(tmpdir).code_compiles(psy) assert "integer(kind=i_def), intent(in) :: istp" in generated_code - assert ("integer(kind=i_def), pointer :: map_aspc1_a(:,:) => null()" + assert ("integer(kind=i_def), pointer :: map_as1_a(:,:) => null()" in generated_code) - assert "integer(kind=i_def) :: ndf_aspc1_a" in generated_code - assert "integer(kind=i_def) :: undf_aspc1_a" in generated_code - assert "ndf_aspc1_a = a_proxy%vspace%get_ndf()" in generated_code - assert "undf_aspc1_a = a_proxy%vspace%get_undf()" in generated_code - assert ("map_aspc1_a => a_proxy%vspace%get_whole_dofmap()" + assert "integer(kind=i_def) :: ndf_as1_a" in generated_code + assert "integer(kind=i_def) :: undf_as1_a" in generated_code + assert "ndf_as1_a = a_proxy%vspace%get_ndf()" in generated_code + assert "undf_as1_a = a_proxy%vspace%get_undf()" in generated_code + assert ("map_as1_a => a_proxy%vspace%get_whole_dofmap()" in generated_code) assert ("call testkern_any_space_2_code(cell, nlayers_a, a_data, " "b_data, c_proxy%ncell_3d, c_local_stencil, istp, " - "ndf_aspc1_a, undf_aspc1_a, map_aspc1_a(:,cell))" + "ndf_as1_a, undf_as1_a, map_as1_a(:,cell))" in generated_code) @@ -402,8 +402,8 @@ def test_op_any_space_different_space_1(tmpdir): assert LFRicBuild(tmpdir).code_compiles(psy) - assert "ndf_aspc2_a = a_proxy%fs_from%get_ndf()" in generated_code - assert "ndf_aspc1_a = a_proxy%fs_to%get_ndf()" in generated_code + assert "ndf_as2_a = a_proxy%fs_from%get_ndf()" in generated_code + assert "ndf_as1_a = a_proxy%fs_to%get_ndf()" in generated_code def test_op_any_space_different_space_2(tmpdir): @@ -418,22 +418,22 @@ def test_op_any_space_different_space_2(tmpdir): assert LFRicBuild(tmpdir).code_compiles(psy) - assert "ndf_aspc1_b = b_proxy%fs_to%get_ndf()" in generated_code - assert "dim_aspc1_b = b_proxy%fs_to%get_dim_space()" in generated_code - assert "ndf_aspc2_b = b_proxy%fs_from%get_ndf()" in generated_code - assert "ndf_aspc3_c = c_proxy%fs_to%get_ndf()" in generated_code - assert "ndf_aspc4_d = d_proxy%fs_from%get_ndf()" in generated_code - assert "undf_aspc4_d = d_proxy%fs_from%get_undf()" in generated_code - assert "dim_aspc4_d = d_proxy%fs_from%get_dim_space()" in generated_code - assert "ndf_aspc5_a = a_proxy%vspace%get_ndf()" in generated_code - assert "undf_aspc5_a = a_proxy%vspace%get_undf()" in generated_code + assert "ndf_as1_b = b_proxy%fs_to%get_ndf()" in generated_code + assert "dim_as1_b = b_proxy%fs_to%get_dim_space()" in generated_code + assert "ndf_as2_b = b_proxy%fs_from%get_ndf()" in generated_code + assert "ndf_as3_c = c_proxy%fs_to%get_ndf()" in generated_code + assert "ndf_as4_d = d_proxy%fs_from%get_ndf()" in generated_code + assert "undf_as4_d = d_proxy%fs_from%get_undf()" in generated_code + assert "dim_as4_d = d_proxy%fs_from%get_dim_space()" in generated_code + assert "ndf_as5_a = a_proxy%vspace%get_ndf()" in generated_code + assert "undf_as5_a = a_proxy%vspace%get_undf()" in generated_code assert "call qr%compute_function(BASIS, b_proxy%fs_to, " in generated_code assert ("call qr%compute_function(BASIS, d_proxy%fs_from, " in generated_code) assert ("call qr%compute_function(DIFF_BASIS, d_proxy%fs_from, " in generated_code) - assert "map_aspc5_a => a_proxy%vspace%get_whole_dofmap()" in generated_code - assert "map_aspc4_d => f_proxy%vspace%get_whole_dofmap()" in generated_code + assert "map_as5_a => a_proxy%vspace%get_whole_dofmap()" in generated_code + assert "map_as4_d => f_proxy%vspace%get_whole_dofmap()" in generated_code def test_op_any_discontinuous_space_1(tmpdir): @@ -452,23 +452,23 @@ def test_op_any_discontinuous_space_1(tmpdir): assert LFRicBuild(tmpdir).code_compiles(psy) assert "real(kind=r_def), intent(in) :: rdt" in generated_code - assert ("integer(kind=i_def), pointer :: map_adspc1_f1(:,:) => null()" + assert ("integer(kind=i_def), pointer :: map_ads1_f1(:,:) => null()" in generated_code) - assert "integer(kind=i_def) :: ndf_adspc1_f1" in generated_code - assert "integer(kind=i_def) :: undf_adspc1_f1" in generated_code - assert "ndf_adspc1_f1 = f1_proxy(1)%vspace%get_ndf()" in generated_code - assert "undf_adspc1_f1 = f1_proxy(1)%vspace%get_undf()" in generated_code - assert ("map_adspc1_f1 => f1_proxy(1)%vspace%get_whole_dofmap()" + assert "integer(kind=i_def) :: ndf_ads1_f1" in generated_code + assert "integer(kind=i_def) :: undf_ads1_f1" in generated_code + assert "ndf_ads1_f1 = f1_proxy(1)%vspace%get_ndf()" in generated_code + assert "undf_ads1_f1 = f1_proxy(1)%vspace%get_undf()" in generated_code + assert ("map_ads1_f1 => f1_proxy(1)%vspace%get_whole_dofmap()" in generated_code) - assert "ndf_adspc3_op4 = op4_proxy%fs_to%get_ndf()" in generated_code - assert "ndf_adspc7_op4 = op4_proxy%fs_from%get_ndf()" in generated_code + assert "ndf_ads3_o4 = op4_proxy%fs_to%get_ndf()" in generated_code + assert "ndf_ads7_o4 = op4_proxy%fs_from%get_ndf()" in generated_code assert ("call testkern_any_discontinuous_space_op_1_code(cell, " "nlayers_f1, f1_1_data, f1_2_data, f1_3_data, " "f2_data, op3_proxy%ncell_3d, op3_local_stencil, " "op4_proxy%ncell_3d, op4_local_stencil, rdt, " - "ndf_adspc1_f1, undf_adspc1_f1, map_adspc1_f1(:,cell), " - "ndf_adspc2_f2, undf_adspc2_f2, map_adspc2_f2(:,cell), " - "ndf_adspc3_op4, ndf_adspc7_op4)" in generated_code) + "ndf_ads1_f1, undf_ads1_f1, map_ads1_f1(:,cell), " + "ndf_ads2_f2, undf_ads2_f2, map_ads2_f2(:,cell), " + "ndf_ads3_o4, ndf_ads7_o4)" in generated_code) def test_op_any_discontinuous_space_2(tmpdir): @@ -485,23 +485,23 @@ def test_op_any_discontinuous_space_2(tmpdir): assert LFRicBuild(tmpdir).code_compiles(psy) - assert "ndf_adspc4_f1 = f1_proxy%vspace%get_ndf()" in generated_code - assert "undf_adspc4_f1 = f1_proxy%vspace%get_undf()" in generated_code - assert ("map_adspc4_f1 => f1_proxy%vspace%get_whole_dofmap()" + assert "ndf_ads4_f1 = f1_proxy%vspace%get_ndf()" in generated_code + assert "undf_ads4_f1 = f1_proxy%vspace%get_undf()" in generated_code + assert ("map_ads4_f1 => f1_proxy%vspace%get_whole_dofmap()" in generated_code) - assert "ndf_adspc1_op1 = op1_proxy%fs_to%get_ndf()" in generated_code - assert "ndf_adspc2_op1 = op1_proxy%fs_from%get_ndf()" in generated_code - assert "dim_adspc4_f1 = f1_proxy%vspace%get_dim_space()" in generated_code - assert ("diff_dim_adspc4_f1 = f1_proxy%vspace%get_dim_space_diff()" + assert "ndf_ads1_o1 = op1_proxy%fs_to%get_ndf()" in generated_code + assert "ndf_ads2_o1 = op1_proxy%fs_from%get_ndf()" in generated_code + assert "dim_ads4_f1 = f1_proxy%vspace%get_dim_space()" in generated_code + assert ("diff_dim_ads4_f1 = f1_proxy%vspace%get_dim_space_diff()" in generated_code) - assert ("ALLOCATE(basis_adspc1_op1_qr(dim_adspc1_op1,ndf_adspc1_op1" + assert ("ALLOCATE(basis_ads1_o1_qr(dim_ads1_o1,ndf_ads1_o1" in generated_code) - assert ("ALLOCATE(diff_basis_adspc4_f1_qr(diff_dim_adspc4_f1," - "ndf_adspc4_f1" in generated_code) - assert ("call qr%compute_function(BASIS, op1_proxy%fs_to, dim_adspc1_op1, " - "ndf_adspc1_op1, basis_adspc1_op1_qr)" in generated_code) + assert ("ALLOCATE(diff_basis_ads4_f1_qr(diff_dim_ads4_f1," + "ndf_ads4_f1" in generated_code) + assert ("call qr%compute_function(BASIS, op1_proxy%fs_to, dim_ads1_o1, " + "ndf_ads1_o1, basis_ads1_o1_qr)" in generated_code) assert ("call qr%compute_function(DIFF_BASIS, f1_proxy%vspace, " - "diff_dim_adspc4_f1, ndf_adspc4_f1, diff_basis_adspc4_f1_qr)" + "diff_dim_ads4_f1, ndf_ads4_f1, diff_basis_ads4_f1_qr)" in generated_code) @@ -824,8 +824,8 @@ def test_field_bc_kernel(tmpdir): assert ("integer(kind=i_def), pointer :: boundary_dofs_a(:,:) => " "null()" in code) assert "boundary_dofs_a => a_proxy%vspace%get_boundary_dofs()" in code - assert ("call enforce_bc_code(nlayers_a, a_data, ndf_aspc1_a, " - "undf_aspc1_a, map_aspc1_a(:,cell), boundary_dofs_a)" + assert ("call enforce_bc_code(nlayers_a, a_data, ndf_as1_a, " + "undf_as1_a, map_as1_a(:,cell), boundary_dofs_a)" in code) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -979,19 +979,19 @@ def test_2kern_invoke_any_space(tmpdir): assert LFRicBuild(tmpdir).code_compiles(psy) - assert "integer(kind=i_def), pointer :: map_aspc1_f1(:,:) => null()" in gen - assert "integer(kind=i_def), pointer :: map_aspc1_f2(:,:) => null()" in gen - assert "map_aspc1_f1 => f1_proxy%vspace%get_whole_dofmap()\n" in gen - assert "map_aspc1_f2 => f2_proxy%vspace%get_whole_dofmap()\n" in gen + assert "integer(kind=i_def), pointer :: map_as1_f1(:,:) => null()" in gen + assert "integer(kind=i_def), pointer :: map_as1_f2(:,:) => null()" in gen + assert "map_as1_f1 => f1_proxy%vspace%get_whole_dofmap()\n" in gen + assert "map_as1_f2 => f2_proxy%vspace%get_whole_dofmap()\n" in gen assert ( " call testkern_any_space_2_code(cell, nlayers_f1, f1_data," " f2_data, op_proxy%ncell_3d, op_local_stencil, scalar, " - "ndf_aspc1_f1, undf_aspc1_f1, map_aspc1_f1(:,cell))\n" in gen) - assert "map_aspc1_f2 => f2_proxy%vspace%get_whole_dofmap()\n" in gen + "ndf_as1_f1, undf_as1_f1, map_as1_f1(:,cell))\n" in gen) + assert "map_as1_f2 => f2_proxy%vspace%get_whole_dofmap()\n" in gen assert ( " call testkern_any_space_2_code(cell, nlayers_f2, f2_data," " f1_data, op_proxy%ncell_3d, op_local_stencil, scalar, " - "ndf_aspc1_f2, undf_aspc1_f2, map_aspc1_f2(:,cell))\n" in gen) + "ndf_as1_f2, undf_as1_f2, map_as1_f2(:,cell))\n" in gen) def test_multikern_invoke_any_space(tmpdir): @@ -1007,38 +1007,38 @@ def test_multikern_invoke_any_space(tmpdir): assert LFRicBuild(tmpdir).code_compiles(psy) - assert "integer(kind=i_def), pointer :: map_aspc1_f1(:,:) => null()" in gen - assert "integer(kind=i_def), pointer :: map_aspc1_f2(:,:) => null()" in gen - assert "integer(kind=i_def), pointer :: map_aspc2_f1(:,:) => null()" in gen + assert "integer(kind=i_def), pointer :: map_as1_f1(:,:) => null()" in gen + assert "integer(kind=i_def), pointer :: map_as1_f2(:,:) => null()" in gen + assert "integer(kind=i_def), pointer :: map_as2_f1(:,:) => null()" in gen assert "integer(kind=i_def), pointer :: map_w0(:,:) => null()" in gen assert ( - "real(kind=r_def), allocatable :: basis_aspc1_f1_qr(:,:,:,:)") in gen + "real(kind=r_def), allocatable :: basis_as1_f1_qr(:,:,:,:)") in gen assert ( - "real(kind=r_def), allocatable :: basis_aspc1_f2_qr(:,:,:,:)") in gen + "real(kind=r_def), allocatable :: basis_as1_f2_qr(:,:,:,:)") in gen assert ( - "real(kind=r_def), allocatable :: basis_aspc2_f1_qr(:,:,:,:)") in gen + "real(kind=r_def), allocatable :: basis_as2_f1_qr(:,:,:,:)") in gen assert ( - "real(kind=r_def), allocatable :: basis_aspc2_f2_qr(:,:,:,:)") in gen + "real(kind=r_def), allocatable :: basis_as2_f2_qr(:,:,:,:)") in gen assert ( "real(kind=r_def), allocatable :: diff_basis_w0_qr(:,:,:,:)") in gen - assert "ndf_aspc1_f1 = f1_proxy%vspace%get_ndf()" in gen - assert "ndf_aspc2_f2 = f2_proxy%vspace%get_ndf()" in gen + assert "ndf_as1_f1 = f1_proxy%vspace%get_ndf()" in gen + assert "ndf_as2_f2 = f2_proxy%vspace%get_ndf()" in gen assert "ndf_w0 = f3_proxy(1)%vspace%get_ndf()" in gen - assert "ndf_aspc1_f2 = f2_proxy%vspace%get_ndf()" in gen + assert "ndf_as1_f2 = f2_proxy%vspace%get_ndf()" in gen assert ("call qr%compute_function(BASIS, f2_proxy%vspace, " - "dim_aspc1_f2, ndf_aspc1_f2, basis_aspc1_f2_qr)" in gen) + "dim_as1_f2, ndf_as1_f2, basis_as1_f2_qr)" in gen) assert ( - " map_aspc1_f1 => f1_proxy%vspace%get_whole_dofmap()\n" - " map_aspc2_f2 => f2_proxy%vspace%get_whole_dofmap()\n" + " map_as1_f1 => f1_proxy%vspace%get_whole_dofmap()\n" + " map_as2_f2 => f2_proxy%vspace%get_whole_dofmap()\n" " map_w0 => f3_proxy(1)%vspace%get_whole_dofmap()\n" - " map_aspc1_f2 => f2_proxy%vspace%get_whole_dofmap()\n" - " map_aspc2_f1 => f1_proxy%vspace%get_whole_dofmap()\n" + " map_as1_f2 => f2_proxy%vspace%get_whole_dofmap()\n" + " map_as2_f1 => f1_proxy%vspace%get_whole_dofmap()\n" in gen) assert ("call testkern_any_space_1_code(nlayers_f1, f1_data, rdt, " "f2_data, f3_1_data, f3_2_data, " - "f3_3_data, ndf_aspc1_f1, undf_aspc1_f1, " - "map_aspc1_f1(:,cell), basis_aspc1_f1_qr, ndf_aspc2_f2, " - "undf_aspc2_f2, map_aspc2_f2(:,cell), basis_aspc2_f2_qr, ndf_w0, " + "f3_3_data, ndf_as1_f1, undf_as1_f1, " + "map_as1_f1(:,cell), basis_as1_f1_qr, ndf_as2_f2, " + "undf_as2_f2, map_as2_f2(:,cell), basis_as2_f2_qr, ndf_w0, " "undf_w0, map_w0(:,cell), diff_basis_w0_qr, np_xy_qr, np_z_qr, " "weights_xy_qr, weights_z_qr" in gen) @@ -1056,37 +1056,37 @@ def test_mkern_invoke_multiple_any_spaces(tmpdir): assert LFRicBuild(tmpdir).code_compiles(psy) - assert "ndf_aspc1_f1 = f1_proxy%vspace%get_ndf()" in gen + assert "ndf_as1_f1 = f1_proxy%vspace%get_ndf()" in gen assert ("call qr%compute_function(BASIS, f1_proxy%vspace, " - "dim_aspc1_f1, ndf_aspc1_f1, basis_aspc1_f1_qr)" in gen) - assert "ndf_aspc2_f2 = f2_proxy%vspace%get_ndf()" in gen + "dim_as1_f1, ndf_as1_f1, basis_as1_f1_qr)" in gen) + assert "ndf_as2_f2 = f2_proxy%vspace%get_ndf()" in gen assert ("call qr%compute_function(BASIS, f2_proxy%vspace, " - "dim_aspc2_f2, ndf_aspc2_f2, basis_aspc2_f2_qr)" in gen) - assert "ndf_aspc1_f2 = f2_proxy%vspace%get_ndf()" in gen - assert "ndf_aspc1_op = op_proxy%fs_to%get_ndf()" in gen - assert "ndf_aspc5_f2 = f2_proxy%vspace%get_ndf()" in gen - assert "ndf_aspc1_op2 = op2_proxy%fs_to%get_ndf()" in gen - assert "ndf_aspc3_op3 = op3_proxy%fs_to%get_ndf()" in gen - assert gen.count("ndf_aspc4_op4 = op4_proxy%fs_from%get_ndf()") == 1 - assert "ndf_aspc3_op5" not in gen - assert "ndf_aspc4_f1" not in gen + "dim_as2_f2, ndf_as2_f2, basis_as2_f2_qr)" in gen) + assert "ndf_as1_f2 = f2_proxy%vspace%get_ndf()" in gen + assert "ndf_as1_op = op_proxy%fs_to%get_ndf()" in gen + assert "ndf_as5_f2 = f2_proxy%vspace%get_ndf()" in gen + assert "ndf_as1_o2 = op2_proxy%fs_to%get_ndf()" in gen + assert "ndf_as3_o3 = op3_proxy%fs_to%get_ndf()" in gen + assert gen.count("ndf_as4_o4 = op4_proxy%fs_from%get_ndf()") == 1 + assert "ndf_as3_o5" not in gen + assert "ndf_as4_f1" not in gen # testkern_any_space_1_type requires GH_BASIS on ANY_SPACE_1 and 2 and # DIFF_BASIS on w0 # f1 is on ANY_SPACE_1 and f2 is on ANY_SPACE_2. f3 is on W0. assert ("call qr%compute_function(BASIS, f1_proxy%vspace, " - "dim_aspc1_f1, ndf_aspc1_f1, basis_aspc1_f1_qr)" in gen) + "dim_as1_f1, ndf_as1_f1, basis_as1_f1_qr)" in gen) assert ("call qr%compute_function(BASIS, f2_proxy%vspace, " - "dim_aspc2_f2, ndf_aspc2_f2, basis_aspc2_f2_qr)" in gen) + "dim_as2_f2, ndf_as2_f2, basis_as2_f2_qr)" in gen) # testkern_any_space_4_type needs GH_BASIS on ANY_SPACE_1 which is the # to-space of op2 assert ("call qr%compute_function(BASIS, op2_proxy%fs_to, " - "dim_aspc1_op2, ndf_aspc1_op2, basis_aspc1_op2_qr)" in gen) + "dim_as1_o2, ndf_as1_o2, basis_as1_o2_qr)" in gen) # Need GH_BASIS and DIFF_BASIS on ANY_SPACE_4 which is to/from-space # of op4 assert ("call qr%compute_function(BASIS, op4_proxy%fs_from, " - "dim_aspc4_op4, ndf_aspc4_op4, basis_aspc4_op4_qr)" in gen) + "dim_as4_o4, ndf_as4_o4, basis_as4_o4_qr)" in gen) assert ("call qr%compute_function(DIFF_BASIS, op4_proxy%fs_from, " - "diff_dim_aspc4_op4, ndf_aspc4_op4, diff_basis_aspc4_op4_qr)" + "diff_dim_as4_o4, ndf_as4_o4, diff_basis_as4_o4_qr)" in gen) @@ -2249,8 +2249,8 @@ def test_mangle_function_space(): fs_name = "any_space_2" mangled_name = FunctionSpace(fs_name, first_kernel.arguments).mangled_name short_name = FunctionSpace(fs_name, first_kernel.arguments).short_name - assert mangled_name == "aspc2_f2" - assert short_name == "aspc2" + assert mangled_name == "as2_f2" + assert short_name == "as2" # Test any_discontinuous_space _, invoke_info = parse( os.path.join(BASE_PATH, "11.4_any_discontinuous_space.f90"), @@ -2261,8 +2261,8 @@ def test_mangle_function_space(): fs_name = "any_discontinuous_space_1" mangled_name = FunctionSpace(fs_name, first_kernel.arguments).mangled_name short_name = FunctionSpace(fs_name, first_kernel.arguments).short_name - assert mangled_name == "adspc1_f1" - assert short_name == "adspc1" + assert mangled_name == "ads1_f1" + assert short_name == "ads1" def test_no_mangle_specified_function_space(): @@ -2300,6 +2300,22 @@ def test_no_mangle_specified_function_space(): in str(excinfo.value)) +@pytest.mark.parametrize( + "name, shortened", + [("something_nasty_in_the_woodshead", "sg_ny_in_te_wd"), + ("something_o_nasty", "sg_o_ny"), + ("short", "st"), + ("diff_basis_as1_blah", "df_bs_a1_bh"), + ("basis_as2_se_se_ae_on_as1_se_ae_w0_k0", + "bs_a2_se_se_ae_on_a1_se_ae_w0_k0")]) +def test_function_space_shorten_arg_name(name, shortened): + ''' + Test the _shorten_arg_name() method of FunctionSpace. + ''' + fs = FunctionSpace + assert fs._shorten_arg_name(name) == shortened + + def test_fsdescriptors_get_descriptor(): ''' Test that FSDescriptors.get_descriptor() raises the expected error when passed a function space for which there is no corresponding kernel