We have written several routines which use the
gSOAP library to call
the JHU Turbulence Database.
The Matlab interface to the JHU Turbulence Database is accomplished by using Matlab's MEX
functionality (see MEX-files Guide for more information). For each database function, a MEX routine
has been created which is used to communicate data from Matlab's interface to the gSOAP library
and back. This method does not use Matlab's built-in web service functions as they were found to
be problematic when comunicating with gSOAP.
Note: This Matlab interface has been also tested and found to work with newer versions of GNU Octave.
Note: Detailed descriptions of the underlying functions can be found in the analysis tools documentation.
% ---- Temporal Interpolation Options ----
NoTInt = 0; % No temporal interpolation
PCHIPInt = 1; % Piecewise cubic Hermit interpolation in time
% ---- Spatial Interpolation Flags for GetVelocity & GetVelocityAndPressure ----
NoSInt = 0; % No spatial interpolation
Lag4 = 4; % 4th order Lagrangian interpolation in space
Lag6 = 6; % 6th order Lagrangian interpolation in space
Lag8 = 8; % 8th order Lagrangian interpolation in space
% ---- Spatial Differentiation & Interpolation Flags for GetVelocityGradient & GetPressureGradient ----
FD4NoInt = 40; % 4th order finite differential scheme for grid values, no spatial interpolation
FD6NoInt = 60; % 6th order finite differential scheme for grid values, no spatial interpolation
FD8NoInt = 80; % 8th order finite differential scheme for grid values, no spatial interpolation
FD4Lag4 = 44; % 4th order finite differential scheme for grid values, 4th order Lagrangian interpolation in space
real(3,count) output = getVelocity(char authkey,
char dataset, real time,
spatial interpolation option, temporal interpolation option, integer count,
real(3,count) input);
Example
for i = 1:10
points(1, i) = 0.1*i; % x
points(2, i) = 0.3*i; % y
points(3, i) = 0.2*i; % z
end
fprintf('\nRequesting velocity at 10 points...\n');
result3 = getVelocity (authkey, dataset, time, Lag6, NoTInt, 10, points);
for i = 1:10
fprintf(1,'Vx = %f\n', result3(1,i));
fprintf(1,'Vy = %f\n', result3(2,i));
fprintf(1,'Vz = %f\n', result3(3,i));
end
real(4,count) output = getvelocityandpressure(char authkey,
char dataset, real time,
spatial interpolation option, temporal interpolation option, integer count,
real(3,count) input);
Example
fprintf('Requesting velocity and pressure at 10 points...\n');
result4 = getVelocityAndPressure(authkey, dataset, time, Lag6, NoTInt, 10, points);
for i = 1:10
fprintf(1,'Vx = %f\n', result4(1,i));
fprintf(1,'Vy = %f\n', result4(2,i));
fprintf(1,'Vz = %f\n', result4(3,i));
fprintf(1,'Pressure = %f\n', result4(4,i));
end
real(9,count) output = getVelocityAndPressure(char authkey,
char dataset, real time,
spatial interpolation option, temporal interpolation option, integer count,
real(3,count) input);
Example
fprintf(1,'Velocity gradient at 10 particle locations...\n');
result9 = getVelocityGradient(authkey, dataset, time, FD4Lag4, NoTInt, 10, points);
for i = 1:10
fprintf(1,'%i : duxdx=%f', i, result9(1,i));
fprintf(1,', duxdy=%f', result9(2,i));
fprintf(1,', duxdz=%f', result9(3,i));
fprintf(1,', duydx=%f', result9(4,i));
fprintf(1,', duydy=%f', result9(5,i));
fprintf(1,', duydz=%f', result9(6,i));
fprintf(1,', duzdx=%f', result9(7,i));
fprintf(1,', duzdy=%f', result9(8,i));
fprintf(1,', duzdz=%f', result9(9,i));
end
real(18,count) output = getVelocityHessian(char authkey,
char dataset, real time,
spatial interpolation option, temporal interpolation option,
integer count, real(3,count) input)
Example
fprintf(1,'Velocity Hessian at 10 particle locations...\n');
result18 = getVelocityHessian(authkey, dataset, time, FD4Lag4, NoTInt, 10, points);
for i = 1:10
fprintf(1,'%i : d2uxdxdx=%f', i, result18(1,i));
fprintf(1,', d2uxdxdy=%f', result18(2,i));
fprintf(1,', d2uxdxdz=%f', result18(3,i));
fprintf(1,', d2uxdydy=%f', result18(4,i));
fprintf(1,', d2uxdydz=%f', result18(5,i));
fprintf(1,', d2uxdzdz=%f', result18(6,i));
fprintf(1,', d2uydxdx=%f', result18(7,i));
fprintf(1,', d2uydxdy=%f', result18(8,i));
fprintf(1,', d2uydxdz=%f', result18(9,i));
fprintf(1,', d2uydydy=%f', result18(10,i));
fprintf(1,', d2uydydz=%f', result18(11,i));
fprintf(1,', d2uydzdz=%f', result18(12,i));
fprintf(1,', d2uzdxdx=%f', result18(13,i));
fprintf(1,', d2uzdxdy=%f', result18(14,i));
fprintf(1,', d2uzdxdz=%f', result18(15,i));
fprintf(1,', d2uzdydy=%f', result18(16,i));
fprintf(1,', d2uzdydz=%f', result18(18,i));
fprintf(1,', d2uzdzdz=%f\n', result18(18,i));
end
real(3,count) output = getVelocityLaplacian(char authkey,
char dataset, real time,
spatial interpolation option, temporal interpolation option, integer count,
real(3,count) input);
Example
fprintf(1,'Velocity Laplacian at 10 particle locations...\n');
result3 = getVelocityLaplacian(authkey, dataset, time, FD4Lag4, NoTInt, 10, points);
for i = 1:10
fprintf(1,'%i: (grad2ux=%f, grad2uy=%f, grad2uz=%f\n', ...
i, result3(1,i), result3(2,i), result3(3,i));
end
real(3,count) output = getPressureGradient(char authkey,
char dataset, real time,
spatial interpolation option, temporal interpolation option, integer count,
real(3,count) input);
Example
fprintf(1,'Pressure gradient at 10 particle locations...\n');
result3 = getPressureGradient(authkey, dataset, time, FD4Lag4, NoTInt, 10, points);
for i = 1:10
fprintf(1,'%i: dpdx=%f, dpdy=%f, dpdz=%f\n', ...
i, result3(1,i), result3(2,i), result3(3,i));
end
real(6,count) output = getPressureHessian(char authkey,
char dataset, real time,
spatial interpolation option, temporal interpolation option, integer count,
real(3,count) input);
Example
fprintf(1,'Velocity hessian at 10 particle locations...\n');
result6 = getPressureHessian(authkey, dataset, time, FD4Lag4, NoTInt, 10, points);
for i = 1:10
fprintf(1,'%i: d2pdxdx=%f', i, result6(1,i));
fprintf(1,', d2pdxdy=%f', result6(2,i));
fprintf(1,', d2pdxdz=%f', result6(3,i));
fprintf(1,', d2pdydy=%f', result6(4,i));
fprintf(1,', d2pdydz=%f', result6(5,i));
fprintf(1,', d2pdzdz=%f\n', result6(6,i));
end
real(3,count) output = getForce(char authkey,
char dataset, real time,
spatial interpolation option, temporal interpolation option, integer count,
real(3,count) input);
Example
fprintf(1,'Requesting forcing at 10 points...\n');
result3 = getForce(authkey, dataset, time, Lag6, NoTInt, 10, points);
for i = 1:10
fprintf(1,'%i: %f, %f, %f\n', i, result3(1,i), result3(2,i), result3(3,i));
end