function F = read_fields( filename )
%F = read_fields( filename ) : Read FSLE field from file filename
%   Detailed explanation goes here
%
% J H Bettencourt, IFISC, September 2013

% Open file

fid=fopen(filename,'r');

% Read header

% INTEGER,PARAMETER                               :: n_sub=1
% INTEGER,PARAMETER                               :: dir_ca=1
% INTEGER,PARAMETER                               :: t_ini=1
% INTEGER,PARAMETER                               :: t_fin=1
% REAL,PARAMETER                                  :: dt_fie=1
% INTEGER,PARAMETER                               :: nt_fie=1
% INTEGER,PARAMETER                               :: nt_int=180
% REAL,PARAMETER                                  :: dt_int=0.5
% REAL,PARAMETER                                  :: delta_f=100000

head=fread(fid,1,'int32');
n_sub=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
dir_ca=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
t_ini=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
t_fin=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
dt_fie=fread(fid,1,'float');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
nt_fie=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
nt_int=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
dt_int=fread(fid,1,'float');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
delta_f=fread(fid,1,'float');
head=fread(fid,1,'int32');

F.N_Sub=n_sub;
F.Dir_Ca=dir_ca;
F.T_Ini=t_ini;
F.T_Fin=t_fin;
F.Dt_Fie=dt_fie;
F.Nt_Fie=nt_fie;
F.Nt_Int=nt_int;
F.Dt_Int=dt_int;
F.Delta_F=delta_f;

% INTEGER,PARAMETER                               :: xi_start=1
% INTEGER,PARAMETER                               :: xi_end=xi_psi
% INTEGER,PARAMETER                               :: eta_start=1
% INTEGER,PARAMETER                               :: eta_end=eta_psi
% INTEGER,PARAMETER                               :: Nz=1
% REAL,PARAMETER                                  :: Minz=100
% REAL,PARAMETER                                  :: Maxz=100
% REAL,PARAMETER                                  :: Thsf=10.
% REAL,PARAMETER                                  :: Hcf=500.

head=fread(fid,1,'int32');
xi_start=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
xi_end=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
eta_start=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
eta_end=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
nz=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
minz=fread(fid,1,'float');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
maxz=fread(fid,1,'float');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
thsf=fread(fid,1,'float');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
hcf=fread(fid,1,'float');
head=fread(fid,1,'int32');

F.Xi_Start=xi_start;
F.Xi_End=xi_end;
F.Eta_Start=eta_start;
F.Eta_End=eta_end;
F.Nz=nz;
F.Minz=minz;
F.Maxz=maxz;
F.Thsf=thsf;
F.Hcf=hcf;

% WRITE(37) nx_fi
% WRITE(37) ny_fi
% WRITE(37) n_ci
% WRITE(37) x_fi
% WRITE(37) y_fi
% WRITE(37) z_fi
% WRITE(37) Maskf

head=fread(fid,1,'int32');
nx_fi=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
ny_fi=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
n_ci=fread(fid,1,'int32');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
x_fi=fread(fid,nx_fi,'float');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
y_fi=fread(fid,ny_fi,'float');
head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
z_fi=fread(fid,nz,'float');
head=fread(fid,1,'int32');

% head=fread(fid,1,'int32');
% maskf=fread(fid,[n_ci,nt_int],'int32');
% head=fread(fid,1,'int32');

head=fread(fid,1,'int32');
maski=fread(fid,n_ci,'int32');
head=fread(fid,1,'int32');

F.Nx_Fi=nx_fi;
F.Ny_Fi=ny_fi;
F.N_Ci=n_ci;
F.X_Fi=x_fi;
F.Y_Fi=y_fi;
F.Z_Fi=z_fi;
% F.Maskf=maskf;
F.Maski=maski;

% WRITE(37) lambda

head=fread(fid,1,'int32');
lambda=fread(fid,n_ci,'float');
head=fread(fid,1,'int32');

F.Lambda=lambda;

end

