1! Copyright (c) 2017-2021, Lawrence Livermore National Security, LLC and 2! other Axom Project Developers. See the top-level LICENSE file for details. 3! 4! SPDX-License-Identifier: (BSD-3-Clause) 5 6#include "axom/config.hpp" 7 8program spio_basic_write_read 9 use iso_c_binding 10 use axom_sidre 11 use axom_spio 12 implicit none 13 14 include 'mpif.h' 15 16 integer mpierr 17 integer num_files 18 integer testvalue1, testvalue2 19 integer return_val 20 21 type(SidreDataStore) ds1, ds2 22 type(SidreGroup) root1, root2 23 type(SidreGroup) flds1, flds2 24 type(SidreGroup) ga, gb 25 type(SidreView) view1, view2 26 27 type(IOManager) writer, reader 28 29#ifdef AXOM_USE_HDF5 30 character(18) :: protocol = "sidre_hdf5 " 31 character(18) :: root_ext = ".root " 32#else 33 character(18) :: protocol = "sidre_conduit_json" 34 character(18) :: root_ext = ".root" 35#endif 36 37 38 call mpi_init(mpierr) 39 40 ds1 = SidreDataStore() 41 root1 = ds1%get_root() 42 43 flds1 = root1%create_group("fields") 44 flds2 = root1%create_group("fields2") 45 46 ga = flds1%create_group("a") 47 gb = flds2%create_group("b") 48 49 view1 = ga%create_view_scalar_int("i0", 101) 50 view2 = gb%create_view_scalar_int("i1", 404) 51 52 num_files = 1 53 writer = IOManager(MPI_COMM_WORLD) 54 55 call writer%write(root1, num_files, "F_out_spio_basic_write_read", protocol ) 56 57 ds2 = SidreDataStore() 58 59 reader = IOManager(MPI_COMM_WORLD) 60 61 root2 = ds2%get_root() 62 call reader%read(root2, "F_out_spio_basic_write_read" // root_ext ) 63 64 return_val = 0 65 if (.not. root2%is_equivalent_to(root1)) then 66 return_val = 1 67 endif 68 69 view1 = root1%get_view("fields/a/i0") 70 testvalue1 = view1%get_data_int() 71 view2 = root2%get_view("fields/a/i0") 72 testvalue2 = view1%get_data_int() 73 74 if (testvalue1 .ne. testvalue2) then 75 return_val = 1 76 endif 77 78 view1 = root1%get_view("fields2/b/i1") 79 testvalue1 = view1%get_data_int() 80 view2 = root2%get_view("fields2/b/i1") 81 testvalue2 = view1%get_data_int() 82 83 if (testvalue1 .ne. testvalue2) then 84 return_val = 1 85 endif 86 87 call ds1%delete() 88 call ds2%delete() 89 90 call mpi_finalize(mpierr) 91 92 if (return_val .ne. 0) then 93 call exit(1) 94 endif 95end program spio_basic_write_read 96