79 TimeStepper
const& time_stepper,
81 Mapping
const& mapping,
82 SplineRThetaBuilder_host
const& builder_advection_field,
83 SplineRThetaEvaluatorConstBound_host
const& evaluator_advection_field,
84 double epsilon = 1e-12)
85 : m_time_stepper(time_stepper)
86 , m_advection_domain(advection_domain)
88 , m_builder_advection_field(builder_advection_field)
89 , m_evaluator_advection_field(evaluator_advection_field)
110 host_t<FieldRTheta<CoordRTheta>> feet,
112 double dt)
const final
114 host_t<VectorSplineCoeffsMem2D<X_adv, Y_adv>> advection_field_in_adv_domain_coefs(
115 get_spline_idx_range(m_builder_advection_field));
118 auto advection_field_in_adv_domain = create_geometry_mirror_view(
119 Kokkos::DefaultHostExecutionSpace(),
124 m_builder_advection_field(
125 ddcHelper::get<X_adv>(advection_field_in_adv_domain_coefs),
126 ddcHelper::get<X_adv>(get_const_field(advection_field_in_adv_domain)));
127 m_builder_advection_field(
128 ddcHelper::get<Y_adv>(advection_field_in_adv_domain_coefs),
129 ddcHelper::get<Y_adv>(get_const_field(advection_field_in_adv_domain)));
135 host_t<ConstFieldRTheta<CoordRTheta>>)>
136 dy = [&](host_t<DVectorFieldRTheta<X_adv, Y_adv>> updated_advection_field,
137 host_t<ConstFieldRTheta<CoordRTheta>> feet) {
138 m_evaluator_advection_field(
139 get_field(ddcHelper::get<X_adv>(updated_advection_field)),
140 get_const_field(feet),
142 ddcHelper::get<X_adv>(advection_field_in_adv_domain_coefs)));
143 m_evaluator_advection_field(
144 get_field(ddcHelper::get<Y_adv>(updated_advection_field)),
145 get_const_field(feet),
147 ddcHelper::get<Y_adv>(advection_field_in_adv_domain_coefs)));
152 void(host_t<FieldRTheta<CoordRTheta>>,
155 update_function = [&](host_t<FieldRTheta<CoordRTheta>> feet,
156 host_t<DConstVectorFieldRTheta<X_adv, Y_adv>> advection_field,
159 m_advection_domain.
advect_feet(feet, advection_field, dt);
162 unify_value_at_center_pt(feet);
169 m_time_stepper.update(Kokkos::DefaultHostExecutionSpace(), feet, dt, dy, update_function);