// SPDX-FileCopyrightText: 2026 VTT Technical Research Centre of Finland Ltd
// SPDX-License-Identifier: AGPL-3.0-or-later

// Generated by generate.py with SymPy 1.14.0. Do not edit.
#pragma once
#include <openpfc/kernel/data/host_device.hpp>

namespace coupled::generated {
template <class Increments, class Position, class Local, class Parameters>
OPENPFC_INLINE_HD Increments rhs(double t, const Position &position, const Local &g,
                                 const Parameters &p,
                                 double source_rate = 0.0) noexcept {
  const double a = p.a;
  const double b = p.b;
  const double c = p.c;
  const double d = p.d;
  const double u_xx = g.u.xx;
  const double u_xy = g.u.xy;
  const double u_yy = g.u.yy;
  const double u_yz = g.u.yz;
  const double u_zz = g.u.zz;
  const double v_value = g.v.value;
  const double v_xz = g.v.xz;
  const double x = position[0];
  const double y = position[1];
  const double z = position[2];
  const double cse0 = source_rate * t * (x + y + z);
  return Increments{a * u_xy + cse0 + v_value,
                    b * (u_xx + u_yy + u_zz) + c * v_xz + cse0 + d * u_yz};
}
} // namespace coupled::generated
