Repository navigation
Expand file tree
/
Copy pathgetMomentsandFluidVariables.m
More file actions
85 lines (76 loc) · 3.31 KB
/
Copy pathgetMomentsandFluidVariables.m
File metadata and controls
85 lines (76 loc) · 3.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
function [moments,fluid_vars] = getMomentsandFluidVariables(asgdata,real_tensor)
ndims = numel(asgdata);
assert( (ndims > 1) && (ndims < 5) );
num_moments = 2*ndims-1;
moments = zeros(numel(asgdata(1).nodes),num_moments);
% number density
ttv_data = {asgdata(2:ndims).weights};
moments(:,1) = ttv(real_tensor,ttv_data,2:ndims).data;
% (f,v_x)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{1} = asgdata(2).weights.*asgdata(2).nodes;
moments(:,2) = ttv(real_tensor,ttv_data,2:ndims).data;
switch ndims
case 2 %1x1v
% (f,v_x^2)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{1} = asgdata(2).weights.*(asgdata(2).nodes.^2);
moments(:,3) = ttv(real_tensor,ttv_data,2:ndims).data;
case 3 %1x2v
% (f,v_y)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{2} = asgdata(3).weights.*asgdata(3).nodes;
moments(:,3) = ttv(real_tensor,ttv_data,2:ndims).data;
% (f,v_x^2)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{1} = asgdata(2).weights.*(asgdata(2).nodes.^2);
moments(:,4) = ttv(real_tensor,ttv_data,2:ndims).data;
% (f,v_y^2)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{2} = asgdata(3).weights.*(asgdata(3).nodes.^2);
moments(:,5) = ttv(real_tensor,ttv_data,2:ndims).data;
case 4 %1x3v
% (f,v_y)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{2} = asgdata(3).weights.*asgdata(3).nodes;
moments(:,3) = ttv(real_tensor,ttv_data,2:ndims).data;
% (f,v_z)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{2} = asgdata(4).weights.*asgdata(4).nodes;
moments(:,4) = ttv(real_tensor,ttv_data,2:ndims).data;
% (f,v_x^2)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{1} = asgdata(2).weights.*(asgdata(2).nodes.^2);
moments(:,5) = ttv(real_tensor,ttv_data,2:ndims).data;
% (f,v_y^2)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{2} = asgdata(3).weights.*(asgdata(3).nodes.^2);
moments(:,6) = ttv(real_tensor,ttv_data,2:ndims).data;
% (f,v_z^2)
ttv_data = {asgdata(2:ndims).weights};
ttv_data{3} = asgdata(4).weights.*(asgdata(4).nodes.^2);
moments(:,7) = ttv(real_tensor,ttv_data,2:ndims).data;
end
% Get fluid variables
switch ndims
case 2
fluid_vars = zeros(numel(asgdata(1).nodes),3);
fluid_vars(:,1) = moments(:,1);
fluid_vars(:,2) = moments(:,2)./fluid_vars(:,1);
fluid_vars(:,3) = moments(:,3)./fluid_vars(:,1) - fluid_vars(:,2).^2;
case 3
fluid_vars = zeros(numel(asgdata(1).nodes),4);
fluid_vars(:,1) = moments(:,1);
fluid_vars(:,2) = moments(:,2)./fluid_vars(:,1);
fluid_vars(:,3) = moments(:,3)./fluid_vars(:,1);
fluid_vars(:,4) = 0.5*(moments(:,4)+moments(:,5))./fluid_vars(:,1) - 0.5*(fluid_vars(:,2).^2+fluid_vars(:,3).^2);
case 4
fluid_vars = zeros(numel(asgdata(1).nodes),5);
fluid_vars(:,1) = moments(:,1);
fluid_vars(:,2) = moments(:,2)./fluid_vars(:,1);
fluid_vars(:,3) = moments(:,3)./fluid_vars(:,1);
fluid_vars(:,4) = moments(:,4)./fluid_vars(:,1);
fluid_vars(:,5) = (1/3)*(moments(:,5)+moments(:,6)+moments(:,7))./fluid_vars(:,1) ...
- (1/3)*(fluid_vars(:,2).^2+fluid_vars(:,3).^2+fluid_vars(:,4).^2);
end
end