off_test_save_load_file_grid Program

program~~off_test_save_load_file_grid~~UsesGraph program~off_test_save_load_file_grid off_test_save_load_file_grid flap flap flap->program~off_test_save_load_file_grid module~off_simulation_object off_simulation_object flap->module~off_simulation_object module~off_objects off_objects module~off_objects->program~off_test_save_load_file_grid vecfor vecfor vecfor->program~off_test_save_load_file_grid module~off_block_signature_object off_block_signature_object vecfor->module~off_block_signature_object module~off_node_object off_node_object vecfor->module~off_node_object module~off_free_conditions_object off_free_conditions_object vecfor->module~off_free_conditions_object module~off_cell_object off_cell_object vecfor->module~off_cell_object module~off_face_object off_face_object vecfor->module~off_face_object module~off_block_object off_block_object vecfor->module~off_block_object module~off_grid_dimensions_object off_grid_dimensions_object vecfor->module~off_grid_dimensions_object penf penf penf->program~off_test_save_load_file_grid module~off_os_object off_os_object penf->module~off_os_object module~off_error_object off_error_object penf->module~off_error_object module~off_file_grid_object off_file_grid_object penf->module~off_file_grid_object module~off_files_collection_object off_files_collection_object penf->module~off_files_collection_object module~off_file_object off_file_object penf->module~off_file_object module~off_time_object off_time_object penf->module~off_time_object penf->module~off_block_signature_object penf->module~off_free_conditions_object penf->module~off_simulation_object penf->module~off_cell_object penf->module~off_face_object module~off_non_dimensional_numbers_object off_non_dimensional_numbers_object penf->module~off_non_dimensional_numbers_object module~off_solver_object off_solver_object penf->module~off_solver_object penf->module~off_block_object penf->module~off_grid_dimensions_object module~off_os_object->module~off_objects module~off_os_object->module~off_simulation_object module~off_error_object->module~off_objects module~off_error_object->module~off_os_object module~off_error_object->module~off_file_object module~off_error_object->module~off_time_object module~off_error_object->module~off_free_conditions_object module~off_error_object->module~off_simulation_object module~off_error_object->module~off_non_dimensional_numbers_object module~off_error_object->module~off_solver_object module~off_error_object->module~off_block_object module~off_file_grid_object->module~off_objects module~off_file_grid_object->module~off_simulation_object module~off_files_collection_object->module~off_objects module~off_file_object->module~off_objects module~off_file_object->module~off_file_grid_object module~off_file_object->module~off_files_collection_object module~off_time_object->module~off_objects module~off_time_object->module~off_simulation_object module~off_block_signature_object->module~off_objects module~off_block_signature_object->module~off_block_object module~off_block_signature_object->module~off_grid_dimensions_object module~off_node_object->module~off_objects module~off_node_object->module~off_block_object module~off_free_conditions_object->module~off_objects module~off_free_conditions_object->module~off_simulation_object module~off_simulation_object->module~off_objects module~off_cell_object->module~off_objects module~off_cell_object->module~off_block_object module~off_face_object->module~off_objects module~off_face_object->module~off_block_object module~off_non_dimensional_numbers_object->module~off_objects module~off_non_dimensional_numbers_object->module~off_simulation_object module~off_solver_object->module~off_objects module~off_solver_object->module~off_simulation_object module~off_block_object->module~off_objects module~off_block_object->module~off_file_grid_object module~off_block_object->module~off_simulation_object module~off_grid_dimensions_object->module~off_objects module~off_grid_dimensions_object->module~off_file_grid_object module~off_grid_dimensions_object->module~off_simulation_object stringifor stringifor stringifor->module~off_os_object iso_fortran_env iso_fortran_env iso_fortran_env->module~off_error_object iso_fortran_env->module~off_file_grid_object iso_fortran_env->module~off_file_object iso_fortran_env->module~off_simulation_object iso_fortran_env->module~off_block_object finer finer finer->module~off_files_collection_object finer->module~off_file_object finer->module~off_time_object finer->module~off_free_conditions_object finer->module~off_simulation_object finer->module~off_non_dimensional_numbers_object finer->module~off_solver_object vtk_fortran vtk_fortran vtk_fortran->module~off_block_object
Help


OFF test: save (and re-load for checking) file grid.

Calls

program~~off_test_save_load_file_grid~~CallsGraph program~off_test_save_load_file_grid off_test_save_load_file_grid proc~cli_parse~2 cli_parse program~off_test_save_load_file_grid->proc~cli_parse~2
Help


Variables

Type AttributesNameInitial
logical :: are_tests_passed(1)

Result of tests check.

type(block_object) :: blocks(2)

A block.

character(len=999) :: file_basename

Basename of grid file.

type(simulation_object) :: simulation

Simulation data.


Subroutines

subroutine cli_parse()

Build and parse test cli.

Arguments

None

Source Code

program off_test_save_load_file_grid
!< OFF test: save (and re-load for checking) file grid.

use off_objects, only : block_object, simulation_object
use flap, only : command_line_interface
use penf, only : I4P, I8P
use vecfor, only : ex, ey, ez

implicit none
character(999)          :: file_basename       !< Basename of grid file.
type(simulation_object) :: simulation          !< Simulation data.
type(block_object)      :: blocks(2)           !< A block.
logical                 :: are_tests_passed(1) !< Result of tests check.

are_tests_passed = .false.

call cli_parse

call blocks(1)%initialize(id=1_I8P, level=1, gc=[2, 2, 2, 2, 2, 2], ni=8, nj=16, nk=32)
call blocks(1)%create_linspace(emin=(0*ex), emax=(ex+ey+ez))
call blocks(2)%initialize(id=2_I8P, level=1, gc=[2, 2, 2, 2, 2, 2], ni=16, nj=32, nk=64)
call blocks(2)%create_linspace(emin=(1*ex), emax=(2*ex+ey+ez))

call simulation%initialize(blocks=blocks)

call simulation%save_file_grid(file_basename=trim(adjustl(file_basename)), metrics=.true., off=.true., vtk=.true.)

! re-load for checking
call simulation%initialize

call simulation%load_file_grid(file_basename=trim(adjustl(file_basename)))

are_tests_passed(1) = simulation%blocks(2)%cells_number(with_ghosts=.false.) == 16_I4P * 32_I4P * 64_I4P

print '(A)', simulation%description()

print '(A,L1)', 'Are all tests passed? ', all(are_tests_passed)

! remove temporary files grid
call simulation%os%rm(file_name=trim(adjustl(file_basename))//'.grd')
call simulation%os%rm(file_name=trim(adjustl(file_basename))//'*.vts')

contains
  subroutine cli_parse()
  !< Build and parse test cli.
  type(command_line_interface) :: cli   !< Test command line interface.
  integer(I4P)                 :: error !< Error trapping flag.

  call cli%init(progname='off_test_save_load_file_grid',                        &
                authors='S. Zaghi',                                             &
                help='Usage: ',                                                 &
                examples=["off_test_save_load_file_grid --grid-basename grid"], &
                epilog=new_line('a')//"all done")

  call cli%add(switch='--grid-basename',     &
               switch_ab='-g',               &
               help='basename of grid file', &
               required=.false.,             &
               def='grid',                   &
               act='store')

  call cli%parse(error=error) ; if (error/=0) stop

  call cli%get(switch='--grid-basename', val=file_basename)
  endsubroutine cli_parse
endprogram off_test_save_load_file_grid