1 | !-------------------------------------------------------------------------- |
---|
2 | !---------------------------- flux_centered ---------------------------------- |
---|
3 | ! NB : here the input data is a flux and has already the factor l_e in it |
---|
4 | ! Input data is rescaled by factor scale |
---|
5 | ! Perot reconstruction based on Gauss theorem |
---|
6 | ! u = sum( u.edge_normal * edge_length * (edge_midpoint-cell_centroid) ) /cell_area |
---|
7 | DO l = ll_begin, ll_end |
---|
8 | !DIR$ SIMD |
---|
9 | DO ij=ij_begin, ij_end |
---|
10 | cx=centroid(ij,1) |
---|
11 | cy=centroid(ij,2) |
---|
12 | cz=centroid(ij,3) |
---|
13 | ux=0. ; uy=0. ; uz=0. |
---|
14 | ue_le = ne_rup*ue(ij+u_rup,l) |
---|
15 | ux = ux + ue_le*(.5*(xyz_v(ij+z_rup,1)+xyz_v(ij+z_up,1))-cx) |
---|
16 | uy = uy + ue_le*(.5*(xyz_v(ij+z_rup,2)+xyz_v(ij+z_up,2))-cy) |
---|
17 | uz = uz + ue_le*(.5*(xyz_v(ij+z_rup,3)+xyz_v(ij+z_up,3))-cz) |
---|
18 | ue_le = ne_lup*ue(ij+u_lup,l) |
---|
19 | ux = ux + ue_le*(.5*(xyz_v(ij+z_lup,1)+xyz_v(ij+z_up,1))-cx) |
---|
20 | uy = uy + ue_le*(.5*(xyz_v(ij+z_lup,2)+xyz_v(ij+z_up,2))-cy) |
---|
21 | uz = uz + ue_le*(.5*(xyz_v(ij+z_lup,3)+xyz_v(ij+z_up,3))-cz) |
---|
22 | ue_le = ne_left*ue(ij+u_left,l) |
---|
23 | ux = ux + ue_le*(.5*(xyz_v(ij+z_lup,1)+xyz_v(ij+z_ldown,1))-cx) |
---|
24 | uy = uy + ue_le*(.5*(xyz_v(ij+z_lup,2)+xyz_v(ij+z_ldown,2))-cy) |
---|
25 | uz = uz + ue_le*(.5*(xyz_v(ij+z_lup,3)+xyz_v(ij+z_ldown,3))-cz) |
---|
26 | ue_le = ne_ldown*ue(ij+u_ldown,l) |
---|
27 | ux = ux + ue_le*(.5*(xyz_v(ij+z_ldown,1)+xyz_v(ij+z_down,1))-cx) |
---|
28 | uy = uy + ue_le*(.5*(xyz_v(ij+z_ldown,2)+xyz_v(ij+z_down,2))-cy) |
---|
29 | uz = uz + ue_le*(.5*(xyz_v(ij+z_ldown,3)+xyz_v(ij+z_down,3))-cz) |
---|
30 | ue_le = ne_rdown*ue(ij+u_rdown,l) |
---|
31 | ux = ux + ue_le*(.5*(xyz_v(ij+z_rdown,1)+xyz_v(ij+z_down,1))-cx) |
---|
32 | uy = uy + ue_le*(.5*(xyz_v(ij+z_rdown,2)+xyz_v(ij+z_down,2))-cy) |
---|
33 | uz = uz + ue_le*(.5*(xyz_v(ij+z_rdown,3)+xyz_v(ij+z_down,3))-cz) |
---|
34 | ue_le = ne_right*ue(ij+u_right,l) |
---|
35 | ux = ux + ue_le*(.5*(xyz_v(ij+z_rup,1)+xyz_v(ij+z_rdown,1))-cx) |
---|
36 | uy = uy + ue_le*(.5*(xyz_v(ij+z_rup,2)+xyz_v(ij+z_rdown,2))-cy) |
---|
37 | uz = uz + ue_le*(.5*(xyz_v(ij+z_rup,3)+xyz_v(ij+z_rdown,3))-cz) |
---|
38 | fac = scale*(1./Ai(ij)) |
---|
39 | ucenter(ij,l,1)=ux*fac |
---|
40 | ucenter(ij,l,2)=uy*fac |
---|
41 | ucenter(ij,l,3)=uz*fac |
---|
42 | END DO |
---|
43 | END DO |
---|
44 | !---------------------------- flux_centered ---------------------------------- |
---|
45 | !-------------------------------------------------------------------------- |
---|