| 116 | } |
| 117 | |
| 118 | static void |
| 119 | FaceValue(AuxVarBox& evalue, AuxVarBox& cintrp, |
| 120 | const Mask& msk, const Box& reg, |
| 121 | const IntVect& vin, int r, int bho, int flevel) |
| 122 | { |
| 123 | if (bho == 1) { |
| 124 | Real efacb = 3.0 / ((1 + r) * (3 + r)); |
| 125 | Real efac1 = ( 1.5 * r) / (1 + r); |
| 126 | Real efac2 = (-0.5 * r) / (3 + r); |
| 127 | IntVect vi2 = 2 * vin; |
| 128 | for (IntVect v = reg.smallEnd(); v <= reg.bigEnd(); reg.next(v)) { |
| 129 | if (msk(v) == RadBndryData::not_covered) { |
| 130 | evalue(v).push(&cintrp(v), efacb); |
| 131 | evalue(v).push(flevel, v-vin, efac1); |
| 132 | evalue(v).push(flevel, v-vi2, efac2); |
| 133 | } |
| 134 | } |
| 135 | } |
| 136 | else { |
| 137 | Real efacb = 1.0 / (1 + r); |
| 138 | Real efac1 = r / (1.0 + r); |
| 139 | for (IntVect v = reg.smallEnd(); v <= reg.bigEnd(); reg.next(v)) { |
| 140 | if (msk(v) == RadBndryData::not_covered) { |
| 141 | evalue(v).push(&cintrp(v), efacb); |
| 142 | evalue(v).push(flevel, v-vin, efac1); |
| 143 | } |
| 144 | } |
| 145 | } |
| 146 | } |
| 147 | |
| 148 | void HypreExtMultiABec::loadMatrix() |
| 149 | { |