pub fn scale_by_field<T>(
backend: ComputeBackend,
v: &Field<T>,
s: &Field<f64>,
) -> Field<T>Expand description
Scale a vector/tensor field by a per-element scalar field:
c[i] = v[i] * s[i].
This is rho*U (density field times velocity field) and every other
“coefficient field times ranked field” product. Units multiply:
[v]*[s].
Bit-identical to Field::scale for Field<Vector3>.
§Panics
Panics if v.len() != s.len().
use outram_foam_basic_lib::compute::ComputeBackend;
use outram_foam_basic_lib::fields::field::Field;
use outram_foam_basic_lib::fields::parallel;
use outram_foam_basic_lib::primitives::Vector3;
let u = Field::uniform(2, Vector3::new(1.0, 2.0, 3.0)); // [m/s]
let rho = Field::new(vec![2.0, 0.5]); // [kg/m^3]
let rho_u = parallel::scale_by_field(ComputeBackend::CpuMulti, &u, &rho); // [kg/(m^2 s)]
assert_eq!(rho_u[0], Vector3::new(2.0, 4.0, 6.0));
assert_eq!(rho_u[1], Vector3::new(0.5, 1.0, 1.5));