40 int neta = boundary.getIndexSize(eta);
41 int nxi = boundary.getIndexSize(xi);
43 double mesh_size_eta = 1.0 / (neta - 1);
44 double mesh_size_xi = 1.0 / (nxi - 1);
53 Edge& left_bnd = boundary.getEdge(eta,
false);
54 Edge& right_bnd = boundary.getEdge(eta,
true);
55 Edge& bottom_bnd = boundary.getEdge(xi,
false);
56 Edge& top_bnd = boundary.getEdge(xi,
true);
58 for (
int d = 0; d <
NCOORDS; d++) {
59 for (
int j = 0; j < nxi; j++) {
60 for (
int i = 0; i < neta; i++) {
61 q = (i)*mesh_size_eta;
68 )] = (1 - q) * left_bnd(d, j) + q * right_bnd(d, j) + (1 - r) * bottom_bnd(d, i) + r * top_bnd(d, i)
69 - (1 - q) * (1 - r) * left_bnd(d, 0)
70 - q * (1 - r) * right_bnd(d, 0)
71 - (1 - q) * r * top_bnd(d, 0)
72 - q * r * top_bnd(d, neta - 1);
105 boundary.getCoord(coords);
110 double bs_eta = boundary.getIndexSize(eta);
111 double bs_xi = boundary.getIndexSize(xi);
112 double bs_mu = boundary.getIndexSize(mu);
114 double bo_eta = boundary.getIndexOffset(eta);
115 double bo_xi = boundary.getIndexOffset(xi);
116 double bo_mu = boundary.getIndexOffset(mu);
118 double mesh_size_eta = 1.0 / double(bs_eta - 1.0);
119 double mesh_size_xi = 1.0 / double(bs_xi - 1.0);
120 double mesh_size_mu = 1.0 / double(bs_mu - 1.0);
122 int bp_eta = bo_eta + bs_eta;
123 int bp_xi = bo_xi + bs_xi;
124 int bp_mu = bo_mu + bs_mu;
127 int p_eta = o_eta + s_eta;
128 int p_xi = o_xi + s_xi;
129 int p_mu = o_mu + s_mu;
132 double uv, vw, uw, uvw1, uvw2;
134 double d_eta, d_xi, d_mu;
136 Face left_bnd = boundary.getFace(eta,
false);
137 Face right_bnd = boundary.getFace(eta,
true);
138 Face bottom_bnd = boundary.getFace(mu,
false);
139 Face top_bnd = boundary.getFace(mu,
true);
140 Face front_bnd = boundary.getFace(xi,
false);
141 Face back_bnd = boundary.getFace(xi,
true);
143 for (
int d = 0; d <
NCOORDS; d++) {
144 for (
int i_eta = o_eta; i_eta < p_eta; i_eta++) {
145 d_eta = mesh_size_eta * (i_eta - bo_eta);
146 for (
int i_xi = o_xi; i_xi < p_xi; i_xi++) {
147 d_xi = mesh_size_xi * (i_xi - bo_xi);
148 for (
int i_mu = o_mu; i_mu < p_mu; i_mu++) {
149 d_mu = mesh_size_mu * (i_mu - bo_mu);
152 u = (1 - d_eta) * left_bnd(d, mu, i_mu, xi, i_xi) + d_eta * right_bnd(d, mu, i_mu, xi, i_xi);
155 v = (1 - d_mu) * bottom_bnd(d, xi, i_xi, eta, i_eta) + d_mu * top_bnd(d, xi, i_xi, eta, i_eta);
158 w = (1 - d_xi) * front_bnd(d, mu, i_mu, eta, i_eta) + d_xi * back_bnd(d, mu, i_mu, eta, i_eta);
161 uw = (1 - d_eta) * (1 - d_xi) * left_bnd(d, mu, i_mu, xi, bo_xi)
162 + (1 - d_eta) * d_xi * left_bnd(d, mu, i_mu, xi, bp_xi - 1)
163 + d_eta * (1 - d_xi) * right_bnd(d, mu, i_mu, xi, bo_xi)
164 + d_eta * d_xi * right_bnd(d, mu, i_mu, xi, bp_xi - 1);
167 uv = (1 - d_mu) * (1 - d_eta) * bottom_bnd(d, xi, i_xi, eta, bo_eta)
168 + (1 - d_mu) * d_eta * bottom_bnd(d, xi, i_xi, eta, bp_eta - 1)
169 + d_mu * (1 - d_eta) * top_bnd(d, xi, i_xi, eta, bo_eta)
170 + d_mu * d_eta * top_bnd(d, xi, i_xi, eta, bp_eta - 1);
173 vw = (1 - d_xi) * (1 - d_mu) * front_bnd(d, mu, bo_mu, eta, i_eta)
174 + (1 - d_xi) * d_mu * front_bnd(d, mu, bp_mu - 1, eta, i_eta)
175 + d_xi * (1 - d_mu) * back_bnd(d, mu, bo_mu, eta, i_eta)
176 + d_xi * d_mu * back_bnd(d, mu, bp_mu - 1, eta, i_eta);
179 uvw1 = (1 - d_mu) * (1 - d_xi) * (1 - d_eta) * bottom_bnd(d, xi, bo_xi, eta, bo_eta)
180 + (1 - d_mu) * d_xi * (1 - d_eta) * bottom_bnd(d, xi, bp_xi - 1, eta, bo_eta)
181 + d_mu * (1 - d_xi) * (1 - d_eta) * top_bnd(d, xi, bo_xi, eta, bo_eta)
182 + d_mu * d_xi * (1 - d_eta) * top_bnd(d, xi, bp_xi - 1, eta, bo_eta);
185 uvw2 = (1 - d_mu) * (1 - d_xi) * d_eta * bottom_bnd(d, xi, bo_xi, eta, bp_eta - 1)
186 + (1 - d_mu) * d_xi * d_eta * bottom_bnd(d, xi, bp_xi - 1, eta, bp_eta - 1)
187 + d_mu * (1 - d_xi) * d_eta * top_bnd(d, xi, bo_xi, eta, bp_eta - 1)
188 + d_mu * d_xi * d_eta * top_bnd(d, xi, bp_xi - 1, eta, bp_eta - 1);
190 block(d, coords[0], i_mu, coords[1], i_xi, coords[2], i_eta) = u + v + w - uv - uw - vw + uvw1 + uvw2;