TABLE OF CONTENTS


etsf_io_split_copy

[ Top ] [ etsf_split ] [ Methods ]

NAME

etsf_io_split_copy

FUNCTION

As for etsf_io_electrons_copy() for instance, it copy all values from split definitions of file @ncid_from to file @ncid_to. Arrays are copied only if their dimensions are neither etsf_no_dimension (see ETSF_IO_CONSTANTS) nor the associated full dimension value. The arrays in @ncid_to must already be defined, use etsf_io_split_def() to do it.

INPUTS

OUTPUT

NOTES

This file has been automatically generated by the autogen_subroutines.py script. Any change you would bring to it will systematically be overwritten.

SOURCE

subroutine etsf_io_split_copy(ncid_to, ncid_from, dims, lstat, error_data)

  !Arguments ------------------------------------
  integer, intent(in) :: ncid_to
  integer, intent(in) :: ncid_from
  type(etsf_dims), intent(in) :: dims
  logical, intent(out) :: lstat
  type(etsf_io_low_error), intent(out) :: error_data

  !Local variables-------------------------------
  character(len = *), parameter :: my_name = 'etsf_io_split_copy'
  integer,allocatable :: split_array(:)


  ! *************************************************************************

!DEBUG
!write (*,*) 'etsf_io_split_copy : enter'
!ENDDEBUG

  if (dims%my_number_of_kpoints /= etsf_no_dimension .and. &
    & dims%my_number_of_kpoints /= dims%number_of_kpoints) then 
    allocate(split_array(dims%my_number_of_kpoints))
    call etsf_io_low_read_var(ncid_from, "my_kpoints", &
                            & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    call etsf_io_low_write_var(ncid_to, "my_kpoints", &
                             & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    deallocate(split_array)
  end if
  if (dims%my_number_of_grid_points_vect3 /= etsf_no_dimension .and. &
    & dims%my_number_of_grid_points_vect3 /= dims%number_of_grid_points_vector3) then 
    allocate(split_array(dims%my_number_of_grid_points_vect3))
    call etsf_io_low_read_var(ncid_from, "my_grid_points_vector3", &
                            & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    call etsf_io_low_write_var(ncid_to, "my_grid_points_vector3", &
                             & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    deallocate(split_array)
  end if
  if (dims%my_number_of_spins /= etsf_no_dimension .and. &
    & dims%my_number_of_spins /= dims%number_of_spins) then 
    allocate(split_array(dims%my_number_of_spins))
    call etsf_io_low_read_var(ncid_from, "my_spins", &
                            & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    call etsf_io_low_write_var(ncid_to, "my_spins", &
                             & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    deallocate(split_array)
  end if
  if (dims%my_number_of_grid_points_vect1 /= etsf_no_dimension .and. &
    & dims%my_number_of_grid_points_vect1 /= dims%number_of_grid_points_vector1) then 
    allocate(split_array(dims%my_number_of_grid_points_vect1))
    call etsf_io_low_read_var(ncid_from, "my_grid_points_vector1", &
                            & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    call etsf_io_low_write_var(ncid_to, "my_grid_points_vector1", &
                             & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    deallocate(split_array)
  end if
  if (dims%my_number_of_grid_points_vect2 /= etsf_no_dimension .and. &
    & dims%my_number_of_grid_points_vect2 /= dims%number_of_grid_points_vector2) then 
    allocate(split_array(dims%my_number_of_grid_points_vect2))
    call etsf_io_low_read_var(ncid_from, "my_grid_points_vector2", &
                            & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    call etsf_io_low_write_var(ncid_to, "my_grid_points_vector2", &
                             & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    deallocate(split_array)
  end if
  if (dims%my_max_number_of_coefficients /= etsf_no_dimension .and. &
    & dims%my_max_number_of_coefficients /= dims%max_number_of_coefficients) then 
    allocate(split_array(dims%my_max_number_of_coefficients))
    call etsf_io_low_read_var(ncid_from, "my_coefficients", &
                            & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    call etsf_io_low_write_var(ncid_to, "my_coefficients", &
                             & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    deallocate(split_array)
  end if
  if (dims%my_number_of_components /= etsf_no_dimension .and. &
    & dims%my_number_of_components /= dims%number_of_components) then 
    allocate(split_array(dims%my_number_of_components))
    call etsf_io_low_read_var(ncid_from, "my_components", &
                            & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    call etsf_io_low_write_var(ncid_to, "my_components", &
                             & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    deallocate(split_array)
  end if
  if (dims%my_max_number_of_states /= etsf_no_dimension .and. &
    & dims%my_max_number_of_states /= dims%max_number_of_states) then 
    allocate(split_array(dims%my_max_number_of_states))
    call etsf_io_low_read_var(ncid_from, "my_states", &
                            & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    call etsf_io_low_write_var(ncid_to, "my_states", &
                             & split_array, lstat, error_data = error_data)
    if (.not. lstat) then
      deallocate(split_array)
      call etsf_io_low_error_update(error_data, my_name)
      return
    end if
    deallocate(split_array)
  end if


!DEBUG
!write (*,*) 'etsf_io_split_copy : exit'
!ENDDEBUG

end subroutine etsf_io_split_copy