Chronicle/TimeLine/0709FirstPlasma/Shot4/rsrc/includes/analysis/Magnetics/0512MHD_TM.ON/algorithms/file_reading.pro

function file_reading, k, filename

;----------
;Help
;----------

;Purpose of function is to simplify reading from files. For this, this function calculates the 
;number of lines in file and afterwards proceeds to read with correspondent vector dimension.
;Only information necessary is number of columns in file.

;PARAMETERS:
;1. k		number of columns in file
;2. filename	string representing name of read file

;----------
;File preparation
;----------

close,1
read1=string(filename)
openr,1,read1

;----------
;Variable preparation (line counting)
;----------

N=0L
a=0D

;----------
;Line counting
;----------

while not EOF(1) do begin
readf,1,a
N=N+1L
endwhile

close, 1

;----------
;Variable preparation (reading)
;----------

k=double(k)
data = dblarr(k,N)
openr,1,read1

a = 0D
b = 0D
c = 0D
d = 0D
e = 0D
f = 0D
g = 0D
h = 0D
z = 0D	;no helping it - i is already used for something else
j = 0D
q = 0D	;the same with k...
l = 0D
m = 0D

;----------
;File reading (depending of number of rows)
;----------

if k eq 1 then begin
	for i=0, N-1 do begin
		readf, 1,a
		data[0,i]=a
	endfor
endif

if k eq 2 then begin
	for i=0d, N-1d do begin
		readf, 1,a,b
		data[0,i]=a
		data[1,i]=b
	endfor
endif

if k eq 3 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
	endfor
endif

if k eq 4 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c,d
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
	endfor
endif

if k eq 5 then begin
	for i=0D, double(N-1) do begin
		readf, 1,a,b,c,d,e
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
		data[4,i]=e
	endfor
endif

if k eq 6 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c,d,e,f
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
		data[4,i]=e
		data[5,i]=f
	endfor
endif

if k eq 7 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c,d,e,f,g
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
		data[4,i]=e
		data[5,i]=f
		data[6,i]=g
	endfor
endif

if k eq 8 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c,d,e,f,g,h
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
		data[4,i]=e
		data[5,i]=f
		data[6,i]=g
		data[7,i]=h
	endfor
endif

if k eq 9 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c,d,e,f,g,h,z
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
		data[4,i]=e
		data[5,i]=f
		data[6,i]=g
		data[7,i]=h
		data[8,i]=z
	endfor
endif

if k eq 10 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c,d,e,f,g,h,z,j
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
		data[4,i]=e
		data[5,i]=f
		data[6,i]=g
		data[7,i]=h
		data[8,i]=z
		data[9,i]=j
	endfor
endif

if k eq 11 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c,d,e,f,g,h,z,j,q
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
		data[4,i]=e
		data[5,i]=f
		data[6,i]=g
		data[7,i]=h
		data[8,i]=z
		data[9,i]=j
		data[10,i]=q
	endfor
endif

if k eq 12 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c,d,e,f,g,h,z,j,q,l
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
		data[4,i]=e
		data[5,i]=f
		data[6,i]=g
		data[7,i]=h
		data[8,i]=z
		data[9,i]=j
		data[10,i]=q
		data[11,i]=l
	endfor
endif

if k eq 13 then begin
	for i=0, N-1 do begin
		readf, 1,a,b,c,d,e,f,g,h,z,j,q,l,m
		data[0,i]=a
		data[1,i]=b
		data[2,i]=c
		data[3,i]=d
		data[4,i]=e
		data[5,i]=f
		data[6,i]=g
		data[7,i]=h
		data[8,i]=z
		data[9,i]=j
		data[10,i]=q
		data[11,i]=l
		data[12,i]=m
	endfor
endif
;----------
;Finalization
;----------

close, 1

return, data


end