Obliczenia inżynierskie i naukowe - kody źródłowe

Część III - Efektowne

Poniżej przestawiamy wybrane listingi omawiane w trzeciej części podręcznika Obliczenia inżynierskie i naukowe (PWN, 2011).

Listing 13.1 - Ztrans.general. [Pobierz]

file = /home/przykry/Tex/SCbook/Software/OpenDX/Ztrans.dat
grid = 30 x 40
format = ascii
interleaving = record
majority = row
header = lines 5
field = funkcja2d
structure = scalar
type = float
dependency = positions
positions = regular, regular, -3, 0.2, -4, 0.2

end

Listing 13.2 - temp3ddx.m. [Pobierz]

%%
%% Listing 13.2 w książce "Obliczenia inżynierskie i naukowe", PWN 2011
%% (C) Piotr Krzyżanowski, 2011
%%
%% Możesz używać tego kodu zgodnie z licencją Creative Commons BY-SA, 
%% zob. http://creativecommons.org/licenses/by-sa/3.0/pl/
%%

% tworzymy dyskretyzację skalarnego pola 3-wymiarowego opisanego poniższą funkcją;

global L;
global fac;
L = 10;
fac = 0.3;

% MATLAB wymaga zdefiniowania funkcji w osobnym pliku 
% lub konstrukcji funkcji anonimowej
function t = temperatura(x,y,z)
global L;
global fac;
	r = sqrt(x.^2 + y.^2 + z.^2);
	t = log((r-L).^4).*( r > L*fac ) + 2*ones(size(r)).*( r <= L*fac ) ;
end

% siatka losowa, N punktów o współrzędnych (X,Y,Z)
N = 2500;

X = (2*L)*rand(N,1) - L;
Y = (2*L)*rand(N,1) - L;
Z = (2*L)*rand(N,1) - L;

T = temperatura(X,Y,Z);

% plik z danymi w kolejnych wierszach zawiera współrzędne danego punktu i jego temperaturę

dane = [X Y Z T];

save -ascii 'T.txt' dane

Listing 13.3 - T.general. [Pobierz]

file = /home/przykry/Tex/SCbook/Software/OpenDX/T.txt
points = 2500
format = ascii
interleaving = field
header = lines 5
field = locations, field0
structure = 3-vector, scalar
type = float, float
dependency = positions, positions

end

Listing 13.4 - cvrdbin.general. [Pobierz]

file = /home/przykry/Tex/SCbook/Software/CvodeSundials/cvrd.out
grid = 256 x 256
format = lsb ieee
interleaving = record
majority = row
series = 101, 0, 1
field = temepratura
structure = scalar
type = double
dependency = positions
positions = regular, regular, 0, 1, 0, 1

end
© Piotr Krzyżanowski, 2009-2011.