Then I declared u as vector with three dimension;

u (h,i,j)

where h = 0, 1, 2 as physical component (eg: height, velocity, momentum)

i , j = 0, 1, 2, ..., n as row n column

So if we read u[0,1,1], it means height value at coordinate (1,1); u[1,1,1] is the velocity value; [2,1,1] is the momentum value at the same coordinate.

Trying some of properties of it. I found out that we can initialize all component of vector-u with this one line code

u:=fu(h[i,j],i,j);

so the component u(h,i,j) will filled. Notice that the function has vector (or in this case array) return value.

The code below show how I fill the value of component u(0, i, j)

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; const n=3; type vector=array[0..2,0..n,0..n]of real; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; function fu(a:real;i,j:integer):vector; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation{$R *.dfm} function tform1.fu(a:real;i,j:integer):vector; begin fu[0,i,j]:=a; end; procedure TForm1.FormCreate(Sender: TObject); var i,j:integer; h:array[0..n,0..n]of real; u:vector; begin for i:=0 to n do begin for j:=0 to n do begin h[i,j]:=1; u:=fu(h[i,j],i,j); end; end; memo1.Text:=''; memo1.Lines.Append('h[1,1]='+floattostr(h[1,1])); memo1.Lines.Append('u[0,1,1]='+floattostr(u[0,1,1])); memo1.Lines.Append('u[0,2,1]='+floattostr(u[0,2,1])); end; end.:)