From 7040b7c31ffe01bbc1f3ee6a274b5ae74605e96a Mon Sep 17 00:00:00 2001 From: Sergi Siso Date: Mon, 3 Feb 2025 09:52:04 +0000 Subject: [PATCH] #1010 Rename gen_code variable to code in tests --- .../kernel_module_inline_trans_test.py | 9 +- .../lfric/lfric_cell_halo_kernels_test.py | 66 +- .../domain/lfric/lfric_domain_kernels_test.py | 58 +- .../domain/lfric/lfric_field_codegen_test.py | 24 +- src/psyclone/tests/dynamo0p3_basis_test.py | 598 +++++++++--------- src/psyclone/tests/dynamo0p3_lma_test.py | 24 +- .../tests/dynamo0p3_multigrid_test.py | 34 +- .../tests/dynamo0p3_quadrature_test.py | 32 +- src/psyclone/tests/dynamo0p3_stubgen_test.py | 8 +- src/psyclone/tests/dynamo0p3_test.py | 12 +- .../openacc/data_directive_test.py | 64 +- .../transformations/openmp/openmp_test.py | 10 +- .../profiling/nemo_profile_test.py | 16 +- .../tests/psyir/backend/fortran_test.py | 4 +- .../transformations/acc_kernels_trans_test.py | 10 +- 15 files changed, 484 insertions(+), 485 deletions(-) diff --git a/src/psyclone/tests/domain/common/transformations/kernel_module_inline_trans_test.py b/src/psyclone/tests/domain/common/transformations/kernel_module_inline_trans_test.py index 1440223239..9ea2104354 100644 --- a/src/psyclone/tests/domain/common/transformations/kernel_module_inline_trans_test.py +++ b/src/psyclone/tests/domain/common/transformations/kernel_module_inline_trans_test.py @@ -442,17 +442,16 @@ def test_module_inline_apply_transformation(tmpdir, fortran_writer): assert (kern_call.ancestor(Container).symbol_table. lookup("compute_cv_code").is_modulevar) - # We should see it in the output of both: - # - the backend - code = fortran_writer(schedule.root) + # Generate the code + code = str(psy.gen) assert 'subroutine compute_cv_code(i, j, cv, p, v)' in code # And the import has been remove from both, so check that the associated # use no longer exists assert 'use compute_cv_mod' not in code.lower() - # Do the gen_code check again because repeating the call resets some - # aspects and we need to see if the second call still works as expected + # Do the check again because repeating the call resets some aspects and we + # need to see if the second call still works as expected gen = str(psy.gen) assert 'subroutine compute_cv_code(i, j, cv, p, v)' in gen assert 'use compute_cv_mod' not in gen diff --git a/src/psyclone/tests/domain/lfric/lfric_cell_halo_kernels_test.py b/src/psyclone/tests/domain/lfric/lfric_cell_halo_kernels_test.py index 8510ecd916..4c2d7d6b43 100644 --- a/src/psyclone/tests/domain/lfric/lfric_cell_halo_kernels_test.py +++ b/src/psyclone/tests/domain/lfric/lfric_cell_halo_kernels_test.py @@ -107,39 +107,39 @@ def test_psy_gen_halo_kernel(dist_mem, tmpdir, fortran_writer): single kernel with operates_on=halo_cell_column. ''' psy, _ = get_invoke("1.4_into_halos_invoke.f90", TEST_API, dist_mem=dist_mem, idx=0) - gen_code = str(psy.gen).lower() + code = str(psy.gen).lower() # A halo kernel needs to look up the last halo column in the mesh. # Therefore we require a mesh object. if dist_mem: - assert "integer(kind=i_def), intent(in) :: hdepth" in gen_code + assert "integer(kind=i_def), intent(in) :: hdepth" in code - assert "type(mesh_type), pointer :: mesh => null()" in gen_code - assert "mesh => f1_proxy%vspace%get_mesh()" in gen_code + assert "type(mesh_type), pointer :: mesh => null()" in code + assert "mesh => f1_proxy%vspace%get_mesh()" in code # Loop must be over halo cells only - assert "loop0_start = mesh%get_last_edge_cell() + 1" in gen_code + assert "loop0_start = mesh%get_last_edge_cell() + 1" in code assert ("loop0_stop = mesh%get_last_halo_cell(hdepth)" - in gen_code) + in code) assert (" do cell = loop0_start, loop0_stop, 1\n" " call testkern_halo_only_code(nlayers_f1, a, " "f1_data, f2_data, m1_data, m2_data, ndf_w1, undf_w1, " "map_w1(:,cell), ndf_w2, undf_w2, map_w2(:,cell), ndf_w3, " "undf_w3, map_w3(:,cell))" - in gen_code) + in code) # Check for appropriate set-dirty/clean calls. Outermost halo remains # dirty because field being updated is on continuous function space. assert (" call f1_proxy%set_dirty()\n" - " call f1_proxy%set_clean(hdepth - 1)" in gen_code) + " call f1_proxy%set_clean(hdepth - 1)" in code) else: # No distributed memory so no halo region => no halo depths passed # from Alg layer. assert (" subroutine invoke_0_testkern_halo_only_type" - "(a, f1, f2, m1, m2)" in gen_code) - assert "integer, intent(in) :: hdepth" not in gen_code + "(a, f1, f2, m1, m2)" in code) + assert "integer, intent(in) :: hdepth" not in code # Kernel is not called. - assert "call testkern_halo_only_code( " not in gen_code + assert "call testkern_halo_only_code( " not in code assert LFRicBuild(tmpdir).code_compiles(psy) @@ -170,12 +170,12 @@ def test_psy_gen_domain_two_kernel(dist_mem, tmpdir): ''' psy, _ = get_invoke("1.4.1_into_halos_plus_domain_invoke.f90", TEST_API, dist_mem=dist_mem, idx=0) - gen_code = str(psy.gen).lower() + code = str(psy.gen).lower() if dist_mem: - assert "mesh => f1_proxy%vspace%get_mesh()" in gen_code + assert "mesh => f1_proxy%vspace%get_mesh()" in code - assert "integer(kind=i_def) :: ncell_2d_no_halos" in gen_code + assert "integer(kind=i_def) :: ncell_2d_no_halos" in code expected = "" if dist_mem: @@ -189,11 +189,11 @@ def test_psy_gen_domain_two_kernel(dist_mem, tmpdir): expected += ( " call testkern_domain_code(nlayers_f1, ncell_2d_no_halos, a, " "f1_data, ndf_w3, undf_w3, map_w3)\n") - assert expected in gen_code + assert expected in code if dist_mem: assert (" ! set halos dirty/clean for fields modified in the " "above loop(s)\n" - " call f1_proxy%set_dirty()\n" in gen_code) + " call f1_proxy%set_dirty()\n" in code) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -207,10 +207,10 @@ def test_psy_gen_halo_kernel_discontinuous_space(dist_mem, tmpdir): ''' psy, _ = get_invoke("1.4.2_multi_into_halos_invoke.f90", TEST_API, dist_mem=dist_mem, idx=0) - gen_code = str(psy.gen).lower() + code = str(psy.gen).lower() if dist_mem: - assert "integer(kind=i_def), intent(in) :: hdepth" in gen_code - assert "integer(kind=i_def), intent(in) :: other_depth" in gen_code + assert "integer(kind=i_def), intent(in) :: hdepth" in code + assert "integer(kind=i_def), intent(in) :: other_depth" in code # The halo-only kernel updates a field on a continuous function space # and thus leaves the outermost halo cell dirty. @@ -221,7 +221,7 @@ def test_psy_gen_halo_kernel_discontinuous_space(dist_mem, tmpdir): ! set halos dirty/clean for fields modified in the above loop(s) call f1_proxy%set_dirty() - call f1_proxy%set_clean(hdepth - 1)''' in gen_code + call f1_proxy%set_clean(hdepth - 1)''' in code # testkern_code is a 'normal' kernel and thus leaves all halo cells # dirty. @@ -231,7 +231,7 @@ def test_psy_gen_halo_kernel_discontinuous_space(dist_mem, tmpdir): enddo ! set halos dirty/clean for fields modified in the above loop(s) - call f1_proxy%set_dirty()''' in gen_code + call f1_proxy%set_dirty()''' in code # testkern_halo_and_owned_code operates in the halo for a field on a # discontinuous function space and therefore the halo is left clean to @@ -243,18 +243,18 @@ def test_psy_gen_halo_kernel_discontinuous_space(dist_mem, tmpdir): ! set halos dirty/clean for fields modified in the above loop(s) call f1_proxy%set_dirty() - call f1_proxy%set_clean(other_depth)''' in gen_code + call f1_proxy%set_clean(other_depth)''' in code else: # No distributed memory. # => no halo depths to pass from Algorithm layer. - assert "integer(kind=i_def), intent(in) :: hdepth" not in gen_code - assert "integer(kind=i_def), intent(in) :: other_depth" not in gen_code + assert "integer(kind=i_def), intent(in) :: hdepth" not in code + assert "integer(kind=i_def), intent(in) :: other_depth" not in code # => no halos so no need to call a kernel which only operates on # halo cells. - assert "call testkern_halo_only_code(" not in gen_code + assert "call testkern_halo_only_code(" not in code # However, a kernel that operates on owned *and* halo cells must still # be called. - assert "call testkern_halo_and_owned_code(nlayers_f1, a" in gen_code + assert "call testkern_halo_and_owned_code(nlayers_f1, a" in code assert LFRicBuild(tmpdir).code_compiles(psy) @@ -267,23 +267,23 @@ def test_psy_gen_halo_kernel_literal_depths(dist_mem, tmpdir): ''' psy, _ = get_invoke("1.4.3_literal_depth_into_halos_invoke.f90", TEST_API, dist_mem=dist_mem, idx=0) - gen_code = str(psy.gen).lower() + code = str(psy.gen).lower() if dist_mem: # Make sure we aren't attempting to specify literal values in the # argument list to the PSy-layer routine. - assert "subroutine invoke_0(a, f1, f2, m1, m2, hdepth)" in gen_code + assert "subroutine invoke_0(a, f1, f2, m1, m2, hdepth)" in code # First kernel operates into the halo to a depth of '2' but updates a # field on a continuous function space so only the level-1 halo is # left clean. assert '''call f1_proxy%set_dirty() - call f1_proxy%set_clean(1)''' in gen_code + call f1_proxy%set_clean(1)''' in code assert '''call f1_proxy%set_dirty() - call f1_proxy%set_clean(hdepth)''' in gen_code + call f1_proxy%set_clean(hdepth)''' in code assert '''call f1_proxy%set_dirty() - call f1_proxy%set_clean(5)''' in gen_code + call f1_proxy%set_clean(5)''' in code else: - assert "call testkern_halo_only_code(" not in gen_code - assert "call testkern_halo_and_owned_code(nlayers_f1, a" in gen_code + assert "call testkern_halo_only_code(" not in code + assert "call testkern_halo_and_owned_code(nlayers_f1, a" in code assert LFRicBuild(tmpdir).code_compiles(psy) diff --git a/src/psyclone/tests/domain/lfric/lfric_domain_kernels_test.py b/src/psyclone/tests/domain/lfric/lfric_domain_kernels_test.py index 571f6e022f..95f693e03b 100644 --- a/src/psyclone/tests/domain/lfric/lfric_domain_kernels_test.py +++ b/src/psyclone/tests/domain/lfric/lfric_domain_kernels_test.py @@ -283,19 +283,19 @@ def test_psy_gen_domain_kernel(dist_mem, tmpdir, fortran_writer): _, info = parse(os.path.join(BASE_PATH, "25.0_domain.f90"), api=TEST_API) psy = PSyFactory(TEST_API, distributed_memory=dist_mem).create(info) - gen_code = str(psy.gen).lower() + code = str(psy.gen).lower() # A domain kernel needs the number of columns in the mesh. Therefore # we require a mesh object. - assert "type(mesh_type), pointer :: mesh => null()" in gen_code - assert "mesh => f1_proxy%vspace%get_mesh()" in gen_code - assert "integer(kind=i_def) :: ncell_2d_no_halos" in gen_code - assert "ncell_2d_no_halos = mesh%get_last_edge_cell()" in gen_code + assert "type(mesh_type), pointer :: mesh => null()" in code + assert "mesh => f1_proxy%vspace%get_mesh()" in code + assert "integer(kind=i_def) :: ncell_2d_no_halos" in code + assert "ncell_2d_no_halos = mesh%get_last_edge_cell()" in code # Kernel call should include whole dofmap and not be within a loop assert (" call testkern_domain_code(nlayers_f1, ncell_2d_no_halos, " - "b, f1_data, ndf_w3, undf_w3, map_w3)" in gen_code) - assert "do " not in gen_code + "b, f1_data, ndf_w3, undf_w3, map_w3)" in code) + assert "do " not in code assert LFRicBuild(tmpdir).code_compiles(psy) @@ -307,10 +307,10 @@ def test_psy_gen_domain_two_kernel(dist_mem, tmpdir): _, info = parse(os.path.join(BASE_PATH, "25.1_2kern_domain.f90"), api=TEST_API) psy = PSyFactory(TEST_API, distributed_memory=dist_mem).create(info) - gen_code = str(psy.gen).lower() + code = str(psy.gen).lower() - assert "mesh => f2_proxy%vspace%get_mesh()" in gen_code - assert "integer(kind=i_def) :: ncell_2d_no_halos" in gen_code + assert "mesh => f2_proxy%vspace%get_mesh()" in code + assert "integer(kind=i_def) :: ncell_2d_no_halos" in code expected = ( " enddo\n") @@ -323,12 +323,12 @@ def test_psy_gen_domain_two_kernel(dist_mem, tmpdir): expected += ( " call testkern_domain_code(nlayers_f1, ncell_2d_no_halos, b, " "f1_data, ndf_w3, undf_w3, map_w3)\n") - assert expected in gen_code + assert expected in code if dist_mem: assert ( # " ! set halos dirty/clean for fields modified in the " # "above kernel\n" - " call f1_proxy%set_dirty()\n" in gen_code) + " call f1_proxy%set_dirty()\n" in code) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -341,16 +341,16 @@ def test_psy_gen_domain_multi_kernel(dist_mem, tmpdir): _, info = parse(os.path.join(BASE_PATH, "25.2_multikern_domain.f90"), api=TEST_API) psy = PSyFactory(TEST_API, distributed_memory=dist_mem).create(info) - gen_code = str(psy.gen).lower() + code = str(psy.gen).lower() # Check that we only have one last-edge-cell assignment - assert gen_code.count("ncell_2d_no_halos = mesh%get_last_edge_cell()") == 1 + assert code.count("ncell_2d_no_halos = mesh%get_last_edge_cell()") == 1 expected = ( " call testkern_domain_code(nlayers_f1, ncell_2d_no_halos, " "b, f1_data, ndf_w3, undf_w3, map_w3)\n") if dist_mem: - assert "loop1_stop = mesh%get_last_halo_cell(1)\n" in gen_code + assert "loop1_stop = mesh%get_last_halo_cell(1)\n" in code expected += ( "\n" " ! set halos dirty/clean for fields modified in " @@ -367,9 +367,9 @@ def test_psy_gen_domain_multi_kernel(dist_mem, tmpdir): " end if\n" " call f1_proxy%halo_exchange(depth=1)\n") else: - assert "loop1_stop = f2_proxy%vspace%get_ncell()\n" in gen_code + assert "loop1_stop = f2_proxy%vspace%get_ncell()\n" in code expected += " do cell = loop1_start, loop1_stop, 1\n" - assert expected in gen_code + assert expected in code expected = ( " enddo\n") @@ -382,14 +382,14 @@ def test_psy_gen_domain_multi_kernel(dist_mem, tmpdir): expected += ( " call testkern_domain_code(nlayers_f1, ncell_2d_no_halos, c, " "f1_data, ndf_w3, undf_w3, map_w3)\n") - assert expected in gen_code + assert expected in code if dist_mem: assert ( " ! set halos dirty/clean for fields modified in the " "above loop(s)\n" " call f5_proxy%set_dirty()\n" "\n" - " end subroutine invoke_0" in gen_code) + " end subroutine invoke_0" in code) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -402,17 +402,17 @@ def test_domain_plus_cma_kernels(dist_mem, tmpdir): _, info = parse(os.path.join(BASE_PATH, "25.3_multikern_domain_cma.f90"), api=TEST_API) psy = PSyFactory(TEST_API, distributed_memory=dist_mem).create(info) - gen_code = str(psy.gen).lower() - - assert "type(mesh_type), pointer :: mesh => null()" in gen_code - assert "integer(kind=i_def) :: ncell_2d" in gen_code - assert "integer(kind=i_def) :: ncell_2d_no_halos" in gen_code - assert "mesh => f1_proxy%vspace%get_mesh()" in gen_code - assert "ncell_2d = mesh%get_ncells_2d()" in gen_code - assert "ncell_2d_no_halos = mesh%get_last_edge_cell()" in gen_code + code = str(psy.gen).lower() + + assert "type(mesh_type), pointer :: mesh => null()" in code + assert "integer(kind=i_def) :: ncell_2d" in code + assert "integer(kind=i_def) :: ncell_2d_no_halos" in code + assert "mesh => f1_proxy%vspace%get_mesh()" in code + assert "ncell_2d = mesh%get_ncells_2d()" in code + assert "ncell_2d_no_halos = mesh%get_last_edge_cell()" in code assert ("call testkern_domain_code(nlayers_f1, ncell_2d_no_halos, b, " - "f1_data, ndf_w3, undf_w3, map_w3)" in gen_code) + "f1_data, ndf_w3, undf_w3, map_w3)" in code) assert ("call columnwise_op_asm_kernel_code(cell, nlayers_lma_op1, " - "ncell_2d, lma_op1_proxy%ncell_3d," in gen_code) + "ncell_2d, lma_op1_proxy%ncell_3d," in code) assert LFRicBuild(tmpdir).code_compiles(psy) 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 05c301da16..83845efe7b 100644 --- a/src/psyclone/tests/domain/lfric/lfric_field_codegen_test.py +++ b/src/psyclone/tests/domain/lfric/lfric_field_codegen_test.py @@ -962,11 +962,11 @@ def test_int_field_2qr_shapes(dist_mem, tmpdir): api=TEST_API) psy = PSyFactory(TEST_API, distributed_memory=dist_mem).create(invoke_info) assert LFRicBuild(tmpdir).code_compiles(psy) - gen_code = str(psy.gen) + code = str(psy.gen) # Check that the qr-related variables are all declared assert (" type(quadrature_xyoz_type), intent(in) :: qr_xyoz\n" " type(quadrature_face_type), intent(in) :: qr_face\n" - in gen_code) + in code) assert """ real(kind=r_def), allocatable :: basis_w2_qr_xyoz(:,:,:,:) real(kind=r_def), allocatable :: basis_w2_qr_face(:,:,:,:) @@ -976,11 +976,11 @@ def test_int_field_2qr_shapes(dist_mem, tmpdir): 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 gen_code +""" in code assert (" real(kind=r_def), pointer, dimension(:,:) :: " - "weights_xyz_qr_face => null()\n" in gen_code) - assert " integer(kind=i_def) :: np_xyz_qr_face\n" in gen_code - assert " integer(kind=i_def) :: nfaces_qr_face\n" in gen_code + "weights_xyz_qr_face => null()\n" in code) + assert " integer(kind=i_def) :: np_xyz_qr_face\n" in code + assert " integer(kind=i_def) :: nfaces_qr_face\n" in code assert ( " integer(kind=i_def) :: np_xy_qr_xyoz\n" " integer(kind=i_def) :: np_z_qr_xyoz\n" @@ -988,9 +988,9 @@ def test_int_field_2qr_shapes(dist_mem, tmpdir): "null()\n" " real(kind=r_def), pointer :: weights_z_qr_xyoz(:) => " "null()\n" - in gen_code) - assert "type(quadrature_face_proxy_type) :: qr_face_proxy\n" in gen_code - assert "type(quadrature_xyoz_proxy_type) :: qr_xyoz_proxy\n" in gen_code + in code) + assert "type(quadrature_face_proxy_type) :: qr_face_proxy\n" in code + 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," @@ -1001,7 +1001,7 @@ def test_int_field_2qr_shapes(dist_mem, tmpdir): "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" - in gen_code) + in code) assert (" call qr_xyoz%compute_function(BASIS, f3_proxy%vspace, " "dim_adspc1_f3, ndf_adspc1_f3, basis_adspc1_f3_qr_xyoz)\n" " call qr_xyoz%compute_function(DIFF_BASIS, " @@ -1011,7 +1011,7 @@ def test_int_field_2qr_shapes(dist_mem, tmpdir): "dim_adspc1_f3, ndf_adspc1_f3, basis_adspc1_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 gen_code) + "diff_basis_adspc1_f3_qr_face)\n" in code) # Check that the kernel call itself is correct assert ( "testkern_2qr_int_field_code(nlayers_f1, f1_data, " @@ -1023,7 +1023,7 @@ def test_int_field_2qr_shapes(dist_mem, tmpdir): "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, " "weights_xy_qr_xyoz, weights_z_qr_xyoz, nfaces_qr_face, " - "np_xyz_qr_face, weights_xyz_qr_face)\n" in gen_code) + "np_xyz_qr_face, weights_xyz_qr_face)\n" in code) # Tests for Invokes calling kernels that contain real- and diff --git a/src/psyclone/tests/dynamo0p3_basis_test.py b/src/psyclone/tests/dynamo0p3_basis_test.py index 0deacd9b03..da8d010648 100644 --- a/src/psyclone/tests/dynamo0p3_basis_test.py +++ b/src/psyclone/tests/dynamo0p3_basis_test.py @@ -186,49 +186,49 @@ def test_single_kern_eval(tmpdir): _, invoke_info = parse(os.path.join(BASE_PATH, "6.1_eval_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) # Check module declarations - assert "use constants_mod\n" in gen_code - assert "use field_mod, only : field_proxy_type, field_type" in gen_code + assert "use constants_mod\n" in code + assert "use field_mod, only : field_proxy_type, field_type" in code # Check subroutine declarations - assert " subroutine invoke_0_testkern_eval_type(f0, cmap)" in gen_code - assert " use testkern_eval_mod, only : testkern_eval_code" in gen_code - assert " use function_space_mod, only : BASIS, DIFF_BASIS" in gen_code - assert " type(field_type), intent(in) :: f0" in gen_code - assert " type(field_type), intent(in) :: cmap" in gen_code - assert " integer(kind=i_def) :: cell" in gen_code - assert " integer(kind=i_def) :: loop4_start" in gen_code - assert " integer(kind=i_def) :: loop4_stop" in gen_code - assert " integer(kind=i_def) :: df_nodal" in gen_code - assert " integer(kind=i_def) :: df_w0" in gen_code - assert " integer(kind=i_def) :: df_w1" in gen_code + assert " subroutine invoke_0_testkern_eval_type(f0, cmap)" in code + assert " use testkern_eval_mod, only : testkern_eval_code" in code + assert " use function_space_mod, only : BASIS, DIFF_BASIS" in code + assert " type(field_type), intent(in) :: f0" in code + assert " type(field_type), intent(in) :: cmap" in code + assert " integer(kind=i_def) :: cell" in code + assert " integer(kind=i_def) :: loop4_start" in code + assert " integer(kind=i_def) :: loop4_stop" in code + assert " integer(kind=i_def) :: df_nodal" in code + assert " integer(kind=i_def) :: df_w0" in code + assert " integer(kind=i_def) :: df_w1" in code assert (" real(kind=r_def), allocatable :: basis_w0_on_w0(:,:,:)" - in gen_code) + in code) assert (" real(kind=r_def), allocatable :: diff_basis_w1_on_w0(:,:,:)" - in gen_code) - assert " integer(kind=i_def) :: dim_w0" in gen_code - assert " integer(kind=i_def) :: diff_dim_w1" in gen_code + in code) + assert " integer(kind=i_def) :: dim_w0" in code + assert " integer(kind=i_def) :: diff_dim_w1" in code assert (" real(kind=r_def), pointer :: nodes_w0(:,:) => null()" - in gen_code) - assert " integer(kind=i_def) :: nlayers_f0" in gen_code + in code) + assert " integer(kind=i_def) :: nlayers_f0" in code assert ("real(kind=r_def), pointer, dimension(:) :: cmap_data => null()" - in gen_code) + in code) assert (" real(kind=r_def), pointer, dimension(:) :: f0_data => null()" - in gen_code) - assert " type(field_proxy_type) :: f0_proxy" in gen_code - assert " type(field_proxy_type) :: cmap_proxy" in gen_code + in code) + assert " type(field_proxy_type) :: f0_proxy" in code + assert " type(field_proxy_type) :: cmap_proxy" in code assert (" integer(kind=i_def), pointer :: map_w0(:,:) => null()" - in gen_code) + in code) assert (" integer(kind=i_def), pointer :: map_w1(:,:) => null()" - in gen_code) - assert " integer(kind=i_def) :: ndf_w0" in gen_code - assert " integer(kind=i_def) :: undf_w0" in gen_code - assert " integer(kind=i_def) :: ndf_w1" in gen_code - assert " integer(kind=i_def) :: undf_w1" in gen_code + in code) + assert " integer(kind=i_def) :: ndf_w0" in code + assert " integer(kind=i_def) :: undf_w0" in code + assert " integer(kind=i_def) :: ndf_w1" in code + assert " integer(kind=i_def) :: undf_w1" in code # Second, check the executable statements expected_code = ( "\n" @@ -288,13 +288,13 @@ def test_single_kern_eval(tmpdir): "ndf_w1, undf_w1, map_w1(:,cell), diff_basis_w1_on_w0)\n" " enddo\n" ) - assert expected_code in gen_code + assert expected_code in code dealloc_code = ( " DEALLOCATE(basis_w0_on_w0, diff_basis_w1_on_w0)\n" "\n" " end subroutine invoke_0_testkern_eval_type\n" ) - assert dealloc_code in gen_code + assert dealloc_code in code def test_single_kern_eval_op(tmpdir): @@ -304,40 +304,40 @@ def test_single_kern_eval_op(tmpdir): _, invoke_info = parse(os.path.join(BASE_PATH, "6.1.1_eval_op_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) # Kernel writes to an operator, the 'to' space of which is W0. Kernel # requires basis on W2 ('from'-space of operator) and diff-basis on # W3 (space of the field). - assert "use function_space_mod, only : BASIS, DIFF_BASIS" in gen_code - assert "type(field_type), intent(in) :: f1" in gen_code - assert "type(operator_type), intent(in) :: op1" in gen_code - assert "integer(kind=i_def) :: cell" in gen_code - assert "integer(kind=i_def) :: loop4_start" in gen_code - assert "integer(kind=i_def) :: loop4_stop" in gen_code - assert "integer(kind=i_def) :: df_nodal" in gen_code - assert "integer(kind=i_def) :: df_w2" in gen_code - assert "integer(kind=i_def) :: df_w3" in gen_code - assert "real(kind=r_def), allocatable :: basis_w2_on_w0(:,:,:)" in gen_code + assert "use function_space_mod, only : BASIS, DIFF_BASIS" in code + assert "type(field_type), intent(in) :: f1" in code + assert "type(operator_type), intent(in) :: op1" in code + assert "integer(kind=i_def) :: cell" in code + assert "integer(kind=i_def) :: loop4_start" in code + assert "integer(kind=i_def) :: loop4_stop" in code + assert "integer(kind=i_def) :: df_nodal" in code + assert "integer(kind=i_def) :: df_w2" in code + assert "integer(kind=i_def) :: df_w3" in code + assert "real(kind=r_def), allocatable :: basis_w2_on_w0(:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w3_on_w0(:,:,:)" - in gen_code) - assert "integer(kind=i_def) :: dim_w2" in gen_code - assert "integer(kind=i_def) :: diff_dim_w3" in gen_code - assert "real(kind=r_def), pointer :: nodes_w0(:,:) => null()" in gen_code - assert "integer(kind=i_def) :: nlayers_op1" in gen_code + in code) + assert "integer(kind=i_def) :: dim_w2" in code + assert "integer(kind=i_def) :: diff_dim_w3" in code + assert "real(kind=r_def), pointer :: nodes_w0(:,:) => null()" in code + assert "integer(kind=i_def) :: nlayers_op1" in code assert ("real(kind=r_def), pointer, dimension(:,:,:) :: " - "op1_local_stencil => null()" in gen_code) - assert "type(operator_proxy_type) :: op1_proxy" in gen_code + "op1_local_stencil => null()" in code) + assert "type(operator_proxy_type) :: op1_proxy" in code assert ("real(kind=r_def), pointer, dimension(:) :: f1_data => null()" - in gen_code) - assert "type(field_proxy_type) :: f1_proxy" in gen_code - assert "integer(kind=i_def), pointer :: map_w3(:,:) => null()" in gen_code - assert "integer(kind=i_def) :: ndf_w0" in gen_code - assert "integer(kind=i_def) :: ndf_w2" in gen_code - assert "integer(kind=i_def) :: ndf_w3" in gen_code - assert "integer(kind=i_def) :: undf_w3" in gen_code + in code) + assert "type(field_proxy_type) :: f1_proxy" in code + assert "integer(kind=i_def), pointer :: map_w3(:,:) => null()" in code + assert "integer(kind=i_def) :: ndf_w0" in code + assert "integer(kind=i_def) :: ndf_w2" in code + assert "integer(kind=i_def) :: ndf_w3" in code + assert "integer(kind=i_def) :: undf_w3" in code init_output = ( " nodes_w0 => op1_proxy%fs_to%get_nodes()\n" "\n" @@ -361,8 +361,8 @@ def test_single_kern_eval_op(tmpdir): " enddo\n" " enddo\n" ) - assert init_output in gen_code - assert "loop4_stop = op1_proxy%fs_from%get_ncell()\n" in gen_code + assert init_output in code + assert "loop4_stop = op1_proxy%fs_from%get_ncell()\n" in code kern_call = ( " do cell = loop4_start, loop4_stop, 1\n" " call testkern_eval_op_code(cell, nlayers_op1, " @@ -370,8 +370,8 @@ def test_single_kern_eval_op(tmpdir): "basis_w2_on_w0, ndf_w3, undf_w3, map_w3(:,cell), " "diff_basis_w3_on_w0)\n" " enddo\n") - assert kern_call in gen_code - assert " DEALLOCATE(basis_w2_on_w0, diff_basis_w3_on_w0)\n" in gen_code + assert kern_call in code + assert " DEALLOCATE(basis_w2_on_w0, diff_basis_w3_on_w0)\n" in code def test_two_qr_same_shape(tmpdir): @@ -381,104 +381,104 @@ def test_two_qr_same_shape(tmpdir): "1.1.2_single_invoke_2qr.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) - assert "use constants_mod\n" in gen_code - assert "use field_mod, only : field_proxy_type, field_type" in gen_code + assert "use constants_mod\n" in code + assert "use field_mod, only : field_proxy_type, field_type" in code assert ("subroutine invoke_0(f1, f2, m1, a, m2, istp, g1, g2, n1, b, " - "n2, qr, qr2)" in gen_code) - assert "use testkern_qr_mod, only : testkern_qr_code" in gen_code + "n2, qr, qr2)" in code) + assert "use testkern_qr_mod, only : testkern_qr_code" in code assert ("use quadrature_xyoz_mod, only : quadrature_xyoz_proxy_type, " - "quadrature_xyoz_type" in gen_code) - assert "use function_space_mod, only : BASIS, DIFF_BASIS" in gen_code - assert "real(kind=r_def), intent(in) :: a" in gen_code - assert "real(kind=r_def), intent(in) :: b" in gen_code - assert "integer(kind=i_def), intent(in) :: istp" in gen_code - assert "type(field_type), intent(in) :: f1" in gen_code - assert "type(field_type), intent(in) :: f2" in gen_code - assert "type(field_type), intent(in) :: m1" in gen_code - assert "type(field_type), intent(in) :: m2" in gen_code - assert "type(field_type), intent(in) :: g1" in gen_code - assert "type(field_type), intent(in) :: g2" in gen_code - assert "type(field_type), intent(in) :: n1" in gen_code - assert "type(field_type), intent(in) :: n2" in gen_code - assert "type(quadrature_xyoz_type), intent(in) :: qr" in gen_code - assert "type(quadrature_xyoz_type), intent(in) :: qr2" in gen_code - assert "integer(kind=i_def) :: cell" in gen_code - assert "integer(kind=i_def) :: loop1_start" in gen_code - assert "integer(kind=i_def) :: loop1_stop" in gen_code - assert "integer(kind=i_def) :: loop0_start" in gen_code - assert "integer(kind=i_def) :: loop0_stop" in gen_code - assert "real(kind=r_def), allocatable :: basis_w1_qr(:,:,:,:)" in gen_code + "quadrature_xyoz_type" in code) + assert "use function_space_mod, only : BASIS, DIFF_BASIS" in code + assert "real(kind=r_def), intent(in) :: a" in code + assert "real(kind=r_def), intent(in) :: b" in code + assert "integer(kind=i_def), intent(in) :: istp" in code + assert "type(field_type), intent(in) :: f1" in code + assert "type(field_type), intent(in) :: f2" in code + assert "type(field_type), intent(in) :: m1" in code + assert "type(field_type), intent(in) :: m2" in code + assert "type(field_type), intent(in) :: g1" in code + assert "type(field_type), intent(in) :: g2" in code + assert "type(field_type), intent(in) :: n1" in code + assert "type(field_type), intent(in) :: n2" in code + assert "type(quadrature_xyoz_type), intent(in) :: qr" in code + assert "type(quadrature_xyoz_type), intent(in) :: qr2" in code + assert "integer(kind=i_def) :: cell" in code + assert "integer(kind=i_def) :: loop1_start" in code + assert "integer(kind=i_def) :: loop1_stop" in code + assert "integer(kind=i_def) :: loop0_start" in code + assert "integer(kind=i_def) :: loop0_stop" in code + assert "real(kind=r_def), allocatable :: basis_w1_qr(:,:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w2_qr(:,:,:,:)" - in gen_code) - assert "real(kind=r_def), allocatable :: basis_w3_qr(:,:,:,:)" in gen_code + in code) + assert "real(kind=r_def), allocatable :: basis_w3_qr(:,:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w3_qr(:,:,:,:)" - in gen_code) - assert "real(kind=r_def), allocatable :: basis_w1_qr2(:,:,:,:)" in gen_code + in code) + assert "real(kind=r_def), allocatable :: basis_w1_qr2(:,:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w2_qr2(:,:,:,:)" - in gen_code) - assert "real(kind=r_def), allocatable :: basis_w3_qr2(:,:,:,:)" in gen_code + in code) + assert "real(kind=r_def), allocatable :: basis_w3_qr2(:,:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w3_qr2(:,:,:,:)" - in gen_code) - assert "integer(kind=i_def) :: dim_w1" in gen_code - assert "integer(kind=i_def) :: diff_dim_w2" in gen_code - assert "integer(kind=i_def) :: dim_w3" in gen_code - assert "integer(kind=i_def) :: diff_dim_w3" in gen_code + in code) + assert "integer(kind=i_def) :: dim_w1" in code + assert "integer(kind=i_def) :: diff_dim_w2" in code + assert "integer(kind=i_def) :: dim_w3" in code + assert "integer(kind=i_def) :: diff_dim_w3" in code assert ("real(kind=r_def), pointer :: weights_xy_qr2(:) => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer :: weights_z_qr2(:) => null()" - in gen_code) - assert "integer(kind=i_def) :: np_xy_qr2" in gen_code - assert "integer(kind=i_def) :: np_z_qr2" in gen_code + in code) + assert "integer(kind=i_def) :: np_xy_qr2" in code + assert "integer(kind=i_def) :: np_z_qr2" in code assert ("real(kind=r_def), pointer :: weights_xy_qr(:) => null()" - in gen_code) - assert "real(kind=r_def), pointer :: weights_z_qr(:) => null()" in gen_code - assert "integer(kind=i_def) :: np_xy_qr" in gen_code - assert "integer(kind=i_def) :: np_z_qr" in gen_code - assert "integer(kind=i_def) :: nlayers_f1" in gen_code - assert "integer(kind=i_def) :: nlayers_g1" in gen_code + in code) + assert "real(kind=r_def), pointer :: weights_z_qr(:) => null()" in code + assert "integer(kind=i_def) :: np_xy_qr" in code + assert "integer(kind=i_def) :: np_z_qr" in code + assert "integer(kind=i_def) :: nlayers_f1" in code + assert "integer(kind=i_def) :: nlayers_g1" in code assert ("real(kind=r_def), pointer, dimension(:) :: n2_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: n1_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: g2_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: g1_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: m2_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: m1_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: f2_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: f1_data => null()" - in gen_code) - assert "type(field_proxy_type) :: f1_proxy" in gen_code - assert "type(field_proxy_type) :: f2_proxy" in gen_code - assert "type(field_proxy_type) :: m1_proxy" in gen_code - assert "type(field_proxy_type) :: m2_proxy" in gen_code - assert "type(field_proxy_type) :: g1_proxy" in gen_code - assert "type(field_proxy_type) :: g2_proxy" in gen_code - assert "type(field_proxy_type) :: n1_proxy" in gen_code - assert "type(field_proxy_type) :: n2_proxy" in gen_code - assert "type(quadrature_xyoz_proxy_type) :: qr_proxy" in gen_code - assert "type(quadrature_xyoz_proxy_type) :: qr2_proxy" in gen_code - assert "integer(kind=i_def), pointer :: map_w1(:,:) => null()" in gen_code - assert "integer(kind=i_def), pointer :: map_w2(:,:) => null()" in gen_code - assert "integer(kind=i_def), pointer :: map_w3(:,:) => null()" in gen_code - assert "integer(kind=i_def) :: ndf_w1" in gen_code - assert "integer(kind=i_def) :: undf_w1" in gen_code - assert "integer(kind=i_def) :: ndf_w2" in gen_code - assert "integer(kind=i_def) :: undf_w2" in gen_code - assert "integer(kind=i_def) :: ndf_w3" in gen_code - assert "integer(kind=i_def) :: undf_w3" in gen_code - assert "integer(kind=i_def), pointer :: map_w1(:,:) => null()" in gen_code - assert "integer(kind=i_def), pointer :: map_w2(:,:) => null()" in gen_code - assert "integer(kind=i_def), pointer :: map_w3(:,:) => null()" in gen_code + in code) + assert "type(field_proxy_type) :: f1_proxy" in code + assert "type(field_proxy_type) :: f2_proxy" in code + assert "type(field_proxy_type) :: m1_proxy" in code + assert "type(field_proxy_type) :: m2_proxy" in code + assert "type(field_proxy_type) :: g1_proxy" in code + assert "type(field_proxy_type) :: g2_proxy" in code + assert "type(field_proxy_type) :: n1_proxy" in code + assert "type(field_proxy_type) :: n2_proxy" in code + assert "type(quadrature_xyoz_proxy_type) :: qr_proxy" in code + assert "type(quadrature_xyoz_proxy_type) :: qr2_proxy" in code + assert "integer(kind=i_def), pointer :: map_w1(:,:) => null()" in code + assert "integer(kind=i_def), pointer :: map_w2(:,:) => null()" in code + assert "integer(kind=i_def), pointer :: map_w3(:,:) => null()" in code + assert "integer(kind=i_def) :: ndf_w1" in code + assert "integer(kind=i_def) :: undf_w1" in code + assert "integer(kind=i_def) :: ndf_w2" in code + assert "integer(kind=i_def) :: undf_w2" in code + assert "integer(kind=i_def) :: ndf_w3" in code + assert "integer(kind=i_def) :: undf_w3" in code + assert "integer(kind=i_def), pointer :: map_w1(:,:) => null()" in code + assert "integer(kind=i_def), pointer :: map_w2(:,:) => null()" in code + assert "integer(kind=i_def), pointer :: map_w3(:,:) => null()" in code expected_code = ( " ! Look-up quadrature variables\n" " qr_proxy = qr%get_quadrature_proxy()\n" @@ -528,10 +528,10 @@ def test_two_qr_same_shape(tmpdir): " call qr2%compute_function(DIFF_BASIS, " "n2_proxy%vspace, diff_dim_w3, ndf_w3, diff_basis_w3_qr2)\n" "\n") - assert expected_code in gen_code + assert expected_code in code assert (" loop0_stop = f1_proxy%vspace%get_ncell()\n" " loop1_start = 1\n" - " loop1_stop = g1_proxy%vspace%get_ncell()\n" in gen_code) + " loop1_stop = g1_proxy%vspace%get_ncell()\n" in code) expected_kern_call = ( " ! Call kernels\n" " do cell = loop0_start, loop0_stop, 1\n" @@ -556,7 +556,7 @@ def test_two_qr_same_shape(tmpdir): "basis_w3_qr2, diff_basis_w2_qr, diff_basis_w2_qr2, diff_basis_w3_qr, " "diff_basis_w3_qr2)\n" ) - assert expected_kern_call in gen_code + assert expected_kern_call in code def test_two_identical_qr(tmpdir): @@ -566,7 +566,7 @@ def test_two_identical_qr(tmpdir): os.path.join(BASE_PATH, "1.1.3_single_invoke_2_identical_qr.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -578,7 +578,7 @@ def test_two_identical_qr(tmpdir): " weights_xy_qr => qr_proxy%weights_xy\n" " weights_z_qr => qr_proxy%weights_z\n" "\n") - assert expected_init in gen_code + assert expected_init in code expected_alloc = ( "\n" " dim_w1 = f1_proxy%vspace%get_dim_space()\n" @@ -592,7 +592,7 @@ def test_two_identical_qr(tmpdir): " ALLOCATE(diff_basis_w3_qr(diff_dim_w3,ndf_w3,np_xy_qr," "np_z_qr))\n" "\n") - assert expected_alloc in gen_code + assert expected_alloc in code expected_basis_init = ( "\n" " call qr%compute_function(BASIS, f1_proxy%vspace, " @@ -604,10 +604,10 @@ def test_two_identical_qr(tmpdir): " call qr%compute_function(DIFF_BASIS, m2_proxy%vspace, " "diff_dim_w3, ndf_w3, diff_basis_w3_qr)\n" "\n") - assert expected_basis_init in gen_code + assert expected_basis_init in code assert (" loop0_stop = f1_proxy%vspace%get_ncell()\n" " loop1_start = 1\n" - " loop1_stop = g1_proxy%vspace%get_ncell()\n" in gen_code) + " loop1_stop = g1_proxy%vspace%get_ncell()\n" in code) expected_kern_call = ( " do cell = loop0_start, loop0_stop, 1\n" " call testkern_qr_code(nlayers_f1, f1_data, f2_data," @@ -623,11 +623,11 @@ def test_two_identical_qr(tmpdir): "diff_basis_w2_qr, ndf_w3, undf_w3, map_w3(:,cell), basis_w3_qr, " "diff_basis_w3_qr, np_xy_qr, np_z_qr, weights_xy_qr, weights_z_qr)\n" " enddo\n") - assert expected_kern_call in gen_code + assert expected_kern_call in code expected_dealloc = ( "DEALLOCATE(basis_w1_qr, basis_w3_qr, diff_basis_w2_qr, " "diff_basis_w3_qr)") - assert expected_dealloc in gen_code + assert expected_dealloc in code def test_two_qr_different_shapes(tmpdir): @@ -637,37 +637,37 @@ def test_two_qr_different_shapes(tmpdir): "1.1.8_single_invoke_2qr_shapes.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) - print(gen_code) - assert "type(quadrature_face_proxy_type) :: qrf_proxy" in gen_code - assert "type(quadrature_xyoz_proxy_type) :: qr_proxy" in gen_code + print(code) + assert "type(quadrature_face_proxy_type) :: qrf_proxy" in code + assert "type(quadrature_xyoz_proxy_type) :: qr_proxy" in code - assert "qr_proxy = qr%get_quadrature_proxy()" in gen_code - assert "np_xy_qr = qr_proxy%np_xy" in gen_code - assert "np_z_qr = qr_proxy%np_z" in gen_code - assert "weights_xy_qr => qr_proxy%weights_xy" in gen_code - assert "weights_z_qr => qr_proxy%weights_z" in gen_code + assert "qr_proxy = qr%get_quadrature_proxy()" in code + assert "np_xy_qr = qr_proxy%np_xy" in code + assert "np_z_qr = qr_proxy%np_z" in code + assert "weights_xy_qr => qr_proxy%weights_xy" in code + assert "weights_z_qr => qr_proxy%weights_z" in code - assert "qrf_proxy = qrf%get_quadrature_proxy()" in gen_code - assert "np_xyz_qrf = qrf_proxy%np_xyz" in gen_code - assert "nfaces_qrf = qrf_proxy%nfaces" in gen_code - assert "weights_xyz_qrf => qrf_proxy%weights_xyz" in gen_code + assert "qrf_proxy = qrf%get_quadrature_proxy()" in code + assert "np_xyz_qrf = qrf_proxy%np_xyz" in code + assert "nfaces_qrf = qrf_proxy%nfaces" in code + assert "weights_xyz_qrf => qrf_proxy%weights_xyz" in code assert ("call testkern_qr_code(nlayers_f1, f1_data, f2_data, " "m1_data, a, m2_data, istp, ndf_w1, undf_w1, " "map_w1(:,cell), basis_w1_qr, ndf_w2, undf_w2, map_w2(:,cell), " "diff_basis_w2_qr, ndf_w3, undf_w3, map_w3(:,cell), basis_w3_qr, " "diff_basis_w3_qr, np_xy_qr, np_z_qr, weights_xy_qr, weights_z_qr)" - in gen_code) + in code) assert ("call testkern_qr_faces_code(nlayers_f1, f1_data, " "f2_data, m1_data, m2_data, ndf_w1, undf_w1, " "map_w1(:,cell), basis_w1_qrf, ndf_w2, undf_w2, map_w2(:,cell), " "diff_basis_w2_qrf, ndf_w3, undf_w3, map_w3(:,cell), basis_w3_qrf," " diff_basis_w3_qrf, nfaces_qrf, np_xyz_qrf, weights_xyz_qrf)" - in gen_code) + in code) def test_anyw2(tmpdir, dist_mem): @@ -717,87 +717,87 @@ def test_qr_plus_eval(tmpdir): _, invoke_info = parse(os.path.join(BASE_PATH, "6.2_qr_eval_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) - assert "use constants_mod\n" in gen_code - assert "use field_mod, only : field_proxy_type, field_type" in gen_code + assert "use constants_mod\n" in code + assert "use field_mod, only : field_proxy_type, field_type" in code - assert "subroutine invoke_0(f0, f1, f2, m1, a, m2, istp, qr)" in gen_code - assert "use testkern_qr_mod, only : testkern_qr_code" in gen_code - assert "use testkern_eval_mod, only : testkern_eval_code" in gen_code + assert "subroutine invoke_0(f0, f1, f2, m1, a, m2, istp, qr)" in code + assert "use testkern_qr_mod, only : testkern_qr_code" in code + assert "use testkern_eval_mod, only : testkern_eval_code" in code assert ("use quadrature_xyoz_mod, only : quadrature_xyoz_proxy_type, " - "quadrature_xyoz_type") in gen_code - assert "use function_space_mod, only : BASIS, DIFF_BASIS" in gen_code - assert "real(kind=r_def), intent(in) :: a" in gen_code - assert "integer(kind=i_def), intent(in) :: istp" in gen_code - assert "type(field_type), intent(in) :: f0" in gen_code - assert "type(field_type), intent(in) :: f1" in gen_code - assert "type(field_type), intent(in) :: f2" in gen_code - assert "type(field_type), intent(in) :: m1" in gen_code - assert "type(field_type), intent(in) :: m2" in gen_code - assert "type(quadrature_xyoz_type), intent(in) :: qr" in gen_code - assert "integer(kind=i_def) :: cell" in gen_code - assert "integer(kind=i_def) :: loop4_start" in gen_code - assert "integer(kind=i_def) :: loop4_stop" in gen_code - assert "integer(kind=i_def) :: loop5_start" in gen_code - assert "integer(kind=i_def) :: loop5_stop" in gen_code - assert "integer(kind=i_def) :: df_nodal" in gen_code - assert "integer(kind=i_def) :: df_w0" in gen_code - assert "integer(kind=i_def) :: df_w1" in gen_code - assert "real(kind=r_def), allocatable :: basis_w0_on_w0(:,:,:)" in gen_code + "quadrature_xyoz_type") in code + assert "use function_space_mod, only : BASIS, DIFF_BASIS" in code + assert "real(kind=r_def), intent(in) :: a" in code + assert "integer(kind=i_def), intent(in) :: istp" in code + assert "type(field_type), intent(in) :: f0" in code + assert "type(field_type), intent(in) :: f1" in code + assert "type(field_type), intent(in) :: f2" in code + assert "type(field_type), intent(in) :: m1" in code + assert "type(field_type), intent(in) :: m2" in code + assert "type(quadrature_xyoz_type), intent(in) :: qr" in code + assert "integer(kind=i_def) :: cell" in code + assert "integer(kind=i_def) :: loop4_start" in code + assert "integer(kind=i_def) :: loop4_stop" in code + assert "integer(kind=i_def) :: loop5_start" in code + assert "integer(kind=i_def) :: loop5_stop" in code + assert "integer(kind=i_def) :: df_nodal" in code + assert "integer(kind=i_def) :: df_w0" in code + assert "integer(kind=i_def) :: df_w1" in code + assert "real(kind=r_def), allocatable :: basis_w0_on_w0(:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w1_on_w0(:,:,:)" - in gen_code) - assert "real(kind=r_def), allocatable :: basis_w1_qr(:,:,:,:)" in gen_code - assert "real(kind=r_def), allocatable :: basis_w3_qr(:,:,:,:)" in gen_code + in code) + assert "real(kind=r_def), allocatable :: basis_w1_qr(:,:,:,:)" in code + assert "real(kind=r_def), allocatable :: basis_w3_qr(:,:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w2_qr(:,:,:,:)" - in gen_code) + in code) assert ("real(kind=r_def), allocatable :: diff_basis_w3_qr(:,:,:,:)" - in gen_code) - assert "integer(kind=i_def) :: dim_w0" in gen_code - assert "integer(kind=i_def) :: diff_dim_w1" in gen_code - assert "integer(kind=i_def) :: dim_w1" in gen_code - assert "integer(kind=i_def) :: diff_dim_w2" in gen_code - assert "integer(kind=i_def) :: dim_w3" in gen_code - assert "integer(kind=i_def) :: diff_dim_w3" in gen_code - assert "real(kind=r_def), pointer :: nodes_w0(:,:) => null()" in gen_code + in code) + assert "integer(kind=i_def) :: dim_w0" in code + assert "integer(kind=i_def) :: diff_dim_w1" in code + assert "integer(kind=i_def) :: dim_w1" in code + assert "integer(kind=i_def) :: diff_dim_w2" in code + assert "integer(kind=i_def) :: dim_w3" in code + assert "integer(kind=i_def) :: diff_dim_w3" in code + assert "real(kind=r_def), pointer :: nodes_w0(:,:) => null()" in code assert ("real(kind=r_def), pointer :: weights_xy_qr(:) => null()" - in gen_code) - assert "real(kind=r_def), pointer :: weights_z_qr(:) => null()" in gen_code - assert "integer(kind=i_def) :: np_xy_qr" in gen_code - assert "integer(kind=i_def) :: np_z_qr" in gen_code - assert "integer(kind=i_def) :: nlayers_f0" in gen_code - assert "integer(kind=i_def) :: nlayers_f1" in gen_code + in code) + assert "real(kind=r_def), pointer :: weights_z_qr(:) => null()" in code + assert "integer(kind=i_def) :: np_xy_qr" in code + assert "integer(kind=i_def) :: np_z_qr" in code + assert "integer(kind=i_def) :: nlayers_f0" in code + assert "integer(kind=i_def) :: nlayers_f1" in code assert ("real(kind=r_def), pointer, dimension(:) :: m2_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: m1_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: f2_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: f1_data => null()" - in gen_code) + in code) assert ("real(kind=r_def), pointer, dimension(:) :: f0_data => null()" - in gen_code) - - assert "type(field_proxy_type) :: f0_proxy" in gen_code - assert "type(field_proxy_type) :: f1_proxy" in gen_code - assert "type(field_proxy_type) :: f2_proxy" in gen_code - assert "type(field_proxy_type) :: m1_proxy" in gen_code - assert "type(field_proxy_type) :: m2_proxy" in gen_code - assert "type(quadrature_xyoz_proxy_type) :: qr_proxy" in gen_code - assert "integer(kind=i_def), pointer :: map_w0(:,:) => null()" in gen_code - assert "integer(kind=i_def), pointer :: map_w1(:,:) => null()" in gen_code - assert "integer(kind=i_def), pointer :: map_w2(:,:) => null()" in gen_code - assert "integer(kind=i_def), pointer :: map_w3(:,:) => null()" in gen_code - assert "integer(kind=i_def) :: ndf_w0" in gen_code - assert "integer(kind=i_def) :: undf_w0" in gen_code - assert "integer(kind=i_def) :: ndf_w1" in gen_code - assert "integer(kind=i_def) :: undf_w1" in gen_code - assert "integer(kind=i_def) :: ndf_w2" in gen_code - assert "integer(kind=i_def) :: undf_w2" in gen_code - assert "integer(kind=i_def) :: ndf_w3" in gen_code - assert "integer(kind=i_def) :: undf_w3" in gen_code + in code) + + assert "type(field_proxy_type) :: f0_proxy" in code + assert "type(field_proxy_type) :: f1_proxy" in code + assert "type(field_proxy_type) :: f2_proxy" in code + assert "type(field_proxy_type) :: m1_proxy" in code + assert "type(field_proxy_type) :: m2_proxy" in code + assert "type(quadrature_xyoz_proxy_type) :: qr_proxy" in code + assert "integer(kind=i_def), pointer :: map_w0(:,:) => null()" in code + assert "integer(kind=i_def), pointer :: map_w1(:,:) => null()" in code + assert "integer(kind=i_def), pointer :: map_w2(:,:) => null()" in code + assert "integer(kind=i_def), pointer :: map_w3(:,:) => null()" in code + assert "integer(kind=i_def) :: ndf_w0" in code + assert "integer(kind=i_def) :: undf_w0" in code + assert "integer(kind=i_def) :: ndf_w1" in code + assert "integer(kind=i_def) :: undf_w1" in code + assert "integer(kind=i_def) :: ndf_w2" in code + assert "integer(kind=i_def) :: undf_w2" in code + assert "integer(kind=i_def) :: ndf_w3" in code + assert "integer(kind=i_def) :: undf_w3" in code output_setup = ( " ndf_w3 = m2_proxy%vspace%get_ndf()\n" @@ -852,10 +852,10 @@ def test_qr_plus_eval(tmpdir): "dim_w3, ndf_w3, basis_w3_qr)\n" " call qr%compute_function(DIFF_BASIS, m2_proxy%vspace, " "diff_dim_w3, ndf_w3, diff_basis_w3_qr)\n") - assert output_setup in gen_code + assert output_setup in code assert (" loop4_stop = f0_proxy%vspace%get_ncell()\n" " loop5_start = 1\n" - " loop5_stop = f1_proxy%vspace%get_ncell()\n" in gen_code) + " loop5_stop = f1_proxy%vspace%get_ncell()\n" in code) output_kern_call = ( " do cell = loop4_start, loop4_stop, 1\n" " call testkern_eval_code(nlayers_f0, f0_data, " @@ -869,11 +869,11 @@ def test_qr_plus_eval(tmpdir): "diff_basis_w2_qr, ndf_w3, undf_w3, map_w3(:,cell), basis_w3_qr, " "diff_basis_w3_qr, np_xy_qr, np_z_qr, weights_xy_qr, weights_z_qr)\n" " enddo\n") - assert output_kern_call in gen_code + assert output_kern_call in code output_dealloc = ( " DEALLOCATE(basis_w0_on_w0, basis_w1_qr, basis_w3_qr, " "diff_basis_w1_on_w0, diff_basis_w2_qr, diff_basis_w3_qr)\n") - assert output_dealloc in gen_code + assert output_dealloc in code def test_two_eval_same_space(tmpdir): @@ -883,7 +883,7 @@ def test_two_eval_same_space(tmpdir): _, invoke_info = parse(os.path.join(BASE_PATH, "6.3_2eval_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -898,7 +898,7 @@ def test_two_eval_same_space(tmpdir): " diff_dim_w1 = f1_proxy%vspace%get_dim_space_diff()\n" " ALLOCATE(basis_w0_on_w0(dim_w0,ndf_w0,ndf_w0))\n" " ALLOCATE(diff_basis_w1_on_w0(diff_dim_w1,ndf_w1,ndf_w0))\n") - assert output_init in gen_code + assert output_init in code output_code = ( "\n" " ! Compute basis/diff-basis arrays\n" @@ -933,7 +933,7 @@ def test_two_eval_same_space(tmpdir): "ndf_w1, undf_w1, map_w1(:,cell), diff_basis_w1_on_w0)\n" " enddo\n" ) - assert output_code in gen_code + assert output_code in code def test_two_eval_diff_space(tmpdir): @@ -943,7 +943,7 @@ def test_two_eval_diff_space(tmpdir): _, invoke_info = parse(os.path.join(BASE_PATH, "6.4_2eval_op_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -970,7 +970,7 @@ def test_two_eval_diff_space(tmpdir): " ALLOCATE(diff_basis_w1_on_w0(diff_dim_w1,ndf_w1,ndf_w0))\n" " ALLOCATE(basis_w2_on_w0(dim_w2,ndf_w2,ndf_w0))\n" " ALLOCATE(diff_basis_w3_on_w0(diff_dim_w3,ndf_w3,ndf_w0))\n") - assert expected_init in gen_code + assert expected_init in code expected_code = ( " ! Compute basis/diff-basis arrays\n" " do df_nodal = 1, ndf_w0, 1\n" @@ -1016,7 +1016,7 @@ def test_two_eval_diff_space(tmpdir): "basis_w2_on_w0, ndf_w3, undf_w3, map_w3(:,cell), " "diff_basis_w3_on_w0)\n" " enddo\n") - assert expected_code in gen_code + assert expected_code in code def test_two_eval_same_var_same_space(tmpdir): @@ -1027,22 +1027,22 @@ def test_two_eval_same_var_same_space(tmpdir): "6.7_2eval_same_var_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) # We should only get one set of basis and diff-basis functions in the # generated code - assert gen_code.count( + assert code.count( "ndf_adspc1_f0 = f0_proxy%vspace%get_ndf()") == 1 - assert gen_code.count( + assert code.count( " do df_nodal = 1, ndf_adspc1_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" " enddo\n" " enddo\n") == 1 - assert gen_code.count( + assert code.count( " do df_nodal = 1, ndf_adspc1_f0, 1\n" " do df_w1 = 1, ndf_w1, 1\n" " diff_basis_w1_on_adspc1_f0(:,df_w1,df_nodal) = f2_proxy" @@ -1050,7 +1050,7 @@ def test_two_eval_same_var_same_space(tmpdir): "df_nodal))\n" " enddo\n" " enddo\n") == 1 - assert gen_code.count( + assert code.count( "DEALLOCATE(basis_w0_on_adspc1_f0, diff_basis_w1_on_adspc1_f0)") == 1 @@ -1064,7 +1064,7 @@ def test_two_eval_op_to_space(tmpdir): "6.5_2eval_op_to_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -1083,7 +1083,7 @@ def test_two_eval_op_to_space(tmpdir): " nodes_w0 => f0_proxy%vspace%get_nodes()\n" " nodes_w3 => f2_proxy%vspace%get_nodes()\n" ) - assert init_code in gen_code + assert init_code in code alloc_code = ( " dim_w0 = f0_proxy%vspace%get_dim_space()\n" " diff_dim_w1 = f1_proxy%vspace%get_dim_space_diff()\n" @@ -1099,7 +1099,7 @@ def test_two_eval_op_to_space(tmpdir): " ALLOCATE(diff_basis_w3_on_w3(diff_dim_w3,ndf_w3," "ndf_w3))\n" ) - assert alloc_code in gen_code + assert alloc_code in code # testkern_eval requires diff-basis fns on W1 and testkern_eval_op_to # requires them on W2 and W3. basis_comp = ( @@ -1133,11 +1133,11 @@ def test_two_eval_op_to_space(tmpdir): "call_function(DIFF_BASIS, df_w3, nodes_w3(:,df_nodal))\n" " enddo\n" " enddo\n") - assert basis_comp in gen_code + assert basis_comp in code assert (" loop10_start = 1\n" " loop10_stop = f0_proxy%vspace%get_ncell()\n" " loop11_start = 1\n" - " loop11_stop = f2_proxy%vspace%get_ncell()\n" in gen_code) + " loop11_stop = f2_proxy%vspace%get_ncell()\n" in code) kernel_calls = ( " do cell = loop10_start, loop10_stop, 1\n" " call testkern_eval_code(nlayers_f0, f0_data, " @@ -1151,7 +1151,7 @@ def test_two_eval_op_to_space(tmpdir): "undf_w3, map_w3(:,cell), diff_basis_w3_on_w3)\n" " enddo\n" ) - assert kernel_calls in gen_code + assert kernel_calls in code def test_eval_diff_nodal_space(tmpdir): @@ -1170,7 +1170,7 @@ def test_eval_diff_nodal_space(tmpdir): "6.6_2eval_diff_nodal_space_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -1189,7 +1189,7 @@ def test_eval_diff_nodal_space(tmpdir): " ALLOCATE(diff_basis_w2_on_w0(diff_dim_w2,ndf_w2,ndf_w0))\n" " ALLOCATE(diff_basis_w3_on_w0(diff_dim_w3,ndf_w3,ndf_w0))\n" ) - assert expected_alloc in gen_code + assert expected_alloc in code expected_compute = ( " do df_nodal = 1, ndf_w3, 1\n" " do df_w2 = 1, ndf_w2, 1\n" @@ -1228,12 +1228,12 @@ def test_eval_diff_nodal_space(tmpdir): " enddo\n" " enddo\n" ) - assert expected_compute in gen_code + assert expected_compute in code assert (" loop12_start = 1\n" " loop12_stop = f1_proxy%vspace%get_ncell()\n" " loop13_start = 1\n" - " loop13_stop = f2_proxy%vspace%get_ncell()\n" in gen_code) + " loop13_stop = f2_proxy%vspace%get_ncell()\n" in code) expected_kern_call = ( " do cell = loop12_start, loop12_stop, 1\n" @@ -1250,14 +1250,14 @@ def test_eval_diff_nodal_space(tmpdir): "diff_basis_w3_on_w0)\n" " enddo\n" ) - assert expected_kern_call in gen_code + assert expected_kern_call in code expected_dealloc = ( " ! Deallocate basis arrays\n" " DEALLOCATE(" "basis_w2_on_w0, basis_w2_on_w3, diff_basis_w2_on_w0, " "diff_basis_w2_on_w3, diff_basis_w3_on_w0, diff_basis_w3_on_w3)\n" ) - assert expected_dealloc in gen_code + assert expected_dealloc in code def test_eval_2fs(tmpdir): @@ -1267,22 +1267,22 @@ def test_eval_2fs(tmpdir): os.path.join(BASE_PATH, "6.8_eval_2fs_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert ("real(kind=r_def), allocatable :: diff_basis_w1_on_w0(:,:,:)" - in gen_code) + in code) assert ("real(kind=r_def), allocatable :: diff_basis_w1_on_w1(:,:,:)" - in gen_code) - assert "integer(kind=i_def) :: diff_dim_w1" in gen_code + in code) + assert "integer(kind=i_def) :: diff_dim_w1" in code assert (" diff_dim_w1 = f1_proxy%vspace%get_dim_space_diff()\n" " ALLOCATE(diff_basis_w1_on_w0(diff_dim_w1,ndf_w1," "ndf_w0))\n" " ALLOCATE(diff_basis_w1_on_w1(diff_dim_w1,ndf_w1," - "ndf_w1))\n" in gen_code) + "ndf_w1))\n" in code) assert ("call testkern_eval_2fs_code(nlayers_f0, f0_data, " "f1_data, ndf_w0, undf_w0, map_w0(:,cell), ndf_w1, undf_w1, " "map_w1(:,cell), diff_basis_w1_on_w0, diff_basis_w1_on_w1)" in - gen_code) + code) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -1294,23 +1294,23 @@ def test_2eval_2fs(tmpdir): os.path.join(BASE_PATH, "6.9_2eval_2fs_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert ("real(kind=r_def), allocatable :: diff_basis_w1_on_w0(:,:,:)" - in gen_code) + in code) assert ("real(kind=r_def), allocatable :: diff_basis_w1_on_w1(:,:,:)" - in gen_code) + in code) # Check for duplication for idx in range(2): - assert gen_code.count(f"real(kind=r_def), pointer :: nodes_w{idx}(:,:)" - f" => null()") == 1 - assert gen_code.count( + assert code.count(f"real(kind=r_def), pointer :: nodes_w{idx}(:,:)" + f" => null()") == 1 + assert code.count( f" nodes_w{idx} => f{idx}_proxy%vspace%get_nodes()\n") == 1 - assert gen_code.count(f"ALLOCATE(diff_basis_w1_on_w{idx}(diff_dim_w1," - f"ndf_w1,ndf_w{idx}))") == 1 + assert code.count(f"ALLOCATE(diff_basis_w1_on_w{idx}(diff_dim_w1," + f"ndf_w1,ndf_w{idx}))") == 1 - assert gen_code.count( + assert code.count( f"diff_basis_w1_on_w{idx}(:,df_w1,df_nodal) = f1_proxy%vspace%" f"call_function(DIFF_BASIS, df_w1, nodes_w{idx}(:,df_nodal))") == 1 assert LFRicBuild(tmpdir).code_compiles(psy) @@ -1323,37 +1323,37 @@ def test_2eval_1qr_2fs(tmpdir): os.path.join(BASE_PATH, "6.10_2eval_2fs_qr_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert ("real(kind=r_def), allocatable :: diff_basis_w1_on_w0(:,:,:)" - in gen_code) + in code) assert ("real(kind=r_def), allocatable :: diff_basis_w1_on_w1(:,:,:)" - in gen_code) - assert "real(kind=r_def), allocatable :: basis_w2_on_w0(:,:,:)" in gen_code + in code) + assert "real(kind=r_def), allocatable :: basis_w2_on_w0(:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w3_on_w0(:,:,:)" - in gen_code) - assert "real(kind=r_def), allocatable :: basis_w1_qr(:,:,:,:)" in gen_code + in code) + assert "real(kind=r_def), allocatable :: basis_w1_qr(:,:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w2_qr(:,:,:,:)" - in gen_code) - assert "real(kind=r_def), allocatable :: basis_w3_qr(:,:,:,:)" in gen_code + in code) + assert "real(kind=r_def), allocatable :: basis_w3_qr(:,:,:,:)" in code assert ("real(kind=r_def), allocatable :: diff_basis_w3_qr(:,:,:,:)" - in gen_code) + in code) # 1st kernel requires diff basis on W1, evaluated at W0 and W1 # 2nd kernel requires diff basis on W3, evaluated at W0 - assert gen_code.count( + assert code.count( " diff_dim_w1 = f1_proxy%vspace%get_dim_space_diff()\n") == 1 - assert gen_code.count( + assert code.count( " ALLOCATE(diff_basis_w1_on_w0(diff_dim_w1,ndf_w1,ndf_w0))\n" " ALLOCATE(diff_basis_w1_on_w1(diff_dim_w1,ndf_w1," "ndf_w1))\n") == 1 - assert gen_code.count( + assert code.count( " diff_dim_w3 = m2_proxy%vspace%get_dim_space_diff()\n") == 1 - assert gen_code.count( + assert code.count( " ALLOCATE(diff_basis_w3_on_w0(diff_dim_w3,ndf_w3," "ndf_w0))\n") == 1 - assert gen_code.count( + assert code.count( " do df_nodal = 1, ndf_w0, 1\n" " do df_w1 = 1, ndf_w1, 1\n" " diff_basis_w1_on_w0(:,df_w1,df_nodal) = " @@ -1361,14 +1361,14 @@ def test_2eval_1qr_2fs(tmpdir): "df_nodal))\n" " enddo\n" " enddo\n") == 1 - assert gen_code.count( + assert code.count( " do df_nodal = 1, ndf_w1, 1\n" " do df_w1 = 1, ndf_w1, 1\n" " diff_basis_w1_on_w1(:,df_w1,df_nodal) = f1_proxy%vspace%" "call_function(DIFF_BASIS, df_w1, nodes_w1(:,df_nodal))\n" " enddo\n" " enddo\n") == 1 - assert gen_code.count( + assert code.count( " do df_nodal = 1, ndf_w0, 1\n" " do df_w3 = 1, ndf_w3, 1\n" " diff_basis_w3_on_w0(:,df_w3,df_nodal) = m2_proxy%vspace%" @@ -1378,12 +1378,12 @@ def test_2eval_1qr_2fs(tmpdir): # 2nd kernel requires basis on W2 and diff-basis on W3, both evaluated # on W0 (the to-space of the operator that is written to) - assert gen_code.count( + assert code.count( " dim_w2 = op1_proxy%fs_from%get_dim_space()\n") == 1 - assert gen_code.count( + assert code.count( " ALLOCATE(basis_w2_on_w0(dim_w2,ndf_w2,ndf_w0))\n") == 1 - assert gen_code.count( + assert code.count( " do df_nodal = 1, ndf_w0, 1\n" " do df_w2 = 1, ndf_w2, 1\n" " basis_w2_on_w0(:,df_w2,df_nodal) = op1_proxy%fs_from%" @@ -1393,10 +1393,10 @@ def test_2eval_1qr_2fs(tmpdir): # 3rd kernel requires XYoZ quadrature: basis on W1, diff basis on W2 and # basis+diff basis on W3. - assert gen_code.count( + assert code.count( " call qr%compute_function(DIFF_BASIS, f2_proxy%vspace, " "diff_dim_w2, ndf_w2, diff_basis_w2_qr)\n") == 1 - assert gen_code.count( + assert code.count( " call qr%compute_function(DIFF_BASIS, m2_proxy%vspace, " "diff_dim_w3, ndf_w3, diff_basis_w3_qr)\n") == 1 @@ -1405,7 +1405,7 @@ def test_2eval_1qr_2fs(tmpdir): " loop9_start = 1\n" " loop9_stop = op1_proxy%fs_from%get_ncell()\n" " loop10_start = 1\n" - " loop10_stop = f1_proxy%vspace%get_ncell()\n" in gen_code) + " loop10_stop = f1_proxy%vspace%get_ncell()\n" in code) assert (" do cell = loop8_start, loop8_stop, 1\n" " call testkern_eval_2fs_code(nlayers_f0, f0_data, " @@ -1425,9 +1425,9 @@ def test_2eval_1qr_2fs(tmpdir): "map_w2(:,cell), diff_basis_w2_qr, ndf_w3, undf_w3, " "map_w3(:,cell), basis_w3_qr, diff_basis_w3_qr, np_xy_qr, " "np_z_qr, weights_xy_qr, weights_z_qr)\n" - " enddo\n" in gen_code) + " enddo\n" in code) - assert gen_code.count( + assert code.count( "DEALLOCATE(basis_w1_qr, basis_w2_on_w0, basis_w3_qr, " "diff_basis_w1_on_w0, diff_basis_w1_on_w1, diff_basis_w2_qr, " "diff_basis_w3_on_w0, diff_basis_w3_qr)\n") == 1 @@ -1442,11 +1442,11 @@ def test_eval_agglomerate(tmpdir): os.path.join(BASE_PATH, "6.11_2eval_2kern_invoke.f90"), api=API) psy = PSyFactory(API, distributed_memory=False).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) # We should compute differential basis functions for W1 evaluated on both # W0 and W1. - assert gen_code.count("diff_basis_w1_on_w0(:,df_w1,df_nodal) = ") == 1 - assert gen_code.count("diff_basis_w1_on_w1(:,df_w1,df_nodal) = ") == 1 + assert code.count("diff_basis_w1_on_w0(:,df_w1,df_nodal) = ") == 1 + assert code.count("diff_basis_w1_on_w1(:,df_w1,df_nodal) = ") == 1 assert LFRicBuild(tmpdir).code_compiles(psy) diff --git a/src/psyclone/tests/dynamo0p3_lma_test.py b/src/psyclone/tests/dynamo0p3_lma_test.py index f0d4456c10..17a51ea41c 100644 --- a/src/psyclone/tests/dynamo0p3_lma_test.py +++ b/src/psyclone/tests/dynamo0p3_lma_test.py @@ -638,25 +638,25 @@ def test_operator_nofield(tmpdir): "10.1_operator_nofield.f90"), api=TEST_API) psy = PSyFactory(TEST_API, distributed_memory=True).create(invoke_info) - gen_code_str = str(psy.gen) + code_str = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) assert ( "subroutine invoke_0_testkern_operator_nofield_type(mm_w2, coord, qr)" - in gen_code_str) - assert "type(operator_type), intent(in) :: mm_w2" in gen_code_str - assert "type(operator_proxy_type) :: mm_w2_proxy" in gen_code_str - assert "mm_w2_proxy = mm_w2%get_proxy()" in gen_code_str - assert "mm_w2_local_stencil => mm_w2_proxy%local_stencil" in gen_code_str - assert "undf_w2" not in gen_code_str - assert "map_w2" not in gen_code_str + in code_str) + assert "type(operator_type), intent(in) :: mm_w2" in code_str + assert "type(operator_proxy_type) :: mm_w2_proxy" in code_str + assert "mm_w2_proxy = mm_w2%get_proxy()" in code_str + assert "mm_w2_local_stencil => mm_w2_proxy%local_stencil" in code_str + assert "undf_w2" not in code_str + assert "map_w2" not in code_str assert ("call testkern_operator_nofield_code(cell, nlayers_mm_w2, " "mm_w2_proxy%ncell_3d, mm_w2_local_stencil, " "coord_1_data, coord_2_data, coord_3_data, " "ndf_w2, basis_w2_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_code_str) + "weights_xy_qr, weights_z_qr)" in code_str) def test_operator_nofield_different_space(tmpdir): @@ -708,10 +708,10 @@ def test_operator_no_dofmap_lookup(): "10.9_operator_first.f90"), api=TEST_API) psy = PSyFactory(TEST_API, distributed_memory=True).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) # Check that we use the field and not the operator to look-up the dofmap - assert "theta_proxy%vspace%get_whole_dofmap()" in gen_code - assert gen_code.count("get_whole_dofmap") == 1 + assert "theta_proxy%vspace%get_whole_dofmap()" in code + assert code.count("get_whole_dofmap") == 1 def test_operator_read_level1_halo(tmpdir): diff --git a/src/psyclone/tests/dynamo0p3_multigrid_test.py b/src/psyclone/tests/dynamo0p3_multigrid_test.py index 85fbc82a9a..786451f7ae 100644 --- a/src/psyclone/tests/dynamo0p3_multigrid_test.py +++ b/src/psyclone/tests/dynamo0p3_multigrid_test.py @@ -282,7 +282,7 @@ def test_field_prolong(tmpdir, dist_mem): "22.0_intergrid_prolong.f90"), api=API) psy = PSyFactory(API, distributed_memory=dist_mem).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -293,21 +293,21 @@ def test_field_prolong(tmpdir, dist_mem): " type(field_type), intent(in) :: field1\n" " type(field_type), intent(in) :: field2\n" " integer(kind=i_def) :: cell\n") - assert expected in gen_code + assert expected in code - assert "integer(kind=i_def) :: ncell_field1" in gen_code - assert "integer(kind=i_def) :: ncpc_field1_field2_x" in gen_code - assert "integer(kind=i_def) :: ncpc_field1_field2_y" in gen_code + assert "integer(kind=i_def) :: ncell_field1" in code + assert "integer(kind=i_def) :: ncpc_field1_field2_x" in code + assert "integer(kind=i_def) :: ncpc_field1_field2_y" in code assert ("integer(kind=i_def), pointer :: " - "cell_map_field2(:,:,:) => null()\n" in gen_code) + "cell_map_field2(:,:,:) => null()\n" in code) assert ("type(mesh_map_type), pointer :: " - "mmap_field1_field2 => null()\n" in gen_code) + "mmap_field1_field2 => null()\n" in code) if dist_mem: - assert "integer(kind=i_def) :: max_halo_depth_mesh_field2" in gen_code - assert "type(mesh_type), pointer :: mesh_field2 => null()\n" in gen_code + assert "integer(kind=i_def) :: max_halo_depth_mesh_field2" in code + assert "type(mesh_type), pointer :: mesh_field2 => null()\n" in code if dist_mem: - assert "integer(kind=i_def) :: max_halo_depth_mesh_field1" in gen_code - assert "type(mesh_type), pointer :: mesh_field1 => null()\n" in gen_code + assert "integer(kind=i_def) :: max_halo_depth_mesh_field1" in code + assert "type(mesh_type), pointer :: mesh_field1 => null()\n" in code expected = ( " ! Look-up mesh objects and loop limits for inter-grid " @@ -336,21 +336,21 @@ def test_field_prolong(tmpdir, dist_mem): "get_ntarget_cells_per_source_x()\n" " ncpc_field1_field2_y = mmap_field1_field2%" "get_ntarget_cells_per_source_y()\n") - assert expected in gen_code + assert expected in code if dist_mem: # We are writing to a continuous field on the fine mesh, we # only need to halo swap to depth one on the coarse. assert ("loop0_stop = mesh_field2%get_last_halo_cell(1)\n" in - gen_code) + code) expected = ( " if (field2_proxy%is_dirty(depth=1)) then\n" " call field2_proxy%halo_exchange(depth=1)\n" " end if\n" " do cell = loop0_start, loop0_stop, 1\n") - assert expected in gen_code + assert expected in code else: - assert "loop0_stop = field2_proxy%vspace%get_ncell()\n" in gen_code + assert "loop0_stop = field2_proxy%vspace%get_ncell()\n" in code expected = ( " call prolong_test_kernel_code(nlayers_field1, " @@ -359,11 +359,11 @@ def test_field_prolong(tmpdir, dist_mem): "field2_data, ndf_w1, undf_w1, map_w1, undf_w2, " "map_w2(:,cell))\n" " enddo\n") - assert expected in gen_code + assert expected in code if dist_mem: set_dirty = " call field1_proxy%set_dirty()\n" - assert set_dirty in gen_code + assert set_dirty in code def test_field_restrict(tmpdir, dist_mem, monkeypatch, annexed): diff --git a/src/psyclone/tests/dynamo0p3_quadrature_test.py b/src/psyclone/tests/dynamo0p3_quadrature_test.py index df757f6402..51ae229ce5 100644 --- a/src/psyclone/tests/dynamo0p3_quadrature_test.py +++ b/src/psyclone/tests/dynamo0p3_quadrature_test.py @@ -248,18 +248,18 @@ def test_edge_qr(tmpdir, dist_mem): api=API) psy = PSyFactory(API, distributed_memory=dist_mem).create(invoke_info) assert LFRicBuild(tmpdir).code_compiles(psy) - gen_code = str(psy.gen).lower() + code = str(psy.gen).lower() assert ("use quadrature_edge_mod, only : quadrature_edge_proxy_type, " - "quadrature_edge_type\n" in gen_code) - assert "type(quadrature_edge_type), intent(in) :: qr\n" in gen_code - assert "integer(kind=i_def) :: np_xyz_qr" in gen_code - assert "integer(kind=i_def) :: nedges_qr" in gen_code + "quadrature_edge_type\n" in code) + assert "type(quadrature_edge_type), intent(in) :: qr\n" in code + assert "integer(kind=i_def) :: np_xyz_qr" in code + assert "integer(kind=i_def) :: nedges_qr" in code assert ( " qr_proxy = qr%get_quadrature_proxy()\n" " np_xyz_qr = qr_proxy%np_xyz\n" " nedges_qr = qr_proxy%nedges\n" - " weights_xyz_qr => qr_proxy%weights_xyz\n" in gen_code) + " weights_xyz_qr => qr_proxy%weights_xyz\n" in code) assert ( " ! compute basis/diff-basis arrays\n" @@ -270,14 +270,14 @@ def test_edge_qr(tmpdir, dist_mem): " call qr%compute_function(basis, m2_proxy%vspace, dim_w3, " "ndf_w3, basis_w3_qr)\n" " call qr%compute_function(diff_basis, m2_proxy%vspace, " - "diff_dim_w3, ndf_w3, diff_basis_w3_qr)\n" in gen_code) + "diff_dim_w3, ndf_w3, diff_basis_w3_qr)\n" in code) assert ("call testkern_qr_edges_code(nlayers_f1, f1_data, " "f2_data, m1_data, a, m2_data, istp, " "ndf_w1, undf_w1, map_w1(:,cell), basis_w1_qr, ndf_w2, undf_w2, " "map_w2(:,cell), diff_basis_w2_qr, ndf_w3, undf_w3, " "map_w3(:,cell), basis_w3_qr, diff_basis_w3_qr, nedges_qr, " - "np_xyz_qr, weights_xyz_qr)" in gen_code) + "np_xyz_qr, weights_xyz_qr)" in code) def test_face_qr(tmpdir, dist_mem): @@ -482,12 +482,12 @@ def test_face_and_edge_qr(dist_mem, tmpdir): api=API) psy = PSyFactory(API, distributed_memory=dist_mem).create(invoke_info) assert LFRicBuild(tmpdir).code_compiles(psy) - gen_code = str(psy.gen) - print(gen_code) + code = str(psy.gen) + print(code) # Check that the qr-related variables are all declared assert (" type(quadrature_face_type), intent(in) :: qr_face\n" " type(quadrature_edge_type), intent(in) :: qr_edge\n" - in gen_code) + in code) assert """ real(kind=r_def), allocatable :: basis_w1_qr_face(:,:,:,:) real(kind=r_def), allocatable :: basis_w1_qr_edge(:,:,:,:) @@ -497,7 +497,7 @@ def test_face_and_edge_qr(dist_mem, tmpdir): real(kind=r_def), allocatable :: diff_basis_w3_qr_face(:,:,:,:) real(kind=r_def), allocatable :: basis_w3_qr_edge(:,:,:,:) real(kind=r_def), allocatable :: diff_basis_w3_qr_edge(:,:,:,:) -""" in gen_code +""" in code assert """ integer(kind=i_def) :: np_xyz_qr_face integer(kind=i_def) :: nfaces_qr_face @@ -509,7 +509,7 @@ def test_face_and_edge_qr(dist_mem, tmpdir): real(kind=r_def), pointer, dimension(:,:) :: weights_xyz_qr_edge => null() type(quadrature_edge_proxy_type) :: qr_edge_proxy - """ in gen_code + """ in code # Allocation and computation of (some of) the basis functions assert """ ! Allocate basis/diff-basis arrays @@ -528,7 +528,7 @@ def test_face_and_edge_qr(dist_mem, tmpdir): nfaces_qr_face)) ALLOCATE(basis_w3_qr_edge(dim_w3,ndf_w3,np_xyz_qr_edge,nedges_qr_edge)) ALLOCATE(diff_basis_w3_qr_edge(diff_dim_w3,ndf_w3,np_xyz_qr_edge,\ -nedges_qr_edge))""" in gen_code +nedges_qr_edge))""" in code assert (" call qr_face%compute_function(BASIS, m2_proxy%vspace, " "dim_w3, ndf_w3, basis_w3_qr_face)\n" " call qr_face%compute_function(DIFF_BASIS, m2_proxy%vspace, " @@ -536,7 +536,7 @@ def test_face_and_edge_qr(dist_mem, tmpdir): " call qr_edge%compute_function(BASIS, m2_proxy%vspace, " "dim_w3, ndf_w3, basis_w3_qr_edge)\n" " call qr_edge%compute_function(DIFF_BASIS, m2_proxy%vspace, " - "diff_dim_w3, ndf_w3, diff_basis_w3_qr_edge)\n" in gen_code) + "diff_dim_w3, ndf_w3, diff_basis_w3_qr_edge)\n" in code) # Check that the kernel call itself is correct assert ( "call testkern_2qr_code(nlayers_f1, f1_data, f2_data, " @@ -547,7 +547,7 @@ def test_face_and_edge_qr(dist_mem, tmpdir): "ndf_w3, undf_w3, map_w3(:,cell), basis_w3_qr_face, basis_w3_qr_edge, " "diff_basis_w3_qr_face, diff_basis_w3_qr_edge, " "nfaces_qr_face, np_xyz_qr_face, weights_xyz_qr_face, " - "nedges_qr_edge, np_xyz_qr_edge, weights_xyz_qr_edge)" in gen_code) + "nedges_qr_edge, np_xyz_qr_edge, weights_xyz_qr_edge)" in code) def test_field_qr_deref(tmpdir): diff --git a/src/psyclone/tests/dynamo0p3_stubgen_test.py b/src/psyclone/tests/dynamo0p3_stubgen_test.py index 2d39a6574b..5d6d9a2cd4 100644 --- a/src/psyclone/tests/dynamo0p3_stubgen_test.py +++ b/src/psyclone/tests/dynamo0p3_stubgen_test.py @@ -610,7 +610,7 @@ def test_qr_plus_eval_stub_gen(fortran_writer): metadata = LFRicKernMetadata(ast) kernel = LFRicKern() kernel.load_meta(metadata) - gen_code = fortran_writer(kernel.gen_stub) + code = fortran_writer(kernel.gen_stub) assert ( "subroutine testkern_qr_eval_code(nlayers, field_1_w1, field_2_w2," " field_3_w2, field_4_w3, ndf_w1, undf_w1, map_w1, basis_w1_qr_face, " @@ -618,10 +618,10 @@ def test_qr_plus_eval_stub_gen(fortran_writer): "diff_basis_w2_on_w1, ndf_w3, undf_w3, map_w3, basis_w3_qr_face, " "basis_w3_on_w1, diff_basis_w3_qr_face, diff_basis_w3_on_w1, " "nfaces_qr_face, np_xyz_qr_face, weights_xyz_qr_face)" - in gen_code) + in code) assert (" integer(kind=i_def), intent(in) :: np_xyz_qr_face\n" " integer(kind=i_def), intent(in) :: nfaces_qr_face\n" - in gen_code) + in code) assert ( " real(kind=r_def), dimension(3,ndf_w1,np_xyz_qr_face" ",nfaces_qr_face), intent(in) :: basis_w1_qr_face\n" @@ -640,7 +640,7 @@ def test_qr_plus_eval_stub_gen(fortran_writer): " real(kind=r_def), dimension(3,ndf_w3,ndf_w1), intent(in) :: " "diff_basis_w3_on_w1\n" " real(kind=r_def), dimension(np_xyz_qr_face," - "nfaces_qr_face), intent(in) :: weights_xyz_qr_face" in gen_code) + "nfaces_qr_face), intent(in) :: weights_xyz_qr_face" in code) SUB_NAME = ''' diff --git a/src/psyclone/tests/dynamo0p3_test.py b/src/psyclone/tests/dynamo0p3_test.py index db535200d3..96110664f2 100644 --- a/src/psyclone/tests/dynamo0p3_test.py +++ b/src/psyclone/tests/dynamo0p3_test.py @@ -820,13 +820,13 @@ def test_field_bc_kernel(tmpdir): "12.2_enforce_bc_kernel.f90"), api=TEST_API) psy = PSyFactory(TEST_API, distributed_memory=True).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert ("integer(kind=i_def), pointer :: boundary_dofs_a(:,:) => " - "null()" in gen_code) - assert "boundary_dofs_a => a_proxy%vspace%get_boundary_dofs()" in gen_code + "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)" - in gen_code) + in code) assert LFRicBuild(tmpdir).code_compiles(psy) @@ -1139,12 +1139,12 @@ def test_named_psy_routine(dist_mem, tmpdir): api=TEST_API) psy = PSyFactory(TEST_API, distributed_memory=dist_mem).create(invoke_info) - gen_code = str(psy.gen) + code = str(psy.gen) assert LFRicBuild(tmpdir).code_compiles(psy) # Name should be all lower-case and with spaces replaced by underscores - assert "subroutine invoke_important_invoke" in gen_code + assert "subroutine invoke_important_invoke" in code # Tests for LFRic stub generator diff --git a/src/psyclone/tests/nemo/transformations/openacc/data_directive_test.py b/src/psyclone/tests/nemo/transformations/openacc/data_directive_test.py index 8d77ed6bb0..409b10de82 100644 --- a/src/psyclone/tests/nemo/transformations/openacc/data_directive_test.py +++ b/src/psyclone/tests/nemo/transformations/openacc/data_directive_test.py @@ -79,17 +79,17 @@ def test_explicit(fortran_reader, fortran_writer): schedule = psyir.walk(Routine)[0] acc_trans = TransInfo().get_trans_name('ACCDataTrans') acc_trans.apply(schedule.children) - gen_code = fortran_writer(psyir) + code = fortran_writer(psyir) assert (" real, dimension(jpi,jpj,jpk) :: umask\n" "\n" " !$acc data copyout(umask)\n" - " do jk = 1, jpk") in gen_code + " do jk = 1, jpk") in code assert (" enddo\n" " !$acc end data\n" "\n" - "end program explicit_do") in gen_code + "end program explicit_do") in code def test_data_single_node(fortran_reader): @@ -113,19 +113,19 @@ def test_explicit_directive(fortran_reader, fortran_writer): acc_trans.apply(schedule.children, {"default_present": True}) acc_trans = TransInfo().get_trans_name('ACCDataTrans') acc_trans.apply(schedule.children) - gen_code = fortran_writer(psyir) + code = fortran_writer(psyir) assert (" real, dimension(jpi,jpj,jpk) :: umask\n" "\n" " !$acc data copyout(umask)\n" " !$acc kernels default(present)\n" - " do jk = 1, jpk, 1") in gen_code + " do jk = 1, jpk, 1") in code assert (" enddo\n" " !$acc end kernels\n" " !$acc end data\n" "\n" - "end program explicit_do") in gen_code + "end program explicit_do") in code def test_array_syntax(fortran_reader, fortran_writer): @@ -153,18 +153,18 @@ def test_array_syntax(fortran_reader, fortran_writer): # regions so just put two of the loops into regions. acc_trans.apply([schedule.children[0]]) acc_trans.apply([schedule.children[-1]]) - gen_code = fortran_writer(psyir) + code = fortran_writer(psyir) assert (" real(kind=wp), dimension(jpi,jpj,jpk) :: ztfw\n" "\n" " !$acc data copyout(zftv)\n" - " zftv(:,:,:) = 0.0d0" in gen_code) + " zftv(:,:,:) = 0.0d0" in code) assert (" !$acc data copyout(tmask)\n" " tmask(:,:) = jpi\n" " !$acc end data\n" "\n" - "end subroutine tra_ldf_iso" in gen_code) + "end subroutine tra_ldf_iso" in code) def test_multi_data(fortran_reader, fortran_writer): @@ -175,22 +175,22 @@ def test_multi_data(fortran_reader, fortran_writer): acc_trans = TransInfo().get_trans_name('ACCDataTrans') acc_trans.apply(schedule.children[0].loop_body[0:2]) acc_trans.apply(schedule.children[0].loop_body[1:3]) - gen_code = fortran_writer(psyir) + code = fortran_writer(psyir) assert (" do jk = 1, jpkm1, 1\n" " !$acc data copyin(ptb,wmask), copyout(zdk1t,zdkt)\n" - " do jj = 1, jpj, 1") in gen_code + " do jj = 1, jpj, 1") in code assert (" end if\n" " !$acc end data\n" " !$acc data copyin(e2_e1u,e2u,e3t_n,e3u_n,pahu,r1_e1e2t," "umask,uslp,wmask,zdit,zdk1t,zdkt,zftv), copyout(zftu), " "copy(pta)\n" - " do jj = 1, jpjm1, 1") in gen_code + " do jj = 1, jpjm1, 1") in code assert (" enddo\n" " !$acc end data\n" - " enddo") in gen_code + " enddo") in code def test_replicated_loop(fortran_reader, fortran_writer, tmpdir): @@ -209,15 +209,15 @@ def test_replicated_loop(fortran_reader, fortran_writer, tmpdir): acc_trans = TransInfo().get_trans_name('ACCDataTrans') acc_trans.apply(schedule.children[0:1]) acc_trans.apply(schedule.children[1:2]) - gen_code = fortran_writer(psyir) + code = fortran_writer(psyir) assert (" !$acc data copyout(zwx)\n" " zwx(:,:) = 0.e0\n" " !$acc end data\n" " !$acc data copyout(zwx)\n" " zwx(:,:) = 0.e0\n" - " !$acc end data" in gen_code) - assert Compile(tmpdir).string_compiles(gen_code) + " !$acc end data" in code) + assert Compile(tmpdir).string_compiles(code) def test_data_ref(fortran_reader, fortran_writer): @@ -238,8 +238,8 @@ def test_data_ref(fortran_reader, fortran_writer): schedule = psyir.walk(Routine)[0] acc_trans = TransInfo().get_trans_name('ACCDataTrans') acc_trans.apply(schedule.children) - gen_code = fortran_writer(psyir) - assert "!$acc data copyin(a), copyout(prof,prof%npind)" in gen_code + code = fortran_writer(psyir) + assert "!$acc data copyin(a), copyout(prof,prof%npind)" in code def test_data_ref_read(fortran_reader, fortran_writer): @@ -258,8 +258,8 @@ def test_data_ref_read(fortran_reader, fortran_writer): schedule = psyir.walk(Routine)[0] acc_trans = TransInfo().get_trans_name('ACCDataTrans') acc_trans.apply(schedule.children) - gen_code = fortran_writer(psyir) - assert "copyin(fld,fld%data)" in gen_code + code = fortran_writer(psyir) + assert "copyin(fld,fld%data)" in code def test_multi_array_derived_type(fortran_reader, fortran_writer): @@ -281,9 +281,9 @@ def test_multi_array_derived_type(fortran_reader, fortran_writer): schedule = psyir.walk(Schedule)[0] acc_trans = TransInfo().get_trans_name('ACCDataTrans') acc_trans.apply(schedule.children) - gen_code = fortran_writer(psyir) + code = fortran_writer(psyir) assert ("!$acc data copyin(small_holding,small_holding(2)%data), " - "copyout(sto_tmp)" in gen_code) + "copyout(sto_tmp)" in code) def test_multi_array_derived_type_error(fortran_reader): @@ -336,8 +336,8 @@ def test_array_section(fortran_reader, fortran_writer): schedule = psyir.walk(Schedule)[0] acc_trans = TransInfo().get_trans_name('ACCDataTrans') acc_trans.apply(schedule.children) - gen_code = fortran_writer(psyir) - assert "!$acc data copyin(b,c), copyout(a)" in gen_code + code = fortran_writer(psyir) + assert "!$acc data copyin(b,c), copyout(a)" in code def test_kind_parameter(fortran_reader, fortran_writer): @@ -355,9 +355,9 @@ def test_kind_parameter(fortran_reader, fortran_writer): schedule = psyir.walk(Schedule)[0] acc_trans = TransInfo().get_trans_name('ACCDataTrans') acc_trans.apply(schedule.children[0:1]) - gen_code = fortran_writer(psyir) + code = fortran_writer(psyir) - assert "copyin(wp)" not in gen_code.lower() + assert "copyin(wp)" not in code.lower() def test_no_copyin_intrinsics(fortran_reader, fortran_writer): @@ -377,9 +377,9 @@ def test_no_copyin_intrinsics(fortran_reader, fortran_writer): psy = fortran_reader.psyir_from_source(code) schedule = psy.walk(Routine)[0] acc_trans.apply(schedule.children[0:1]) - gen_code = fortran_writer(psy) + code = fortran_writer(psy) idx = intrinsic.index("(") - assert f"copyin({intrinsic[0:idx]})" not in gen_code.lower() + assert f"copyin({intrinsic[0:idx]})" not in code.lower() def test_no_code_blocks(fortran_reader): @@ -472,8 +472,8 @@ def test_array_access_in_ifblock(fortran_reader, fortran_writer): acc_trans = TransInfo().get_trans_name('ACCDataTrans') # Put the second loop nest inside a data region acc_trans.apply(schedule.children[1:]) - gen_code = fortran_writer(psyir) - assert " copyin(zmask)" in gen_code + code = fortran_writer(psyir) + assert " copyin(zmask)" in code def test_array_access_loop_bounds(fortran_reader, fortran_writer): @@ -495,5 +495,5 @@ def test_array_access_loop_bounds(fortran_reader, fortran_writer): acc_trans = TransInfo().get_trans_name('ACCDataTrans') # Put the second loop nest inside a data region acc_trans.apply(schedule.children) - gen_code = fortran_writer(psyir) - assert "copyin(trim_width)" in gen_code + code = fortran_writer(psyir) + assert "copyin(trim_width)" in code diff --git a/src/psyclone/tests/nemo/transformations/openmp/openmp_test.py b/src/psyclone/tests/nemo/transformations/openmp/openmp_test.py index 68188ee041..d7578b1eff 100644 --- a/src/psyclone/tests/nemo/transformations/openmp/openmp_test.py +++ b/src/psyclone/tests/nemo/transformations/openmp/openmp_test.py @@ -155,13 +155,13 @@ def test_omp_parallel_multi(fortran_reader, fortran_writer): # loop nests (Python's slice notation is such that the expression below # gives elements 2-3). otrans.apply(schedule[0].loop_body[2:4]) - gen_code = fortran_writer(psyir).lower() + code = fortran_writer(psyir).lower() assert (" !$omp parallel default(shared), private(ji,jj,zabe1,zcof1," "zmsku)\n" " do jj = 1, jpjm1, 1\n" " do ji = 1, jpim1, 1\n" " zabe1 = pahu(ji,jj,jk) * e2_e1u(ji,jj) * " - "e3u_n(ji,jj,jk)\n" in gen_code) + "e3u_n(ji,jj,jk)\n" in code) assert (" do jj = 2, jpjm1, 1\n" " do ji = 2, jpim1, 1\n" " pta(ji,jj,jk,jn) = pta(ji,jj,jk,jn) + " @@ -170,7 +170,7 @@ def test_omp_parallel_multi(fortran_reader, fortran_writer): "e3t_n(ji,jj,jk)\n" " enddo\n" " enddo\n" - " !$omp end parallel\n" in gen_code) + " !$omp end parallel\n" in code) directive = schedule[0].loop_body[2] assert isinstance(directive, OMPParallelDirective) @@ -208,7 +208,7 @@ def test_omp_do_code_gen(fortran_reader, fortran_writer): .else_body[0].else_body[0]) loop_trans.apply(schedule[0].loop_body[1] .else_body[0].else_body[0].dir_body[0]) - gen_code = fortran_writer(psyir).lower() + code = fortran_writer(psyir).lower() correct = ''' !$omp parallel default(shared), private(ji,jj) !$omp do schedule(auto) do jj = 1, jpj, 1 @@ -219,7 +219,7 @@ def test_omp_do_code_gen(fortran_reader, fortran_writer): enddo !$omp end do !$omp end parallel''' - assert correct in gen_code + assert correct in code directive = schedule[0].loop_body[1].else_body[0].else_body[0].dir_body[0] assert isinstance(directive, OMPDoDirective) diff --git a/src/psyclone/tests/nemo/transformations/profiling/nemo_profile_test.py b/src/psyclone/tests/nemo/transformations/profiling/nemo_profile_test.py index 79367ac881..e3508dbf21 100644 --- a/src/psyclone/tests/nemo/transformations/profiling/nemo_profile_test.py +++ b/src/psyclone/tests/nemo/transformations/profiling/nemo_profile_test.py @@ -192,11 +192,11 @@ def test_profile_inside_if1(fortran_reader, fortran_writer): "end subroutine inside_if_test\n") schedule = psyir.children[0] PTRANS.apply(schedule.children[0].if_body[0]) - gen_code = fortran_writer(psyir).lower() + code = fortran_writer(psyir).lower() assert (" if (do_this) then\n" - " call profile_psy_data % prestart(" in gen_code) + " call profile_psy_data % prestart(" in code) assert (" call profile_psy_data % postend\n" - " end if\n" in gen_code) + " end if\n" in code) def test_profile_inside_if2(fortran_reader, fortran_writer): @@ -217,11 +217,11 @@ def test_profile_inside_if2(fortran_reader, fortran_writer): "end subroutine inside_if_test\n") schedule = psyir.children[0] PTRANS.apply(schedule.children[0].if_body) - gen_code = fortran_writer(psyir).lower() + code = fortran_writer(psyir).lower() assert (" if (do_this) then\n" - " call profile_psy_data % prestart(" in gen_code) + " call profile_psy_data % prestart(" in code) assert (" call profile_psy_data % postend\n" - " end if\n" in gen_code) + " end if\n" in code) def test_profile_single_line_if(fortran_reader, fortran_writer): @@ -238,7 +238,7 @@ def test_profile_single_line_if(fortran_reader, fortran_writer): "end subroutine one_line_if_test\n") schedule = psyir.children[0] PTRANS.apply(schedule[0].if_body) - gen_code = fortran_writer(psyir).lower() + code = fortran_writer(psyir).lower() assert ( " if (do_this) then\n" " call profile_psy_data % prestart(\"one_line_if_test\", \"r0\", 0," @@ -247,7 +247,7 @@ def test_profile_single_line_if(fortran_reader, fortran_writer): " ! - unsupported statement: write_stmt\n" " write(*, *) sto_tmp2(ji)\n" " call profile_psy_data % postend\n" - " end if\n" in gen_code) + " end if\n" in code) def test_profiling_case(fortran_reader, fortran_writer): diff --git a/src/psyclone/tests/psyir/backend/fortran_test.py b/src/psyclone/tests/psyir/backend/fortran_test.py index 8339e04176..6abec4f6fa 100644 --- a/src/psyclone/tests/psyir/backend/fortran_test.py +++ b/src/psyclone/tests/psyir/backend/fortran_test.py @@ -453,8 +453,8 @@ def test_gen_typedecl(fortran_writer): "end type my_type\n") private_tsymbol = DataTypeSymbol("my_type", dtype, Symbol.Visibility.PRIVATE) - gen_code = fortran_writer.gen_typedecl(private_tsymbol) - assert gen_code.startswith("type, private :: my_type\n") + code = fortran_writer.gen_typedecl(private_tsymbol) + assert code.startswith("type, private :: my_type\n") def test_reverse_map(): diff --git a/src/psyclone/tests/psyir/transformations/acc_kernels_trans_test.py b/src/psyclone/tests/psyir/transformations/acc_kernels_trans_test.py index e569d01b39..7e732966a0 100644 --- a/src/psyclone/tests/psyir/transformations/acc_kernels_trans_test.py +++ b/src/psyclone/tests/psyir/transformations/acc_kernels_trans_test.py @@ -134,10 +134,10 @@ def test_implicit_loop(fortran_reader, fortran_writer): schedule = psyir.walk(Routine)[0] acc_trans = ACCKernelsTrans() acc_trans.apply(schedule.children[0:1], {"default_present": True}) - gen_code = fortran_writer(psyir) + code = fortran_writer(psyir) assert (" !$acc kernels default(present)\n" " sto_tmp(:,:) = 0.0_wp\n" - " !$acc end kernels\n" in gen_code) + " !$acc end kernels\n" in code) def test_multikern_if(fortran_reader, fortran_writer): @@ -162,15 +162,15 @@ def test_multikern_if(fortran_reader, fortran_writer): schedule = psyir.walk(Routine)[0] acc_trans = ACCKernelsTrans() acc_trans.apply(schedule.children[0:1], {"default_present": True}) - gen_code = fortran_writer(psyir) + code = fortran_writer(psyir) assert (" !$acc kernels default(present)\n" " if (do_this) then\n" - " do jk = 1, 3, 1\n" in gen_code) + " do jk = 1, 3, 1\n" in code) assert (" enddo\n" " end if\n" " !$acc end kernels\n" "\n" - "end program implicit_loop" in gen_code) + "end program implicit_loop" in code) def test_kernels_within_if(fortran_reader, fortran_writer):