MCPcopy Create free account
hub / github.com/arrayfire/arrayfire / cart_to_oblate_position

Function cart_to_oblate_position

examples/pde/bhrt.cpp:277–295  ·  view source on GitHub ↗

* @brief Transform the position vectors from cartesian to oblate coordinates * * @param vel * @param pos * @return af::array */

Source from the content-addressed store, hash-verified

275 * @return af::array
276 */
277af::array cart_to_oblate_position(const af::array& pos) {
278 if (pos.dims()[0] != 3)
279 throw make_error("Arrays must have 3 principal coordintes");
280
281 af::array x = pos(0, af::span);
282 af::array y = pos(1, af::span);
283 af::array z = pos(2, af::span);
284 auto a = J / M;
285 auto diff = x * x + y * y + z * z - a * a;
286
287 af::array r =
288 af::sqrt((diff + af::sqrt(diff * diff + z * z * a * a * 4.0)) / 2.0);
289 af::array o = af::acos(z / r);
290 af::array p = af::atan2(y, x);
291
292 af::array transformed_pos = af::join(0, r, o, p);
293
294 return transformed_pos;
295}
296
297/**
298 * @brief Transform the position vectors from oblate to cartesian coordinates

Callers 1

Calls 6

make_errorFunction · 0.85
sqrtFunction · 0.85
acosFunction · 0.85
atan2Function · 0.85
joinFunction · 0.50
dimsMethod · 0.45

Tested by

no test coverage detected