Skip to content
Snippets Groups Projects
Commit ad8dcc5f authored by Kyle's avatar Kyle
Browse files

got output writing correct results while starting at 0.

Still need to verify with valgrind
parent e7aab0dd
No related branches found
No related tags found
No related merge requests found
...@@ -768,6 +768,11 @@ subroutine get_data_var_ilength(handle, array) bind(C, name='get_data_var_ilengt ...@@ -768,6 +768,11 @@ subroutine get_data_var_ilength(handle, array) bind(C, name='get_data_var_ilengt
do i=1,size_var do i=1,size_var
size_dat = size(p%var(i)%dat) size_dat = size(p%var(i)%dat)
start_index = lbound(p%var(i)%dat) start_index = lbound(p%var(i)%dat)
if (start_index(1) == 0) then
size_dat = size_dat - 1
endif
j2=1 j2=1
do j=start_index(1),size_dat do j=start_index(1),size_dat
array(size_array+j) = p%var(i)%dat(j) array(size_array+j) = p%var(i)%dat(j)
...@@ -878,7 +883,7 @@ subroutine get_data_var_i8length(handle, array) bind(C, name='get_data_var_i8len ...@@ -878,7 +883,7 @@ subroutine get_data_var_i8length(handle, array) bind(C, name='get_data_var_i8len
type(c_ptr), intent(in), value :: handle type(c_ptr), intent(in), value :: handle
integer(c_long), intent(out) :: array(*) integer(c_long), intent(out) :: array(*)
type(var_i8length), pointer :: p type(var_i8length), pointer :: p
integer(c_int) :: i,j,size_var,size_dat,size_array,j2 integer(c_int) :: i,j,size_var,size_dat,size_array,j2,loop_val
integer(c_int) :: start_index(1) integer(c_int) :: start_index(1)
call c_f_pointer(handle, p) call c_f_pointer(handle, p)
...@@ -889,8 +894,16 @@ subroutine get_data_var_i8length(handle, array) bind(C, name='get_data_var_i8len ...@@ -889,8 +894,16 @@ subroutine get_data_var_i8length(handle, array) bind(C, name='get_data_var_i8len
do i=1,size_var do i=1,size_var
size_dat = size(p%var(i)%dat) size_dat = size(p%var(i)%dat)
start_index = lbound(p%var(i)%dat) start_index = lbound(p%var(i)%dat)
if (start_index(1) == 0) then
loop_val = size_dat - 1
else
loop_val = size_dat
endif
j2=1 j2=1
do j=1,size_dat do j=1,loop_val
array(size_array+j) = p%var(i)%dat(j) array(size_array+j) = p%var(i)%dat(j)
j2=j2+1 j2=j2+1
end do end do
...@@ -1001,7 +1014,7 @@ subroutine get_data_var_dlength(handle, array) bind(C, name='get_data_var_dlengt ...@@ -1001,7 +1014,7 @@ subroutine get_data_var_dlength(handle, array) bind(C, name='get_data_var_dlengt
type(c_ptr), intent(in), value :: handle type(c_ptr), intent(in), value :: handle
real(c_double), intent(out) :: array(*) real(c_double), intent(out) :: array(*)
type(var_dlength), pointer :: p type(var_dlength), pointer :: p
integer(c_int) :: i,j,size_var,size_dat,size_array,j2 integer(c_int) :: i,j,size_var,size_dat,size_array,j2,loop_val
integer(c_int) :: start_index(1) integer(c_int) :: start_index(1)
call c_f_pointer(handle, p) call c_f_pointer(handle, p)
...@@ -1012,8 +1025,15 @@ subroutine get_data_var_dlength(handle, array) bind(C, name='get_data_var_dlengt ...@@ -1012,8 +1025,15 @@ subroutine get_data_var_dlength(handle, array) bind(C, name='get_data_var_dlengt
do i=1,size_var do i=1,size_var
size_dat = size(p%var(i)%dat) size_dat = size(p%var(i)%dat)
start_index = lbound(p%var(i)%dat) start_index = lbound(p%var(i)%dat)
if (start_index(1) == 0) then
loop_val = size_dat - 1
else
loop_val = size_dat
endif
j2=1 j2=1
do j=start_index(1),size_dat do j=start_index(1),loop_val
array(size_array+j2) = p%var(i)%dat(j) array(size_array+j2) = p%var(i)%dat(j)
j2=j2+1 j2=j2+1
end do end do
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment